mysql高阶语句

news2024/9/20 23:39:56

目录

前言

一、高级sql语句

1、按关键字排序

二、区间判断 ——且/或

三、 distinct 查询不重复记录

四、对结果进行分组

五、限制结果条目——limit

六、设置别名(alias ——>as)

七、通配符

八、子查询


前言

当我们对mysql数据库进行了查询后,除了基本查询,有时候更需要对查询的结果集进行再次处理。比如统计个数,对结果进行排序,只查看部分数据等等。

一、高级sql语句

1、按关键字排序

命令格式:SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... 

排序效果
desc按降序方式进 行排列,ORDER BY 前面也可以使用 WHERE 子句对查询结果进一步过滤。
asc按照升序进行排序,是默认的排序方式,可以省略,未指定则以asc方式排序
结合where进行具体属性排列
按学生的住址进行分数的降序排列

首先按学生的兴趣进行降序排列,其次id也进行降序排列 

首先按学生的兴趣进行降序排列,其次id也进行升序排列 

注意:ORDER BY 语句也可以使用多个字段来进行排序,当排序的第一个字段相同的记录有多条的情况下,这些多条的记录再按照第二个字段进行排序,ORDER BY 后面跟多个字段时,字段之间使用英文逗号隔开,优先级是按先后顺序而定,但order by 之后的第一个参数只有在出现相同值时,第二个字段才有意义

二、区间判断 ——且/或

 命令格式:SELECT "字段" FROM "表名" WHERE "条件1" {[AND|OR] "条件2"}+ ;

选项效果
and查询分数在70到90区间
or查询分数在70分以下或大于等于90的
and /or嵌套查询分数在70分和90之间的或者小于60的

三、 distinct 查询不重复记录

命令格式:SELECT DISTINCT "字段" FROM "表名"; 

 

四、对结果进行分组

通过 SQL 查询出来的结果,还可以对其进行分组,使用 GROUP BY 语句来实现 ,GROUP BY 通常都是结合聚合函数一起使用的,常用的聚合函数包括:计数(COUNT)、 求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN),GROUP BY 分组的时候可以按一个或多个字段对结果进行分组处理。

命令格式:SELECT column_name, aggregate_function(column_name)FROM table_name WHERE column_name operator value GROUP BY column_name;

举例

按hobbid相同的分组,计算相同分数的学生个数(基于name个数进行计数)

按hobbid相同的分组(基于name个数进行计数)结合where语句,筛选分数大于等于80的分组,计算学生个数

按hobbid相同的分组(基于name个数进行计数)结合where语句,筛选分数大于等于80的分组,结合order by把计算出的学生个数按升序排列

 

五、限制结果条目——limit

在使用 MySQL SELECT 语句进行查询时,结果集返回的是所有匹配的记录(行)。有时候仅需要返回第一行或者前几行,这时候就需要用到 LIMIT

命令格式:select 字段 from 表名 limit [offset,] number

如果不设定第一个参数,将会从表中的第一条记录开始显示。

第一条偏移量是0,第二条为1

offset 为索引下标

number 为索引下标后的几位

limit 的第一个参数是位置偏移量(可选参数),是设置 mysql 从哪一行开始

命令效果

查询所有信息显示前4行

从第四行开始,往后显示3行

结合order by语句,按id的大小升序排列显示前三行

输出前三行

结合order by语句,按id的大小升序排列输出最后三行

六、设置别名(alias ——>as)

使用场景:
1、对复杂的表进行查询的时候,别名可以缩短查询语句的长度

2、多表相连查询的时候(通俗易懂、减短sql语句)

命令格式:对于列的别名:SELECT column_name AS alias_name FROM table_name;

                  对于表的别名:SELECT column_name(s) FROM table_name AS alias_name;

在使用 AS 后,可以用 alias_name 代替 table_name,其中 AS 语句是可选的。AS 之后的别名,主要是为表内的列或者表提供临时的名称,在查询过程中使用,库内实际的表名 或字段名是不会被改变的

举例 
select name as 姓名,score as 成绩 from info;   
select i.name as 姓名,i.score as 成绩 from info as i;

查询info表的字段数量,以number显示

AS 还可以作为连接语句的操作符,创建t1表,将info表的查询记录全部插入t1表

 

注意:

此处AS起到的作用:

1、创建了一个新表t1 并定义表结构,插入表数据(与info表相同)

2、但是”约束“没有被完全”复制“过来 #但是如果原表设置了主键,那么附表的:default字段会默认设置一个0

3、与克隆、复制表结构相似——create table t1 (select * from info);也可以加入where 语句判断——create table test1 as select * from info where score >=60;

 4、在为表设置别名时,要保证别名不能与数据库中的其他表的名称冲突。
列的别名是在结果中有显示的,而表的别名在结果中没有显示,只在执行查询时使用。

七、通配符

通配符主要用于替换字符串中的部分字符,通过部分字符的匹配将相关结果查询出来。

通常通配符都是跟like一起使用,并协同where子句共同来完成查询任务。

