主键约束
主键约束 PRIMARY KEY
:使某个字段不重复且不得为空,确保表内所有数据的唯一性。
CREATE TABLE user (
id INT PRIMARY KEY,
name VARCHAR(20)
);
联合主键:联合主键中的每个字段都不能为空,并且组合起来不能和已有的联合主键重复。
CREATE TABLE user (
id INT,
name VARCHAR(20),
password VARCHAR(20),
PRIMARY KEY(id, name)
);
自增约束 AUTO_INCREMENT
:自增约束的主键由系统自动递增分配。
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20)
);
注:AUTO_INCREMENT
必须与 PRIMARY KEY
一起使用。
添加和移除主键约束:如果忘记设置主键,可以通过SQL语句设置(两种方式)
-- 方式一
ALTER TABLE user ADD PRIMARY KEY(id);
-- 方式二
ALTER TABLE user MODIFY id INT PRIMARY KEY;
移除主键约束:若想要删除主键,可以通过SQL语句设置
ALTER TABLE user DROP PRIMARY KEY;
唯一约束
创建唯一约束:被约束的字段的值不能重复
CREATE TABLE user (
id INT,
name VARCHAR(20),
UNIQUE(name)
);
添加唯一约束:如果建表时没有设置唯一约束,可通过两种方式添加
-- 方式一
ALTER TABLE user ADD UNIQUE(name);
-- 方式二
ALTER TABLE user MODIFY name VARCHAR(20) UNIQUE;
移除唯一约束
ALTER TABLE user DROP INDEX name;
联合唯一约束:联合唯一约束的字段组合不能与已有的字段组合重复
CREATE TABLE user (
id INT,
name VARCHAR(20),
UNIQUE(id,name)
);
非空约束
创建非空约束:约束某个字段不能为空
CREATE TABLE user (
id INT,
name VARCHAR(20) NOT NULL
);
添加非空约束:与添加其他约束语法类似,这里不再列举语句
移除非空约束
ALTER TABLE user MODIFY name VARCHAR(20);
默认约束
创建默认约束:传字段值时,如果没有传值,就会使用默认值
CREATE TABLE user2 (
id INT,
name VARCHAR(20),
age INT DEFAULT 10
);
添加默认约束:与添加其他约束语法类似,这里不再列举语句
移除默认约束
ALTER TABLE user MODIFY age INT;
外键约束
外键约束的使用涉及到两张表:主表和副表(或称父表和子表)
-- 班级
CREATE TABLE classes (
id INT PRIMARY KEY,
name VARCHAR(20)
);
-- 学生表
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(20),
-- 这里的 class_id 要和 classes 中的 id 字段相关联
class_id INT,
-- 表示 class_id 的值必须来自于 classes 中的 id 字段值
FOREIGN KEY(class_id) REFERENCES classes(id)
);
注意:
- 主表 classes 中没有的数据值,在副表 students 中是不可以使用的;
- 主表中的记录被副表引用时,主表不可以被删除。