mysql建表约束:主键约束、自增约束、外键约束、唯一约束、非空约束、默认约束
1,约束:它够唯一确定一张表中的记录,也就是通过给某个字段添加约束,就是的该字段不重复,且不为空。
Create table user(
Id int primary key, 约束了主键,不能添加重复
Name varchar(20)
);
在test数据库中创建表,创建表user,插入主键,显示表,其中id的key一栏是PRI证明id是主键
主键是唯一的,不能重复添加,如果还想添加重复的只能改变前面的序号
主键还有一个条件就是不能为空,目的就是为了重新确认一下记录
2,联合主键——只要联合的主键值加起来不重复就可以,但是都不能为空
3,自增约束和主键约束搭配使用
创建一个表格,直接添加数值前面的id,管控id的值,让它可以自动增长
4,修改表结构,添加主键
如果创建表的时候,忘记创建主键约束,就是primary key 显示,key那一列为空
Desc是describe的简写
解决办法,输入alter table 表名 add primary key(id)
5,删除主键
输入alter table 表名 drop primary key;
6,使用modify修改字段,添加约束
7,唯一约束
约束修饰的字段的值不能重复
添加唯一约束,三种方式
(1)alter table user5 add unique(name);
UNI的意思就是name不可以重复
(2)也可以直接创建唯一约束
(3)也可以直接写到name后面:name varchar(20)unique
unique写一行的原因是可以添加不止一个元素,如果有多个唯一约束unique(id,name)表示两个键在一起都不重复
(4)通过modeify去添加,添加之前需要先删除
如何去删除唯一约束:alter table user6 drop index name;
通过modify添加:alter table user6 modify name varchar(20) unique;
总结(添加约束):
- 建表的时候就添加约束
- 可以使用alter ...add....
- 也可以使用alter...modify...
- 删除使用alter...drop...
8,非空约束——就是修饰的字段不能为空
id在NULL就是YES允许,name在NULL是no不允许
可以让id为空直接赋值lisi就是正确的,但是不能让name为空,不然出现错误
Not null的添加就是让它自己修饰的键不能为空
9,默认约束——当我们插入字段值的时候,如果没有传值,就会使用默认值
给age默认是10所以她现在是有默认值的为10
现在给id,name插入相应的值,不管age,显示出来age还是默认的值10
如果给age进行赋值就不会使用原来的值的
10,外键约束
涉及到两个表:父表,子表(主表、副表)
创建一个班级表,和一个学生表,主表是班级表,在给两个表中分别插入信息