%:百分号表示零个、一个或多个字符

_:下划线表示单个字符

查询以什么开头的记录

查询名字里是h和i中间有一个字符的记录

查询名字中间有g的记录

查询li后面的三个字段

查询名字以h开头的记录

八、子查询

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

多表查询,查询info表中的id,name,score ,其中的id来源于na表

IN 用来判断某个值是否在给定的结果集中,通常结合子查询来使用

<表达式> [NOT] IN <子查询>

同表查询info表中name,score,id,其中分数大于80的记录

在t1里的记录里插入info表的记录

UPDATE 语句也可以使用子查询。UPDATE 内的子查询,在 set 更新内容时,可以是单独的一列,也可以是多列

将wangwu的分数改为50

 

 

除去na表中所有的id且大于1的其余id分数修改为100

删除分数大于80的记录——delete

删除分数不是大于等于80的记录

在 IN 前面还可以添加 NOT,其作用与IN相反,表示否定(即不在子查询的结果集里面)

EXISTS 这个关键字在子查询时,主要用于判断子查询的结果集是否为空。如果不为空, 则返回 TRUE;反之,则返回 FALSE

查询如果存在分数等于80的记录则计算info的字段数

查询如果存在分数小于50的记录则计算info的字段数,info表没有小于50的,所以返回0

 注意:子语句可以与主语句所查询的表相同,也可以是不同表

子查询不仅可以在 SELECT 语句中使用,在 INERT、UPDATE、DELETE 中也同样适用。在嵌套的时候,子查询内部还可以再次嵌套新的子查询,也就是说可以多层嵌套。

当表达式与子查询返回的结果集中的某个值相等时,返回 TRUE,否则返回 FALSE。 若启用了 NOT 关键字,则返回值相反。需要注意的是,子查询只能返回一列数据,如果需 求比较复杂,一列解决不了问题,可以使用多层嵌套的方式来应对。 多数情况下,子查询都是与 SELECT 语句一起使用的

子查询还可以用在 INSERT 语句中。子查询的结果集可以通过 INSERT 语句插入到其 他的表中 

 

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

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

相关文章

GJB 5000B二级-QA质量保证

