1、约束的含义:
是一种限制,对表的行或列进行限制。
2、约束的类型:
1)非空约束:not null ,字段的值不能为空。若添加数据时没有指定值,会报错。
添加非空约束
方式1:在创建表时添加非空约束
create table bookinfo(
book_id int,
book_name varchar(20) not null
);
方式2:通过修改表来添加非空约束
create table bookinfo(
book_id int,
book_name varchar(20)
);
alter table bookinfo modify book_name varchar(20) not null;//添加非空约束
删除非空约束
create table bookinfo(
book_id int,
book_name varchar(20) not null
);
alter table bookinfo modify book_name varchar(20); //删除非空约束
2)主键约束:primary key,通过主键能定位到改行记录,要求唯一并不允许为空。注意:一张表只能有一个字段设置为主键。
第一种:单字段主键约束:
编写方式1:列名 数据类型 primary key
create table bookinfo(
book_id int primary key,
book_name varchar(20) not null
);
编写方式2:[constraint <约束名>]primary key(列名)
create table bookinfo(
book_id int,
book_name varcahre(20) not null,
constraint pk_id primary key(book_)id)
);
第2种:多字段联合主键(或:复合主键)
定义:主键由多个字段联合组成
编写方式:primary key (字段1,字段2,…字段n);
create table borrowinfo(
book_id int,
card_id char(18),
primary key(book_id,card_id)
);
同样地,我们不仅可以通过创建表的时候添加主键约束,也可以通过修改表的时候添加主键约束。
alter table bookinfo modify book_id int primary key;
alter talbe bookinfo add primary key(book_id);
alter table bookinfo add constraint pk_id primary key (book_id);
删除主键约束:
alter table bookinfo drop primary key;
3)唯一约束:unique ,一张表指定列的值不能重复
创建表时添加唯一约束:
create table bookinfo(
book_id int primary_key,
book_name varchar(20) unique not null
);
修改表时添加唯一约束:
alter table bookinfo modify book_name varchar(20) unique;
alter table bookinfo add unique(book_name);
alter table bookinfo add constraint uk_bname unique(book_name);
删除唯一约束:
alter table bookinfo drop key book_info;
4)默认约束:default,插入数据未对值赋值的话,会默认赋值
方式1:创建表时添加默认约束:
create table bookinfo(
book_id int primary key,
press varchar(20) default '机械工业出版社'
);
方式2:创建表时未创建默认约束,而是在修改表时添加约束:
alter table bookinfo
modify press varchar(10) default '机械工业出版社';
删除约束:
alter table bookinfo modify press varchar(20);
alter table bookinfo alter columu press drop default;
5)外键约束:foreign key,对两个表进行连接。可以是一列或是多列,一个表可以有一个或多个外键。