欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

MySQL 高级 SQL 语句

最编程 2024-04-01 16:30:30
...

目录

常用查询

按关键字排序

order by结合where进行条件过滤

  根据多个字段进行排序

用或(or)和且(and)来查询不重复 

用多条件(嵌套)去查询 

去重

 对结果进行分组

限制结果(limit) 

别名(alias)

通配符 


常用查询

按关键字排序

SELECT语句可将数据从 MySQL 数据库中查询出来

对查询的结果进行排序,可用 ORDER BY 语句来对语句实现排序

不仅对某一个字段,也可以针对多个字段

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

ASC  DESC

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

操作

创建环境

创建school的数据库

create database school;

use school;

数据库有一张yiban表,记录了学生的id,姓名,分数,地址和爱好
create table yiban (id int,name varchar(10) primary key not null ,score decimal(5,2),address varchar(20),hobbid int(5));

insert into yiban values(1,'aodaye',80,'beijing',2);
insert into yiban values(2,'wangwu',90,'shengzheng',2);
insert into yiban values(3,'lisi',60,'shanghai',4);
insert into yiban values(4,'dalong',99,'hangzhou',5);
insert into yiban values(5,'danan',98,'laowo',3);
insert into yiban values(6,'wuye',10,'nanjing',3);
insert into yiban values(7,'xiaoki',11,'nanjing',5);

 select * from yiban;

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

分数按降序排列

order by结合where进行条件过滤

筛选地址是北京的学生按分数降序排列 

  根据多个字段进行排序

当第一个字段有相同的数据情况下,可以根据第二个字段进行排序

查询学生信息先按兴趣id降序排列,相同分数的,id按升序排列

 

用或(or)和且(and)来查询不重复 

or

 and

用多条件(嵌套)去查询 

 

去重

distinct 查询不重复记录
语法:

select distinct 字段 from 表名

 对结果进行分组

我们可以通过group by语句配合聚合函数对sql语句查询出来的结果进行分组

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

常用聚合函数 

计数(COUNT)、 求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN)

 计数(COUNT)

  1. select count(name),hobbid from yiban group by hobbid;

  2. #统计yiban表中hobbid字段相同的个数

 

还可以结合where语句(添加条件),去筛选 

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

结合order by把计算出的个数进行升序排列

查 表里有多少条数据

 select count(*) from yiban

select count(name) from yiban;

求和(SUM)

查看yiban表中成绩总值

 求平均数(AVG)

select avg(score) from yiban;

求出yiban表中的平均成绩

 最大值(MAX)

select max(score) from yiban;

求出yiban表中的成绩最大值

 最小值(MIN)

select min(score) from yiban;

求出yiban表中成绩的最小值

限制结果(limit) 

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

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

 我们的表结构默认字段算一行表示为0。所以用limit时要-1

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

我们还可以结合order by,对于做了限制的查询做排序

select * from yiban order by id desc limit 4;
在yiban表中根据id对前五行的数据进行降序排列

别名(alias)

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

select name as 姓名,score 成绩,address 地址 from yiban;
将name,score和address分别做别名

给表做r的别名

select r.name as 姓名,r.score as 成绩 from yiban as r;

通配符 

通配符主要用于替换字符串中的部分字符,

通过部分字符的匹配将相关结果查询出来。

通常跟 LIKE 一起使用的,并协同 WHERE 子句共同来完成查询任务。

常用的通配符有两个:

%:百分号表示零个、一个或多个字符        *
_:下划线表示单个字符                     . 
 

查询名字是d开头的记录

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

查询名字中间有e的记录

“%”和“_”也可以组合使用

查询名字以w开头的记录