1)约束的作用
对表中的数据进行进一步的限制,从而保证数据的正确性、有效性、完整性。
违反约束的不正确数据,将无法插入到表中
注意:约束是针对字段的
2)常见的约束
约束名 | 约束关键字 |
---|---|
主键 | primary key |
唯一 | unique |
非空 | not null |
外键 | foreign key |
5.1 主键约束
- 特点:唯一 非空,不可重复
- 作用:用于唯一标识数据库表中的一条记录
1)创建主键
创建一个带主键的表
# 方式1
CREATE TABLE student(
# 设置主键 唯一 非空
id INT PRIMARY KEY,
name VARCHAR(20),
sex CHAR(1)
);
# 方式2
CREATE TABLE student(
id INT,
name VARCHAR(20),
sex CHAR(1),
PRIMARY KEY(id)
);
# 方式3
CREATE TABLE student(
id INT,
name VARCHAR(20),
sex CHAR(1),
);
ALTER TABLE student ADD PRIMARY KEY(id);
- 哪些字段可以作为主键 ?
通常针对业务去设计主键,往往每张表都设计一个主键。主键是给数据库和程序使用的,跟最终的客户无关,所以主键没有意义没有关系,只要能够保证不重复就好。
2)删除主键
ALTER TABLE student DROP PRIMARY KEY;
3)主键的自增
注: 主键如果让我们自己添加很有可能重复,我们通常希望在每次插入新记录时,数据库自动生成主键字段的值。
# 创建主键自增的表
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20),
sex CHAR(1)
);
4)修改主键自增的起始值
默认地 AUTO_INCREMENT 的开始值是 1,如果希望修改起始值,请使用下面的方式
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20),
sex CHAR(1)
)AUTO_INCREMENT=200;
5)DELETE 和 TRUNCATE 对自增长的影响
删除表中所有数据的方式 | 特点 |
---|---|
delete | 只是删除表中所有数据,对自增没有影响 |
truncate | truncate 是将整个表删除掉,然后创建一个新的表自增的主键,重新从1开始 |
5.2 非空约束
非空约束的特点:某⼀列不允许为空
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
sex CHAR(1)
);
5.3 唯一约束
唯一约束的特点:表中的某一列的值不能重复( 对null不做唯一的判断 )
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
qq varchar(10) UNIQUE,
sex CHAR(1)
);
5.4 外键约束
5.5 默认值
默认值约束,用来指定某列的默认值。
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
qq varchar(10) UNIQUE,
grade int DEFAULT 0,
sex CHAR(1)
);