表数据约束条件

SQL 约束简介

对表中的数据进行进一步的限制
保证数据的正确性、有效性、完整性
违反约束的不正确数据无法插入到表中

常见的约束

  • 主键:PRIMARY KEY
  • 非空:NOT NULL
  • 唯一:UNIQUE
  • 默认:DEFAULT
  • 外键:FOREIGN KEY

一、主键约束

主键:一列(或一组列),其值能够唯一标识表中每一行
特点:不可重复,唯一,非空
语法:列名 字段类型 PRIMARY KEY

1.1、添加主键约束

-- 给存在的表添加主键
CREATE TABLE emp2( 
    eid INT , 
    ename VARCHAR(20), 
    sex CHAR(1) 
);

-- 通过 DDL 语句进行设置 
ALTER TABLE emp2 ADD PRIMARY KEY(eid);

1.2、创建主键自增的表

  • AUTO_INCREMENT:表示自动增长(字段类型必须是整数类型)
-- 创建主键自增的表 
CREATE TABLE emp3(
    eid INT PRIMARY KEY AUTO_INCREMENT, 
    ename VARCHAR(20), 
    sex CHAR(1) 
);

1.3、修改主键自增的起始值

-- 创建主键自增的表,自定义自增其实值 
CREATE TABLE emp4( 
    eid INT PRIMARY KEY AUTO_INCREMENT, 
    ename VARCHAR(20), 
    sex CHAR(1) 
)AUTO_INCREMENT=100;

1.4、删除主键约束

-- 删除表中的主键
ALTER TABLE 表名 DROP PRIMARY KEY;

-- 使用 DDL 语句删除表中的主键 
ALTER TABLE emp2 DROP PRIMARY KEY; 
-- 查看表结构
DESC emp2;

1.5、选择主键原则

  • 针对业务设计主键,往建议每张表都设计一个主键
  • 主键可以没有业务意义,只需要保证不重复

二、非空约束

2.1、非空约束

  • 非空约束特点: 某一列不予许为空
  • 语法:列名 字段类型 NOT NULL

2.2、添加非空约束

-- 添加非空约束
CREATE TABLE emp5( 
    eid INT PRIMARY KEY AUTO_INCREMENT, 
    -- ename 字段不能为空 
    ename VARCHAR(20) NOT NULL, 
    sex CHAR(1) 
);

三、唯一约束

3.1、唯一约束

  • 唯一约束: 表中的某一列的值不能重复
  • 对 NULL 不做唯一的判断
  • 语法:列名 字段类型 UNIQUE

3.2、添加唯一约束

-- 创建带有唯一约束的表  
CREATE TABLE emp6(
    eid INT PRIMARY KEY AUTO_INCREMENT,
    -- 为 ename 字段添加唯一约束
    ename VARCHAR(20) UNIQUE,
    sex CHAR(1) 
);

3.3、主键约束与唯一约束的区别

  1. 主键约束,唯一且不能够为空
  2. 唯一约束,唯一但是可以为空
  3. 一个表中只能有一个主键,但是可以有多个唯一约束

四、默认值

4.1、默认值

  • 默认值约束:用来指定某列的默认值
  • 语法:列名 字段类型 DEFAULT 默认值

4.2、字段指定默认值

-- 创建带有默认值的表 
CREATE TABLE emp7( 
    eid INT PRIMARY KEY AUTO_INCREMENT,
    ename VARCHAR(20), 
    -- 为 sex 字段添加默认值 
    sex CHAR(1) DEFAULT '女'
);