赞
踩
学完mysql后,自己弄得的思维导图。原图30.6MB,太大了放不上来,这里就放个链接吧。
欢迎大家去看,如果有需要改正的地方,请告诉我,谢谢。
链接:https://www.zhixi.com/view/718f3805
密码:6522
下面是MarkDown形式的的内容,但是缺少一些图片。完整的在思维导图上。
1、-p密码 之间不要有空格。
2、-p后面如果没有写密码,回车之后会要求输入密码。
3、如果没有写 -h 主机,则默认就是本机。
4、如果没有写 -P 端口名,则默认就是3306。
5、在实际工作中,为保证安全,一般会将3306改为其他端口号。
datatype: 指定列类型(字段类型)
character set: 如果不指定,则为所在数据库的字符集
collate: 如果不指定,则为所在数据库的校对规则
engine: 存储引擎
– 查看所有的存储引擎
SHOW ENGINES;
– innodb存储引擎是前面使用过的。
/* 1、支持事务;2、支持外键;3、支持行级锁 */
表名
ENGINE = 存储引擎 ;1、primary key 不能重复,而且不能为null。
2、一张表最多只能有一个主键,但可以是复合主键。
3、主键的指定方式有两种
(1)在创建表时,直接在字段名后指定:字段名 字段类型 primary key
(2)在表定义的最后一行填写,此时还在()内部:primary key(列名),
4、使用 desc 表名 可以看到 primary key 的情况。
5、在实际开发中,每个表往往都会设计一个主键。
CREATE TABLE t17(
id INT PRIMARY KEY, – 表示 id 列是主键
name
VARCHAR(32),
email VARCHAR(32)
);
一张表最多 只能有一个主键,但是可以是复合主键(那也只能有1个)。
CREATE TABLE t18(
id INT PRIMARY KEY,
name
VARCHAR(32) PRIMARY KEY,-- 错误
email VARCHAR(32)
);
/* 演示复合主键的使用(id和name做成复合主键) */
CREATE TABLE t18(
id INT,
name
VARCHAR(32),
email VARCHAR(32),
PRIMARY KEY (id,name
) – 这里就是复合主键,以后添加数据时,只有id和name同时发生重复时,才会报错。
);
字段名 字段类型 not null
– null对应字段1,如果字段1是自增长的,那么添加之后就是1,之后2,3。
– 直接从字段2开始写,值1对应字段2,…不给字段1赋值,它会自己从1开始增长。
– 前面直接什么都不写,然后把所有数据的值都写清楚,它会自动的添加。
创建表
测试自增长的使用
* 执行一次,给hsp分配的id为3
INSERT INTO t24
(email,name
) VALUES(‘hsp@123.com’,‘hsp’);
修改默认的自增长开始值
字段名 字段类型 unique
1、如果没有指定 not null,则unique字段可以有多个 null。
2、一张表可以有多个 unique字段。
3、unique not null 使用效果类似 primary key
1、外键约束要定义在“从表”上,“主表”则必须要有“主键约束”或者“unique”约束。这样形成的外键约束关系才是唯一的。
2、当定义外键约束后,要求外键列数据必须在主表的主键列存在或是为null。
id, name, class_id id, class_name
1、学生表的class_id为300的,在班级表中并不存在,所以就会添加失败,这叫外键约束.
2、如果学生表的jack和班级表已建立联系再删除班级表的id就会失败,得先删除学生表的jack才行,也叫外键约束
foreign key(本表字段名) references 主表名(主键名或者unique字段名)
1、外键指向的主表的字段,必须是primary key 或者 unique;
2、表的类型(存储引擎)是“innodb”,这样的表才支持外键
3、外键字段的类型和关联的主键字段的类型要一致,长度可以不一样。
4、外键字段的值,必须在主键字段中出现过,或者为“null”【前提是:外键字段允许为null】
5、一旦建立了 主键、外键的关系,数据就不能随意删除了。
6、删除主表的记录能否成功,要看是否有从表的外键指向它。如果有,则把从表中的相关记录全部删掉,然后再删主表的记录
假定在sal列上,定义了check约束,并要求sal列的值在1000~2000之间。如果不在这个范围内就会报错。
【老韩提示】oracle和sql server均支持check,但是MySQL5.7 目前还不支持check,只做语法校验,但不会生效。
即:语法上支持,但运行不会生效, 如果不满足check的条件,语句也会执行。
CREATE TABLE t23(
id INT PRIMARY KEY,
name
VARCHAR(32),
sex VARCHAR(6) CHECK (sex IN (‘man’,‘woman’)),
sal DOUBLE CHECK (sal>1000 AND sal<2000)
);
#2. 如果指定 unsinged , 则 tinyint 就是无符号 0-255
create table t01(id tinyint); # 有符号的
create table t01(id tinyint unsigned); # 无符号的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。