mysql命令(四)--约束
2016-07-15 00:04
351 查看
约束:
约束是为了保证数据的完整性
约束分为表级约束和列级约束
约束类型包括:
NOT NULL 非空约束
PRIMARY KEY 主键约束
UNIQUE KEY 唯一约束
DEFAULT 默认约束
FOREIGN KEY 外键约束
外键约束:
保持数据的完整性,一致性
实现一对一或者一对多的关系
要求:
父表(被参照)和子表(具有外键列)必须使用相同的存储引擎,而且禁止使用临时表
数据表的存储引擎只能使用InnoDB
外键列和参照列必须具有相似的数据类型,数字的长度或是否有符号位必须相同,字符串的长度则可以不同
外键列和参照列必须创建索引,参照列没有索引,MYSQL则会自动创建,而外键列没有的话,不会自动创建
在创建表的时候会自动为主键创建索引
查看索引:
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一般为列级约束
约束是为了保证数据的完整性
约束分为表级约束和列级约束
约束类型包括:
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中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜
- MySQL 备份与恢复