MySQL高级语句(一)

目录

前言

一.按关键字排序

1.1  ORDER BY 语句

1.2  语法

1.3  升序排列

1.4  降序排列 

1.5  条件查询

1.6  多字段排序

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

2.1    AND(且)/OR(或)

2.1.1  and  

2.1.2  OR 

2.2  嵌套/多条件

2.3  查询不重复记录  distinct 

三、对结果进行分组

3.1  group  by  语法

四、限制结果条目

4.1  limit 语法

4.1.1  查询所有信息显示前4行记录

4.1.2  从第4行开始,往后显示3行内容

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

4.1.4  基础select 小的升阶,怎么输出最后3行

五、设置别名

5.1   as 语法

5.1.1  列别名设置示例

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

5.3  使用场景

六、总结


前言

高级SQL语句是作为运维工程师在查询数据库数据的重要工具,使用SQL语句可以节省大量时间和精力,起到事半功倍的效果。

一.按关键字排序

类比于windows 任务管理器
使用 SELECT 语句可以将需要的数据从 MySQL 数据库中查询出来,如果对查询的结果进行排序,可以使用 ORDER BY 语句来对语句实现排序,并最终将排序后的结果返回给用户。这个语句的排序不光可以针对某一个字段,也可以针对多个字段

1.1  ORDER BY 语句

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

1.2  语法

SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... 

ASC和DESC:
ASC 是按照升序进行排序的,是默认的排序方式,即 ASC 可以省略。SELECT 语句中如果没有指定具体的排序方式,则默认按 ASC方式进行排序。
DESC 是按降序方式进 行排列。当然 ORDER BY 前面也可以使用 WHERE 子句对查询结果进一步过滤。

示例:数据库有一张info表,记录了学生的id,姓名,分数,地址和爱好,内容如下

1.3  升序排列

按分数排序(默认不指定是升序排列)

select id,name,score from info order by score;

1.4  降序排列 

分数按降序排列

select id,name,score from info order by score desc;

1.5  条件查询

order by  还可以结合where进行条件过滤

select name,score from info where hobby='4' order by score desc;

1.6  多字段排序

 order by之后的参数,使用","分割,优先级是按先后顺序而定

select id,name,hobby from info order by hobby desc,id asc;

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

2.1    AND(且)/OR(或)

语法:

#语法:
select 字段名  from 表名 where 条件1 (and|or) 条件2 (and|or)条件3;

2.1.1  and  

筛选分数大于70且分数不大于90的

select * from info  where score >70 and score <=90;

2.1.2  OR 

筛选分数大于70分数或不大于90的

select * from info where score >70 or score <=90 order by score desc;

2.2  嵌套/多条件

select * from info where score >70 or (score >80 and score <90);

2.3  查询不重复记录  distinct 

语法:

select distinct 字段 from 表名;

注:

distinct 必须放在最开头
distinct 只能使用需要去重的字段进行操作
distinct 去重多个字段,含义是:几个字段同时重复时才能被过滤
 

三、对结果进行分组

通过 SQL 查询出来的结果,还可以对其进行分组,使用 GROUP BY 语句来实现GROUP BY 通常都是结合聚合函数一起使用的。

常用的聚合函数包括:计数(COUNT)、 求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN),GROUP BY 分组的时候可以按一个或多个字段对结果进行分组处理。

3.1  group  by  语法

SELECT column_name,aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;

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

结合where语句,筛选分数大于等于80的分组,计算学生个数 

select count(name),hobbid from info where score >=80 group by hobby;

结合order by把计算出的学生个数按升序排列

select count(name),score,hobbid from info where score>=70 group by hobbid order by count(name) asc;

四、限制结果条目

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

4.1  limit 语法

SELECT column1, column2, ... FROM table_name LIMIT [offset,] number

offset 为索引下标
number 为索引下标后的几位

LIMIT 的第一个参数是位置偏移量(可选参数),是设置 MySQL 从哪一行开始显示。 如果不设定第一个参数,将会从表中的第一条记录开始显示。

需要注意的是,第一条记录的 位置偏移量是 0,第二条是 1,以此类推。第二个参数是设置返回记录行的最大数目。

4.1.1  查询所有信息显示前4行记录

select * from info limit 3;

4.1.2  从第4行开始,往后显示3行内容

select * from info limit 3,3;

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

select id,name from info order by id limit 3;

4.1.4  基础select 小的升阶,怎么输出最后3行

select id,name,score from info order by id  desc limit 3;

五、设置别名

在 MySQL 查询时,当表的名字比较长或者表内某些字段比较长时,为了方便书写或者 多次使用相同的表,可以给字段列或表设置别名。使用的时候直接使用别名,简洁明了,增强可读性(alias ——》as)

5.1   as 语法

对于列的别名: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 之后的别名,主要是为表内的列或者表提供临时的名称,在查询过程中使用,库内实际的表名 或字段名是不会被改变的

5.1.1  列别名设置示例

select name as 姓名, score as 成绩 from info;
select name  姓名, score  成绩 from info;

如果表的长度比较长,可以使用 AS 给表设置别名,在查询的过程中直接使用别名临时设置  info的别名为  z

select z.name as 姓名,z.score as 成绩 from info as z;

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

select count(*) as number from info;

不用  as  也可以,一样显示 

5.3  使用场景

对复杂的表进行查询的时候,别名可以缩短查询语句的长度

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

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

create table text as select * from info;

select * from text;

此处AS起到的作用 :

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

但是”约束“没有被完全”复制“过来

如果原表设置了主键,那么附表的: default  字段会默认设置一个0
相似:克隆、复制表结构

create table text (select * from info);

或者加入where  语句判断

create table text02 as select * from info where score >=60;

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

六、总结

介绍了一些高阶语句在数据表或者数据库里面的用法

按关键字排序:order  by语句;

AND/OR ——且/或的使用

嵌套/多条件

distinct 查询不重复记录

对结果进行分组: GROUP BY 语句

 limit 限制输出的结果记录

设置别名(alias -----as) 

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值