SQL基础复习与进阶

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.rhkb.cn/news/75413.html

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

相关文章

谷歌联合CMU提出全新语义金字塔概念,无需额外训练使LLMs学会执行视觉任务

​ 论文链接:https://arxiv.org/abs/2306.17842 代码仓库:https://github.com/google-research/magvit/ 在目前的大模型社区中,发展较为成熟的当属以ChatGPT为代表的纯语言模型(LLMs),以GPT-4为代表的多模态…

iOS——Block one

块类似于匿名函数或闭包,在许多其他编程语言中也存在类似的概念。 可以访问上下文,运行效率高 Block 以下是块的一些基本知识: 块的定义:块是由一对花括号 {} 包围的代码片段,可以包含一段可执行的代码。块的定义使…

银河麒麟v10 vnc环境配置

方法一、启用自带远程桌面 银河麒麟默认已经自带远程桌面,如下图。此时即可用Realvnc Viewer访问该终端,仔细查看后自带的远程桌面是开源组件gnome-remote-desktopGNOME / gnome-remote-desktop GitLabhttps://gitlab.gnome.org/GNOME/gnome-remote-de…

13个ChatGPT类实用AI工具汇总

在ChatGPT爆火后,各种工具如同雨后春笋一般层出不穷。以下汇总了13种ChatGPT类实用工具,可以帮助学习、教学和科研。 01 / ChatGPT for google/ 一个浏览器插件,可搭配现有的搜索引擎来使用 最大化搜索效率,对搜索体验的提升相…

Kindling the Darkness: A Practical Low-light Image Enhancer论文阅读笔记

这是ACMMM2019的一篇有监督暗图增强的论文,KinD其网络结构如下图所示: 首先是一个分解网络分解出R和L分量,然后有Restoration-Net和Adjustment-Net分别去对R分量和L分量进一步处理,最终将处理好的R分量和L分量融合回去。这倒是很常…

【机器学习】Gradient Descent for Logistic Regression

Gradient Descent for Logistic Regression 1. 数据集(多变量)2. 逻辑梯度下降3. 梯度下降的实现及代码描述3.1 计算梯度3.2 梯度下降 4. 数据集(单变量)附录 导入所需的库 import copy, math import numpy as np %matplotlib wi…

备战秋招 | 笔试强训19

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、二分查找的时间复杂度() A. O(N*log(N)) B. O(N) C. O(log(N)) D. O(N^2) 2、有一个单向链表中有一个A、B两个相邻元素,有一个指针p指向元素A,现将…

谷歌云 | 电子商务 | 如何更好地管理客户身份以支持最佳的用户体验

【本文由Cloud Ace整理发布。Cloud Ace是谷歌云全球战略合作伙伴,拥有 300 多名工程师,也是谷歌最高级别合作伙伴,多次获得 Google Cloud 合作伙伴奖。作为谷歌托管服务商,我们提供谷歌云、谷歌地图、谷歌办公套件、谷歌云认证培训…

台式机/工控机通过网线共享笔记本电脑无线网络linux系统下 usb网卡的驱动安装

一、台式机/工控机通过网线共享笔记本电脑无线网络 1、 将台式机通过网线和笔记本连接。 2、 将笔记本的“本地连接”和“无线网络连接”的ipv4均设置为自动获取。 4.修改台式机的IP地址为如下(对应笔记本信息) IP地址为192.168.XXX.12 子网掩码为255.2…

弘扬“两弹一星”精神,勇攀科学技术高峰——道本科技商业大学党日活动圆满落幕

2023年8月2日,道本科技与商业大学携手举办了一场主题为“弘扬‘两弹一星’精神,勇攀科学技术高峰”的党日活动。本次活动旨在了解党领导下的中国核工业发展历程,传承和弘扬“两弹一星”精神,同时展示道本科技创新产品,…

【Linux】在服务器上创建Crontab(定时任务),自动执行shell脚本

业务场景:该文即为上次编写shell脚本的姊妹篇,在上文基础上,将可执行的脚本通过linux的定时任务自动执行,节省人力物力,话不多说,开始操作! 一、打开我们的服务器连接工具 连上服务器后,在任意位置都可以执行:crontab -e 如果没有进入编辑cron任务模式 根据提示查看…

如何使用vue ui创建一个项目?

首先打开cmd 输入vue ui 等待浏览器打开一个窗口,按照下图操作 在"功能页面"中,各个插件代表以下意思: Babel:Babel是一个JavaScript编译器,用于将ES6代码转换为向后兼容的JavaScript版本,以确保…

【计算机网络】数据链路层

文章目录 1. 数据链路层1.1 数据链路层简介1.2 数据链路层做了什么 2. 以太网协议2.1 以太网2.2 以太网帧的格式2.3 MAC地址2.4 MTU 3. 数据跨网络传输的整体过程4. ARP协议4.1 认识ARP协议4.2 ARP协议的格式4.3 ARP协议的工作流程 1. 数据链路层 1.1 数据链路层简介 数据链路…

ELK 企业级日志分析系统

ELK 企业级日志分析系统 一、ELK 概述1.ELK 简介2.日志分析系统 二、为什么要使用 ELK1.原因:2.完整日志系统基本特征3.ELK 的工作原理 三、部署ELK1.ELK Elasticsearch 集群部署(在Node1、Node2节点上操作)2.部署 Elasticsearch 软件&#x…

自然语言处理学习笔记(二)————语料库与开源工具

目录 1.语料库 2.语料库建设 (1)规范制定 (2)人员培训 (3)人工标注 3.中文处理中的常见语料库 (1)中文分词语料库 (2)词性标注语料库 (3…

刷题笔记 day7

力扣 209 长度最小的子数组 解法:滑动指针(对同向双指针区间内的数据处理) 1)先初始化 两个指针 left ,right。 2)右移指针right的同时使用sum记录指针right处的值,并判断sum的值是否满足要求&…

linux下性能分析工具Perf安装与用法

目录 1、Perf介绍 2、火焰图分类 (1)CPU (2)Memory Flame Graphs (3)Off-CPU Flame Graphs (4)Hot/Cold Flame Graphs (5)Differential 3、火焰图安装命令 …

Ubuntu安装harbor(http模式)并随便上传一个

Ubuntu安装harbor(http模式) docker和harbor的介绍就免了,都不知道啥东西,还安装搞毛 先安装docker环境 不要问,软件源之类的配置,挨个梭就行 sudo apt update sudo apt install apt-transport-https ca…

uniapp 路由跳转方式

export function goBack(index, url) {if (index 1) { // 关闭当前页,返回上一页面或多级页面。uni.navigateBack({delta: url,animationType: pop-out,animationDuration: 300});} else if (index 2) { // 保留当前页,跳转到非tabbar页面,…

不规则文件转JSON

需求分析: 有时候,我们取出来的数据并不是一个规则的JSON文件,这个时候面对存库还是ES检索都是一个问题,所以我们就需要进行解析,然而用字符串分割是不现实的,我们需要一种快速的方法。 问题解决&#x…