【尚硅谷MySQL基础】DQL语言的学习1

五、DQL语言的学习

基础查询★
条件查询★
​排序查询★
​常见函数★
分组函数★
​分组查询★
连接查询★
​子查询√
分页查询★
union联合查询√

18:myemployees库的四张表介绍

myemployees库是尚硅谷网课附带的数据库文件。

执行myemployees.sql

右键单击root@localhost ➡ 执行SQL脚本。
在这里插入图片描述
找到sql文件所在位置,执行。
在这里插入图片描述
手动刷新。
在这里插入图片描述
可以看到其中有四张表:
在这里插入图片描述

四张表

在这里插入图片描述

19 ~ 27:基础查询

19:基础查询介绍

语法:

SELECT 要查询的东西【FROM 表名】;

类似于Java中:System.out.println(要打印的东西);

特点:

  1. 通过SELECT查询完的结果 ,是一个虚拟的表格,不是真实存在的;
  2. 要查询的东西可以是表中字段、常量值、表达式、函数。

20.1:查询单个字段:SELECT 字段名 FROM 表名;

在这里插入图片描述
注意操作前开头加上USE 库名;

20.2:查询多个字段:SELECT 字段名,字段名 FROM 表名;

在这里插入图片描述
多条命令存在时,要执行哪个命令就先选中哪个命令,以后都是这样。

20.3:查询所有字段:SELECT * FROM 表名;

在这里插入图片描述
缺点:这样无法改变表中字段顺序,可以采用手动输入所有字段的方式自己决定顺序,当然这样很麻烦。

21:细节补充

22.1: 查询常量:SELECT 常量值;

在这里插入图片描述
不区分字符型和字符串型,统一用'',数值型不需要。

22.2:查询表达式:SELECT 表达式;

在这里插入图片描述

22.3:查询函数:SELECT 函数名(实参列表);

在这里插入图片描述

23:起别名:①AS,②空格

在这里插入图片描述
优点:

  • 便于理解
  • 如果要查询的字段有重名的情况使用别名可以区分开来。

如果别名中有特殊符号(空格、#等),别名外面用双引号。
在这里插入图片描述

24:去重:SELECT DISTINCT 字段名 from 表名;

在这里插入图片描述
在这里插入图片描述

25:+的作用:加法运算

注意:不像Java中的+还有连接字符串的功能。
SELECT 数值+数值;:直接运算。
在这里插入图片描述
SELECT 字符+数值;:先试图将字符转换成数值,如果转换成功,则继续运算;否则转换成0,再做运算。
在这里插入图片描述
在这里插入图片描述
SELECT NULL+任意值;:结果都为null。
在这里插入图片描述

26:使用concat函数实现连接

功能:拼接字符,实现Java中+的功能:SELECT CONCAT(字符1,字符2,字符3,...);
在这里插入图片描述

27、【案例讲解】基础查询

在这里插入图片描述
缺陷:如果某一列中存在null,最终结果全部都是null。

【补充】IFNULL函数:SELECT IFNULL(expr1,expr2) FROM 表名;
功能:判断某字段或表达式(expr1)是否为null,如果为null返回指定的值(expr2),否则返回原本的值。
在这里插入图片描述
所以正确的解法:
在这里插入图片描述

28 ~ 38:条件查询

28:条件查询介绍

语法:

SELECT
		查询列表
FROM
		表名
WHERE
		筛选条件;

分类:
一、按条件表达式筛选
简单条件运算符:> < = <>(相当于!=) >= <=
示例:salary>10000

二、按逻辑表达式筛选
逻辑运算符:and or not(&& || !)
示例:salary>10000 && salary<20000

  • &&、and:两个条件都为true,结果为true,反之为false
  • ||、or: 只要有一个条件为true,结果为true,反之为false
  • !、not: 如果连接的条件本身为false,结果为true,反之为false

三、模糊查询
like、between and、in、is null
示例:last_name like ‘a%’

29:条件运算符的使用

在这里插入图片描述

30:逻辑运算符的使用

在这里插入图片描述

31:模糊查询—like关键字

模糊查询的特点:

  • 一般和通配符搭配使用
    • 通配符:
      %任意多个字符,包含0个字符;
      _任意单个字符;

在这里插入图片描述
如果要查询的字段含有通配符(_、%等),使用转义字符来失效通配符的功能。

SELECT 字段名 FROM 表名 WHERE 字段名 LIKE '_$_%' ESCAPE '$';
# 意思是:第一个任意,第二个是_,后面的任意。

在这里插入图片描述

32:模糊查询—between and关键字

  1. 使用between and可以提高语句的简洁度;
  2. 包含临界值;
  3. 两个临界值不要调换顺序。

比如:

department_id>=100 AND department_id<=110;
可以用department_id BETWEEN 100 AND 110;

在这里插入图片描述

33:模糊查询—in关键字

作用:判断某字段的值是否属于in列表中的某一项

  1. 使用in提高语句简洁度
  2. in列表的值类型必须一致或兼容
  3. in列表中不支持通配符

在这里插入图片描述

34:模糊查询—is null关键字

=<>不能用于判断null值,只能进行数字上的判断。is nullis not null可以判断null值
在这里插入图片描述

35:安全等于的介绍

安全等于:<=>,既可以判断空值,又可以判断数字。

commission_pct <=>NULL;
相当于
commission_pct IS NULL;

salary <=> 12000;
相当于
salary = 12000;

比较:
IS NULL:仅仅可以判断NULL值,可读性较高,建议使用。
<=>:既可以判断NULL值,又可以判断普通的数值,但是可读性较低,不推荐。

36:【案例讲解】条件查询

37:测试题1讲解

38:复习

39 ~ 41:排序查询

39:排序查询介绍

语法:

SELECT 
  查询列表 
FROM
  表名 
【WHERE 筛选条件】 
ORDER BY 排序的字段或表达式【 ASC / DESC;
  1. ASC代表的是升序,因为默认是升序所以可以省略,DESC代表的是降序。
  2. ORDER BY子句可以支持单个字段、多个字段、别名、表达式、函数
  3. ORDER BY子句在查询语句的最后面,除了limit子句

40:排序查询示例

#1、按单个字段排序
SELECT 
  * 
FROM
  employees 
ORDER BY salary DESC ;

#2、添加筛选条件再排序
#案例:查询部门编号>=90的员工信息,并按员工编号降序
SELECT 
  * 
FROM
  employees 
WHERE department_id >= 90 
ORDER BY employee_id DESC ;

#3、按表达式排序
#案例:查询员工信息 按年薪降序
SELECT 
  *,
  salary * 12 * (1+ IFNULL(commission_pct, 0)) 
FROM
  employees 
ORDER BY salary * 12 * (1+ IFNULL(commission_pct, 0)) DESC ;

#4、按别名排序
#案例:查询员工信息 按年薪升序
SELECT 
  *,
  salary * 12 * (1+ IFNULL(commission_pct, 0)) 年薪 
FROM
  employees 
ORDER BY 年薪 ASC ;

#5、按函数排序
#案例:查询员工名,并且按名字的长度降序
SELECT 
  LENGTH(last_name),
  last_name 
FROM
  employees 
ORDER BY LENGTH(last_name) DESC ;

#6、按多个字段排序
#案例:查询员工信息,要求先按工资降序,再按employee_id升序
#最终效果:工资相同的人按员工id降序
SELECT 
  * 
FROM
  employees 
ORDER BY salary DESC,
  employee_id ASC ;

41:排序查询总结

42:【案例讲解】排序查询

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值