约束
约束是添加在列上的,用来约束列的!
主键约束(唯一标识)
PRIMARY KEY
- 非空
- 唯一
- 被引用
当表的某一列被指定为主键后,该列就不能为空,不能有重复值出现。
创建表时指定主键的两种方式:
CREATE TABLE stu(
sid CHAR(6) PRIMARY KEY,
sname VARCHAR(20),
age INT,
gender VARCHAR(10)
);
指定sid列为主键列,即为sid列添加主键约束
CREATE TABLE stu(
sid CHAR(6),
sname VARCHAR(20),
age INT,
gender VARCHAR(10),
PRIMARY KEY(sid)
);
指定sid列为主键列,即为sid列添加主键约束
- 修改表时指定主键:
ALTER TABLE 表名 ADD PRIMARY KEY(sid);
- 删除主键:
ALTER TABLE 表名 DROP PRIMARY KEY;
主键自增长
AUTO_INCREMENT
- 因为主键列的特性是:必须唯一、不能为空,所以我们通常会指定主键类为整型,然后设置其自动增长,这样可以保证在插入数据时主键列的唯一和非空特性。
- 创建表时指定主键自增长
CREATE TABLE stu(
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(20),
age INT,
gender VARCHAR(10)
);
- 修改表时设置主键自增长:
ALTER TABLE stu CHANGE sid sid INT AUTO_INCREMENT
; - 修改表时删除主键自增长:
ALTER TABLE stu CHANGE sid sid INT
;
非空约束
NOT NULL
因为某些列不能设置为NULL值,所以可以对列添加非空约束。
例如:
CREATE TABLE stu(
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(20) NOT NULL,
age INT,
gender VARCHAR(10)
);
对sname列设置了非空约束
唯一约束
库某些列不能设置重复的值,所以可以对列添加唯一约束。
例如:
CREATE TABLE stu(
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(20) NOT NULL UNIQUE,
age INT,
gender VARCHAR(10)
);
- 对sname列设置了非空约束
外键约束
- 外键必须是另一表的主键的值 (外键要引用主键!)
- 外键可以重复
- 外键可以为空
- 一张表中可以有多个外键!
语法:
CONSTRAINT 约束名称 FOREIGN KEY(外键列名) REFERENCES 关联表(关联表的主键)
创建表时指定外键约束
create talbe emp (
empno int primary key,
...
mgr int, emp中加约束的列
约束:
CONSTRAINT fk_emp FOREIGN KEY(mgr) REFERENCES emp(empno)
关键字 约束名 加约束的列 关键字 引用的表和其主键
);
修改表时添加外键约束
ALERT TABLE emp
ADD CONSTRAINT fk_emp FOREIGN KEY(mgr) REFERENCES emp(empno)
修改表时删除外键约束
ALTER TABLE emp
DROP FOREIGN KEY fk_emp_deptno; 约束名称