1 约束的介绍
2 非空约束
创建图书信息表bookinfo:
create table bookinfo(
book_id int,
book_name varchar(20) not null
);
结果:
上面在创建表的时候,字段book_name添加了非空约束,也就是说在往表中添加数据的时候,book_name字段的值不能为空。
往表中添加数据:
insert into bookinfo(book_id) values(20110202);
结果:
由于book_name字段是非空约束,因此插入数据时没有给book_name字段值,插入报错。
删除表bookinfo中book_name字段约束:
alter table bookinfo modify book_name varchar(20);
结果:
如上图所示,删除非空约束后,可以添加数据,book_name字段也可以插入空值。
如果要重新添加非空约束,可以使用以下语句:
alter table bookinfo modify book_name varchar(20) not null;
结果:
3 主键约束
注意:一张表最多只能由一个主键。
3.1主键的类型
主键分为单字段主键
和多字段联合主键
。
其中,’[]'中的内容可以省略,也就是不用认为指定约束名称,数据库系统会自动给定一个约束名称。
3.2 定义列的同时指定主键
创建bookinfo表,并添加主键约束:
create table bookinfo(
book_id int primary key,
book_name varchar(20) not null
);
结果:
3.3 在列定义的后边指定主键
创建bookinfo表,并添加主键约束:
create table bookinfo(
book_id int,
book_name varchar(20) not null,
constraint pk_id primary key(book_id)
);
结果:
这里,表中只有
删除bookinfo表中的主键:
alter table bookinfo drop primary key;
结果:
为表bookinfo重新添加主键约束:
alter table bookinfo add primary key(book_id);
结果:
4 唯一约束
创建bookinfo表,添加唯一约束:
create table bookinfo(
book_id int primary key,
book_name varchar(20) not null unique
);
结果:
在表bookinfo中添加唯一约束:
alter table bookinfo add unique(book_name);
结果:
删除bookinfo表中的唯一约束:
alter table bookinfo drop key book_name;
结果:
注意:
5 默认约束
创建bookinfo表,并添加默认约束:
create table bookinfo(
book_id int primary key,
press varchar(20) default '机械工业出版社'
);
结果:
修改表bookinfo,添加默认约束:
alter table bookinfo alter column press set default '机械工业出版社';
结果:
删除表bookinfo的默认约束:
alter table bookinfo alter column press drop default;
结果:
6 外键约束
例如创建图书类别表bookcategory和图书信息表bookinfo,并图书信息表添加外键约束:
图书类别表bookcategory:
create table bookcategory(
category_id int primary key,
category varchar(20),
parent_id int
);
图书信息表bookinfo(并添加外键约束):
create table bookinfo(
book_id int primary key,
book_category_id int,
constraint fk_cid foreign key(book_category_id) references bookcategory(category_id)
);
结果:
修改bookinfo表,给bookinfo表添加外键约束:
alter table bookinfo add foreign key(book_category_id) references bookcategory(category_id);
结果:
删除bookinfo表中的外键约束:
alter table bookinfo drop foreign key fk_cid;
结果: