DQL语句 上

SELECT语法;

基本的查询语句:

  1. 查询所有列(效率低,不推荐):
    select * from 表名;
    在这里插入图片描述
  2. 查询特定列(效率高):
    select 列名1,列名2 from 表名;
    在这里插入图片描述
    查询常量值:SELECT 100; 查询表达式:SELECT 100%98;

别名(AS)
别名 :代码块内使用, 减轻你的代码工作量。。。
3. 给列取别名:

select 你要取别名的列  as  你要取的别名(尽量短捷) from 表名;


![在这里插入图片描述](https://img-blog.csdnimg.cn/20200805154655203.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ2MDUyOTM5,size_16,color_FFFFFF,t_70)
  1. 给表取别名:

select 列名 from 表名 as 别名;

在这里插入图片描述
注意as可以省略!!!

去重(DISTINCT)关键字:

> SELECT DISTINCT 字段名1,字段名2,... from 表名

在这里插入图片描述
过滤和排序数据

  1. 过滤:
select * from 表名 where 条件(Boolean表达式)

在这里插入图片描述
简单条件运算符:> < = <>(不等于) >= <= <=>(完全等于类型和值全等)

逻辑操作符:
在这里插入图片描述
比较操作符:
在这里插入图片描述
(LIKE)关键字:
通配符:
% 任意多个字符,包含0个字符
_ 任意单个字符

SELECT 列名 from 表名 where 列名 like 通配符组成的条件;

在这里插入图片描述
LIKE配合ESCAPE关键字

SELECT last_name #字段名
FROM t_mysql_employees #表名
WHERE last_name LIKE '_$_%' ESCAPE '$';#条件

查询此字段的第二个字符为"_"的员工;
在这里插入图片描述
between and区间查询
介于…与…之间。

SELECT first_name,last_name #字段名
FROM t_mysql_employees #表名
WHERE employee_id BETWEEN 100 AND 120; #条件

这个字段的id介于100到200之间!
在这里插入图片描述
in关键字
示例:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
在这里插入图片描述

排序查询(order by )

语法:

select 查询字段
from 表名
【where  筛选条件】
order by 排序的字段或表达式;

这里最后加上asc代表升序,默认升序可以省略;
desc代表降序;

  1. 按单字段排序:
    在这里插入图片描述
  2. 添加筛选条件再排序:

在这里插入图片描述

  1. 按多个字段排序
    在这里插入图片描述
    limit语句(MySQL方言)

如果只想只显示数据的一部分 可以使用LIMIT关键字 此乃MYSQL特有
在这里插入图片描述
LIMIT同样也可以指定显示区间 不过其中下标是从0开始的
在这里插入图片描述

分组函数

1. COUNT

SELECT COUNT(*) FROM 表名;//计算表中所有列都不是NULL的值 不过很多书上写
SELECT COUNT(1) FROM 表名;//更快
SELECT COUNT(字段) FROM 表名;//计算表中该字段列有多少个不是NULL的值

2.MAX

SELECT COUNT(字段) FROM 表名;//查询该字段列中数据最大的值

3.MIN

SELECT COUNT(字段) FROM 表名;//查询该字段列中数据最小的值

4.SUM

SELECT SUM(字段) FROM 表名;//查询该字段下所有列的数据和

5.AVG

SELECT AVG(字段) FROM 表名;//查询该字段下所有列数据和的平均值

!!!注意:分组函数不能出现在where后!!!

分组查询

语法:

select 查询列表
from 表
【where 筛选条件】
group by 分组的字段
【order by 排序的字段】;

1. 简单的分组

SELECT 分组字段,分组函数 FROM 表名 group by 分组字段

在这里插入图片描述

2.分组前进行过滤!

注意!!!:此过滤条件的字段一定要是在分组前就存在的

SELECT 分组字段,聚合函数 FROM 表名 WHERE ... group by 分组字段;

在这里插入图片描述

3.分组后进行过滤!(HAVING)

这里注意having的查询列段一定要跟分组的列段相关!!!

SELECT 分组字段,聚合函数 FROM 表名 group by 分组字段 having ...;

在这里插入图片描述
!!!注意使用顺序!!!

select ... from ... where ... group by ... havin ... order by ... limit ...

多表查询

这里我们为了避免笛卡尔集可以在where内加入有效的连接条件!!

  1. 使用连接在多个表中查询数据
    • 在 WHERE 子句中写入连接条件。
    • 在表中有相同列时,在列名之前加上表名前缀
  2. 区分重复的列名
    • 在不同表中具有相同列名的列可以用表的别名
    加以区分。
    • 如果使用了表别名,则在select语句中需要使
    用表别名代替表名
    • 表别名最多支持32个字符长度,但建议越少越

    在这里插入图片描述
  3. 等值连接
    ① 多表等值连接的结果为多表的交集部分
    ②n表连接,至少需要n-1个连接条件
    ③ 多表的顺序没有要求
    ④一般需要为表起别名
    ⑤可以搭配前面介绍的所有子句使用,比如排序、分组、筛选

示例:查询t_mysql_locations 表和t_mysql_departments 表中每个城市 的部门个数
在这里插入图片描述
示例2:查询 t_mysql_departments 表和t_mysql_employees 表内有奖金 的 每个部门 的 部门名和部门的领导编号 和该部门的最低工资
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值