1. 数据库约束类型
not null :不允许某列存储空值(非空);
unique :不允许你某列存储重复值(唯一);
default :没有赋值的列存储默认值;
primary key:主键约束,not null 和unique 的结合,确保某列(或两个列多个列的结合)有唯一标
识,有助于更容易更快速地找到表中的一个特定的记录。
foreign key:外键约束,保证一个表中的数据匹配另一个表中的值的参照完整性。
2. not null 非空
创建表的时候,指定列不为空
create table student(id int not null, name varchar(20), age int);
上述命令指定 id
这一列的数据不能为空。
测试:插入 id
为空的记录是否能成功插入
insert into student values (null,'张三',18);
3. unique 唯一
创建表的时候,指定某类的值不能重复。
create table student(id int unique, name varchar(20), age int);
上述命令指定 id
这一列的数据不能重复
测试:插入 id
重复的记录是否都能成功插入
insert into student values (1,'张三',18); insert into student values (1,'张三',18);
4. default 默认值
指定插入数据的时候,sex
列为空,默认值 女
create table student(id int, name varchar(20), sex varchar(10) default '女');
测试:
insert into student(id, name) values (1,'张三'); insert into student(id, name, sex) values (2,'李四','男');
5. primary key:主键约束
指定 id
列为主键
creacreate table student(id int primary key, name varchar(20));
主键相当于 not null
和 unique
的结合
测试:
insert into student values (null,'张三'); insert into student values (1,'张三'); insert into student values (1,'张三');
对于整数类型的主键,常配搭自增长 auto_increment
来使用。插入数据对应字段不给值时,使用最大
值 +1
,而不是前一条记录 +1
。
insert into student values (1,'张三'); insert into student values (null,'李四'); insert into student values (100,'赵五'); insert into student values (5,'宋六'); insert into student values (null,'王麻子'); select * from student;
6. foreign key:外键约束
外键用于关联其他表的主键或者唯一键,语法:
foreign key (字段名) referenes 主表(列)
示例:
- 创建班级表,设置
classId
为主键
create table class(id int primary key, name varchar(20));
创建学生表,设置id
为主键,一个学生对应一个班级,一个班级对应多个学生。使用id
为主键,
classeId
为外键,关联班级表id
create table student(id int primary key, name varchar(20), classId int, foreign key (classId) references class(id));
在这个语句中, 定义一个外键的实际作用是,在这条语句执行后,确保 MySQL 插入外键中的每一个非空值已经在被参照表中作为主键出现。这意味着,对于student 表中的每一个 classId ,都执行一次检查,看这个编号是否出现在 class 表的 id 列(主键)中。如果不存在,则出现出错信息。