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]

 

posted @ 2016-06-07 16:21  stone08  阅读(567)  评论(0编辑  收藏  举报