约束
- 约束保证数据的完整性和一致性
- 约束分为表级约束和列级约束
- 约束类型包括:
- NOT NULL
- PRIMARY KEY
- UNIQUE KEY
- DEFAULT
- FOREIGN KEY
外键约束
- FOREIGN KEY
- 保持数据一致性,完整性
- 实现一对一或一对多关系
CREATE TABLE province(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(20) NOT NULL
);
CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(30) NOT NULL,
pid SMALLINT UNSIGNED,
FOREIGN KEY(pid) REFERENCES province(id)
);
CREATE TABLE users2(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(30) NOT NULL,
pid SMALLINT UNSIGNED,
FOREIGN KEY(pid) REFERENCES province(id) ON DELETE CASCADE
);
表级约束与列级约束
对一个数据列建立的约束,成为列级约束。NOT NULL等。
对多个数据列建立的约束,成为表级约束。PRIMARY KEY等。
列级约束既可以在列定义时声明,也可以在列定义后声明。
表级约束只能在列定义后声明。
修改数据表
添加单列
ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]
添加多列
ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition,...)
删除列
ALTER TABLE tbl_name DROP [COLUMN] col_name
添加主键约束
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)
添加唯一约束
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY] [index_name] [index_type] (index_col_name, ...)
添加外键约束
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, ...) reference_definition
添加/删除默认约束
ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
删除主键约束
ALTER TABLE tbl_name DROP PRIMARY KEY
删除唯一约束
ALTER TABLE tbl_name DROP {INDEX|KEY} index_name
删除外键约束
ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol
修改列定义
ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRT | AFTER col_name]
修改列名称
ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]
修改表名称
- 方法一
ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name
- 方法二
RENAME TABLE tbl_name TO new_tbl_name [,tbl_name2 TO new_tbl_name2]...