主键约束
主键约束 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 中是不可以使用的;
- 主表中的记录被副表引用时,主表不可以被删除。
