当前位置: 首页 > news >正文

SQL语言:完整性约束

完整性约束
数据完整性是指存储在数据库中的数据要能正确反映实际情况,规定输入的数据不能是无效值、错误值
或者乱码等。

一、非空约束:

非空约束关键字: not null

1、非空约束的创建

create table teacher(
t_id int not null, -- 为教师编号添加非空约束
t_name varchar(20),
t_age int,
t_sex varchar(4)
);
insert into teacher(t_name,t_age,t_sex) values('小李',18,'男');
-- 错误:非空约束规定插入的属性值不能为空,如:t_id
insert into teacher values(1,'小王',18,'男');

2、非空约束的添加

以修改表的方法添加非空约束:
alter table teacher modify column t_name varchar(30) not null;
insert into teacher(t_id,t_age,t_sex) values(3,20,'女');-- 报错

二、唯一约束

唯一约束关键字: unique

1、创建唯一约束

创建表时添加唯一约束:
create table teacher(
t_id int not null unique, -- 为教师编号添加非空且唯一的约束
t_name varchar(20),
t_age int,
t_sex varchar(4)
);

2、修改表添加唯一约束

alter table teacher add constraint uni_tid unique(t_id);
-- constraint关键字给约束unique(t_id)取一个别名为 uni_tid
若表中没有规定主键,那么表中第一个非空且唯一的属性自动添加主键约束

3、给约束取别名

通过 constraint 关键字给约束取别名
alter table teacher add constraint uni_tname unique(t_name);

4、删除唯一约束

根据约束名称删除唯一约束:
alter table teacher drop index uni_tid;
根据属性名称删除唯一约束:
alter table teacher drop index t_name;

5、复合唯一约束(联合唯一约束)

①创建复合唯一约束
create table teacher(
t_id int not null, -- 为教师编号添加非空约束
t_name varchar(20),
t_age int,
t_sex varchar(4),
constraint uni_tidname unique(t_id,t_name) -- 对多个字段创建复合唯一约束,使字段不能同时一致
);
②修改表添加复合唯一约束
alter table teacher add constraint uni_tidname unique(t_id,t_name);

复合唯一约束不允许约束的属性列同时相同,至少要有一个不同。

三、主键约束

主键约束关键字: primary key

1、创建表时添加主键约束

create table teacher(
t_id int primary key, -- 为教师编号创建主键约束
t_name varchar(20),
t_age int,
t_sex varchar(4)
);

2、修改表添加主键约束

alter table teacher add primary key(t_id);
由于表中第一个非空且唯一的属性会默认成为主键,所以创建主键前要先删除这个属性的唯一约束:
alter table teacher drop index uni_tidname;

3、删除主键约束

alter table teacher drop primary key;
-- 由于一个表的的主键只有一个,直接丢掉即可,只要规定表名,可以不写约束名

4、创建联合主键

alter table teacher add primary key(t_id,t_name);

四、自增列

自增列约束关键字: auto_increment

1、创建自增列

创建表时添加自增列约束:
create table teacher(
t_id int primary key auto_increment, -- 为教师编号创建主键和自增列约束默认从100开
始
t_name varchar(20),
t_age int,
t_sex varchar(4)
)auto_increment = 100;-- 设置自增列的默认初始值从100开始

2、添加自增列

修改表添加自增列:
alter table teacher modify column t_id int auto_increment; 

3、删除自增列

alter table teacher modify column t_id int;
-- 在修改表时不添加自增列就是删除自增列,跟删除非空约束一样

五、检查约束

检查约束关键字: check
检查约束演示示例:
①创建表时添加检查约束
create table student(
id int primary key,
s_name varchar(20),
age int check(age>=0 and age=<150),
-- 约束年龄的取值范围为0~150之间
sex varchar(2) check(sex='男' or sex='女')
-- 约束性别的取值范围为'男'或'女'
);

六、默认值约束

1、创建表时添加默认值约束

默认值约束关键字: default
create table teacher(
t_id int primary key auto_increment, -- 为主键创建默认值约束
t_name varchar(20),
t_age int default '男',
t_sex varchar(4)
)auto_increment = 100;  -- 设置自增列的默认初始值从100开始

2、修改表添加默认值约束

alter table teacher modify column t_sex varchar(4) default '男';

3、删除默认值约束

alter table teacher modify column t_sex varchar(4);
-- 在修改表时不添加默认值约束就是删除默认值约束

七、外键约束

外键约束关键字: foreign key

1、创建表添加外键约束

学生、教师和班级的外键联系
创建被参考表 class
create table class(
class_id int primary key,
c_name varchar(20) not null,
c_num int, -- 班级人数
c_tid varchar(20) -- 外键约束参考与教师表
constraint for_ctid foreign key(c_tid) references teacher(t_id)
);
insert into class(class_id,c_name) values(1,'数据库'),
(2,'C++'),(3,'java'),(4,'python');

创建参考表student:

create table student(
s_id int primary key,
s_name varchar(20) not null,
s_cid int not null,
s_age int,
s_sex varchar(4),
constraint for_scid foreign key(s_cid) references class(class_id)
);

insert into student(s_id,s_name,s_cid) values(1,'张三',1),(2,'李四',3),(3,'王五',2);
学生表中的班级编号参考班级表中的班级编号,学生不能给属于不存在的班级
insert into student(s_id,s_name,s_cid) values(4,'赵六',5);

2、级联更新/删除

级联更新 / 删除是指父表中的元组更新或删除等操作对子表的处理方法,其有三种处理方法:
在更新 / 删除中( on update/on delete
-- ① cascade:父表中的元组更新或删除,在子表中跟着更新或者删除
# 在外键约束后加上:on update cascade/on delete cascade
-- ② no action:无动作,若子表中有匹配的记录,就不允许更新/删除父表的数据
# 在外键后加上:on update no action/on delete no action
-- ③ set null:设置为空,若子表中有匹配的记录,更新/删除父表中的数据,子表中对应数据设置为
空
# 在外键约束后加上:on update set null/on delete set null
学生表中存在有 3 号班级的学生,不允许删除 3 号班级
delete from class where class_id = 3;
创建参考表 student1
create table student1(
s_id int primary key,
s_name varchar(20) not null,
s_cid int not null,
s_age int,
s_sex varchar(4),
constraint for_scid1 foreign key(s_cid) references class(class_id) on update
cascade on delete no action -- 级联更新和删除
);
insert into student1(s_id,s_name,s_cid) values(1,'张三',1),
(2,'李四',3),(3,'王五',2);
delete from class where class_id = 2;
update class set class_id = 6 where class_id = 1;
drop table student;

相关文章:

SQL语言:完整性约束

完整性约束 数据完整性是指存储在数据库中的数据要能正确反映实际情况&#xff0c;规定输入的数据不能是无效值、错误值 或者乱码等。 一、非空约束&#xff1a; 非空约束关键字&#xff1a; not null 1、非空约束的创建 create table teacher( t_id int not null, -- 为教…...

UBUNTU下CMAKE指定执行文件运行时查找库的路径

在Ubuntu下&#xff0c;使用CMake时&#xff0c;如果需要指定执行文件运行时库的搜索路径&#xff0c;可以在CMakeLists.txt文件中通过set_target_properties命令来设置。 以下是一个示例&#xff0c;假设你的目标是一个名为my_application的可执行文件&#xff0c;你想要添加…...

WHAT - CSS Animationtion 动画系列(四)- 移动端全屏动画

目录 一、背景1.1 GIF & Video1.2 存在的问题 二、技术方案2.1 使用CSS动画和JavaScript2.2 使用JavaScript库2.3 使用序列帧1. css animation 帧动画2. JavaScript requestAnimationFrame 帧动画 2.4 使用Canvas1. html 和 canvas 中的 video2. 基于Canvas的动画库 今天我…...

springboot004网页时装购物系统

springboot004网页时装购物系统 亲测完美运行带论文&#xff1a;获取源码&#xff0c;私信评论或者v:niliuapp 运行视频 包含的文件列表&#xff08;含论文&#xff09; 数据库脚本&#xff1a;db.sql其他文件&#xff1a;ppt.pptx论文/文档&#xff1a;开题报告.docx论文&…...

海外住宅IP介绍

住宅IP&#xff0c;通俗的来讲就是分配给家庭的IP地址&#xff0c;ISP默认分配用户为家庭用户&#xff0c;其真实性与安全性都有一定保障。海外住宅IP是指由海外互联网服务提供商分配给家庭用户的IP地址&#xff0c;IP地址通常是静态的&#xff0c;稳定的&#xff0c;可以为用户…...

Qt | QTimer 类(计时器)

01、相关知识回顾 Qt C++ | QTimer经验总结Qt | QDateTimeEdit、QDateEdit类和QTimeEdit类02、QTimer 类 1、QTimer 类是 QObejct 的直接子类,该类用于实现计时器,QTimer 类未继承自 QW...

SQL 面试系列(一)【留存率问题】

前言 在学 HQL 之前是不太了解 SQL 的&#xff0c;以为 SQL 只可以实现 CRUD &#xff0c;直到面试的公司让我下去多了解一些 SQL &#xff0c;我才最近开始再次深入学习 MySQL 和 Oracle。而且越学越发现 SQL 真的是一门很有深度的语言&#xff0c;我以前的使用只是皮毛而已&a…...

2024OD机试卷-游戏分组 (java\python\c++)

题目:游戏分组 题目描述 部们准备举办一场 王者荣耀 表演赛,有 10 名游戏爱好者参与,分为两队,每队 5 人。 每位参与者都有一个评分,代表着他的游戏水平。为了表演赛尽可能精彩,我们需要把 10 名参赛者分为实力尽量相近的两队。 一队的实力可以表示为这一队 5 名队员的…...

重装前端整体流程

用户管理 --汇总 -- 明细-CSDN博客 一、node 这个看环境变量 2023最新版Node.js下载安装及环境配置教程&#xff08;非常详细&#xff09;从零基础入门到精通&#xff0c;看完这一篇就够了_nodejs安装及环境配置-CSDN博客 配置到国内镜像的时候&#xff0c;去看&#xff0c;淘…...

Oracle Database 23ai Free版本体验

Oracle Database 23ai 体验链接&#xff1a; Oracle Database 23ai Free (https://www.oracle.com/database/free/get-started/) Autonomous Database 23ai Container Image (https://www.oracle.com/autonomous-database/free-trial/) Oracle GoldenGate 23ai (https://www…...

84.网络游戏逆向分析与漏洞攻防-游戏技能系统分析-筛选与技能有关的数据包

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…...

维护表空间中的数据文件

目录 向表空间中添加数据文件 从表空间中删除数据文件 删除users表空间中的users02.dbf数据文件 对数据文件的自动扩展设置 Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 维护表空间中的数据文件主要包括向表空间中添…...

2024五月母亲节嘉年华活动方案

2024以花之名 致谢母亲簪花趣味亲子五月母亲节嘉年华活动方案-43P 活动策划信息&#xff1a; 方案页码&#xff1a;43页 文件格式&#xff1a;PPT 方案简介&#xff1a; 岁月温柔治愈 母爱闪闪发光 一年一度的PY圈孝子孝女大赛即将到来 本次母亲节&#xff0c;“以花之名…...

Linux 第三十三章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…...

低空经济:无人机竞赛详解

无人机竞赛市场近年来呈现出蓬勃发展的态势&#xff0c;其市场价值不仅体现在竞赛本身&#xff0c;还体现在推动无人机技术创新、拓展应用场景以及促进产业链发展等多个方面。 一、比赛项目介绍 无人机竞赛通常分为多个项目&#xff0c;包括竞速赛、技巧赛、航拍赛等。每个项目…...

CAD插入文字到另一图形样式变相同

CAD从一张图形复制到另外一张图形后&#xff0c;文字样式变成一样是因为两张图所用的文字样式名称一样&#xff0c;但是样式里面的使用字体样式不一样。如下图所示&#xff0c;找到工具栏中的注释 &#xff0c;点击文字样式。里面就会显示当前图形中使用的样式名称及其对应的字…...

算法随想录第八天打卡|344.反转字符串,541. 反转字符串II, 卡码网:54.替换数字, 151.翻转字符串里的单词,卡码网:55.右旋转字符串

344.反转字符串 建议&#xff1a; 本题是字符串基础题目&#xff0c;就是考察 reverse 函数的实现&#xff0c;同时也明确一下 平时刷题什么时候用 库函数&#xff0c;什么时候 不用库函数 题目链接/文章讲解/视频讲解&#xff1a;代码随想录 Python class Solution:def reve…...

外卖系统的JWT实现登录

1、什么是JWT jwt可以生成一个加密的token&#xff0c;作为用户登录的令牌&#xff0c;当用户登陆成功之后&#xff0c;发放给客户端。请求需要登录的资源或者接口的时候&#xff0c;将token携带&#xff0c;后端验证token是否合法。jwt有三部分组成&#xff1a; A&#xff1a;…...

基于springboot实现的家具销售电商平台

开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&…...

STM32中的Systick的使用

SysTick&#xff0c;全称System Tick Timer&#xff0c;是Cortex-M microcontrollers内核中提供的一个简单而有效的系统定时器&#xff0c;设计用来给操作系统提供时间基准&#xff0c;或用于生成周期性的中断。STM32系列微控制器&#xff0c;作为基于ARM Cortex-M内核的设备&a…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...