SQL篇 约束【2】

发布于:2025-06-29 ⋅ 阅读:(16) ⋅ 点赞:(0)

SQL篇 约束【1】

SQL篇 约束1

4、检查约束(Unique Constraint)

4.1 含义

检查约束通过布尔表达式校验数据的有效性,其约束条件在数据插入或更新时即刻生效,当表达式计算结果为false时拒绝操作,确保数据符合业务规则‌,并且在数据库层面进行数据验证,减少应用程序层面的错误处理逻辑,简化开发工作。

4.2 如何在创建表单时添加检查约束

CREATE TABLE emp_tbl(  --员工信息表
    empNo varchar(10) not null primary key,  --员工编号
    empName varchar(10) NOT NULL,   --员工姓名
    sex char(1) NOT NULL,   --员工性别  (1男;2女)
    enterDay  datetime not null,   --入职日期
    email varchar(40),  --电子邮箱
    phone varchar(11),   --电话
    stateFlag char(1) not null  --账号状态  (0离职;1在职)
	CONSTRAINT chk_sex CHECK (sex in ('1','2')),
	CONSTRAINT chk_state CHECK (stateFlag in ('0','1'))
);

添加一个员工信息表中没有的账号状态的数据案例如下:

  insert into emp_tbl
  (empNo,empName,sex,enterDay,email,phone,stateFlag)
  values
  ('T0007',N'申葛','1','2014-05-11 00:00:00.000',null,null,'5')

执行结果:
Msg 547, Level 16, State 0, Line 2
The INSERT statement conflicted with the CHECK constraint “chk_state”. The conflict occurred in database “myDatabase”, table “dbo.emp_tbl”, column ‘stateFlag’.
The statement has been terminated.

5、默认约束(DEFAULT)

5.1 含义

默认约束指在创建表时为某个字段指定一个默认值,当插入数据时如果没有为该字段提供具体的值,系统会自动使用这个默认值为列指定默认值。

5.2 如何在创建表单时添加默认约束

CREATE TABLE emp_tbl2(
    empNo varchar(10) not null primary key,
    empName varchar(10) NOT NULL,
    sex char(1) NOT NULL,
    enterDay  datetime not null,
    email varchar(40),
    phone varchar(11),
    stateFlag char(1) not null default '1'
);

新增一条数据到员工信息表的案例:

    insert into emp_tbl
	(empNo,empName,sex,enterDay,email,phone)
	values
	('T0008',N'张三丰','1','2014-05-11 00:00:00.000','zsf@qq.com','0222')

员工信息表中新增数据行信息:
在这里插入图片描述

6、非空约束(NOT NULL)

6.1 含义

非空约束是数据库中对表中字段设置的一种强制性规则,它要求该字段在插入或更新数据时‌必须包含有效值,禁止存储 NULL(空值)‌,主要目的是确保数据表中特定字段的数据‌完整性‌与‌可靠性‌,避免因缺失必要信息而导致的数据不一致或不完整问题。

添加一个姓名为空的数据案例如下:

	insert into emp_tbl
	(empNo,empName,sex,enterDay,email,phone)
	values
	('T0009',null,'1','2014-05-11 00:00:00.000','kk@qq.com','0222')

执行结果:
Msg 515, Level 16, State 2, Line 1
Cannot insert the value NULL into column ‘empName’, table ‘myDatabase.dbo.emp_tbl’; column does not allow nulls. INSERT fails.
The statement has been terminated.

7、SQL约束的目的

  1. 确保数据完整性
    ✅ ‌SQL约束用于强制数据库表中的数据遵循特定规则,防止无效或不一致的数据插入或更新。
  2. 维护数据一致性
    ✅ ‌约束通过定义表之间的关系确保跨表数据的一致性。
  3. 实现业务规则
    ✅ ‌约束可以直接体现业务逻辑要求。
  4. 简化应用逻辑
    ✅ ‌通过数据库层约束,减少应用程序代码中对数据的验证逻辑。
  5. 防止误操作
    ✅ ‌约束自动拦截不符合规则的数据操作,提供错误反馈,避免人为操作导致的数据问题。

网站公告

今日签到

点亮在社区的每一天
去签到