主键约束

主键约束 PRIMARY KEY:使某个字段不重复且不得为空,确保表内所有数据的唯一性。

  1. CREATE TABLE user (
  2. id INT PRIMARY KEY,
  3. name VARCHAR(20)
  4. );

联合主键:联合主键中的每个字段都不能为空,并且组合起来不能和已有的联合主键重复。

  1. CREATE TABLE user (
  2. id INT,
  3. name VARCHAR(20),
  4. password VARCHAR(20),
  5. PRIMARY KEY(id, name)
  6. );

自增约束 AUTO_INCREMENT:自增约束的主键由系统自动递增分配。

  1. CREATE TABLE user (
  2. id INT PRIMARY KEY AUTO_INCREMENT,
  3. name VARCHAR(20)
  4. );

注:AUTO_INCREMENT 必须与 PRIMARY KEY 一起使用。

添加和移除主键约束:如果忘记设置主键,可以通过SQL语句设置(两种方式)

  1. -- 方式一
  2. ALTER TABLE user ADD PRIMARY KEY(id);
  3. -- 方式二
  4. ALTER TABLE user MODIFY id INT PRIMARY KEY;

移除主键约束:若想要删除主键,可以通过SQL语句设置

  1. ALTER TABLE user DROP PRIMARY KEY;

唯一约束

创建唯一约束:被约束的字段的值不能重复

  1. CREATE TABLE user (
  2. id INT,
  3. name VARCHAR(20),
  4. UNIQUE(name)
  5. );

添加唯一约束:如果建表时没有设置唯一约束,可通过两种方式添加

  1. -- 方式一
  2. ALTER TABLE user ADD UNIQUE(name);
  3. -- 方式二
  4. ALTER TABLE user MODIFY name VARCHAR(20) UNIQUE;

移除唯一约束

  1. ALTER TABLE user DROP INDEX name;

联合唯一约束:联合唯一约束的字段组合不能与已有的字段组合重复

  1. CREATE TABLE user (
  2. id INT,
  3. name VARCHAR(20),
  4. UNIQUE(id,name)
  5. );

非空约束

创建非空约束:约束某个字段不能为空

  1. CREATE TABLE user (
  2. id INT,
  3. name VARCHAR(20) NOT NULL
  4. );

添加非空约束:与添加其他约束语法类似,这里不再列举语句

移除非空约束

  1. ALTER TABLE user MODIFY name VARCHAR(20);

默认约束

创建默认约束:传字段值时,如果没有传值,就会使用默认值

  1. CREATE TABLE user2 (
  2. id INT,
  3. name VARCHAR(20),
  4. age INT DEFAULT 10
  5. );

添加默认约束:与添加其他约束语法类似,这里不再列举语句

移除默认约束

  1. ALTER TABLE user MODIFY age INT;

外键约束

外键约束的使用涉及到两张表:主表和副表(或称父表和子表)

  1. -- 班级
  2. CREATE TABLE classes (
  3. id INT PRIMARY KEY,
  4. name VARCHAR(20)
  5. );
  6. -- 学生表
  7. CREATE TABLE students (
  8. id INT PRIMARY KEY,
  9. name VARCHAR(20),
  10. -- 这里的 class_id 要和 classes 中的 id 字段相关联
  11. class_id INT,
  12. -- 表示 class_id 的值必须来自于 classes 中的 id 字段值
  13. FOREIGN KEY(class_id) REFERENCES classes(id)
  14. );

注意:

  • 主表 classes 中没有的数据值,在副表 students 中是不可以使用的;
  • 主表中的记录被副表引用时,主表不可以被删除。