一、主键约束
可以唯一确定一张表中的一条记录,通过给字段添加约束,使字段不重复且不为空
primary key
> CREATE TABLE user(
> id INT primary key,
> name VARCHAR(10)
> );
primary key确保id在一张表里是唯一的,且不能为空
联合主键
CREATE TABLE user2(
id INT,
name VARCHAR(10),
password VARCHAR(20),
primary key(id,name)
);
primary key(id,name)保证id和name不能同时重复
自增约束
CREATE TABLE user3(
id INT primary key auto_increment,
name VARCHAR(10)
);
自动生成序号
建表后的添加与删除主键约束
添加:
CREATE TABLE user4(
id INT,
name VARCHAR(10)
);
alter table user4 add primary key(id);
alter table user4 modify id int primary key;
删除:
alter table user4 drop primary key;
二、外键约束
主表、副表
CREATE TABLE classes(
id INT,
name VARCHAR(10)
);
CREATE TABLE student(
id INT primary key,
name VARCHAR(10),
class_id INT,
foreign key(class_id) references classes(id)
);
(1)主表中没有的数据在副表中不可以用
(2)主表中的记录被副表引用,不可以删除
三、唯一约束
约束修饰的字段的值不可以重复
CREATE TABLE user(
id INT,
name VARCHAR(10),
unique(name,id)
);
与主键约束的区别:唯一约束允许字段重复
四、非空约束
修饰的字段不能为空
CREATE TABLE user(
id INT;
name VARCHAR(10) not null;
)
结果:
五、默认约束
插入字段时没有传值会使用默认值
CREATE TABLE user0(
id INT;
name VARCHAR(10),
age INT DEFAULT 20
);
INSERT INTO user0 (id,name) values(1,'AAA');
结果: