MySQL约束

MySQL约束

约束指对字段的约束,用于确保数据库的数据满足特定的规则。在MySQL中,数据库的约束包括,NOT NULL,PRIMARY KEY,UNIQUE,FOREIGN KEY,CHECK 五种

PRIMARY KEY(主键)

对字段定义主键约束后,该列数据不能有重复且不能为空,一张表只能唯一定义,但是可以定义复合主键(多个字段一起视为一个主键)

在字段后定义

CREATE TABLE freinds
(id INT PRIMARY KEY, -- 表示 id 列是主键
`name` VARCHAR(32),
email VARCHAR(32));

在末尾定定义

通常用于定义复合主键,插入数据的多个字段不能同时相等,否则报错。

CREATE TABLE freinds
(id INT
`name` VARCHAR(32),
email VARCHAR(32)
RIMARY KEY (id, `name`) -- 定义复合主键
);

自增长

一般用自增长配合主键使用,且主键是整型的数据类型,作用是不需要插入数据,主键列会自动增长。
语法:字段名 整型 PRIMARY KEY auto_increment

CREATE TABLE freinds
(id INT PRIMARY KEY AUTO_INCREMENT --好友id号自动增长
`name` VARCHAR(32),
email VARCHAR(32));

说明:

  • 自增长默认从1开始增加,也可以通过 ALTER TABLE 表名 AUTO_INCREMENT = 初始值 来设置。
  • 如果给自增长字段指定了值,会使用指定值,而不是自增长。

UNIQUE(唯一)

当定义了UNIQUE约束后,数据不能重复,但是可以为空,一张表可以定义一个多个UNIQUE约束。

CREATE TABLE t21
(id INT UNIQUE , . 
`name` VARCHAR(32) , 
email VARCHAR(32) UNIQUE --邮箱信息不可以重复但是可以为空
);

FOREIGN KEY(外键约束)

用于定义主表和从表的关系,外键约束定义在从表上,主表必须要求有主键约束或者UNIQUE约束。定义了外键约束后,要求外键的列数据必须在主表的主键列上存在或者为NULL

语法:FOREIGN KEY 本表字段名 REFERENCES 主表名(主键名或者UNIQUE字段名)

-- 主表class
CREATE TABLE class (
id INT PRIMARY KEY , -- 班级编号
`name` VARCHAR(32) NOT NULL DEFAULT ''); 
-- 从表 stu
CREATE TABLE stu (
id INT PRIMARY KEY , -- 学生编号
`name` VARCHAR(32) NOT NULL DEFAULT '', 
class_id INT , -- 学生所在班级的编号
FOREIGN KEY stu(class_id) REFERENCES class(id)) --指定外键
--主表插入数据
INSERT INTO class
VALUES(100, 'java'), (200, 'web');
--向从表插入数据后
INSERT INTO stu
VALUES(3, 'hsp', 300) --在主表中没有为300的班级,因此无法插入

CHECK

强制要求插入数据必须满足一定条件,否则不能插入。MySQL8.0支持CHECK约束(MySQL5.7好像不支持)

CREATE TABLE emp (
id INT PRIMARY KEY, 
`name` VARCHAR(32) , 
sex VARCHAR(6) ,
sal DOUBLE CHECK ( sal > 1000 AND sal < 2000)
);

学习总结来源于韩顺平老师一周学会MYSQL

posted @ 2022-08-01 18:57  Nights_Watch  阅读(52)  评论(0编辑  收藏  举报