约束主要是针对字段,即列或者叫columns进行,主要有以下几种类型
1.非空约束NOT NulL ,限制该列内容不能为空值,必须输入
2.主键约束PRIMARY KEY,一个table中只能存在一个主键约束,保证记录的唯一性,可以配合auto_INCREMENT使用,自动增1
3.唯一约束UNIQUE KEY,一个table中可以针对列设置多个唯一约束,目的是使得该列的内容不重复,该列值可以为NulL
4.默认约束 DEFAulT,对一列(字段)设置默认值,如果不给其设置自定义值,则其显示默认值
5.外键约束FOREIGN KEy
对一个字段进行约束成为列级约束,对两个及以上字段进行约束称为表级约束
外键约束的要求:
1.父表和子表必须使用相同的存储引擎,不能使用临时表
2.数据存储引擎必须为INNODB类型
3.外键列和参照列必须具有相似的数据类型。其中数字的长度或者是否有符号位必须相同,字符的长度则可以不同。
4.外键列和参照列必须创建索引。如果外键列不存在索引的话,MysqL则自动创建索引
外键列创建在子表中,参照列创建在父表中
示例:
CREATE table table_name1(
ID SMALliNT UNSIGNED auto_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NulL
)
CREATE table table_name2(
ID SMALliNT UNSIGNED auto_INCREMENT PRIMARY KEY,
username VARCHAR(20) NOT NulL,
sex ENUM(‘1’,’2’,’3’) DEFAulT ‘3’,)//表示当sex没有赋值时,默认值为3
pID SMALliNT UNSIGNED,
FOREIGN KEY (pID) REFERENCES table_name1(ID) /* 外键 pID 参照 table_name1中的 ID 字段 */
表级约束和列级约束
对于一个列所创建的约束,称之为列级约束,而对于两个或两个以上的列所创建的约束,我们称之为表级约束。
列级约束在使用的时候,既可以在列定义的时候声明,也可以在列定义以后声明
表级的约束只能在列定义以后来声明
关系模型中有三类完整性约束:
(1)实体完整性
在关系数据库系统中,一个关系通常对应一个表,实体完整性是指在实际存储数据库的表中,主键不能取空值null。在MysqL中,实体完整性是通过主键约束和候选键约束来实现的。
(2)参照完整性
定义外键和主键之间的引用规则 ,它是对关系间引用数据的一种限制。
(3)用户定义的完整性
MysqL支持几种用户自定义的完整性约束,分别是非空约束、check约束和触发器。
在各种完整性约束的定义说明之前加上关键字constraint([kənˈstrent]约束的意思)和该约束的名字。如:
…
constraint primary_key_ID primary key(ID),
…
以上是内存溢出为你收集整理的Mysql之数据完整性约束与表维护语句全部内容,希望文章能够帮你解决Mysql之数据完整性约束与表维护语句所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)