【建议收藏】数据库 SQL 入门——约束(内附演示)

这篇具有很好参考价值的文章主要介绍了【建议收藏】数据库 SQL 入门——约束(内附演示)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

sql数据库原理怎么定义约束,# SQL入门语句速查手册,数据库,sql

📚引言

🙋‍♂️作者简介:生鱼同学,大数据科学与技术专业硕士在读👨‍🎓,曾获得华为杯数学建模国家二等奖🏆,MathorCup 数学建模竞赛国家二等奖🏅,亚太数学建模国家二等奖🏅。

✍️研究方向:复杂网络科学

🏆兴趣方向:利用python进行数据分析与机器学习,数学建模竞赛经验交流,网络爬虫等。

**约束作用于表中字段上的规则,用于限制储存在表中的数据。**在本文中我们主要介绍SQL中约束分类以及约束以及约束的不同类型,并作出演示。

📖约束

首先我们来看约束的主要分类,常见的约束分类如下:

约束 描述 关键字
非空约束 限制该字段的数据不能为NULL NOT NULL
唯一约束 保证该字段的所有数据都是唯一、不重复的 UNIQUE
主键约束 主键是一行数据的唯一标识,要求非空且唯一 PRIMARY KEY
默认约束 保存数据时,如果未指定该字段的值,则采用默认值 DEFAULT
检查约束 保证字段值满足一个条件 CHECK
外键约束 用来让两张表之间建立连接,保证数据的一致和完整 FOREIGN KEY

我们可以选择在创建表或修改表的过程中进行约束的添加。

接下来,我们将会根据不同的约束类型进行分别介绍与演示。

📑非空约束

非空约束限制字段的数据不能为NULL,非空约束的关键字为NOT NULL。当我们希望在创建表的过程中添加非空约束的时候,我们可以使用下面的代码:

# 创建一个名为TABLE_NAME的表并且将Id和AGE设为非空
CREATE TABLE TABLE_NAME
(
Id int NOT NULL,
AGE varchar(10) NOT NULL
)

当表已经创建后,我们可以使用下面的代码为字段添加约束:

ALTER TABLE TABLE_NAME ADD NOT NULL ( Id )

在我的数据库中,我已经预先创建了表EMP,建表结构如下:
sql数据库原理怎么定义约束,# SQL入门语句速查手册,数据库,sql
如果我们想为name加上非空的约束,可以使用下面的代码:

ALTER TABLE EMP  MODIFY name varchar(255) NOT NULL;

结果如下:
sql数据库原理怎么定义约束,# SQL入门语句速查手册,数据库,sql
当我们在这时想要插入一个数据的时候,我们发现没有name的设定已经不能够插入了:
sql数据库原理怎么定义约束,# SQL入门语句速查手册,数据库,sql
另外,删除上述约束的代码为:

ALTER TABLE EMP MODIFY varchar(255) NOT NULL;

📑唯一约束

唯一约束表示该字段是唯一的,表示为UNIQUE。同样的添加唯一约束有两种方法,一种是在创建表结构的时候进行添加,另一种是创建表后进行更改,代码如下:

# 表示对AGE进行唯一约束
CREATE TABLE TABLE_NAME
(
Id int NOT NULL,
AGE varchar(10) UNIQUE
)

另外,我们还可以在建表的时候对某字段进行约束的命名,代码如下:

CREATE TABLE EMP
(
Id int NOT NULL,
AGE varchar(10)
CONSTRAINT UNIQUE EMP_ID_AGE UNIQUE (Id,AGE)
)

同样的,我们也可以在表创建后对唯一约束进行添加以及删除,代码如下:

# 为Id添加唯一约束
ALTER TABLE EMP ADD UNIQUE (Id);
ALTER TABLE EMP ADD CONSTRAINT uc_EMP_ID_AGE UNIQUE (Id,AGE);
# 删除名为uc_EMP_ID_AGE 的唯一约束
ALTER TABLE EMP DROP CONSTRAINT uc_EMP_ID_AGE;

📑主键约束

主键在每个表中只有一个,其是唯一的值并且不能包括NULL值,同样的我们可以在创建表的过程中指定主键或者在创建表后添加主键,代码如下:

CREATE TABLE EMP
(
Id int PRIMARY KEY,
AGE varchar(10)
)

在创建表后,我们可以通过ALTER来进行主键的添加和取消,代码如下所示:

# 为名为TABLE_NAME 的表的字段Id添加主键
ALTER TABLE TABLE_NAME ADD PRIMARY KEY (Id)
# 删除表中的主键
ALTER TABLE TABLE_NAME DROP PRIMARY KEY

📑默认约束

当我们想对某些字段进行默认值的设定时,可以使用默认约束,这种约束能够对插入的时候的数据赋予一个我们初始化的默认值,代码如下:

CREATE TABLE EMP
(
Id int NOT NULL,
NANME varchar(255) DEFAULT '无名氏'
)

或者在建表后对表格加上或者删除默认的约束,代码如下:

# 添加一个默认约束
ALTER TABLE EMP ALTER NANME SET DEFAULT '无名氏'
# 删除一个默认约束
ALTER TABLE EMP; ALTER NANME DROP DEFAULT;

📑检查约束

当我们希望都某个字段的值进行检查时,可以使用检查约束限定范围,可以在建表的过程中对其添加检查的条件,代码如下:

# 在括号中传入约束条件
CREATE TABLE EMP
(
Id int NOT NULL CHECK (Id>0),
NANME  varchar(255) NOT NULL
)

我们可以对后续添加的约束进行命名,从而更好的删除约束以及操作约束,代码如下:

ALTER TABLE EMP ADD CHECK (Id>0);
# 我们对该检查约束命名为chk_emp
ALTER TABLE EMP ADD CONSTRAINT chk_emp CHECK (Id>0 AND MAME='路人甲');

另外,删除约束也可以在建表之后进行。这时我们就可以利用其约束名,代码如下:

ALTER TABLE EMP DROP CONSTRAINT chk_emp;

📑外键约束

🔖外键的添加

添加外键可以把表进行链接,为了更好的解释外键,我们首先看一个例子:
假设我们员工表(EMP)如下:

Id 名字 部门
1 张三 1
2 李四 2
3 王五 3

我们还有一个部门表(PARTY)如下:

Id 部门
1 研发部
2 销售部
3 营销部

此时员工表的部门字段就是一个外键,我们通常把部门表称作母表,而员工表称作子表。在SQL中我们可以在创建的时候添加外键,或者创建后添加外键,代码如下:

CREATE TABLE EMP
(
Id int PRIMARY KEY,
NAME varchar(10) NOT NULL,
PARTY_ID int,
FOREIGN KEY (Id ) REFERENCES PARTY(Id)
)

特别的,在创建表后添加外键的代码如下:

ALTER TABLE EMP ADD CONSTRAINT FOREIGN_PARTY FOREIGN KEY (Id) REFERENCES PARTY(Id);

与此同时我们也可以撤销外键的约束,代码如下:

ALTER TABLE Orders DROP FOREIGN KEY FOREIGN_PARTY;

🔖删除/更新外键

当我们对表的某字段设定了外键时,删除外键中的数据通常是不允许的,假如我们希望外键的数据改变时在子表的操作发生改变,可以使用不同的行为对外键的更新或者删除做限定,行为分为以下几类:

