DQL语言

QDL语言

DQL(Data Query Language)数据查询语言用来进行数据库中数据的查询,常用的关键字为----select

语法:

select  字段名,字段名,...... ,字段名 from  表名  [where 条件语句]

举个例子:

-- 查询product表中所有记录
select * from product;

-- 查询product表中pid和pname字段
select pid,pname from product;

-- 查询结果是表达式(运算查询):将所有商品的价格+10元进行显示.
select price+10 from product;

-- 查询商品名称为“花花公子”的商品所有信息:
select  * from product where pname ='花花公子';

排序

查询数据时,我们会把查询的结果按照某些字段排序

默认:升序

asc:指定列按升序排序。

desc:指定列按降序排序。

语法:

order  by  列名A,列名B                    按照列名A升序,当列名A相同时按照列名B升序
order  by  列名A  desc,列名B              按照列名A降序,当列名A相同时按照列名B升序
order  by  列名A,列名B  desc              按照列名A升序,当列名A相同时按照列名B降序
order  by  列名A  desc,列名B  desc        按照列名A降序,当列名A相同时按照列名B降序

查询语法:

select  字段名,字段名,字段名,......,from 表名  [where  条件]  [order  by 字段1,字段2,....]

举个例子:

-- 查询学生信息--按照年龄排序[asc升序默认] [desc降序]
select * from tbl_student order by age desc,classId desc;

为查询的结果起别名

语法:

select 字段 as 别名, 字段 as 别名 from 表名

注意:数据库中as可以省略

举个例子:

-- 查询学生表中sname起别名姓名,age起别名年龄
select sname as 姓名, age 年龄 from tbl_student;

去重

去重用到关键字----distinct,把结果中重复的内容去除只保留一个

语法:

select  distinct 字段名,字段名,.....,from 表名 

分页查询

MySQL中分页需要使用关键字-----limit

语法:

select 字段名,字段名,字段名 from  表名 [where 条件] [order by 字段] limit  起始记录,条数

找规律:

-- 查询第一页每页显示4
select * from tbl_student limit 0,4;

-- 查询第二页每页显示4
select * from tbl_student limit 4,4;

-- 查询第三页每页显示4
select * from tbl_student limit 8,4;

-- 查询第四页每页显示4
select * from tbl_student limit 12,4;

-- 可以看见起始记录与条数之间存在一定的规律
-- 规律: select * from 表名 limit (page-1)*pageSize,pageSize;
-- page:表示第几页
-- pageSize: 表示每页显示的记录个数

举个例子:

-- 查询tb_teacher表第二页的数据。每页显示5个。
select * from tb_teacher  limit 55

聚合函数

MySQL中提供5这种聚合函数如:sum()求和count()求个数max()求最大值min()求最小值avg()求平均值

举个例子:

-- 求choose_course的成绩和  最高成绩  最小成绩  统计表中记录的条数 平均值
select sum(score),max(score),min(score),count(*),avg(score) from choose_course;

分组查询

在MySQL中分组查询的关键字----group  by某一列相同的数据视为一组,进行分组查询通常与聚合函数一起使用

语法:

select  分组字段 , 聚合函数  from  表名 group by  分组的字段,分组的字段

注意一点:select只能分组字段聚合函数

举个例子:

-- 求tbl_student中学生的个数.
select classId 班级号, count(*) 人数  from tbl_student group by classId

分组后,如果想要条件查询时需要使用关键字----having 

语法:

select 分组字段名,聚合函数 from 表名  [group by 字段名] [having 条件语句]

举个例子:

-- 根据tb_student表中通过学院分组查询人数大于5的学院
select college , count(*) 人数  from  tb_student group by college having  count(*)>5

having和where的区别

在理解having和where区别之前需要明白查询语句的执行顺序

from > where > group (含聚合函数)> having > order > select > limit

从执行顺序中可以看到where执行顺序要在group之前,所以where语句无法对group by分组的内容进行过滤,所以这时可以使用having 语句进行过滤

 

posted @ 2023-12-14 12:09  和哗  阅读(18)  评论(0编辑  收藏  举报