专栏目录请点击
列级约束一般在定义列的时候就直接把约束定义上
CREATE TABLE studentinfo (
id INT PRIMARY KEY, # 主键
stuName VARCHAR(20) NOT NULL, # 非空约束
gender CHAR(1) CHECK(gender="男" OR gender="女"), # 检查
age INT DEFAULT 18, # 默认约束
majorId INT REFERENCES magor(id) # 外键
)
DESC studentinfo;
通过desc我们可以看到相关的表结构

或者使用SHOW INDEX FROM studentinfo;来查看所有的索引,包括主键、外键、唯一值
表级约束需要在表的所有的字段下面定义约束,语法如下
[CONSTRAINT 约束名] 约束类型(字段名)
如上的表格,可以也可以用一下定义
CREATE TABLE studentinfo (
id INT, # 主键
stuName VARCHAR(20), # 非空约束
gender CHAR(1) , # 检查
age INT DEFAULT 18, # 默认约束
majorId INT # 外键
CONSTRAINT pk PRIMARY KEY(id), # 主键
CONSTRAINT uq UNIQUE(stuName), # 唯一
CONSTRAINT ck CHECK(gender="男" OR gender="女") # 检查
CONSTRAINT fk_student_major FOREIGN KEY(majorId) REFERENCES major(id) # 外键
)
| 类型 | 保证唯一性 | 是否允许为空 | 数量 | 是否允许组合 |
|---|---|---|---|---|
| 主键 | ✔ | ✖ | 最多有一个 | 可以,但不推荐 |
| 唯一键 | ✔ | ✖ | 可以有多个 | 可以,但不推荐 |
标识列又称自增长列,可以不用手动插入值,系统提供默认的序列值
特点
SET auto_increment_incremenet=2;来设置步长在创建表的时候设置标识列
CREATE TABLE studentinfo (
id INT PRIMARY KEY AUTO_INCREMENT, # 主键
// ...
)
修改
ALTER TABLE studentinfo MODIFY COLUMN id INT PRIMARY KEY AUTO_INCREMENT;
删除
也相当于修改列
ALTER TABLE studentinfo MODIFY COLUMN id INT PRIMARY KEY;
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name)
CONSTRAINT是可以添加,也可以不添加。如果添加的话,表示为约束起名字的意思。
ALTER TABLE user2 ADD CONSTRAINT pk_user2_id PRIMARY KEY(id);
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type](index_col_name,…)
ALTER TABLE user2 ADD UNIQUE(username);
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,…) reference_definition
ALTER TABLE user2 ADD foregin KEY(pid) REFERENCES provinces(id);
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,…) reference_definition
ALTER TABLE user2 ALTER age SET DEFAULT 15;
ALTER TABLE studentinfo MODIFY COLUMN stuName VARCHAR(20) NULL;
ALTER TABLE studentinfo MODIFY COLUMN age INT;
ALTER TABLE studentinfo DROP PRIMARY KEY;
ALTER TABLE studentinfo DROP INDEX `name`;
ALTER TABLE studentinfo DROP FOREIGN KEY;