sql自学笔记(四)

2019-04-07  本文已影响0人  itczt

约束

1.约束保证数据的完整性和一致性。
2.约束分为表级约束和列级约束
3.约束类型包括:

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]....

知识点总结

上一篇 下一篇

猜你喜欢

热点阅读