mysql之DQL

目录

1.基础查询

说明:

示例:

2.条件查询

说明:

3.排序查询

4.分组查询

5.连接查询

6.子查询

7.分页查询

8.联合查询

9.常见函数


 DQL(Data Query Language):数据查询语言,用来查询数据库中表的记录(数据)

1.基础查询

说明:

select 查询列表 from 表名;

查询列表可以使字段,常量,表达式及函数,也可以是多个

查询的结果是一个虚拟表

示例:

1、查询单个字段
select 字段名 from 表名
2、查询多个字段
select 字段名,字段名 from 表名
3、查询所有字段(禁止使用,会影响性能)
select *from 表名
4、查询常量
select 常量值;
注意:字符型和日期型的常量值必须用单引号引起来,数值型不需要
5、查询函数
select 函数名(实参列表);
6、查询表达式
select 100/1234;

7、起别名
as
空格
8、去重(字段名可以写多个)
select distinct 字段名 from 表名

9、+
作用:做加法运算
select 数值+数值,直接运算
select 字符+数值;先试图将字符转换成数值,如果转换成功,则继续运算,否则转换成0,再做运算

select null+值;结果都为null

10、[补充]concat函数
功能:拼接字符
select concat(字符1,字符2,字符3,...);
11、[补充]ifnull函数
功能:判断某字段或表达式是否为nul1,如果为nu11 返回指定的值,否则返回原本的值select ifnull(commission_pct,0) from employees;
12、[补充]isnull函数功能:判断某字段或表达式是否为nu11,如果是,则返回1,否则返回0

2.条件查询

说明:

select 查询列表
from 表名
where 筛选条件
筛选条件的分类:
1、简单条件运算符
>   <     =     <>     !=     >=     <=      <=>
2、逻辑运算符
&&    and
||       or
!        not
3、模糊查询
like:一般搭配通配符使用,可以判断字符型和数值型

通配符:%代表任意多个字符,_代表任意单个字符
between and
in

is null  或者 is not null

3.排序查询

select 查询列表
fron表
where筛选条件
order by 排序列表[asc]desc]
特点
1、asc:升序,如果不写默认升序  desc:降序
2、排序列表 支持 单个字段、多个字段、函数、表达式、别名
3、order by的位置一般放在查询语句的最后(limit语句除外)

4.分组查询

select 分组函数,分组后的字段
frm 表
[where筛选条件]
group by 分组的字段
[having分组后的筛选]
[order by 排序列表]
二、特点
                           使用关键字          筛选的表            位置
分组前筛选         where                  原始表                groupby的前面
分组后筛选         having                 分组后的结果     group by的后面

5.连接查询


(1)内连接:
select 查询列表
from表1别名
jinner join 表2别名 on 连接条件
where筛选条件
group by 分组列表
having分组后的筛选
order by 排序列表
limit 子句;

表的顺序可以调换,内连接的结果是多个表的交集,n表连接至少需要n-1个连接条件

(2)外连接:
select 查询列表
from表1别名
leftlright/full [outerljoin 表2别名on 连接条件
where筛选条件
group by 分组列表
having分组后的筛选
order by排序列表
limit 子句;
查询的结果=主表中所有的行,如果从表和它匹配的将显示匹配行,如果从表没有匹配的则显示null

left join 左边的就是主表,right join 右边的就是主表,full join两边都是主表

一般用于查询除了交集部分的剩下的不匹配的部分,也可以用做查询副表数据有可能不存在的情况

 

6.子查询

含义
嵌套在其他语句内部的select语句称为子查询或内查询外面的语句可以是insert、update、delete、select等,一般select作为外面语句较多外面如果为select语句,则此语句称为外查询或主查询
分类
1、按出现位置
select后面:仅支持标量子查询
from后面:都支持
where或having后面:标量子查询(=的场合使用),列子查询(in的场合使用),行子查询
exists后面:都支持
2、按结果集的行列
标量子查询(单行子查询):结果集为一行一列

列子查询(多行子查询):结果集为多行一列

行子查询:结果接为多行多列

7.分页查询

使用场合:查询的条数太多,一页显示不全。

select 查询列表
from表
limit [offset,] size;
注意:
offset代表的是起始的条目索引,默认从0开始,size代表的是显示的条目数
公式:
假如要显示的页数为page,每一页条目数为size
select查询列表
from 表
limit (page-1)*size,size;

8.联合查询

union 联合 合并: 将多条查询语句的结果合并成一个结果
语法:查询语句1
union或union all
查询语句2
union或union all
应用场景:要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时
特点:
要求多条查询语句的查询列数是一致的!

要求多条查询语句的查询的每一列的类型和顺序最好一致

union关键字默认去重,如果使用union al1 可以包含重复项

9.常见函数

函数功能:类似于java中的方法

好处:提高重用性和隐藏实现细节

调用: select 函数名(实参列表)
二、单行函数
1.字符函数
concat:连接
substr:截取子串
upper:变大写
lower:变小写
replace:替换
length:获取字节长度

trim:去前后空格,也可以去除其他字符
lpad:左填充
rpad:右填充
instr:获取子串第一次出现的索引
2、数学函数
ceil:向上取整
round:四舍五入

mod:取模
floor:向下取整
truncate:截断
rand:获取随机数,返回0-1之间的小数

3日期函数
now:返回当前日期+时间
year:返回年
month: 返回月
day:返回日
date_format:将日期转换成字符
curdate:返回当前日期
str_to_date:将字符转换成日期

4其他函数
version()当前数据库服务器的版本

database() 当前打开的数据库

user() 当前用户

password(字符):返回该字符的加密结果

md5(字符):返回该字符的md5加密结果
5、流程控制函数

if(条件表达式,表达式1,表达式2):如果条件表达式成立,返回表达式1,否则返回表达式2

case情况1
case 变量或表达式或字段
when 常量1 then 值1
when 常量2 then 值2
..
else 值n
end

case情况2
case
when 条件1 then 值1
when 条件2 then 值2
else 值n
end

6.分组函数

1.分类
max最值
min 最小值
sum和
avg平均值
count计算个数
2特点
select max(字段) from 表名 group by 字段
支持的类型
sum和avg一般用于处理数值型max、min、count可以处理任何数据类型

以上分组函数都忽略null

都可以搭配distinct进行使用

count函数
count(字段): 统计该字段非空值的个数

count(*):统计结果集的行数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值