MySQL 数据库操作系列教程,希望对大家有所帮助。
约束是为了保证数据的完整性和一致性
- --对一个数据列建立的约束,就是列级约束
- --对多个数据列建立的约束,就是表级约束
- --列级约束既可以在列定义时声明,也可以在列定义后声明,
- --表级约束只能在列定义后声明
- --注意!
- --NOT NUll和DEFAULT没有表级约束
- CREATE TABLE users(id SMALLINT UNSIGNED PRIMARY KEY);
- --主键:PRIMARY KEY
- --主键约束,每张数据表只可以有一个主键,
- --主键保证记录的唯一性,且其自动为NOT NULL
- CREATE TABLE users(name VARCHAR(20) NOT NULL UNIQUE KEY);
- --唯一约束:UNIQUE KEY
- --唯一约束可以保证记录的唯一性,且唯一约束字段可以为空
- --每张数据库表可以存在多个唯一约束
- CREATE TABLE users(sex ENUM('1','2','3') DEFAULT '3');
- --默认约束:DEFAULT
- --默认值,当插入记录时,如果没有明确为字段赋值,则自动赋予默认值
- --ENUM是枚举,表示用户只能从3个选项中选一个字段赋值,详细内容可自行搜索
- 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,
- uname VARCHAR(10) NOT NULL,
- pid SMALLINT UNSIGNED,
- FOREIGN KEY (pid) REFERENCES provinces (id)
- );
- --子表,用户信息,用户pid 对应 省份id
- --外键约束:FOREIGN KEY
- --外键约束要求:
- --1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表
- --2.数据表的存储引擎只能为InnoDB
- /*
- 3.外键列和参照列必须具有相似的数据类型。
- 其中数字的长度或者是否有符号位都必须相同
- 但是,若是字符的长度,则可以不同
- */
- --4.外键列和参照列必须创建索引,如果外键列不存在索引。!MySQL将自动创建索引!
- --例子
- CREATE TABLE users(
- id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
- uname VARCHAR(10) NOT NULL,
- pid SMALLINT UNSIGNED,
- FOREIGN KEY (pid) REFERENCES provinces (id) ON DELETE CASCADE
- );
- --ON DELETE 意思为删除操作发生时
更多详情见请继续阅读下一页的精彩内容:
来源: http://www.linuxidc.com/Linux/2017-02/141092.htm