MySQL表约束(2)

这里写目录标题

    • 主键约束VS 唯一约束
    • 4.外键约束(foreing key)
    • 5.检查约束(check)
    • 6.自增约束(auto_increment)
    • 自增列是可以手动指定值的
    • 注意事项:
    • 手动指定自增值:(新增表的时候使用)
    • 手动修改自增列值:
    • delete和truncate区别(6)
    • auto_increment不能只和not null一块使用
    • 6.默认约束(DEFAULT)
    • 7.insert...select

常见面试题:

主键约束VS 唯一约束

1.一个表中主键约束只能有一个,而唯一约束可以有多个;
2.唯一约束可以插入一个或多个NULL,而主键约束不允许插入NULL。

4.外键约束(foreing key)

外键用于关联其他表的主键或唯一键。
语法:

foreign key (字段名) references 主表()

主表(主键)和次表(外键,关联到主表的主键上)
创建一个class表设置主键:
在这里插入图片描述
创建一个student表并设置外键和class关联:
在这里插入图片描述
测试外键:
创建两个班级12班和18班
MySQL表约束(2)_第1张图片
在这里插入图片描述
如图,此时外键生效了,进行数据插入的时候,会先去主表查询外键的有效性。

外键可以插入null(表示该学生暂未分班)
外键可以插入多个null,但是如果指定了数据(指定了具体的值),那么这个值一定得是有效才行。(有效指的是这个值已经在主表中存在了)
MySQL表约束(2)_第2张图片

5.检查约束(check)

检查约束是保证列中的值符合指定的条件,比如性别只能插入”男“或者”女“。
语法:

check (约束条件)

例:性别只能是男或女;
在这里插入图片描述

6.自增约束(auto_increment)

用在建表时
语法:
直接在字段后面添加auto_increment即可

在这里插入图片描述
在添加数据时,没有输入id,表也会显示
MySQL表约束(2)_第3张图片
当给自增列插入null时,他的执行逻辑和不设置是一样的,也就是自增列回自动插入此值。
MySQL表约束(2)_第4张图片

自增列是可以手动指定值的

MySQL表约束(2)_第5张图片

注意事项:

1.一个表中只能有一个字段使用auto_increment约束,且该字段必须有唯一索引,以免序号重复(即为主键或主键的一部分)
在这里插入图片描述
auto_increment必须配合key使用(primary key,foreign key,unique)
2.auto_increment约束字段只能是整数类型(tinyint、smallint、int、bigint等)。
在这里插入图片描述
3.一个表中只能有一个auto_increment自增约束(和主键的数量要求是一样的,主键也是一样的,一张表中最多有一个主键,但一个主键可以有多个字段组成)

在这里插入图片描述

手动指定自增值:(新增表的时候使用)

语法:

(字段)auto_increment=n;

在这里插入图片描述

手动修改自增列值:

alter table 表名 auto_increment=n;

注意事项:
auto_increment修改的自增值小于自增列的最大值max(自增列),那么设置将会无效

delete和truncate区别(6)

前五个区别见MySQL表的增删改查(3)
delete删除不会重置自增值
MySQL表约束(2)_第6张图片
truncate会重置自增列:
MySQL表约束(2)_第7张图片

auto_increment不能只和not null一块使用

在这里插入图片描述

6.默认约束(DEFAULT)

语法:
字符 字段类型 约束条件
在这里插入图片描述
时间类型:
时间加英文’'包含时间
MySQL表约束(2)_第8张图片
如果没有时分秒,则为默认值00:00:00;
但是最好输入时间
MySQL表约束(2)_第9张图片
查询时间:(用>、<)
MySQL表约束(2)_第10张图片

7.insert…select

MySQL表约束(2)_第11张图片
insert into 插入时,是根据列的顺序匹配查询结果的,不关注列名。

你可能感兴趣的:(MySQL,mysql,数据库,sql)