mysql种约束和数据表操作
约束
约束保证数据的完整性和一致性
约束分为表级约束和列级约束
对某一个字段约束成为列级约束
针对两个或两个以上字段约束成为表级约束
约束类型包括:
NOT NULL 非空约束
PRIMARY KEY 主键约束
UNIQUE KEY 唯一约束
DEFAULT 默认约束
FOREIGN KEY 外键约束
FOREIGN KEY 外键约束
保持数据一致性,完整性。实现一对一或者一对多关系,这也是很多数据库称之为关系型数据库根本原因
外键约束的要求:
父表和子表必须使用相同的储存引擎,而且禁止使用临时表。
父表:子表所参照的表
子表:具有外键列的表
数据表的储存引擎只能为InnoDB。
外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同,而字符的长度则可以不同。
外键列:曾经加过foregin关键词的那一列
参照列:外键列所参照的那一列
外键列和参照列必须创建过索引,如果外键列不存在索引的话,MYSql将自动创建索引。参照列没有索引,Mysql不会自动创建索引。
编辑数据表的默认存储引擎,如果存储引擎不是INNODB怎么修改
MYSQL配置文件
MYSQL配置文件文件名 my.int 找到default-storage-engine,改为INNODB即可
default-storage-engine=INNODB,之后重新启动
外键约束的参照操作
1、CASCADE:从父表中删除或更新且删除自动删除或更新子表中匹配的行
2、SET NULL:从父表中删除或者更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL
3、RESTRICT:拒绝对父表的删除或更新操作
4、NO ACTION:标准SQL的关键字,在MYSQL中和RESTRICT相同
表级约束与列级约束
对某一个字段约束成为列级约束
针对两个或两个以上字段约束成为表级约束
列级约束即可在列定义时声明,也可以在列定义后声明
但是表级约束,只能在列定以后声明
在实际开发中,用列级约束比较多,表级约束很少用,除此之外,在所有的约束中,并不是说每种约束都存在着表级或列级约束,其中,NOT NULL 非空约束,DEFAULT约束这两种约束就不存在表级约束,它们只有列级约束,而对于其他的三种,像主键,唯一,外键,它们都可以存在表级和列级约束。在有些资料中有CHECK检测约束,但是并不起作用。
修改数据表:列的添加,列的删除,约束的添加,约束的删除等
添加单列:通过ALTER TABLE实现
ALTER TABLE tbl_name ADD [COLUMN] col_name
column_definition [FRIST | AFTER col_name]