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

mysql命令(四)--约束

2016-07-15 00:04 351 查看
约束:

约束是为了保证数据的完整性

约束分为表级约束和列级约束

约束类型包括:

NOT NULL 非空约束

PRIMARY KEY 主键约束

UNIQUE KEY 唯一约束

DEFAULT 默认约束

FOREIGN KEY 外键约束

外键约束:

保持数据的完整性,一致性

实现一对一或者一对多的关系

要求:

父表(被参照)和子表(具有外键列)必须使用相同的存储引擎,而且禁止使用临时表

数据表的存储引擎只能使用InnoDB

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

外键列和参照列必须创建索引,参照列没有索引,MYSQL则会自动创建,而外键列没有的话,不会自动创建

在创建表的时候会自动为主键创建索引

create table provinces(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(20) NOT NULL
);

create table users(
id SMALLINT unsigned  PRIMARY key auto_increment,
username varchar(10) not null,
pid smallint unsigned,
foreign key (pid) references provinces(id)
);


查看索引:

SHOW INDEXS FROM table_name;

SHOW INDEXS FROM table_name\G;

外键约束的参照操作:

CASCADE:从父表删除或者更新自动删除或者更新字表中的行

SET NULL:从父表删除或者更新行,自动设置字表中的外键列为NULL,

如果使用该选项,必须保证字表的参照列不为NOT NULL

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

NO ACTION:标准SQL的关键字,在MYSQL中与RESTRICT相同

表级约束和列级约束

对一个数据列建立的约束,称为列级约束

对多个数据列建立的约束,称为表级约束

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

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

主键约束,外键约束,唯一约束可以为列级约束或表级约束,而NOT NULL和DEFAULT一般为列级约束
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql