mysql之DQL

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

1.基础查询

说明

示例

2.条件查询

说明

3.排序查询

4.分组查询

5.连接查询

6.子查询

7.分页查询

8.联合查询

9.常见函数


 DQLData 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(*):统计结果集的行数

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql