MYSQL 高级SQL语句

1、按关键字排序:

  • order by 语句用来实现 ,前面可以使用where字句使查询结果进一步过滤

  • asc 是按照升序排序 , 默认的

  • desc 是按照降序排序

order by的语法结构 
例:select name,score from ku order by score desc;
表示将数值以降序的形式,显示ku中的名称和数值

排序前,数值没有规律性

排序后,数值是按照从大到小排列

2、区间判断查询 不重复记录

  • and表示且,两边条件都要满足
  • or表示或 ,只要满足一边条件即可
  • distinct:查询不重复记录

3、对结果进行分组

查询sql结果,对结果进行分组 group by 来实现,通常结合聚合函数一起使用

聚合函数:

count 计数、sum 求和、avg 平均数、max 最大值、min最小值

例:select count(*) from ku;
表示显示ku中一共有多少数据

4、限制结果条目

limit 限制输出记过记录

例:select * from ku limit 3;
表示显示ku中前三行的所有有数据

select * from ku limit 3,2;
表示显示ku中第三行的后两行所有数据

5、设置别名 (alias → as)

在mysql查询的时候,表和字段做一个别名 原因是表和列的字段比较长

as可以起到的作用:
  • 创建表的时候,插入表的数据

  • 可以克隆表的数据和表结构,但是约束没有完全复制过来

对于列的别名:
例:select name as 姓名, score as 地址 from aaa;

对于表的别名:
例:select b.name as 姓名, b.score as 地址 from 表名 as b;

新建一个表,将后面的命令结果数据插入到新建表中(相当于复制一张表)

​方法一:create table 新建表名 as select * from 复制的表名;
方法二:create table 新建表名(select * from 复制的表名);
 

指定数据插入

例:create table 新建表名 as select * from 复制的表名 where score<60;
表示创建一个新的表,将复制的表中数值小于60的数据,复制到新的表中

6、通配符

       通配符主要用于替换字符串中的部分字符,通过部分字符的匹配快速查找数据库中的内容 ​ 通常通配符都是跟 like 一起使用的,并协同 where语句共同来完成查询任务。常用的通配符有两个:

  • %表示零个、一个或多个字符 (类似于 ' * ')

  • _ 表示单个字符 (类似于 ' . ')

    【注 :可以组合使用】

例:select name,score,address from ku where address like 'n%';
表示ku中地址以 'n' 开头的数据,显示出其名称、数值和地址

例:select id,name,address from ku where address like 'shangh_ _';
表示ku中地址以 'shangh' 开头的数据,显示出其序列、名称和地址

7、子查询

  • 子查询也被称作 内查询 或者 嵌套查询 ,是指在一个查询语句里面还嵌套着另一个查询语句。
  • 子查询语句是先于主查询语句被执行的,其结果作为外层的条件返回给主查询进行下一 步的查询过滤,最内层的子查询最优先处理

       【ps:子语句可以与主语句所查询的表相同,也可以是不同表】

in 表示将主表和 子表进行关联/连接 ,用来判断某个值是否在给定结果集中,通常结合子查询来进行使用
​
例:select name,score from ku where id in (select id from ku where score>60);
表示查询ku中数值大于60的数据,显示其名称和数值
​
主语句: elect name,score from ku
子语句(集合): select id from ku where score>60
in: 将主表和子表关联/连接的语法
PS:子语句中的sql语句是为了,最后过滤出一个结果集,用于主语句的判断条件

not in 表示取反
例: update biao3 set score=100 where id not in (select id from ku where id>2);
表示查询ku中小于2的序列,将这个序列带入表3中,将其的数值改为100
​
先进行子语句:select id from ku where id>2  #查询ku中id大于2的
再进行:where id not in     #取反 【相当于只有1和2】
最后进行:update biao3 set score=1000  #将biao3中1、2的值改成100

 

EXISTS :作为判断,主要用于判断子查询的结果集是否为空。如果不为空, 则返回 true;反之则返回 false
例:select count(*) from ku where exists(select * from ku where score>60);
表示查询ku中数据的数值,如果有大于60的,则列出ku中的数据行数

8、视图

视图:优化操作 + 安全方案

  • 数据库中的虚拟表,这张虚拟表中不包含真实数据,只是做了真实数据的映射
  • 视图可以理解为镜花水月/倒影,动态保存结果集 ( 数据 )
作用场景[图]:
  • 针对不同的人( 权限身份 ),提供不同结果集的”表”( 以表格的形式展示 )

作用范围:
select * from 表名;  #展示的部分是具体某张表

select * from view name;  #展示的是一张或多张表
功能:

        简化查询结果集、灵活查询、可以针对不同用户呈现不同结果集、相对有更高的安全性本质而言视图是一种select (结果集的呈现)

【ps:视图适合于多表连接浏览时使用,不适合增、删、改,而存储过程适合于使用较频繁的SQL语句,这样可以提高执行效率!】

视图和表的区别和联系

区别:
  • 视图是已经编译好的sql语句。而表不是

  • 视图没有实际的物理记录。而表有 show table status \G

  • 表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改

  • 视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。

  • 表属于全局模式中的表,是实表:视图属于局部模式的表,是虚表

  • 视图的建立和删除只影响视图本身,不影响对应的基本表。(但是更新视图数据,是会影响到基本表的)

联系:

视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容即所有数据行)都来自基本表,它依据基本表存在而存在一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。

示例:需求: 满足80分的学生展示在视图中

删除视图:

命令 drop view if exists 视图名;


 

9、null值

nu11值与空值的区别 ( 空气与真空 )

空值长度为0,不占空间,NULI值的长度为null,占用空间 

内查询/内连接:inner join

  • 输出匹配的共同字段/共同数据  

语法: select * from biao1 inner join biao2 on biao1的字段名=biao2的字段名;

 

左连接:left join

  • 将两张表的内容进行匹配,按照sql语句进行查询,查询的顺序【左 → 右】 输出左表的全部内容和右表共同的数据内容

语法:select * from biao1 left join biao2 on biao1的字段名=biao2的字段名;

 

右连接:right join

  • 将两张表的内容进行匹配,按照sql语句进行查询,查询的顺序【左←右】 输出右表的全部内容和左表共同的数据内容 

语法:select * from biao1 right join biao2 on biao1的字段名=biao2的字段名;

 

存储过程:

  • 存储过程的主体都分,被称为过程体

  • 以BEGIN开始,以END结束,若只有一条SQL语句,则可以省略BEGIN-END

  • 以DELIMITER开始和结束

存储过程参数
  • IN:输入参数:表示调用者向过程传入值《传入值可以是字面量或变量)

  • OUT : 输出参数:表示过程向调用者传出值(可以返回多个值) (传出值只能是变量)

  • INOUT :输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

    即表示调用者向过程传入值,又表示过程向调用者传出值 ( 只能是变量 )

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

提升eBay、亚马逊搜索排名:测评自养号战略揭秘

想要在跨境市场上获得更多销售额&#xff0c;让客户可见非常重要。而自养号测评是个不错的选择&#xff0c;可以帮助您提高排名和产品知名度。许多因素共同作用&#xff0c;吸引更多客户关注您的产品。 网上购物也以同样的方式进行。人们在亚马逊上搜索特定产品并寻找一些选择…

阿里云效和阿里在线idea使用

阿里云效 https://flow.aliyun.com/all?page1 阿里在线idea&#xff1a;https://ide.aliyun.com/ 在云效中创建的项目可以在在线idea 打开 运行中的项目 设置ssh 设置以后可以使用云效率的代码构建来构建代码 设置 添加自有云或者体验5h

小兔鲜儿 - 地址模块

目录 小兔鲜儿 - 地址模块 准备工作​ 静态结构​ 地址管理页​ 地址表单页​ 动态设置标题​ 新建地址页​ 接口封装​ 参考代码​ 地址管理页​ 接口调用​ 参考代码​ 修改地址页​ 数据回显​ 更新地址​ 表单校验​ 操作步骤​ 删除地址​ 侧滑组件用法…

(三)行为模式:7、观察者模式(Observer Pattern)(C++示例)

目录 1、观察者模式&#xff08;Observer Pattern&#xff09;含义 2、观察者模式的UML图学习 3、观察者模式的应用场景 4、观察者模式的优缺点 &#xff08;1&#xff09;优点&#xff1a; &#xff08;2&#xff09;缺点 5、C实现观察者模式的实例 1、观察者模式&…

Android 1.1 背景相关与系统架构分析

目录 1.1 背景相关与系统架构分析 分类 Android 基础入门教程 1.Android背景与当前的状况 2.Android系统特性与平台架构 系统特性&#xff1a; 平台架构图&#xff1a; 架构的简单理解&#xff1a; 3.本节小结&#xff1a; 1.1 背景相关与系统架构分析 分类 Android 基础…

Error: PostCSS plugin autoprefixer requires PostCSS 8 问题解决办法

报错&#xff1a;Error: PostCSS plugin autoprefixer requires PostCSS 8 原因&#xff1a;autoprefixer版本过高 解决方案&#xff1a; 降低autoprefixer版本 执行&#xff1a;npm i postcss-loader autoprefixer8.0.0

vue3+ts+tinynce富文本编辑器+htmlDocx+file-saver 配合实现word下载

vue3 请下载html-docx-js-typescript&#xff0c;否则会报错类型问题 //报告导出word import * as htmlDocx from "html-docx-js-typescript";//ts-ignore import { saveAs } from file-saver// 下载文件&#xff0c; const downloadFile (row)> {try {const co…

2.(Python数模)线性规划问题

Python解决线性规划问题 参考了以下博文 https://blog.csdn.net/m0_46692607/article/details/126784109?spm1001.2014.3001.5506 目标是解决以下的线性规划&#xff0c;程序计算出目标函数的最大值&#xff0c;并在最大值下取得的x1x2x3对应值。 源代码如下&#xff1a; …

基于单片机的串行通信发射机设计

一、项目介绍 串行通信是一种常见的数据传输方式&#xff0c;允许将数据以比特流的形式在发送端和接收端之间传输。当前实现基于STC89C52单片机的串行通信发射机&#xff0c;通过红外发射管和接收头实现自定义协议的数据无线传输。 二、系统设计 2.1 单片机选择 在本设计中&…

基于单片机的点阵电子显示屏上下左右移加减速系统

一、系统方案 本设计的任务就是完成一个1616的点阵设计&#xff0c;并能滚动显示“********************”内容。 主要内容是&#xff0c;能同时流动显示汉字&#xff1b;能实现显示汉字无闪烁&#xff1b;能实屏幕亮度较高。本LED显示屏能够以动态扫描的方式显示一个1616点阵汉…

19 Linux之Python定制篇-apt软件管理和远程登录

19 Linux之Python定制篇-apt软件管理和远程登录 文章目录 19 Linux之Python定制篇-apt软件管理和远程登录19.1 apt软件管理19.1.1 apt介绍19.1.2 更新软件下载地址-阿里源19.1.3 使用apt完成安装和卸载vim 19.2 远程登录Ubuntu 学习视频来自于B站【小白入门 通俗易懂】2021韩顺…

SIP对讲求助终端,带功放输出

SV-7011TP SIP对讲求助终端&#xff0c;带功放输出 一、描述 网络对讲终端SV-7011TP&#xff0c;SV-7011TP能处理tcp/ip网络音频流&#xff0c;并驱动扬声器进行播音的终端&#xff0c;主要用于公共数字广播&#xff0c;媒体教学&#xff0c;报警等需要数字音频的领域。 SV-…

css让元素保持等比例宽高

使用新属性 aspect-ratio: 16/9; 代码示例 <style>div {width: 60%;/* 等比例宽高 */aspect-ratio: 16/9;background-color: red;margin: auto;}</style> </head><body><div></div> </body>示例 aspect-ratio兼容性

java自动登录 selenium 自动登录并获取cookie

选择操作网页 我用的edge&#xff0c;谷歌我的版本太高没有对应的驱动… 下载Edge的驱动程序&#xff0c;直接解压就好里面只有一个.exe文件 https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ 复制即用&#xff0c;看注释 import com.alibaba.fastjs…

C++——vector:resize与reserve的区别,验证写入4GB大数据时相比原生操作的效率提升

resize和reserve的区别 reserve&#xff1a;预留空间&#xff0c;但不实例化元素对象。所以在没有添加新的对象之前&#xff0c;不能引用容器内的元素。而要通过调用push_back或者insert。 resize&#xff1a;改变容器元素的数量&#xff0c;且会实例化对象&#xff08;指定或…

无涯教程-JavaScript - QUARTILE函数

QUARTILE函数取代了Excel 2010中的QUARTILE.INC函数。 描述 该函数返回数据集的四分位数。四分位数通常用于销售和调查数据中,以将人群分为几类。 语法 QUARTILE (array,quart)争论 Argument描述Required/OptionalArrayThe array or cell range of numeric values for whi…

云服务器利用Docker搭建sqli-labs靶场环境

一、安装宝塔面板 使用xshell、electerm、SecureCRT等远程终端连接登陆上云服务器&#xff0c;在Linux宝塔面板使用脚本安装 安装后&#xff0c;如下图&#xff1a;按照提示&#xff0c;在云服务器防火墙/安全组放行Linux宝塔面板的端口 在浏览器打开上述网址&#xff0c;登…

服务器数据恢复-reiserfs文件系统损坏如何恢复数据?

服务器数据恢复环境&#xff1a; 一台IBM X系列服务器&#xff0c;4块SAS硬盘组建一组RAID5阵列&#xff0c;采用的reiserfs文件系统。服务器操作系统分区结构&#xff1a;boot分区LVM卷swap分区&#xff08;按照前后顺序&#xff09;。LVM卷中直接划分了一个reiserfs文件系统&…

Windows无法删除分区怎么办?

我们知道Windows系统内置的磁盘管理工具是一个很实用的程序&#xff0c;可以帮助我们完成很多磁盘分区相关的基础操作&#xff0c;比如当我们想要删除硬盘上的某一个分区时&#xff0c;先想到的可能会是磁盘管理工具。但是当我们准备在磁盘管理工具中删除某个分区时&#xff0c…

合宙Air724UG LuatOS-Air LVGL API控件--复选框 (Checkbox)

复选框 (Checkbox) 复选框主要是让用户进行一些内容选择&#xff0c;或者同意用户协议。 示例代码 – 复选框回调函数 function event_handler(obj, event) if event lvgl.EVENT_VALUE_CHANGED then print(“State”, lvgl.checkbox_is_checked(obj)) end end – 创建复选框…