1、主要变化情况 修订2条,合并1条(绿色),新增1条(黄色) 新增的主要内容 将原标准过程域名称“过程和产品质量保证”改为“质量保证” 目的:评价并改进已执行的过程和所产生的工作产品的质量,确保其满足已制定的过程说明和适用的标准。 (GJB5000A:过程和产品质量保…

RISC-V SiFiveU64内核——L2 Prefetcher预期器

目录L2 Prefetcher简介操作流退出页边界Memory Map控制寄存器L2 Prefetcher 初始化L2 prefetcher是U64内核新增的功能&#xff0c;U54内核没有这个功能。打开L2 prefetcher功能后&#xff0c;当访问大片内存&#xff0c;同时dcache中没有缓存时&#xff0c;访问内存的速率可以提…

用R语言和python进行社交网络中的社区检测

在这篇文章中&#xff0c;我用R语言和python检测社交网络中的社区。最近我们被客户要求撰写关于社区检测的研究报告&#xff0c;包括一些图形和统计输出。 相关视频&#xff1a;复杂网络分析CNA简介与R语言对婚礼数据聚类&#xff08;社区检测&#xff09;和可视化|数据分享 复…

(一)LTspice简介

文章目录前言一、举例1.1、RC滤波1.2、仿真结果二、软件安装总结前言 LTspice是一款高性能SPICE仿真器软件&#xff0c;包括原理图捕获图形界面。可探测原理图以产生仿真结果&#xff0c;通过LTspice内置波形查看器轻松探索。与其他SPICE解决方案相比&#xff0c;LTspice的增强…

mysql之SQL练习

常见面试题 学生表&#xff1a;student(学号,学生姓名,出生年月,性别) 成绩表&#xff1a;score(学号,课程号,成绩) 课程表&#xff1a;course(课程号,课程名称,教师号) 教师表&#xff1a;teacher(教师号,教师姓名) 1查询学生总成绩排名 SELECTstu_no,sum(score_prize) AS to…

安装Hadoop下hive的问题

ji问题的主要来源&#xff0c;由于收到安装文档后替换了一下&#xff0c;出现的问题 一&#xff0c;配置完成后&#xff0c;系统变量需要重启虚拟机&#xff0c; bash 变量需要刷新 #系统环境变量需要重启&#xff0c;bash变量只要source或切换就可以 source .bash_profile 我…

VUE+Spring Boot前后端分离开发实战(六):基于RABC权限通用后台管理系统-给角色动态分配权限和用户

文章目录 前言功能设计后端实现前端实现写在后面前言 本文记录了通用后台管理系统中RABC权限中两个功能:给角色分配权限、给角色设置用户。 给角色分配用户:前端使用到了elementUI中的tree,包括加载树以及给已选配权限给默认值等。给角色设置用户:前端用到了elementUI中的…

我们需要工具支持键集分页

我们需要工具支持键集分页 (use-the-index-luke.com) 您是否知道分页非常麻烦但很容易避免&#xff1f;offset offset指示数据库跳过查询的前 N 个结果。但是&#xff0c;数据库仍必须从磁盘获取这些行并按顺序排列它们&#xff0c;然后才能发送以下行。 这不是实现问题&…

超好用的大数据分析平台分享,SuccBI 一站式大数据分析平台

SuccBI 一站式大数据分析平台融合了数据汇集、加工、智能调度、自助分析可视化、中国式报表等功能为企业提供一站式的大数据分析处理能力。 数据汇集、加工 连接各类分散的数据并进行加工、清洗、调度、元数据管理&#xff0c;帮助企业轻松汇集、管理和共享数据资产。 丰富的数…

SAR信号处理基础2——线性调频信号频谱与驻定相位原理

前面已经给出了线性调频信号的时域表达形式&#xff0c;并介绍了信号的实部、虚部、相位、频率等&#xff0c;本文介绍线性调频信号的频谱&#xff0c;以及推导线性调频信号时常用的驻定相位原理。计算信号的频谱&#xff0c;实际上就是对信号做傅里叶变换。即 驻定相位原理认…

Java高校宿舍管理系统寝室管理(含源码+论文+答辩PPT等)

项目功能简介: 本项目含代码详细讲解视频&#xff0c;手把手带同学们敲代码从0到1完成项目 该项目采用技术JSP、Servlet、jdbc、前端框架 bootstrap、jQuery&#xff0c;bootstrap-datetimepicker日期插件、Tomcat服务器、MySQL数据库 项目含有源码、配套开发软件、软件安装教程…

Linux和WIN的优势

1.性价比方面 Linux服务器与Windows服务器就性价比而言&#xff0c;Linux服务器优势是很明显的。Linux作为资源管理和操作系统来说&#xff0c;是开源、免费的&#xff0c;而正版的Windows的操作系统是收费的&#xff0c;因而就性价比来说Linux服务器优于Windows服务器。 2.性…

python的自定义函数的用法和实例

目录 1.自定义函数的语法和用法 &#xff08;1&#xff09;引入 &#xff08;2&#xff09;语法 &#xff08;3&#xff09;用法&#xff1a;用于自定义目标函数语法。 &#xff08;4&#xff09;调用函数 ①语法 ②解释 2.实例 &#xff08;1&#xff09;简单的用法 …

[附源码]计算机毕业设计小区物业管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Vector - VTESTStudio(软件篇) - CAPL实现MD5算法 - 01

OTA是当前车载行业非常热门的一个话题和研究方向,然而车辆又是跟大家的生命安全息息相关的一个日常工具,因此对于车辆升级的限制条件和安全阈值是我们不可避开的一个话题,今天我们来介绍一下对于文件的校验常用的一个算法MD5。 今天我们先来说下什么是MD5算法,这个…

Java基础:Object类、常用API

第一章 Object类 1.1 概述 java.lang.Object类是Java语言中的根类&#xff0c;即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候&#xff0c;最终找的父类就是Object。 如果一个类没有特别指定父类&#xff0c; 那么默认则继承自Object类。例如&#…

MOSFET 和 IGBT 栅极驱动器电路的基本原理学习笔记(一)MOSFET技术

MOSFET技术 1.器件类型 2.MOSFET模型 3.MOSFET关键参数 4.开关应用 5.开通过程 6.关断过程 7.功率损耗 8.寄生器件的影响 双极晶体管和 MOSFET 晶体管的工作原理相同。从根本上说&#xff0c;这两种晶体管都是电荷控制器件&#xff0c;这就意味着它们的输出电流与控制电极在半…

4.1 一个简单的Linux Kernel模块

Linux内核包含非常多个组件,但不同的应用场景下需要打包的组件也不尽相同,更何况我们常常因为一些iot设备本身硬件资源有限,为了物尽其用要对内核组件进行裁剪。例如,对于路由器设备来说,我们再在打包Linux 内核时并不需要打包BT等驱动模块。Linux提供了一种称之为模块-Mo…

《MySQL实战45讲》学习笔记

《MySQL实战45讲》学习笔记 [TOC] 《MySQL实战45讲》学习笔记《MySQL实战45讲》学习笔记01.基础架构&#xff1a;一条SQL查询语句是如何执行的02.日志系统&#xff1a;一条SQL更新语句是如何执行的更新语句的执行流程重要的日志模块&#xff1a;redo log重要的日志模块&#x…

Mali GPU“补丁缺口”让 Android 用户容易受到攻击

©网络研究院 Arm 的 Mali GPU 驱动程序中的一组五个可利用漏洞在芯片制造商修补它们几个月后仍未修复&#xff0c;可能使数百万 Android 设备面临攻击。 来自谷歌、三星、小米、Oppo 以及其他手机制造商的设备目前受到影响&#xff0c;正在等待修复程序到达用户手中。 …