列的完整性约束
完整性约束条件是对字段进行限制,要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不再执行用户的操作。MySQL中基本的完整性约束条件如表3-11所示。下表是完整性约束条件:
1. 主键约束(PRIMARY KEY, 简称PK)
主键是表的一个特殊字段,能唯一标识该表中的每条信息。主键和记录的关系,如同身份证和人的关系。主键用来标识每个记录,每个记录的主键值都不同。身份证用来表明人的身份,每个人都具有唯一的身份证号。设置表的主键是指在创建表时设置表的某个字段为该表的主键。
主键的主要目的是帮助数据库管理系统以最快的速度查找到表的某一条信息。主键必须满足的条件就是主键必须是唯一的,表中任意两条记录的主键字段的值不能相同,并且是非空值。主键可以是单一的字段,也可以是多个字段的组合。
? ? 1.单字段主键 单字段主键的语法规则如下:
create table class1(propName propType PRIMARY KEY, ......);
或
create table class(propName propType , ...... PRIMARY KEY(propName));
创建表时在尾部 ID这一行已经被设置为主键 创建表school,设置id字段为PK约束,再查看class表信息,SQL语句如下
mysql> create database school; #创建数据库school
mysql> use school; #选择数据库school
mysql> create table class(id int PRIMARY KEY, name varchar(128), teacher varchar(64)); #创建表class
mysql> desc class ; #查询表class 的定义, describe class 效果等同
mysql> show create table class ; #同样可以实现查询表class 的定义
mysql> insert into class VALUES(1,'一班','martin'); #插入成功
mysql> insert into class VALUES(1,'二班','rock'); #因主键约束,插入失败
创建 class1 表 查询表定义 同样可以查询表的定义 主键约束,插入失败
Mysql 支持给主键设置名字:
create table tablename(propName propType , ......CONSTRAINT pk_name PRIMARY KEY(propName));
给id字段的PK约束设置一个名字,可以执行SQL语句CONSTRAINT。创建表class:
mysql> create database school; #创建数据库school
mysql> use school; #选择数据库school
mysql> create table class(id int , name varchar(128), teacher varchar(64), CONSTRAINT id_pk PRIMARY KEY (id)); #创建表class
mysql> desc class ; #查询表class 的定义, describe class 效果等同
mysql> show create table class ; #同样可以实现查询表class 的定义
mysql> insert into class VALUES(1,'一班','martin'); #插入成功
mysql> insert into class VALUES(1,'二班','rock'); #因主键约束,插入失败
? ? 2.多字段主键 主键是由多个属性组合而成时,在属性定义完之后统一设置主键。语法规则如下:
CREATE TABLE tablename(
propName1 propType, #班级1
propName2 propType, #班级2
......
[CONSTRAINT pk_name]PRIMARY KEY(propName1, propName2)
);
多字段主键的设置。
mysql> create database school; #创建数据库school
mysql> use school; #选择数据库school
mysql> create table class2(id int, name varchar(128), teacher varchar(64), PRIMARY KEY(id,name)); #创建表class2,设置联合主键
mysql> desc class3 ; #查询表class2 的定义, describe class2 效果等同
mysql> insert into class2 VALUES(1,'一班','martin'); #插入成功
mysql> insert into class2 VALUES(1,'一班','rock'); #因联合主键约束,插入失败
把ID, name 设置为联合的主键
|