数据库学习 -- SQL约束

本文详细介绍了SQL中的各种约束,如主键约束(唯一且非空)、非空约束、唯一约束(允许NULL值)和默认值约束,以及如何在创建和修改表结构时应用这些约束。还讨论了主键与唯一约束的区别以及自增列的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL 约束:

  • 对表中的数据进行进一步的限制
  • 保证数据的正确性、有效性、完整性
  • 违反约束的不正确数据无法插入到表中
  • 常见的约束
    • 主键:PRIMARY KEY
    • 非空:NOT NULL
    • 唯一:UNIQUE
    • 默认:DEFAULT
    • 外键:FOREIGN KEY

主键约束:

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

添加主键约束:

-- 创建一个带主键的表
CREATE TABLE emp1(
    -- 设置主键 唯一 非空 
    eid INT PRIMARY KEY, 
    ename VARCHAR(20), 
    sex CHAR(1)
);

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

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

创建主键自增的表:

  • AUTO_INCREMENT:表示自动增长(字段类型必须是整数类型)

当删除自增表中的数据后再插入数据时,自增列的数值会因删除方式有所差异:

  • delete 删除 新插入数据会使用最新的自增数值(例如插入一条自增列为10的数据之后删除,再插入一条新数据,新数据的自增列为11)
  • truncate 删除 新插入数据会从1开始自增(不会使用最新的自增数值,同时设置的自增起始值失效)

 

-- 创建主键自增的表 
CREATE TABLE emp3(
    eid INT PRIMARY KEY AUTO_INCREMENT, 
    ename VARCHAR(20), 
    sex CHAR(1) 
);

修改主键自增的起始值:

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

删除主键约束:

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

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

选择主键原则:

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

非空约束:

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

添加非空约束:

-- 创建带有非空约束的表

 

唯一约束:

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

添加唯一约束:

-- 创建带有唯一约束的表  

主键约束与唯一约束的区别:

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

默认值:

  • 默认值约束:用来指定某列的默认值

  • 语法:列名 字段类型 DEFAULT 默认值

字段指定默认值:

    -- 创建带有默认值的表

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值