SQL语法——DQL (附操作讲解)

目录

一、SQL通用语法

二、SQL语句的分类

三、DQL语句

1、基本查询

2、条件查询(WHERE)

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

4、分组查询(GROUP BY)

5、排序查询(ORDER BY)

6、分页查询(LIMIT)

四、总结

五、案例演示


一、SQL通用语法

  • SQL语句可以单行或多行书写,以分号结尾。
  • 若语句过长,可以使用空格或缩进来增强可读性,且空格和缩进的个数没有限制。
  • SQL语句不区分大小写,关键字建议大写。
  • 注释:
    1. -- 单行注释
    2. # 单行注释
    3. /*      */ 多行注释

二、SQL语句的分类

  • DDL(Data Definition Language):数据定义语言,用来定义数据库对象(数据库,表,字段)
  • DML(Data Manipulation Language):数据操作语言,用来对数据库表中的数据进行增删改
  • DQL(Data Query Language):数据查询语言,用来查询数据库中表的记录
  • DCL(Data Control Language):数据控制语言,用来创建数据库用户、控制数据库的访问权限、控制对数据的增删改查操作

三、DQL语句

1、基本查询

(1)查询多个字段:SELECT 字段1,字段2,字段3...... FROM 表名;

(2)查询所有字段:SELECT * FROM  表名;

(3)设置别名:SELECT 字段1 [AS 别名1],字段2 [AS 别名2]......FROM 表名;

(4)去除重复记录:SELECT DISTINCT 字段列表 FROM 表名;

示例:先创建一张员工表:

再插入数据:

查询一下这张表看看数据插入没有:

做好以上准备,接下来演示基本查询的语法,查询指定字段 name,workno,age:

查询所有字段数据:

有没有发现这样子写很繁琐,一点也不方便?其实我们可以用 SELECT * FROM  表名; 语句来查询全部字段,会发现效果一样

查询所有员工的工作地址,起别名

起别名为工作地址:(这条语句中as是可以省略的)

查询员工的上班地址(不要重复)

因为前面插入的数据全部是北京,所有这里只返回北京一个地点。

2、条件查询(WHERE)

(1)SELECT 字段列表 FROM 表名 WHERE 条件列表;

示例:查询年龄等于 18 的员工

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


查询没有身份证号的员工信息:select * from emp where idcard is null;


查询有身份证号的员工信息:select * from emp where idcard is not null;
查询年龄在15岁(包含)到20岁(包含)之间的员工信息:(3种)


查询性别为女且年龄小于25岁的员工信息:


查询年龄等于18或20或40的员工信息:


查询姓名为两个字的员工信息:select * from emp where name like '__';

查询身份证号最后位为X的员工信息:select * from emp where idcard like '%X';

select * from emp where idcard like '_________________X';     (前面一共17个下划线)

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

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

语法:SELECT 聚合函数(字段列表) FROM 表名;

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

常见的聚合函数:

  • count——统计数量
  • max——最大值
  • min——最小值
  • avg——平均值
  • sum——求和

示例:

统计该企业员工数量

select count(*) from emp; //统计表的总数量

select count(id) from emp; //统计id字段的总数量

统计该企业员工的平均年龄   select avg(age) from emp;

统计该企业员工的最大年龄  select max(age) from emp;

统计该企业员工的最小年龄 select min(age) from emp;

统计北京地区员工的年龄之和  select sum(age) from emp where wordaddress='北京';

4、分组查询(GROUP BY)

语法:SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后的过滤条件];

where 和 having 的区别:

  • 执行时机不同:where是在分组前对数据进行筛选,不符合条件的数据不进行后续的分组,而having是对筛选过后,已经符合条件的数据进行过滤。
  • 判断条件不同:where不能对聚合函数进行判断,而having可以。

执行顺序:where > 聚合函数 > having

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

示例:根据性别分组,统计男性和女性的数量

根据性别分组,统计男性和女性发平均年龄

查询年龄小于20的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址

5、排序查询(ORDER BY)

语法:SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;

  • ASC  升序(默认值)
  • DESC  降序

示例:根据年龄对公司的员工进行升序排序

根据id序号对员工进行降序排序

根据年龄对员工进行升序排序,年龄相同,再按照id序号进行降序排序

6、分页查询(LIMIT)

SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;

(limit n,m ——可以理解为从第n条数据后面开始算起,展示m条数据)

注意:

  • 起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数。
  • 分页查询是数据库的方素,不同的数据库有不同的实现,MySQL中是UMIT。
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10。

示例:查询第一页数据,每页展示5条记录:

查询第二页员工数据,每页展示3条记录

四、总结

1、编写顺序

2、执行顺序

五、案例演示

要求:

1.查询年龄为20,21,22,23岁的女性员工信息。
2.查询性别为 男 ,并且年龄在 20-40 岁(含)以内的姓名为三个字的员工。
3.统计员工表中,年龄小于60岁的,男性员工和女性员工的人数。
4.查询所有年龄小于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序。
5.查询性别为男,且年龄在20-40 岁(含)以内的前2个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序。

先查询一下表格信息

1.查询年龄为20,21,22,23岁的女性员工信息:select * from emp where gender='女' and age in(20,21,22,23);

2.查询性别为男 ,并且年龄在 20-40 岁(含)以内的姓名为三个字的员工:

这里查询结构为空,因为员工名字都只占用俩个字,我们可以试试姓名为俩个字的员工:

3.统计员工表中,年龄小于60岁的,男性员工和女性员工的人数:


4.查询所有年龄小于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序:

5.查询性别为男,且年龄在20-40 岁(含)以内的前2个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序:

这里查询前2个员工的信息,其实可以看成分页查询,查询第一页信息,查询记录数为2。

  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值