目录
数据库约束
1.NULL约束
2.UNIQUE:唯一约束
3.DEFAULT:默认值约束
4.PRIMARY KEY:主键约束
5.FOREIGN KEY:外键约束
数据库约束
以下为本篇文章会介绍的约束
(1)NOT NULL - 指示某列不能存储 NULL 值。
(2)UNIQUE - 保证某列的每行必须有唯一的值。
(3)DEFAULT - 规定没有给列赋值时的默认值。(4)PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标 识,有助于更容易更快速地找到表中的一个特定的记录。(5)FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
1.NULL约束
创建表时,可以指定某列不为空:
-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
id INT NOT NULL,
sn INT,
name VARCHAR(20),
qq_mail VARCHAR(20)
);
2.UNIQUE:唯一约束
设置学生表结构2-1
-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
id INT NOT NULL,
sn INT UNIQUE,
name VARCHAR(20),
qq_mail VARCHAR(20)
);
这里我们重新设置一下表结构,对sn进行约束为唯一约束
演示效果:
补充:
加上unique约束之后,当后续进行插入或修改操作时,系统都会进行查询,看看操作值是否存在。
3.DEFAULT:默认值约束
指定插入数据时,若列为空,则为默认值
设置学生表结构3-1
-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
id INT NOT NULL,
sn INT UNIQUE,
name VARCHAR(20) DEFAULT 'unkown',
qq_mail VARCHAR(20)
);
4.PRIMARY KEY:主键约束
可以理解为:主键是 NOT NULL 和 UNIQUE 的结合
非空&唯一
-
每个表只能定义一个主键。
-
主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在有相同主键值的两行数据。这是唯一性原则。
-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
id INT NOT NULL PRIMARY KEY,
sn INT UNIQUE,
name VARCHAR(20) DEFAULT 'unkown',
qq_mail VARCHAR(20)
);
-- 主键是 NOT NULL 和 UNIQUE 的结合,可以不用 NOT NULL
id INT PRIMARY KEY auto_increment
(1)一般演示:
注意:
(1)自增的数据必须是整形。
(2)上述自增,只能在单个数据库中生效。如果数据库是由多个mysql服务器构成的集群,自增主键就会失效。
5.FOREIGN KEY:外键约束
外键用于关联其他表的主键或唯一键
语法如下:
foreign key (字段名) references 主表(列)
本表的某列引用另一个表的对应列,此时就要求,本表中个这个列的数据与另一个表的类型对应。
接下来我们设计一个案例如下:
- 创建班级表classes,id为主键
DROP TABLE IF EXISTS classes; CREATE TABLE classes ( id INT PRIMARY KEY auto_increment, name VARCHAR(20), desc1 VARCHAR(100) );
- 创建学生表student,一个学生对应一个班级,一个班级对应多个学生。使用id为主键,classes_id为外键,关联班级表id。
-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
id INT PRIMARY KEY auto_increment,
sn INT UNIQUE,
name VARCHAR(20) DEFAULT 'unkown',
qq_mail VARCHAR(20),
classes_id int,
FOREIGN KEY (classes_id) REFERENCES classes(id)
);
-
必须为主表定义主键。
MySQL 外键约束(FOREIGN KEY是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。
简单理解:
班级表约束了学生表。我们把班级表这种约束别人的表称为父表,把学生表这种被约束的表称为子表。
演示:
(1)父表对字表的约束。外键可以为空值,若不为空值,则每一个外键的值必须等于主表中主键的某个值。
如果输入不存在的classes_id.
(2)外键为空值:
补充:字表对父表也有约束
如果尝试修改或删除父表的记录,也会先查看一下子表,看看这个结果是否在子表中被引用,如果被引用则无法删改。
以上为我个人的小分享,如有问题,欢迎讨论!!!
都看到这了,不如关注一下,给个免费的赞