约束条件,即对数据表的行数据/列数据的限定条件:
约束 | 关键字 | 说明 |
---|---|---|
非空 | not null | 不能为空的数据 |
主键 | primary key | 非空+唯一; 易于快速查询 |
唯一 | unique | 唯一性,允许为空 |
默认 | default | 数据的默认值 |
外键 | foreign key | 与其它数据表的关联数据,确保数据完整性 |
自增 | auto_increment | 系统自动序列化的自增字段 |
* 唯一 unique 与主键 primary key 约束的区别
一个表可以有多个 unique 声明,但至多只能有1个 primary key 声明;
声明 primary key 的字段不允许为空;
声明 unique 的字段允许为空;
1 null 空/ not null 非空
1.1 创建数据表时添加 not null约束,语法
create table tab_name( /* 创建 tab_name数据表 */
col_name type not null /* 列名col_name; type类型; not null 非空 */
); /* 不写 null 或 not null, 则 默认null */
示例代码:创建 bookinfo表; 列book_name为 varchar(20)类型;非空
mysql> create table bookinfo(
book_name varchar(20) not null
);
1.2 为数据表修改 null/ not null 约束,语法
alter table tab_name modify col_name type not null;
/* 为 tab_name数据表的 列col_name 设置 type类型 not null 非空 */
alter table tab_name modify col_name type null;
/* 为 tab_name数据表的 列col_name 设置 type类型 null 空 */
alter table tab_name modify col_name type;
/* 为 tab_name数据表的 列col_name 设置 type类型, 省略时默认为 null 空 */
示例代码:为 bookinfo表的 列book_name 设置 varchar(20)类型;非空
mysql> alter table bookinfo modify book_name varchar(20) not null;
2 主键约束 primary key
特点:数据唯一; 不能为空; 能够唯一标识表中的一条记录
优点:每张表最多仅有1个主键约束; 主键可结合外界不同数据表间的关系,加快数据查询速度
单字段主键: 由一个字段/列定义;
多字段联合主键: 由多个字段/列定义
2.1 创建:在定义字段/列的同时,指定主键 SQL语法:
create table tab_name( /* 创建 tab_name数据表; */
col_name type primary key /* 列名col_name; type类型; 指定为 primary key 主键 */
);
示例代码: 创建bookinfo数据表, 字段名bid; int 类型; 指定为 primary key 主键
mysql> create table bookinfo(
bid int primary key
);
2.2 创建:在列定义的后边,指定主键 SQL语法:
create table tab_name( /* 创建 tab_name数据表; */
col_name type, /* 列名col_name; type类型; */
[constraint pk_name] primary key(col_name) /* 指定为 primary key 主键 */
); /* 若不指定约束名称 [constraint pk_name],系统会自动分配约束名称 */
示例代码: 创建bookinfo数据表, 字段名bid; int 类型; 指定为 primary key 主键
mysql> create table bookinfo(
bid int,
constraint pkid primary key(bid)
);
2.3 创建: 创建多字段/列 primary key 主键 SQL语法:
create table tab_name(
col_a type,
col_b type,
[constraint pk_id] primary key(col_a, col_b) /* 指定 col_a, col_b 为联合主键 */
);
示例代码: 创建borrowinfo数据表, 由 bid/ card_id组成联合主键
mysql> create table borrowinfo(
bid int,
card_id char(18),
primary key(bid, card_id)
);
2.4 添加修改: 数据表内字段的 primary key 主键 SQL 语法:
alter table tab_name modify col_name type primary key;
alter table tab_name add primary key(col_name);
alter table tab_name