约束

约束是添加在列上的,用来约束列的!

主键约束(唯一标识)

  1. PRIMARY KEY
  • 非空
  • 唯一
  • 被引用

当表的某一列被指定为主键后,该列就不能为空,不能有重复值出现。

创建表时指定主键的两种方式:

  1. CREATE TABLE stu(
  2. sid CHAR(6) PRIMARY KEY,
  3. sname VARCHAR(20),
  4. age INT,
  5. gender VARCHAR(10)
  6. );

指定sid列为主键列,即为sid列添加主键约束

  1. CREATE TABLE stu(
  2. sid CHAR(6),
  3. sname VARCHAR(20),
  4. age INT,
  5. gender VARCHAR(10),
  6. PRIMARY KEY(sid)
  7. );

指定sid列为主键列,即为sid列添加主键约束

  • 修改表时指定主键:ALTER TABLE 表名 ADD PRIMARY KEY(sid);
  • 删除主键:ALTER TABLE 表名 DROP PRIMARY KEY;

主键自增长

  1. AUTO_INCREMENT
  • 因为主键列的特性是:必须唯一、不能为空,所以我们通常会指定主键类为整型,然后设置其自动增长,这样可以保证在插入数据时主键列的唯一和非空特性。
  • 创建表时指定主键自增长
  1. CREATE TABLE stu(
  2. sid INT PRIMARY KEY AUTO_INCREMENT,
  3. sname VARCHAR(20),
  4. age INT,
  5. gender VARCHAR(10)
  6. );
  • 修改表时设置主键自增长:ALTER TABLE stu CHANGE sid sid INT AUTO_INCREMENT;
  • 修改表时删除主键自增长:ALTER TABLE stu CHANGE sid sid INT;

非空约束

NOT NULL

因为某些列不能设置为NULL值,所以可以对列添加非空约束。
例如:

  1. CREATE TABLE stu(
  2. sid INT PRIMARY KEY AUTO_INCREMENT,
  3. sname VARCHAR(20) NOT NULL,
  4. age INT,
  5. gender VARCHAR(10)
  6. );
  7. sname列设置了非空约束

唯一约束

库某些列不能设置重复的值,所以可以对列添加唯一约束。

例如:

  1. CREATE TABLE stu(
  2. sid INT PRIMARY KEY AUTO_INCREMENT,
  3. sname VARCHAR(20) NOT NULL UNIQUE,
  4. age INT,
  5. gender VARCHAR(10)
  6. );
  • 对sname列设置了非空约束

外键约束

  • 外键必须是另一表的主键的值 (外键要引用主键!)
  • 外键可以重复
  • 外键可以为空
  • 一张表中可以有多个外键!

语法:

  1. CONSTRAINT 约束名称 FOREIGN KEY(外键列名) REFERENCES 关联表(关联表的主键)

创建表时指定外键约束

  1. create talbe emp (
  2. empno int primary key,
  3. ...
  4. mgr int, emp中加约束的列
  5. 约束:
  6. CONSTRAINT fk_emp FOREIGN KEY(mgr) REFERENCES emp(empno)
  7. 关键字 约束名 加约束的列 关键字 引用的表和其主键
  8. );

修改表时添加外键约束

  1. ALERT TABLE emp
  2. ADD CONSTRAINT fk_emp FOREIGN KEY(mgr) REFERENCES emp(empno)

修改表时删除外键约束

  1. ALTER TABLE emp
  2. DROP FOREIGN KEY fk_emp_deptno; 约束名称