SQL篇 添加约束、删除约束

    • 1、相关链接
    • 2、约束的增删找查
      • 2.1 查看约束(主键、外键、唯一性、检查约束)
      • 2.2 查看默认约束
      • 2.3 修改约束(添加/编辑/修改)
        • 2.3.1 添加主键约束
        • 2.3.2 添加外键约束
        • 2.3.3 添加唯一性约束
        • 2.3.4 添加检查约束
        • 2.3.5 添加默认值约束
        • 2.3.6 添加非空约束
        • 2.3.7 修改约束
        • 2.3.8 删除约束

1、相关链接

SQL篇 约束【1】
SQL篇 约束【2】

2、约束的增删找查

SQL Server约束是保证数据完整性的关键机制。我将以典型的员工信息表(emp_tbl)和厂区进出记录表(checkInRecord)为案例,系统讲解六大约束类型的增删找查,帮助开发者掌握约束的最佳实践。现数据库中已有emp_tbl表和checkInRecord表,设计的字段如下表格所示,并且所有字段未设置任何约束。
员工信息表(emp_tbl):

字段名字段类型字段注释
empNovarchar(10)员工编号
empNamevarchar(10)员工姓名
sexchar(1)性别(1男;2女)
enterDaydatetime入职日期
emailvarchar(40)员工邮箱
phonevarchar(11)员工电话
stateFlagchar(1)员工状态(0无效;1有效)

厂区进出记录表(checkInRecord):

字段名字段类型字段注释
empnovarchar(10)员工编号
punchTypevarchar(1)进出类型(0进入;1出去)
punchDatedate进出日期
punchTimetime进出时间
recordtimedatetime记录登记日期

2.1 查看约束(主键、外键、唯一性、检查约束)

INFORMATION_SCHEMA.TABLE_CONSTRAINTS是SQL Server系统数据库中的一个表,用于存储数据库中所有表的约束信息‌,包括主键、外键、唯一约束等类型。
TABLE_CONSTRAINTS表的数据结构:

字段说明
‌CONSTRAINT_CATALOG条件约束限定符
‌CONSTRAINT_SCHEMA‌包含条件约束的架构名称
‌CONSTRAINT_NAME‌条件约束名称
‌TABLE_CATALOG数据表限定符
‌TABLE_SCHEMA包含数据表的架构名称
‌TABLE_NAME数据表名称
‌CONSTRAINT_TYPE约束条件的类型

注意:
CONSTRAINT_TYPE条件约束的类型只包含CHECK(检查约束)、UNIQUE(唯一性约束)、PRIMARY KEY(主键约束)、FOREIGN KEY(外键约束)。
查看方法:

select * 
from information_schema.table_constraints 
where table_name = 'emp_tbl'

执行结果:
在这里插入图片描述

2.2 查看默认约束

在 SQL Server 中,sys.default_constraints 是一个系统视图,用于存储数据库中所有默认约束(DEFAULT 约束)的详细信息。

SELECT dc.name AS DefaultConstraintName,t.name AS TableName,c.name AS ColumnName,OBJECT_NAME(dc.parent_object_id) AS ParentObjectName,dc.definition AS DefaultDefinition
FROM sys.default_constraints dc
JOIN sys.columns c ON dc.parent_column_id = c.column_id AND dc.parent_object_id = c.object_id
JOIN sys.tables t ON c.object_id = t.object_id
WHERE t.name = 'emp_tbl' AND c.name = 'stateFlag';

2.3 修改约束(添加/编辑/修改)

2.3.1 添加主键约束
alter table emp_tbl
add constraint pk_empno primary key(empno)

在这里插入图片描述

2.3.2 添加外键约束
alter table checkInRecord
add constraint fk_empno foreign key(empno) references emp_tbl(empno)

在这里插入图片描述

2.3.3 添加唯一性约束
alter table emp_tbl
add constraint uk_mail unique(email)
2.3.4 添加检查约束
alter table emp_tbl
add constraint ck_sex check(sex in ('1','2'))
2.3.5 添加默认值约束
alter table emp_tbl
add constraint df_state default '1' for stateFlag
2.3.6 添加非空约束

