1 约束的介绍

MySQL去非group字段_主键


MySQL去非group字段_sql_02

2 非空约束

MySQL去非group字段_sql_03


MySQL去非group字段_MySQL去非group字段_04


MySQL去非group字段_sql_05


MySQL去非group字段_sql_06


MySQL去非group字段_mysql_07


创建图书信息表bookinfo:

create table bookinfo(
    book_id int,
    book_name varchar(20) not null
);

结果:

MySQL去非group字段_MySQL去非group字段_08


上面在创建表的时候,字段book_name添加了非空约束,也就是说在往表中添加数据的时候,book_name字段的值不能为空。

往表中添加数据:

insert into bookinfo(book_id) values(20110202);

结果:

MySQL去非group字段_MySQL去非group字段_09


由于book_name字段是非空约束,因此插入数据时没有给book_name字段值,插入报错。

删除表bookinfo中book_name字段约束:

alter table bookinfo modify book_name varchar(20);

结果:

MySQL去非group字段_主键_10


如上图所示,删除非空约束后,可以添加数据,book_name字段也可以插入空值。

如果要重新添加非空约束,可以使用以下语句:

alter table bookinfo modify book_name varchar(20) not null;

结果:

MySQL去非group字段_数据库_11

3 主键约束

MySQL去非group字段_主键_12


注意:一张表最多只能由一个主键。

3.1主键的类型

主键分为单字段主键多字段联合主键

MySQL去非group字段_mysql_13


其中,’[]'中的内容可以省略,也就是不用认为指定约束名称,数据库系统会自动给定一个约束名称。

3.2 定义列的同时指定主键

创建bookinfo表,并添加主键约束:

create table bookinfo(
   book_id int primary key,
   book_name varchar(20) not null
);

结果:

MySQL去非group字段_主键_14

3.3 在列定义的后边指定主键

创建bookinfo表,并添加主键约束:

create table bookinfo(
    book_id int,
    book_name varchar(20) not null,
    constraint pk_id primary key(book_id)
);

结果:

MySQL去非group字段_mysql_15


MySQL去非group字段_数据库_16


MySQL去非group字段_sql_17


MySQL去非group字段_sql_18


这里,表中只有

删除bookinfo表中的主键:

alter table bookinfo drop primary key;

结果:

MySQL去非group字段_数据库_19


为表bookinfo重新添加主键约束:

alter table bookinfo add primary key(book_id);

结果:

MySQL去非group字段_sql_20

4 唯一约束

MySQL去非group字段_MySQL去非group字段_21


MySQL去非group字段_mysql_22


创建bookinfo表,添加唯一约束:

create table bookinfo(
    book_id int primary key,
    book_name varchar(20) not null unique
);

结果:

MySQL去非group字段_sql_23


MySQL去非group字段_数据库_24


在表bookinfo中添加唯一约束:

alter table bookinfo add unique(book_name);

结果:

MySQL去非group字段_MySQL去非group字段_25


MySQL去非group字段_mysql_26


删除bookinfo表中的唯一约束:

alter table bookinfo drop key book_name;

结果:

MySQL去非group字段_sql_27


注意:

MySQL去非group字段_sql_28

5 默认约束

MySQL去非group字段_sql_29


MySQL去非group字段_主键_30


创建bookinfo表,并添加默认约束:

create table bookinfo(
    book_id int primary key,
    press varchar(20) default '机械工业出版社'
);

结果:

MySQL去非group字段_MySQL去非group字段_31


MySQL去非group字段_mysql_32


修改表bookinfo,添加默认约束:

alter table bookinfo alter column press set default '机械工业出版社';

结果:

MySQL去非group字段_数据库_33


MySQL去非group字段_sql_34


删除表bookinfo的默认约束:

alter table bookinfo alter column press drop default;

结果:

MySQL去非group字段_MySQL去非group字段_35

6 外键约束

MySQL去非group字段_mysql_36


MySQL去非group字段_主键_37


MySQL去非group字段_MySQL去非group字段_38


MySQL去非group字段_主键_39


例如创建图书类别表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)
);

结果:

MySQL去非group字段_主键_40


MySQL去非group字段_MySQL去非group字段_41


修改bookinfo表,给bookinfo表添加外键约束:

alter table bookinfo add foreign key(book_category_id) references bookcategory(category_id);

结果:

MySQL去非group字段_主键_42


MySQL去非group字段_MySQL去非group字段_43


删除bookinfo表中的外键约束:

alter table bookinfo drop foreign key fk_cid;

结果:

MySQL去非group字段_MySQL去非group字段_44


MySQL去非group字段_主键_45