一、约束
确保数据库数据满足特定的商业规则。在mysql中,约束主要包括:not null, unique, primary key ,foreign,check,共五种。
1.primary key(主键)
字段名 字段类型 primary key 用于唯一的标示表行的数据,当定义主键约束后,该列不能重复。
-- 主键
CREATE TABLE db23(
id INT PRIMARY KEY, -- 主键
`name`VARCHAR(32),
email VARCHAR(32)
);
INSERT INTO db23 VALUES(1,'xiao','123456@qq.com')
INSERT INTO db23 VALUES(2,'tian','123456@qq.com')
INSERT INTO db23 VALUES(1,'xin','123456@qq.com') -- 报错
SELECT*FROM db23
二、主键约束细节
1.primary key 不能重复并且不能为null
2.一张表只能有一个主键,但是可以复合主键
3.主键指定方式有两种:直接在字段名后指定:字段名 primary key , 在表定义最后写primary key(列名)
4.使用desc 表名,可以查看primary key 的情况
-- 1.primary key 不能重复并且不能为null
INSERT INTO db23 VALUES(NULL,'tian','123456@qq.com')
-- 2.一张表只能有一个主键,但是可以复合主键
CREATE TABLE db24(
id INT,
`name` VARCHAR(32),
email VARCHAR(32),
PRIMARY KEY(id,`name`)-- 复合主键
);
INSERT INTO db24 VALUES(1,'xiao','123456')
INSERT INTO db24 VALUES(2,'tian','123456')
INSERT INTO db24 VALUES(1,'xiao','123456')-- 报错
-- 3.主键指定方式有两种:直接在字段名后指定:字段名 primary key , 在表定义最后写primary key(列名)
-- 第一种上面有,
CREATE TABLE db25(
id INT,
`name` VARCHAR(32),
email VARCHAR(32),
PRIMARY KEY(id)
);
-- 4.使用desc 表名,可以查看primary key 的情况
DESC db24
三、not null(非空)
在列上定义了not null,当插入数据时,必须为列提供数据。
字段名 字段类型 not null
四、unique(唯一)
定义了唯一约束,该列的值不能重复。
字段名 字段类型 unique
五、unique注意事项
1.没有指定not null ,那么unique字段可以多个为null
2.一张表中可以有多个unique字段
-- unique使用
CREATE TABLE db26(
id INT UNIQUE,-- 唯一
`name` VARCHAR(32),
email VARCHAR(32)
);
INSERT INTO db26 VALUES(1,'xiao','123456')
INSERT INTO db26 VALUES(1,'xiao','123456')-- 报错
-- 1.没有指定not null ,那么unique字段可以多个为null
INSERT INTO db26 VALUES(NULL,'xiao','123456')
INSERT INTO db26 VALUES(NULL,'xiao','123456')
INSERT INTO db26 VALUES(NULL,'xiao','123456')
-- 2.一张表中可以有多个unique字段
CREATE TABLE db27(
id INT UNIQUE,-- 唯一
`name` VARCHAR(32)UNIQUE,
email VARCHAR(32)
);
DESC db27