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

MySQL数据库:SQL语言入门 【上】(学习笔记)

SQL(Structured Query Language)是结构化查询语言的简称,它是一种数据库查询和程序设计语言,同时也是目前使用最广泛的关系型数据库操作语言。(95%适用于所有关系型数据库) 【 SQL是关系型数据库通用的操作语言】

在数据库管理系统中,使用SQL语言来实现数据的存取、查询、更新等功能。SQL是一种非过程化语言,只需提出“做什么”,而不需要指明“怎么做”。

SQL语言具有集数据查询、数据操纵、数据定义和数据控制功能于一体,类似自然语言、简单易用以及非过程化等特点,

数据库管理人员(DBA)通过数据库管理系统(DBMS)可以对数据库(DB)中的数据进行操作,

(分页查询语句不同)
MySQL:  limit ?, ?
orcale: top 5 where 

  • 介绍MySQL数据库

mysql是一款开放源码,轻量级的关系型数据库
具有体积小,数据快,成本低,开放源码等特点
使用sql语言对数据库进行管理


一,SQL语言组成部分(5)

DQL* 数据的查询语言:查询语句的6个组成部分

DML* 数据的操作语言:insert delete update  

DDL 数据的定义语言:(了解)创建/删除/修改 数据库对象

DCL 数据的控制语言:(了解)授予,撤回 

TCL* 事务的控制语言:提交,回滚  

1,DQL —— 数据查询语言(Data Query Language)

           主要用于数据的查询,其基本结构是使用 select 子句,from 子句和 where 子句的组合来查询一条或多条数据。

(1)组成结构

select  字段名,字段名,字段名,

from  表名,表名,表名

where  条件  and/or 条件 and/or 条件 ———— 【分组前条件判断】

group by  字段名,字段名,字段名————【分组】

having  条件  and/or  条件  and/or  字段名————【分组后条件判断】

order  by 字段名,字段名,字段名————【排序】

【select 语句的执行顺序】
from--where -- group  by–  select   -  having-   order  by

(2)单表查询

【1】介绍 select 部分

===查指定的部位(与表内数据的顺序不关)

 select ename,empno from emp

===查表内全部数据 

 select * from emp

===别名——as

      ----- 真实案例 :实体类 属性名写错了;   多表查询的时候

           ---改名--》deptno改成eptno

select empno,ename,job,deptno as eptno from emp

      ----- 真实案例 开发组 每周会议

           ---写别名  as可以省略

           --- '  '  可加可不加,如果别名类里面有特殊符号或者空格  必须用!!!

select empno 员工编号,ename 员工姓名,job 岗位名称,deptno as '部门编号' from emp
===简单的算术运算

       ----- 查询表里所有员工的年薪是多少?  (忽视了奖金,流程函数处补全)

              ---空值做任何运算结果都为空!!!

select sal*12 年薪,ename,comm from emp
===去重操作   

去重关键字  distinct

       ----- 查询员工都在哪几个部门工作?

select distinct deptno from emp 
select distinct job,deptno from emp; -- 对后面的所有列组合 去重 ,而不是单独的某一列去重
===介绍 order by

默认情况下是按照升序排列的

 asc---升序 (可以默认不写)
desc---降序

select * from emp order by sal; -- 默认情况下是按照升序排列的
select * from emp order by sal asc; -- asc 升序,可以默认不写
select * from emp order by sal desc; -- desc 降序
select * from emp order by sal asc ,deptno desc; -- 在工资升序的情况下,deptno按照降序排列select deptno,count(*) num
from emp
where year(hiredate)=1981
GROUP BY deptno        
order by num,deptno desc

【2】介绍  where  部分

将过滤条件放在where子句的后面,可以筛选/过滤出我们想要的符合条件的数据:

===关系运算符 

= , > ,<  ,>= ,<= ,!= ,<>  (最后两个都是  不等于)

      -----查询入职时间在1981年的所有员工信息

 select * from emp where hiredate>='1981-1-1' and hiredate<='1981-12-31'

      -----查寻部门编号不是30的所有员工信息

select * from emp where deptno!=30

      -----查询工资范围在1000--2000的所有员工信息

select * from emp where sal>1000 and sal<2000

      -----查询经理编号是7321的所有员工信息

select * from emp where mgr=7321
===逻辑运算符   

and  &&     or  | |        in———替换 or

      -----查寻部门编号是10或者20的所有员工信息  

select * from emp where deptno=10 or deptno=20
select * from emp where deptno in (10,20)
===空值判断

       ..... where is null    ————为空
       ..... where is not null ————不为空

      -----查询没有奖金的所有员工信息

select * from emp where comm is null 
===模糊查询     

% :0~n位任意字符    ;   _  :1位任意字符

       ----- 查询名字第三位是a的

 select * from emp where ename like '__a%'

       ----- 查询员工姓名里以A开头的员工信息

select * from emp where ename like 'A%'

       ----- 查询岗位名称里,带A或者带C的员工信息

select * from emp where job like '%A%' or '%C%'

       ----- 查询 没有奖金,不是20号部门 ,名字里没有A的员工信息

select * from emp where comm is null and deptno!=30 and ename not like '%A%'
===小括号的使用

因为不同的运算符的优先级别不同,加括号为了可读性

select * from emp where job = 'SALESMAN' or job = 'CLERK' and sal >=1500; -- 先and再or  and > or
select * from emp where job = 'SALESMAN' or (job = 'CLERK' and sal >=1500); 
select * from emp where (job = 'SALESMAN' or job = 'CLERK') and sal >=1500;
【3】函数
  • 函数只是对查询结果中的数据进行处理,不会改变数据库中数据表的值。
  • 使用函数可以大大提高SELECT语句操作数据库的能力,同时也给数据的转换和处理提供了方便。 (在sql中使用函数)
  • 函数的功能:封装了特定的一些功能,我们直接拿过来使用,可以实现对应的功能
  • 函数作用:为了提高select的能力
===分类:   

    单行函数  (进去一条数据,出来一条数据)

    多行函数/分组函数/聚合函数(进去一组数据,出来一条数据)

  • 除了多行函数(max,min,count,sum,avg),都是单行函数
===单行函数
      ----- 字符串函数

              拼接:concat(str1,str2,。。。strn)

                       ---查询所有  部门编号员工编号员工姓名  的员工信息

select concat(deptno,'_',empno,'_',ename) from emp  

             添加:insert(str,index,n,newstr)

                       ---查询所有 长春吉软_员工姓名 的员工信息

select ename,insert(ename,1,0,'长春吉软_') from emp

             总长度:length(str)

                       ---查询所有 员工姓名长度 大于5位的

select * from emp where length(ename)>5
-- 仅查询了 字节数和员工姓名
select length(ename),ename from emp where length(ename)>5

             替换:replace(str,oldstr,newstr)

              获取:substring(str,index,n)

                       ---查询所有  员工姓名(保留第一位和最后一位字母,中间用。。。代替)

 SELECT REPLACE(ename,substring(ename,2,length(ename)-2),'...') FROM emp
-- 拼接和获取
SELECT CONCAT(substring(ename,1,1),'...',substring(ename,length(ename),1)) FROM emp;
字符串函数
函数  描述 
concat(str1,str2,···strn) 将str1、str2···strn拼接成一个新的字符串 
insert(str,index,n,newstr) 将字符串str从第index位置开始的n个字符替换成字符串newstr  
length(str)获取字符串str的长度  
lower(str)  将字符串str中的每个字符转换为小写  
  upper(str)将字符串str中的每个字符转换为大写  
left(str, n)   获取字符串str最左边的n个字符  
 right(str, n) 获取字符串str最右边的n个字符  
lpad(str, n,  pad)   使用字符串pad在str的最左边进行填充,直到长度为n个字符为止  
rpad(str, n,  pad 使用字符串pad在str的最右边进行填充,直到长度为n个字符为止  
 ltrim(str) 去除字符串str左侧的空格  
 rtrim(str)  去除字符串str右侧的空格  
 trim(str)  去除字符串str左右两侧的空格
replace(str,oldstr,newstr)  用字符串newstr替换字符串str中所有的子字符串oldstr  
reverse(str) 将字符串str中的字符逆序  
strcmp(str1, str2)  比较字符串str1和str2的大小  
substring(str,index,n)获取从字符串str的index位置开始的n个字符  
数值函数
函数  描述  
  ABS(num)   返回num的绝对值  
 CEIL(num)  返回大于num的最小整数(向上取整)  
  FLOOR(num)   返回小于num的最大整数(向下取整)  
 MOD(num1, num2)   返回num1/num2的余数(取模)  
  PI()   返回圆周率的值  

POW(num,n)

POWER(num, n)  

返回num的n次方 
  RAND(num)返回0~1之间的随机数  
 ROUND(num, n)  返回x四舍五入后的值,该值保留到小数点后n位 
TRUNCATE(num, n) 返回num被舍去至小数点后n位的值 

      ----- 日期时间函数

dual ---虚拟表

       ----- 房租一个月后到期,问到期时间?

select ADDDATE(NOW(),INTERVAL 1 MONTH) from dual

       ----- 查询所有员工试用期通过的时间

select  ename,ADDDATE(hiredate,INTERVAL 3 MONTH) from emp

       ----- 查询所有员工里工龄超过20年的所有员工

select * from emp where (DATEDIFF(NOW(),hiredate)/365)>20
select * from EMP WHERE SUBDATE(Now(), INTERVAL 20 YEAR) > hiredate  -- 减
select * from emp where adddate(hiredate,interval 20 year)<now()   -- 加

       ----- 查询所有员工,在1981年9月份入职的所有员工

select * from emp where year(hiredate) = 1981 and month(hiredate) = 9

       -----查询入职时间超100天的所有员工

select DATEDIFF(NOW(),hiredate) from emp where DATEDIFF(NOW(),hiredate)>100

                                        时间与日期函数 

      ----- 流程函数

             ----- 查询表里所有员工的年薪是多少?

select sal*12+ IFNULL(comm,0) 年薪 from emp

              ----- 查询所有员工编号,姓名,以及所在的部门名称(单表查询)

select empno,ename, 
case deptno when 10 then '开发部'when 20 then '测试部'when 30 then '运维部'when 40 then '实施部'else '最后' end 部门名称 from emp

                                                       流程函数 

 

===多行函数/分组函数/聚合函数

 max()—最大值 ;min()—最小值 ;avg()—平均值 ;sum()—求和 ;count()—求个数 ;

select max(sal),min(sal),avg(sal),sum(sal),count(sal) from emp
      ----- 介绍 group by 和 having 

             ----- 查询每个部门里 的最大工资,最小工资,平均工资

select max(sal),min(sal),avg(sal) 
from emp 
group by deptno

             ----- 查询 每个岗位的最高工资,最低工资,平均工资

select job,max(sal),min(sal),avg(sal) 
from emp
GROUP BY job

             ----- 查询 1000元以上的每个工资的总人数,总人数低于5个的部门不显示

select deptno,count(*) c
from emp 
where sal>1000 
GROUP BY deptno 
having c>=5

             ----- 查询 每个经理人所带的手下员工的总人数

select mgr,count(*)
from emp
GROUP BY mgr

             ----- 查询 在1981年入职的各部门总人数

select deptno,count(*)
from emp
where year(hiredate)=1981
GROUP BY deptno

                                                        其他函数

      

(3)多表查询

===分类

   内连接查询,外连接查询

-- from部分
select * from emp,dept (缺少关联关系)    造成--笛卡尔积现象   15*3=45

===内连接查询
       ----- 【写法一】 
select * from emp,dept where emp.deptno=dept.deptno 
        ----- inner join  . . . on    【写法二】     

    inner join —— 内连接  ; on —— 通过on做两张表之间的关联查询

select * from emp inner join dept on emp.deptno=dept.deptno 
        ----- 关键字  using        【写法三】

     要求:两张表之间的关联列是同名的

select * from emp inner join dept using(deptno)  
        ----- 自然连接               【写法四】 

      要求:两张表之间的关联列 同名,同类型,同长度

select * from emp e natural join dept d 
        ----- 自身内连接 (一张表)

             ----- 例子:查找每个经理的名字,入职时间,和工资

select distinct m.empno,m.ename,m.hiredate 
from emp m,emp e
where m.empno=e.mgr
===外连接查询

左外连接   右外连接

    ——区分原理:一个查询的SQL语句里,第一个表名 叫 左表;第二个表名叫 右表。

                              如果是内连接查询,左右两个表的地位是一样的

select * from t_emp,dept where dept.deptno=t_emp.deptno 

                               如果使用左外连接查询,那么左表是主表,主表里的数据都会显示出来;右表是子表,子表里的数据,只显示符合连接条件的。

select * from t_emp left join dept on dept.deptno=t_emp.deptno-- 右表做主表
select * from t_emp right join dept on dept.deptno=t_emp.deptno

(4)子查询

{没有子查询,可能要执行很多次,才能得到最终结果  ;有子查询,执行一次就能拿到最终结果}

===分类

不相关子查询(简单)  ——单行不相关子查询

                                       ——多行不相关子查询

相关子查询  ----》存储过程

        ----- 单行不相关子查询

              --- 查询工资最高的员工信息

select * from emp where sal=(select max(sal) from emp)

              --- 查询工资高于平均工资的雇员名字和工资

select ename,sal from emp where sal>(select avg(sal) from emp)

        ----- 多行不相关子查询

             any————任何
             all————全部
             select * from emp where sal>any/all(select语句)

        ----- 相关子查询

               ---查询本部门最高工资的员工

select * from emp e 
where sal =(select max(sal) from emp where deptno=e.deptno) 
order by deptno

              --- 查询工资高于其所在岗位的平均工资

select * from emp e 
where sal>= (select avg(sal) from emp where emp.job=e.job) 
order by deptno desc                        

相关文章:

MySQL数据库:SQL语言入门 【上】(学习笔记)

SQL&#xff08;Structured Query Language&#xff09;是结构化查询语言的简称&#xff0c;它是一种数据库查询和程序设计语言&#xff0c;同时也是目前使用最广泛的关系型数据库操作语言。&#xff08;95%适用于所有关系型数据库&#xff09; 【 SQL是关系型数据库通用的操作…...

重学 Android 自定义 View 系列(六):环形进度条

目标 自定义一个环形进度条&#xff0c;可以自定义其最大值、当前进度、背景色、进度色&#xff0c;宽度等信息。 最终效果如下&#xff08;GIF展示纯色有点问题&#xff09;&#xff1a; 1. 结构分析 背景圆环&#xff1a;表示进度条的背景。进度圆环&#xff1a;表示当前…...

nodejs 020: React语法规则 props和state

props和state 在 React 中&#xff0c;props 和 state 是管理数据流的两种核心机制。理解它们之间的区别和用途是构建 React 应用程序的基础。 一、props 和 state的区别 特性propsstate定义方式由父组件传递给子组件的数据组件内部管理的本地数据是否可修改不可变&#xff…...

STM32问题集

这里写目录标题 一、烧录1、 Can not connect to target!【ST-LINK烧录】 一、烧录 1、 Can not connect to target!【ST-LINK烧录】 烧录突然 If the target is in low power mode, please enable “Debug in Low Power mode” option from Target->settings menu 然后就&…...

SwiftUI(十二)- 容器组件 布局与结构的基石

引言 在用户界面开发中&#xff0c;布局是设计一个应用程序的视觉层次和交互体验的核心之一。无论是设计简单的按钮排布&#xff0c;还是复杂的多层次页面&#xff0c;合理的布局和结构可以极大地提升用户体验。而容器组件&#xff0c;作为将多个视图整合、组织、排列的工具&a…...

想租用显卡训练自己的网络?AutoDL保姆级使用教程(PyCharm版)

各位小伙伴们大家好~ 不知道各位同学在科研过程中是否有这样的苦恼 电脑无显卡。难不成我要用CPU跑实验吗&#xff1f;救救我吧电脑显卡算力太低。训练过程慢慢慢慢慢&#xff0c;等半天都出不来结果电脑显卡显存不够&#xff0c;batchsize稍微高一点点&#xff0c;就要爆显存…...

LeetCode【0039】组合总和

本文目录 1 中文题目2 求解方法&#xff1a;回溯法2.1 方法思路2.2 Python代码2.3 复杂度分析 3 题目总结 1 中文题目 给定一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#…...

AscendC从入门到精通系列(一)初步感知AscendC

1 什么是AscendC Ascend C是CANN针对算子开发场景推出的编程语言&#xff0c;原生支持C和C标准规范&#xff0c;兼具开发效率和运行性能。基于Ascend C编写的算子程序&#xff0c;通过编译器编译和运行时调度&#xff0c;运行在昇腾AI处理器上。使用Ascend C&#xff0c;开发者…...

PostgreSQL中的COPY命令:高效数据导入与导出

在PostgreSQL数据库中&#xff0c;数据导入和导出是日常工作中常见的操作。传统的插入&#xff08;INSERT&#xff09;方法虽然可以实现数据的导入&#xff0c;但在处理大量数据时效率较低。而COPY命令则提供了一个快速、高效的方式来完成这一任务。COPY命令不仅可以用于将数据…...

【HAL库】STM32F105VCTx多通道ADC+DMA方式的【STM32CubeMX】配置及代码实现

相关代码编写 配置好后点击生成代码&#xff0c;在生成代码的adc.c文件中的初始化函数MX_ADC1_Init中添加如下代码&#xff1a; HAL_ADCEx_Calibration_Start(&hadc1); /* 校准ADC */HAL_ADC_Start_DMA(&hadc1,(uint32_t*)ADC_Value,ADC_DMA_…...

[SaaS] 数禾科技 AIGC生成营销素材

https://zhuanlan.zhihu.com/p/923637935https://zhuanlan.zhihu.com/p/923637935...

vue3中查找字典列表中某个元素的值对应的列表索引值

vue3中查找字典列表中某个元素的值对应的列表索引值 目录思路方法代码实现示例解释说明 目录 思路方法 要获取字典列表中某个元素的值对应的列表索引值&#xff0c;可以使用数组的 findIndex 方法。这个方法返回数组中满足提供的测试函数的第一个元素的索引。如果没有找到&am…...

爱普生机器人EPSON RC

爱普生机器人Epson RC系列&#xff0c;搭配其专用的Epson RC编程语言和软件环境&#xff0c;为用户提供了一个直观且功能强大的机器人控制和编程解决方案。以下是对Epson RC及爱普生机器人的一些详细介绍&#xff1a; Epson RC 定义&#xff1a;Epson RC 是爱普生机器人技术中…...

Linux探秘坊-------1.系统核心的低语:基础指令的奥秘解析(1)

1.Linux的背景介绍 Linux 操作系统的发展历程充满了激情与创新喵&#xff5e;&#x1f380; 萌芽期 (1983 - 1991)&#xff1a;Linux 的历史可追溯到 1983 年&#xff0c;理查德斯托曼 (Richard Stallman) 发起 GNU 计划&#xff0c;目标是创建一个自由软件操作系统。1987 年发…...

❤React-JSX语法认识和使用

1、JSX基本使用​ JSX是React的核心 JSX是ES的扩展 jsx语法 -> 普通的JavaScript代码 -> babel React可以使用JSX的前提和原因&#xff1a; React生态系统支持&#xff1a; 脚手架通常用于构建React应用程序&#xff0c;而JSX是React框架的核心语法之一。因此&#xf…...

51单片机应用开发(进阶)---定时器应用(电子时钟)

实现目标 1、巩固定时器的配置流程&#xff1b; 2、掌握按键、数码管与定时器配合使用&#xff1b; 3、功能1&#xff1a;&#xff08;1&#xff09;简单显示时间。显示格式&#xff1a;88-88-88&#xff08;时-分-秒&#xff09; 4、功能2&#xff1a;&#xff08;1&#…...

JavaScript中的对象-栈内存和堆内存以及this指向的两种情况(后续会出进阶)

1.1 栈内存和堆内存 我们知道程序是需要加载到内存中来执行的&#xff0c;我们可以将内存划分为两个区域:栈内存和堆内存 原始类型占据的空间是在栈内存中分配的对象类型占据的空间是在堆内存中分配的 1.1.1 值类型和引用类型 原始类型的保存方式&#xff1a;在变量中保存的是…...

shell脚本使用curl上传FTP

背景&#xff1a;要求使用curl通过shell脚本实现上传文件到FTP的功能&#xff0c;同时对远程目录不存在的时候&#xff0c;主动创建目录并上传文件&#xff0c;shell脚本如下&#xff1a; #!/bin/bash# FTP服务器的地址 FTP_SERVER"ftp://1.1.1.1:2121" # FTP用户名…...

【漏洞分析】Fastjson最新版本RCE漏洞

01漏洞编号 CVE-2022-25845CNVD-2022-40233CNNVD-202206-1037二、Fastjson知多少 万恶之源AutoType Fastjson的主要功能是将Java Bean序列化为JSON字符串&#xff0c;这样得到的字符串就可以通过数据库等方式进行持久化了。 但是&#xff0c;Fastjson在序列化及反序列化的过…...

【项目开发 | 跨域认证】JSON Web Token(JWT)

未经许可,不得转载。 文章目录 JWT设计背景:跨域认证JWT 原理JWT 结构JWT 使用方式注意JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理、结构及用法。 JWT设计背景:跨域认证 互联网服务的用户认证流程是现代应用中的核心组成部分,通常的流程…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...