注意:NOT NULL 不是约束类型而是列属性

	alter table emp_tblalter column email  varchar(40) not null
2.3.7 修改约束
  1. 约束重命名
EXEC sp_rename 'pk_empno', 'pk_emp_empno'
  1. 修改约束
    需要删除约束后再新增约束
2.3.8 删除约束
alter table emp_tbl
drop constraint DF__test20240__state__108B795B

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/86994.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/86994.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/86994.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python PyTorch 深度学习库 包 timm

文章目录 📦 主要特点🚀 安装方式🧪 使用示例示例1:加载一个预训练模型进行图像分类示例2:获取模型结构信息 🌐 官方资源🔍 常见用途✅ 优势总结 Timm 是一个非常流行且功能强大的 Python 深度学…

tree 命令集成到 Git Bash:可视化目录结构的指南

目录 1. 下载与准备 tree 工具   2. 集成 tree 到 Git Bash 环境   3. tree 命令基础用法详解   4. 使用示例 在软件开发和文件管理中,清晰的目录结构可视化是提高效率的重要手段。tree命令作为 UNIX/Linux 系统的标准工具,能以树形结构递归展…

如何搭建基于RK3588的边缘服务器集群?支持12个RK3588云手机

以下是基于RK3588搭建边缘服务器集群的完整实施方案,涵盖硬件选型、集群架构、软件部署及优化要点: 🖥️ ‌一、硬件集群架构设计‌ ‌节点基础配置‌ ‌核心单元‌:单节点采用RK3588核心板(4A762.4GHz 4A551.8GHz&am…

飞算 JavaAI:我的编程强力助推引擎

文章目录 引言:当Java开发遇上AI助手初识飞算JavaAI:专为Java而生的智能伴侣安装与配置:轻松上手的开始核心功能体验:从需求到代码的全流程革命1. 智能需求分析与拆解2. 智能接口设计3. 表结构智能生成4. 处理逻辑自动梳理5. 高质…

飞算JavaAI—AI编程助手 | 编程领域的‘高科技指南针’,精准导航开发!

目录 一、引言 1.1 什么是飞算JavaAI? 1.2 告别"996的孤独感":AI成为你的编码搭子 1.3 成就感加速器:从"能运行"到"优雅实现" 1.4 极简下载体验:3步开启"开挂"模式 二、深入体验飞…

NPM组件 betsson 等窃取主机敏感信息

【高危】NPM组件 betsson 等窃取主机敏感信息 漏洞描述 当用户安装受影响版本的 betsson 组件包时会窃取用户的主机名、用户名、工作目录、IP地址等信息并发送到攻击者可控的服务器地址。 MPS编号MPS-2nrw-lifd处置建议强烈建议修复发现时间2025-06-30投毒仓库npm投毒类型主…

Apipost 与 Apifox:API 开发管理中的 AI 能力对比

在当今竞争激烈的 API 开发与测试领域,效率与质量是衡量工具优劣的关键指标。Apipost 凭借其强大的 AI 功能,为开发者和测试人员带来了前所未有的便利,而 Apifox 作为该领域的重要参与者,二者在实际应用中究竟有何差异&#xff1f…

Electron 菜单栏深度定制指南:从基础到高级实践

在现代桌面应用开发中,菜单栏作为用户界面的重要组成部分,不仅提供了应用功能的快速访问途径,还直接影响着用户的操作体验。Electron 作为跨平台桌面应用开发框架,为开发者提供了强大而灵活的菜单系统定制能力。本文将全面介绍 El…

QML通过XMLHttpRequest实现HTTP通信

转自个人博客 由于 QML 的 JavaScript 兼容性,我们可以直接使用 JavaScript 的 XMLHttpRequest 对象进行 HTTP 请求。QML 的 XMLHttpRequest 实现与标准浏览器的实现非常相似,但有一些限制和特殊行为需要注意。 而QML实现TCP等其他通信一般就需要借助Qt与…

Spring Boot 内置反向代理(Undertow Proxy)高可用配置

引言 在微服务架构中,反向代理是一个不可或缺的组件,它负责请求转发、负载均衡、安全过滤等关键功能。 通常我们会选择 Nginx、HAProxy 等专业反向代理组件,但在某些场景下,使用 Spring Boot 内置的反向代理功能可以简化架构&am…

ClickHouse 部署

Docker 部署 1、拉取镜像 docker pull clickhouse/clickhouse-server:latest单机版本部署 编写docker-compose.yml version: 3services:clickhouse-server:image: clickhouse/clickhouse-server:22.12container_name: clickhouse-serverports:- "8123:8123"ulimit…

Fiddler中文版抓包工具如何帮助前端开发者高效调试

前端开发早已不再是“写好页面就完事”的工作。随着业务复杂度提升,前端开发者需要直面接口联调、性能优化、跨域排查、HTTPS调试等一系列和网络请求紧密相关的任务。抓包工具成为这些环节中不可替代的得力助手,而 Fiddler抓包工具 因其全面的功能和灵活…

WTL 之trunk技术学习

相比于MFC的消息机制,WTL/ATL的实现更加优雅。后者将win32 API与面向对象技术完美地结合起来,去掉了庞杂的MFC依赖,生成的软件体积更小,运行速度更快。在其中,如何将窗口函数转变为对窗口对象成员函数的调用&#xff0…

Linux——11.软件安装与包管理

Linux 与 Windows 系统在软件安装方式上的差异 Linux: Linux 通过 包管理系统(如 Debian 的 apt、Red Hat 的 yum/dnf)将软件打包为二进制安装包(如 .deb、.rpm),每个包包含程序文件、依赖关系和元数据。包管理系统负责统一管理软件的安装、更新、卸载,并自动处理依赖关…

无人机用shell远程登录机载电脑,每次需要环境配置原因

原因: 终端分为“登录 shell”和“非登录 shell”: - 登录 shell(如开机登录、远程 SSH 连接)会加载 .profile 或 .bash_profile 。 - 非登录 shell(如打开新终端窗口)会加载 .bashrc 。 - 如果环境变量…

HarmonyOS5 折叠屏适配测试:验证APP在展开/折叠状态下的界面自适应,以及会出现的问题

以下是HarmonyOS5折叠屏应用在展开/折叠状态下的UI自适应测试方案及技术实现要点: 一、核心测试维度 ‌状态连续性验证‌ 页面滚动位置保持(需通过display.on(foldStatusChange)监听状态并保存/恢复滚动位置)输入内容保留(使用…

Introduction to Software Engineering(TE)

Program Design Language 也称为:伪代码语言(Pseudo-code Language) PDL 的同类(或相关替代) 名称简介是否代码结构化流程图 (Flowchart)用图形方式描述处理逻辑✅伪代码 (Pseudo-code)通用术语,PDL就是…

DM8数据库入门到熟练

1、部署 1.1、下载 用户在安装 DM 数据库之前需要检查或修改操作系统的配置,以保证 DM 数据库能够正确安装和运行。 操作系统CPU数据库CentOS7x86_64dm8_20250506_x86_rh7_64.zip 1.2、新建 dmdba 用户 安装前必须创建 dmdba 用户,禁止使用 root 用户…

VUE3入门很简单(2)--- 计算属性

前言 重要提示:文章只适合初学者,不适合专家!!! 为什么需要计算属性? 想象你在开发一个购物车功能。当用户选择商品时,你需要: 计算商品总价根据折扣码调整价格自动更新免运费状…

IPV6概述

1. 定义 IPv6(Internet Protocol version 6)是互联网协议的第六版,设计用于替代现有的 IPv4 协议。IPv6 提供了更大的地址空间、增强的路由效率、更好的安全性以及自动配置功能,以满足现代网络的需求。 1.1 地址空间 IPv6 地址长…