您的位置:首页 > 数据库 > MySQL

MySQL(三) —— 约束以及修改数据表

2016-04-24 15:20 656 查看
约束:

1. 约束保证数据的完整性和一致性;

2. 约束分为表级约束和列级约束;

3. 约束类型包括:NOT NULL, PRIMARY KEY, UNIQUE KEY, DEFAULT, FOREIGN KEY

外键约束

父表和子表必须使用相同的存储引擎,而且禁止使用临时表;

数据库的存储引擎只能为InnoDB;

外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同;

外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。

外键约束的参照操作

CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行;

SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL;

RESTRICT:拒绝对父表的删除或更新操作;

NO ACTION:标准的SQL关键字。

CREATE TABLE USERS (
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREAMENT,
username VARCHAR(10) NOT NULL,
pid SMALLINT UNSIGNED,
FOREIGN KEY(pid) REFERENCES provinces (id) ON DELETE CASCADE
);


View Code

列级约束

对一个数据列建立的约束

列级约束可以在列定义时声明,也可以在列定义后声明;

NOT NULL, DEFAULT只存在列级约束;

表级约束

对多个数据列建立的约束;

表级约束只能在列定义后声明;

4. 修改数据表

添加单列

ALTER TABLE tbl_name ADD [COLUMN] col_name
column_definition [FIRST | AFTER col_name]


ALTER TABLE users ADD age SMALLINT UNSIGNED DEFAULT 10 AFTER username;


添加多列

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 DROP PRIMARY KEY;


//删除唯一约束
ALTER TABLE tbl_name DROP {INDEX | KEY} index_name

//删除外键约束
ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol
(通过SHOW CREATE TABLE tbl_name查看fk_symbol)


修改列定义和更改表名称

//修改列定义
ALTER TABLE tbl_name MODIFY [COLUMN] col_name
column_definition [FIRST | 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]...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: