SQL基础复习与进阶

news2024/11/18 17:43:39

SQL进阶

文章目录

  • SQL进阶
    • 关键字复习
      • ALL
      • ANY
      • EXISTS
    • 内置函数
      • ROUND(四舍五入)
      • TRUNCATE(截断函数)
      • SEILING(向上取整)
      • FLOOR(向下取整)
      • ABS(获取绝对值)
      • RAND(获取随机数)
      • LENGTH(获取字符串长度)
      • UPPER(转大写)
      • LOWER(转小写)
      • LEFT(从左向右截取字符串)
      • RIGHT(从右向左截取字符串)
      • SUBSTRING(截取字符串)
      • LOCATE(查找某个值在字符串中的位置)
      • REPLACE(替换内容)
      • CONCAT(连接字符串)
    • SQL语句
      • 相关子查询
    • 视图
      • 创建视图
      • WITH CHACK OPTION
    • 存储过程
      • 概念
    • 触发器
      • 概念
      • 作用
      • 注意事项
      • 优缺点
    • 事务
      • 四大特性
      • 事务的分类
      • 事务并发时出现的问题


关键字复习

ALL

代表满足子查询地全部,通常用在比较查询结果与子查询结果关系时使用,例如:大于全部子查询结果

例子如下:

在这里插入图片描述

ANY

代表满足子查询中的其中一个,与IN有异曲同工之妙,通常用在比较查询结果与子查询结果关系时使用,例如:等于任意一个子查询结果

例子如下:

在这里插入图片描述

EXISTS

与IN效果一样,子查询中是否存在该数据,但是性能方面会有很大的提升。使用IN是将子查询得到的结果返回给外查询一个结果集,当数据很多时,会严重影响性能;而EXISTS,只是找到了满足要求的子查询里面的一条记录,有则返回TRUE。

例子如下:

在这里插入图片描述


内置函数

ROUND(四舍五入)

四舍五入,ROUND(x,y),其中x为数值,y为精确到几位小数。

TRUNCATE(截断函数)

截取数字,TRUNCATE(x,y),其中x为数值,y为截取多少位小数

SEILING(向上取整)

得到数值中,满足大于或等于这个数的最小整数。

FLOOR(向下取整)

得到数据中,满足小于或等于这个数的最大整数

ABS(获取绝对值)

得到这条数据的绝对值

RAND(获取随机数)

得到0~1之间任意一个随机数

LENGTH(获取字符串长度)

获取字符串长度

UPPER(转大写)

将字符串转换为大写

LOWER(转小写)

将字符串转换成小写

LEFT(从左向右截取字符串)

从左开始向右截取字符串,LEFT(x,y),其中x为原字符串,y为从左向右截取到多少位

RIGHT(从右向左截取字符串)

从右开始向左截取字符串,RIGHT(x,y),其中x为原字符串,y为从右向左截取到多少位

SUBSTRING(截取字符串)

截取任意位置的字符串,SUBSTRING(x,y,z),其中x为原字符串,y为左起点,z为截取多长,截取中间这部分字符串

LOCATE(查找某个值在字符串中的位置)

查询某个值在字符串中的位置,并且输入该字符串下表(以1开始),LOCATE(x,y),其中x为待查找字符 / 字符串,y为字符串

REPLACE(替换内容)

将字符串内的数据替换成另外的字符,REPLACE(x,y,z),其中x为原字符串,y为需要被修改的字符串所在的位置,z为替换字符串

CONCAT(连接字符串)

连接输入的字符串,CONCAT(x,y),结果为xy


SQL语句

相关子查询

子查询与外查询相联系,例如:查询公司中的不同部门员工达到平均工资以上的员工有哪些,每次查询要区分部门,所以外查询部门id要与内查询部门id一致。

例子如下

在这里插入图片描述

视图

1)简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。
2)安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。
3)数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。
总而言之,使用视图的大部分情况是为了保障数据安全性,提高查询效率。

创建视图

在这里插入图片描述

WITH CHACK OPTION

确保对视图内的数据进行修改后的,修改结果与视图展示的是一样的

WITH CHECK OPTION的作用?
1.对于update,有with check option,要保证update后,数据要被视图查询出来;
2.对于delete,有无with check option都一样;
4.对于insert,有with check option,要保证insert后,数据要被视图查询出来;
5.对于没有where 子句的视图,使用with check option是多余的。

存储过程

概念

就是数据库SQL语言层面的代码封装与重用

把编写在数据库中的SQL语句集称为存储过程。调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是很有好处的。

优点

  • 存储过程是通过处理封装在容易使用的单元中,简化了复杂的操作
  • 简化对变动的管理。如果表名、列名、或业务逻辑有了变化。只需要更改存储过程的代码。使用它的人不用更改自己的代码。
  • 通常存储过程都是有助于提高应用程序的性能。当创建的存储过程被编译之后,就存储在数据库中。
    但是,MySQL实现的存储过程略有所不同。
    MySQL存储过程是按需编译。在编译存储过程之后,MySQL将其放入缓存中。
    MySQL为每个连接维护自己的存储过程高速缓存。如果应用程序在单个连接中多次使用存储过程,则使用编译版本,否则存储过程的工作方式类似于查询。
  • 存储过程有助于减少应用程序和数据库服务器之间的流量
    因为应运程序不必发送多个冗长的SQL语句,只用发送存储过程中的名称和参数即可。
  • 存储过程度任何应用程序都是可重用的和透明的。存储过程将数据库接口暴露给所有的应用程序,以方便开发人员不必开发存储过程中已支持的功能。
  • 存储的程序是安全的。数据库管理员是可以向访问数据库中存储过程的应用程序授予适当的权限,而不是向基础数据库表提供任何权限。

缺点

  • 如果使用大量的存储过程,那么使用这些存储过程的每个连接的内存使用量将大大增加
    此外,如果在存储过程中过度使用大量的逻辑操作,那么CPU的使用率也在增加,因为MySQL数据库最初的设计就侧重于高效的查询,而不是逻辑运算。
  • 存储过程的构造使得开发具有了复杂的业务逻辑的存储过程变得困难
  • 很难调试存储过程。只有少数数据库管理系统允许调试存储过程。不幸的是,MySQL不提供调试存储过程的功能。
  • 开发和维护存储过程都不容易
    开发和维护存储过程通常需要一个不是所有应用程序开发人员拥有的专业技能。这可能导致应用程序开发和维护阶段的问题。
  • 对数据库依赖程度较高,移值性差

触发器

概念

触发器是一种特殊类型的存储过程,它不同于存储过程,主要是通过触发事件进行的,即不是主动调用而执行的。

作用

  • 可以在写入数据前,强制检查或者转换数据(保证数据安全)
  • 触发器发生错误时,前面用户已经执行成功的操作会被撤销,类似事件回滚

注意事项

  • 在 MySQL 5 中,触发器名必须在每个表中唯一,但不是在每个数据库中唯一,即同一数据库中的两个表可能具有相同名字的触发器
  • 每个表的每个事件每次只允许一个触发器,因此,每个表最多支持 6 个触发器,before/after insert、before/after delete、before/after update

优缺点

优点

  • 触发器可以通过数据库中的关联表实现级联更改,即一张表数据的改变会影响其他表的数据
  • 可以保证数据安全,并进行安全校验

缺点

  • 过分依赖触发器,影响数据库的结构,增加数据库的维护成本

事务

四大特性

  • 原子性(Atomicity):指事务是一个不可分割的最小工作单位,事务中的操作只有都发生和都不发生两种情况
  • 一致性(Consistency):事务必须使数据库从一个一致状态变换到另外一个一致状态,举一个栗子,李二给王五转账50元,其事务就是让李二账户上减去50元,王五账户上加上50元;一致性是指其他事务看到的情况是要么李二还没有给王五转账的状态,要么王五已经成功接收到李二的50元转账。而对于李二少了50元,王五还没加上50元这个中间状态是不可见的。
  • 隔离性(Isolation):一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
  • 持久性(Durability):一个事务一旦提交成功,它对数据库中数据的改变将是永久性的,接下来的其他操作或故障不应对其有任何影响。

事务的分类

  1. 隐式事务:该事务没有明显的开启和结束标记,它们都具有自动提交事务的功能;不妨思考一下,update语句修改数据时,是不是对表中数据进行改变了,它的本质其实就相当于一个事务。
  2. 显示事务:该事务具有明显的开启和结束标记;也是本文重点要讲的东西。使用显式事务的前提是你得先把自动提交事务的功能给禁用。禁用自动提交功能就是设置autocommit变量值为0(0:禁用 1:开启)

事务并发时出现的问题

  • 脏读:对于两个事务T1,T2,T1读取了已经被T2更新但还没有被提交的字段之后,若T2回滚,T1读取的内容就是临时且无效的
  • 不可重复读 :对于两个事务T1,T2,T1读取了一个字段,然后T2更新了该字段之后,T1在读取同一个字段,值就不同了
  • 幻读:对于两个事务T1,T2,T1在A表中读取了一个字段,然后T2又在A表中插入了一些新的数据时,T1再读取该表时,就会发现神不知鬼不觉的多出几行了…

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

采用 SpringDoc、javadoc 无注解零入侵基于java注释

今天在gitee上学习到一个,个人觉得非常使用的功能。就是采用 SpringDoc、javadoc 无注解零入侵基于java注释,只需把注释写好 无需再写一大堆的文档注解了。 下面是源码的地址 RuoYi-Vue-Plus: 后台管理系统 重写RuoYi-Vue所有功能 集成 Sa-TokenMybati…

【数模】预测模型

一、灰色系统 白色系统:系统信息完全明确灰色系统:系统部分信息已知,部分信息未知 对在一定范围内变化的、与时间有关的灰色过程进行预测。过程:原始数据找规律→生成强规律性的数据序列→建立微分方程来预测未来趋势 黑色系统&a…

企业上云实施路线图

企业上云步骤主要分为规划、设计、实施、验证、运维五个阶段。https://articles.e-works.net.cn/cloud/article144684.htm

idea 2023 新版ui中git的相关操作

前两个月换了新电脑,下了最新版的idea发现可以切换一套新的ui了 切换新ui肯定不太习惯,很多操作都得重新摸索一下 在这里记录几个git相关的操作 忽略我下面截图中当前项目是js的后端项目…… 切换ui 首先说一下怎么切换新旧版ui,我这里就…

【前端实习生备战秋招】—CSS面试题汇总,建议收藏系列

【前端实习生备战秋招】—CSS面试题汇总,建议收藏系列 文章目录 【前端实习生备战秋招】—CSS面试题汇总,建议收藏系列一、CSS基础1. CSS选择器及其优先级2. CSS中可继承与不可继承属性有哪些3. display的属性值及其作用4. display的block、inline和inli…

2023年电赛A题报告模板--可直接使用

任务 图1 任务内容 要求 图2 基本要求内容 图3 发挥部分内容 说明 图4 说明内容 评分标准 图5 评分内容 正文 (部分) 摘要 本实验旨在设计和制作一个由两个单相逆变器组成的并联系统,用于为电阻负载供电或并入220V电网。采用基于STM…

MobaXterm - 使用技巧

MobaXterm - 使用技巧 介绍安装SSH会话保存密码快捷键 介绍 MobaXterm是一款增强型Windows终端、X 服务器和 Unix 命令集(GNU/ Cygwin)工具箱。有点是功能全,免费,有便携版,支持多标签,同时自带文件传输系统。下文介绍其安装和使…

产险精算GLM-GAM案例

继续使用北美产险精算学会CAS网站上的一个案例,对案例略作修改后进行验证。 ClassAOITerrExposureClaims1Low1762Medium1108443High11791054Low2130625Medium2126826High21291207Low3143848Medium31261019High34046 GLM 模型结果,见文章:产…

特斯拉墨西哥工厂风波:2.5万美金的车型何时开造?

作者 | Amy 编辑 | 德新 去年10月,马斯克闪现墨西哥新莱昂州,会见了当地官员。考虑到新莱昂州是通用和现代工厂所在地,特斯拉第五大工厂花落墨西哥的消息不胫而走。 今年3月,特斯拉正式宣布,将在墨西哥北部新莱昂州的…

新手用户选择阿里云服务器地域、实例、带宽、操作系统经验参考

无论是个人还是企业用户,部署自己的网站或者APP客户端、小程序等,都需要用到服务器,现在流行的都是使用云服务器,考虑到性价比大家现在都喜欢选择阿里云服务器。但是新手用户往往在面对阿里云服务器地域、实例、带宽、操作系统等众…

Redis集群部署教程详解

一、什么是redis集群 Redis集群是一个提供在多个Redis节点之间共享数据的程序集。它并不像Redis主从复制模式那样只提供一个master节点提供写服务,而是会提供多个master节点提供写服务,每个master节点中存储的数据都不一样,这些数据通过数据分…

sql语句字符函数,数学函数

一、trim()去掉前后单元格 SELECT LENGTH(TRIM( 张三 )) AS 姓名 trim(aa from bb) 除掉bb中前后包含的aa,中间的保留 SELECT TRIM(班 FROM class) AS 姓名 FROM user_test 二、lpad()用指定字符做左…

【机器学习】对 MLOps 的友好的介绍(MLOps1)

一、说明 我对 MLOps 感兴趣已经有一段时间了。我第一次从机器学习工程师那里了解到它,由于我当时还是一名博士生,我并不知道它的存在。然而,我的好奇心被激起了,我开始了解它。回想起来,我很后悔没有早点了解它&#…

C#控制台程序+Window增加右键菜单

有时候我们可能会想定制一些自己的右键菜单功能,帮我们减少重复的操作。那么使用控制台程序加自定义右键菜单,就可以很好地满足我们的需求。 1 编写控制台程序 因为我只用到了在文件夹中空白处的右键菜单,所以这里提供了一个对应的模板&…

DC-4靶机

信息收集 先查看靶机的MAC地址 arp-scan -l 找到目标靶机的IP地址,对其进行扫描 发现开放了80端口和ssh,浏览器访问靶机的80端口,看看有没有可以利用的东西 目录爆破发现也没有什么东西 dirsearch -u http://192.168.80.146 漏洞利用 利用…

Web Worker API

Web Worker API Web Worker 使得在一个独立于 Web 应用程序主执行线程的后台线程中运行脚本操作成为可能。这样做的好处是可以在独立线程中执行费时的处理任务,使主线程(通常是 UI 线程)的运行不会被阻塞/放慢。 Web Worker概念与用法 Wor…

【iOS安全】OpenSSH使用

安装OpenSSH 在 Cydia 中直接查找和安装 OpenSSH 使用OpenSSH http://orinchen.github.io/blog/2014/01/15/install-and-use-openssh-on-ios/ 保证PC和iPhone在同一网段下 查看iPhone的IP地址 ssh root10.168.xx.xx 口令默认是alpine 或者也可以使用XShell等集成终端

自动化测试的统筹规划

背景 回顾以前自动化测试编写的经历,主要是以开发者自驱动的方式进行,测试的编写随心而动,没有规划,也没有章法,这样就面临如下的一些问题: 测试用例设计不到位,覆盖不全,或者不够…

WebGL Shader着色器GLSL语言

在2D绘图中的坐标系统,默认情况下是与窗口坐标系统相同,它以canvas的左上角为坐标原点,沿X轴向右为正值,沿Y轴向下为正值。其中canvas坐标的单位都是’px’。 WebGL使用的是正交右手坐标系,且每个方向都有可使用的值的…

android kernel移植5-RK3568

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1.添加开发板默认配置文件前言 前面我们已经学会了移植uboot,其实就是把瑞芯微的关于uboot的一些文件的名字和编译指定的文件改为自己定义的问价和名字,那么接下来的Android kernel其实也是…