MySQL 整理学习(基础篇三)

概述:

     上一篇博客已经把数据和字符串类型及DML语句整理结束,那么接下来,我会继续整理关于DQL语句的整理。

数据查询语言  -- DQL

分块整理:

        1、基本查询:select   字段列表

                                 from  表名列表

        2、条件查询:where  条件列表

        3、聚合函数(count 、 max 、min、avg、sum)

              分组查询 :group by   分组字段列表

                                  having       分组后条件列表

        4、排序查询:order by    排序字段列表

        5、分页参数 :limit    分页参数

DQL --基本查询

        1、查询多个字段

                select   字段1,字段2,字段3··· from 表名;

         或者

                select * from 表名;

        2、设置别名

                select 字段1 [as 别名1]  , 字段2 [as  别名2] , ···from 表名;

注意:这里“as”可以省略不写就是直接在字段1 后面跟上别名1。

        3、去除重复记录

                select  distinct   字段列表  from    表名;

示例:我们用上一博客中创建的emp表进行演示。

注意:这里我将emp表修改名字为employee

alter table emp rename to employee;

首先我们查询employee表中的workaddress,

select workaddress from employee;

我们会发现:有很多重复项,我们接下来用 distinct关键字进行去重。

 我们用distinct关键字进行查询employee表中的workaddress。

select distinct workaddress from employee;

我们得到的返回结果为:

 演示结束,可以明白“distinct”是去重的关键字。

DQL --条件查询

语法:

        select 字段列表    from   表名  where  条件列表;

补充: --运算符

        1、 比较运算符

        >                                大于

        >=                              大于等于

        <                                小于

        <=                              小于等于

        =                                等于

        <>或者 !=                不等于

        between...and...      在某个范围内(含最小,最大值)

        in(...)                        在in之后的列表中的值多选一

        like                           占位符     模糊匹配(_ 是匹配单个字符,%是匹配任意个字符)

        is null                       是NULL

        2、逻辑运算符

        and 或  &&              并且(多个条件同时成立)

        or  或   ||                  或者(多个条件任意一个成立)

        not 或者 !                非,不是

练习:

1、查询年龄为88岁的员工信息

 

2、查询年龄小于20岁的员工信息

 

3、查询年龄小于且等于20岁的员工信息

 

4、查询idcard为null的员工信息

 

5、查询年龄不是88岁的员工信息

 

 (以上俩种方式都可以)

6、查询年龄在15~20岁的员工信息

 

(以上两种方法都可以) 

7、查询年龄小于25岁的女员工信息

 

8、查询年龄为18、20、40岁的员工信息

 

9、查询员工名字是两个字的员工信息

(这里注意一下下划线是两个因为版本的问题,所以显示的像一个) 

10、查询idcard最后位为“8”的员工信息

这里十个练习大家可以自己做一下,试着操作一下。 

DQL --聚合函数

        1、介绍

                聚合函数就是将一列数据作为一个整体,进行纵向计算。

        2、常见聚合函数

        count                                         统计数量

        max                                            最大值

        min                                             最小值

        avg                                             平均值

        sum                                           求和

注意:null值不参与所有聚合函数运算

语法:

        select  聚合函数(字段列表)    from   表名;

示例:

        1、统计员工人数

 

        2、统计员工年龄最大值

 

        3、统计员工年龄最小值

 

        4、统计年龄平均值

 

        5、统计年龄都加起来为多少

DQL --分组查询

1、语法

        select 字段列表  from  表名  [where 条件]  group  by 分组字段名[having  分组后过滤条件]; 

  示例:

-- 统计员工男女数量

-- 统计地区分组后的数量

 

-- 统计年龄小于45岁的员工在同一个地区多于3个人的地区名字及数量

2、having 和 where 的区别

>执行时机不同:where 是分组之前进行过滤,不满足where条件,不参与分组;而having是分组                                                                               之后对结果进行过滤

>判断条件不同:where 不能对聚合函数进行判断,而having可以。

注意:在上面示例中存在执行顺序的前后,

                where  >    聚合函数   >     having

            分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

DQL --排序查询

1、语法

        select  字段列表  from  表名  order by  字段1  排序方式1  , 字段2  排序方式2;

2、排序方式

        >ASC :升序(默认项)

        >DESC :降序

注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

示例:

1、按照年龄进行升序排列

 

2、按照入职日期降序排列

 

3、按照年龄进行升序排列如果年龄相同的话再按照入职日期进行降序排列

 

DQL --分页查询

1、语法

        select  字段列表  from   表名  limit  起始索引 ,查询记录数;

在这里说明一下起始索引:

起始索引是从0 开始,起始索引=(查询页码-1)*  每页显示记录数

另外,分页查询是数据库的方言,不同数据库有不同的实现,MySQL中是limit

如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10。

示例:

1、查询第一页数据

 

2、查询第二页数据

拓展 -- DQL的执行顺序

先说编写顺序,编写顺序就是写sql语句时的输入语句:

select

(聚合函数)

from

where

group by ... having

order by

limit

然后再说一下执行顺序:

from

where 

(聚合函数)

group by ... having

select

order by

limit

总结:

这次的整理把DQL语句整理结束,大家可以根据示例进行练习。最后,后续我会继续更新,同时也希望大家多多包涵,同时有需要改正的地方,希望大家积极的在评论区留言,不胜感激。另外,有什么问题,也可以在评论区留言,我看到也会回复给大家。

未完···待续···

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值