行为 说明
NO ACTION 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。(与 RESTRICT 一致)
RESTRICT 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。(与 NO ACTION一致
CASCADE 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则也删除/更新外键在子表中的记录。
SETNULL 当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为ull(这就要求该外键允许取nul)。
SETDEFAULT 父表有变更时,子表将外键列设置成一个默认的值(Innodb不支持)
设顶外键更新或删除行为的语句如下所示:
# 对EMP表中的Id设置外键PARTY表中的Id
# 在更新PARTY表中的内容时检查该记录是否有对应外键,如果有,则也删除/更新外键在子表中的记录。
# 在删除PARTY表中的内容时首先检查该记录是否有对应外键,如果有则设置子表中该外键值为ull(这就要求该外键允许取nul)。
ALTER TABLE EMP ADD CONSTRAINT FOREIGN_PARTY FOREIGN KEY (Id) REFERENCES PARTY(Id) ON UPDATE CASCADE ON DELETE SET NULL;

📍总结

本次列举了SQL中常用约束相关语句,在实际学习的过程中还需要多学习以及使用才能熟练掌握。

余下的SQL内容我也将持续更新,如果感兴趣的话不妨订阅本专栏或者点个关注,我们下次再见。文章来源地址https://www.toymoban.com/news/detail-771098.html

到了这里,关于【建议收藏】数据库 SQL 入门——约束(内附演示)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot进阶(54):Windows 平台安装 MongoDB数据库 | 超级详细,建议收藏

            MongoDB是一种流行的文档型NoSQL数据库,它具有高性能、高可用性、可伸缩性等优点,因此被广泛应用于Web应用程序、分布式系统、云计算等领域。在Windows系统中安装和使用MongoDB也非常简单,只需要按照官方文档提供的步骤进行操作即可。在本篇文章中,我们将介

    2024年02月16日
    浏览(60)
  • 序列号及序列号生成器(号段模式,数据库模式)详细介绍(建议收藏)

    现如今,数据的唯一性和可追溯性变得越来越重要。从简单的数据库主键到复杂的分布式系统,唯一标识符在各种场景中都发挥着关键作用。序列号,作为一种广泛应用的唯一标识符,为我们提供了确保数据完整性和一致性的基础。在这个背景下,高效、可靠的序列号生成器

    2024年02月03日
    浏览(74)
  • MySQL数据库基础(九):SQL约束

    文章目录 SQL约束 一、主键约束 二、非空约束 三、唯一约束 四、默认值约束 五、外键约束(了解) 六、总结 PRIMARY KEY 约束唯一标识数据库表中的每条记录。 主键必须包含唯一的值。 主键列不能包含 NULL 值。 每个表都应该有一个主键,并且每个表只能有一个主键。 遵循原

    2024年02月19日
    浏览(60)
  • 【SQL Server】数据库开发指南(二)MSSQL数据库开发对于库、表、数据类型、约束等相关操作

    本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中。 本系列文章列表如下: 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南(一)数据库设计的核心概念和基本步骤 【SQL Server】数据库开发指南(二)MSSQL数据库开发对

    2023年04月09日
    浏览(342)
  • SQL笔记(1)——MySQL创建数据库(收藏吃灰版)

    本文详细记录MySQL创建一个数据库的过程,不只是构建步骤,更多的是每一步涉及到的知识点。一般创建数据库有两种方式,一种是命令,另外一种就是通过数据库管理工具,本文主要记录通过命令的方式创建; 后面的学习也都是基于这个数据库进行的; 创建一个大学生成绩

    2024年02月08日
    浏览(56)
  • 异地访问Oracle数据库的解决方案:利用内网穿透实现PL/SQL远程连接的建议与步骤

    ​ 小月糖糖主页 在强者的眼中,没有最好,只有更好。 移动开发领域优质创作者,阿里云专家博主 Oracle,是甲骨文公司的一款关系数据库管理系统,它在数据库领域一直处于领先地位。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便

    2024年02月11日
    浏览(51)
  • 数据库入门-----SQL基础知识

    目录 📖前言: 📑SQL概述通用语法:  🐳DDL: 🐻操作数据库: 🐞数据类型:  🦉操作表: 🦦DML: 语法规则: 案例演示: 🦏DQL: 语法规则: 案例演示: # 基础查询:  # 条件查询:  #聚合函数:  # 分组查询:  #排序查询:  #分页查询:  执行顺序: 🫎DCL: 语法规则:

    2024年04月10日
    浏览(57)
  • GaussDB高斯数据库(SQL语法入门)

    DDL数据定于语言:用于定义或修改数据库中的对象,如:表,索引,视图,数据库,序列,用户,角色,表空间,会话等。 DDL不支持物化视图,存储过程,触发器,自定义函数,自定义类型。 DML数据操作语言:用于对数据库表中的数据进行操作,如插入,更新和删除。 DCL数

    2023年04月10日
    浏览(47)
  • Spring Boot入门(14):使用Mybatis-Plus执行自定义SQL | 超级详细,建议收藏

            在上几期,我们既讲了如何整合Mybatis-Plus进行数据库的增删改查,也讲解了如何使用MP的 Wrapper 构造器,但若是遇到复杂业务逻辑,如多表联查、动态拼接条件等,这些操作往往会让代码变得冗长且难以维护。但是,有了Mybatis-Plus这个优秀的框架,我们可以轻松实现

    2024年02月12日
    浏览(35)
  • 【SQL server】数据库入门基本操作教学

    个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 数据库是计算机系统中用于存储和管理数据的一种软件系统。它通常由一个或多个数据集合、管理系统和应用程序组成,被广泛应用于企业、政府和个人等各种领域。目前常用的数据库系统包括关系型数据库和非关系型

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包