首页 > 代码库 > MySQL约束
MySQL约束
1、 主键约束:是用来唯一标示表中一个列的,一个表中主建约束只能有一个,但是一个主健约束中可以包括多个列,也称为联合主键。
2、 外健约束:用来建立两个表中列之间关系的,它可以由1列或多列组成。一个表可以有1个或多个外健。
3、 唯一外束:也是用来唯一标识表中列的,与主健约束不同的是,在一张数据表中可以有多个唯一约束。
4、 检查约束:用来限定表中列里输入值的范围,比如说在输入年龄时,要求在数据库中只能输入1~120之间的数,就可以使用检查约束来约束该列。
5、 非空约束:用来限定数据表中的列必须输入值。
6、 默认值约束:用来当不给表中的列输入值时,自动为该列添加一个值。
*以上约束中,只有主键约束一个表中只能有一个,其他的约束都可以有多个。
在创建表时设置主键约束
1、 使用SQL语句设置单一列的约束
(1) 设置列级主键约束
“CREATE TABLE_NAME table_name
(
COLUMN_NAME1 DATATYPE PRIMARY KEY,
COLUMN_NAME2 DATATYPE,
COLUMN_NAME3 DATATYPE
…
)”
(2) 设置表级主键约束
“CREATE TABLE_NAME table_name
(
COLUMN_NAME1 DATATYPE,
COLUMN_NAME2 DATATYPE,
COLUMN_NAME3 DATATYPE
…
[CONSTRAINTconstruction_name]PRIMARY KEY(COLUMN_NAME1)
)”
*在上述两种语法中都是将COLUMN_NAME1;列设置成为了主键约束,第一种创建主键约束的语法是在设置单一列主键约束中比较常用的方法。
【示例1】创建酒店管理系统中的客户信息表并将客户编号设置成主键,表结构如下:
编号 | 列名 | 数据类型 | 中文释义 |
1 | Customer ID | Integer | 客户编号 |
2 | Customer Name | Varchar(12) | 客户姓名 |
3 | Customer Age | Integer | 客户年龄 |
4 | Customer Sex | Varchar(4) | 客户性别 |
5 | Customer Tel | Varchar(15) | 客户联系电话 |
6 | Remarks | Varchar(200) | 备注 |
在创建数据表之前,先创建一个存放酒店管理系统所用到的数据库HOTEL,并把所存有与酒店管理系统有关的表全部存放到该数据库中。
使用第一种语法创建客户信息表,并将客户编号列customerID设置为主键约束,代码如下
“CREATE TABLE CUSTOMERINFO
(
CUSTOMERID INTEGER PRIMARY KEY,
CUSTOMERNAME VARCHAR(12),
CUSTOMERAGE INTEGER,
CUSTOMERSEX VARCHAR(4),
CUSTOMERTEL VARCHAR(15),
REMARKS VARCHAR(200)
);”
使用第二种语法创建客户信息表,并将客户编号列customerID设置成主键约束,代码如下所示
“CREATE TABLE CUSTOMERINFO
(
CUSTOMERID INTEGER ,
CUSTOMERNAME VARCHAR(12),
CUSTOMERAGE INTEGER,
CUSTOMERSEX VARCHAR(4),
CUSTOMERTEL VARCHAR(15),
REMARKS VARCHAR(200),
PRIMARY KEY(CUSTOMERID)
);”
2在创建表时设置联合主键
“CREATE TABLE table_name
(
COLUMN_NAME1 DATATYPE,
COLUMN_NAME2 DATATYPE,
COLUMN_NAME3 DATATYPE
…
[CONSTRAINT constraint_name]PRIMARY KEY(COLUMN_NAME1,COLUMN_NAME2,
COLUMN_NAME3..
);”
*当主键是由多个列组成时,不能直接在列名后面声明主键约束,例如:
“CREATE TABLE_name table_name
(
COLUMN_NAME1 DATATYPE PRIMARY KEY,
COLUMN_NAMNE2 DATATYPE PRIMARY KEY,
COLUM_NAME3 DATATYPE
);”联合主键