sql自学笔记(四)
2019-04-07 本文已影响0人
itczt
约束
1.约束保证数据的完整性和一致性。
2.约束分为表级约束和列级约束
3.约束类型包括:
- NOT NULL(非空 约束)
- PRIMARY KEY(主键 约束)
- UNIQUE KEY(唯一 约束)
- DEFAULT (默认 约束)
- PEREIGN KEY (外键约束)
FOREIGN KEYP
保持数据一致性,完整性
实现一对一或一对多的关系
外键约束的要求
1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
2.数据表的存储引擎只能为InnoDB。
3.外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
4.外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。
编辑数据表的默认存储引擎
MySQL配置文件
default - storage - engine = INNODB
外键约束和参照操作
1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行。
2.SETNULL:从父表删除或更新行,并设置于表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL。
3.RESTRICT:拒绝对父表的删除或更新操作。
4.NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同,标记约束与列级约束。
对一个数据建立的约束。称为列级约束。
对多个数据列建立的约束,称为表级约束。
列级约束既可以在列定义声明,也可以在列定义后声明
表级约束只能在列定义后声明
修改数据表
添加单列
ALTER TABLE tbl _name ADD(COLUMN)
(col _ name column _definition,....)
添加多列
ALTER TABLE tab _ name ADD(COLUMN)
(col - name column _ defintion,...)
删除列
ALTER TABLE tab _ 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_cd_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 _ deflnition [FIRST] AFTER col _name]
修改列名称(尽量少用)
ALTER TABLE tbl _ name CHANGE[COLUMN] old_col_name
new_tbl _name column _ deflnition [FIRST] AFTER col _name]
数据表更名(尽量少用)
方法一
ALTER TABLE tbl _ name RENAME[TO|AS] new_tbl _name
方法二
RENAME TABLE tbl _name TO new _tbl _ name.
[,tbl_name 2 TO new _tbl_name2]....