2.用户定义完整性约束:
用户定义的完整性规则,包括非空约束、自增约束、默认值约束等、check约束以及触发器约束,本次主要学习非空约束、自增约束、默认值约束,check约束以及触发器约束在这里暂时不做介绍。
非空约束(not null):
非空约束是指字段的值不能为null,null值就是没有值或值空缺,不是空串(‘ ’), 对于使用了非空约束的字段,如果用户在添加数据时没有给其指定值,数据库系统会报错。在mysql中,非空约束的定义可以使用 create table 或alter table语句,在某个列定义后面加上关键字 not null作为限定词,来约束该列的取值不能为空。
(1)创建表时,为字段添加非空约束,语法如下:
create table 表名(
字段名 数据类型 not null,
…,
字段名 数据类型
)engine=存储引擎;
例:在数据库db_school中定义班级表book1时,给字段booknum定义非空约束。
use db_school;
create table book1 (
id int(4),
booknum varchar(6) not null,
name varchar(25)
);
(2)修改表,给已经存在的字段添加非空约束,语法如下:
alter table 表名 modify 字段名 数据类型 not null;
例:使用alter table...modify语句给已有字段id添加非空约束。
create table book1 (
id int(4),
booknum varchar(6),
name varchar(25)
);
alter table book1 modify id int not null;
(3)修改表,添加新的字段并添加非空约束条件,语法如下:
alter table 表名 add 新字段名 新数据类型not null;
例:已有book1表,向表中新增作者字段author_name, 数据类型为char(10)、非空.
create table book1 (
id int(4),
booknum varchar(6),
name varchar(25)
);
alter table book1 add auther_name char(10) not null;
(4)删除表中字段的非空约束,语法如下:
alter table 表名 modify字段名 数据类型 null;
例:已有表book1,删除字段id的非空约束。
create table book1 (
id int(4) not null,
booknum varchar(6),
name varchar(25)
);
alter table book1 modify id int(4) null;
默认值(default)约束:
默认值约束用于指定一个字段的默认值。如果没有在该字段值填写数据,则该字段将自动填入这个默认值。
(1)创建表时,给字段增加默认值约束,语法如下:
create table 表名(
字段名 数据类型 default 默认值,
…,
字段名 数据类型
)engine=存储引擎;
例:在数据库db_school中定义成员表persons时,给字段city定义默认值约束。
create table persons(
id_p int ,
lastname varchar(10) ,
firstname varchar(10),
address varchar(100),
city varchar(20) default ‘shanghai’
);
以上创建的表persons中,对城市‘city’给了默认值,在插入数据的时候如果不输入其他值,给一个default,mysql会自动给默认值’shanghai’
(2) 修改表,对表中已有的字段设置默认值,语法如下:
alter table 表名 alter 字段名 set default ‘默认值’;
例:使用alter table…alter语句给表persons已有字段id_p添加默认值0
create table persons(
id_p int ,
lastname varchar(10) ,
firstname varchar(10),
address varchar(100),
city varchar(20) default ‘shanghai’
);
alter table persons alter id_p set default 0;
(3)修改表,在表中新增字段且为该字段设置默认值,方法如下:
alter table 表名 add 新字段名 新数据类型 default ‘默认值’;
例:给表persons增加字段sex表示性别,char(10),并且设置默认值 ‘男’;
create table persons(
id_p int ,
lastname varchar(10) ,
firstname varchar(10),
address varchar(100),
city varchar(20) default ‘shanghai’
);
alter table persons add sex char(10) default ‘男’;
(4)删除表中某个字段的默认值,方法如下:
alter table表名 alter 字段名 drop default;
例:删除表persons性别字段sex的默认值
alter table persons alter sex drop default;