MySQL基础(上)

13 篇文章 0 订阅
6 篇文章 0 订阅

DQL语言学习

基础查询

语法
select 查询列表 from 表名;
特点:
1、查询列表可以是:表中的字段、常量值、表达式、函数
2、查询的结果是一个虚拟的表格

查询表中的单个字段
select 字段名 from 表名

查询表中的多个字段
select 字段名,字段名,... from 表名

查询表中所有字段

select * from 表名

着重号区分字段和关键字

查询常量值

select 100; 返回结果就是100

查询表达式

select 100*98; 返回计算结果

查询函数

select VERSION(); 相当于调用函数 得到返回值

起别名

select 100*98 AS 结果; 别名就是返回的查询结果的字段名,便于理解。AS 可以省略。如果别名中有特殊符号, 加上 双引号 。
在这里插入图片描述

去重

select distinct 字段 from 表名

+号的作用,只有一个功能:运算符
两个操作数都为数值型,直接运算
一方为字符型,尝试将字符型转成数值型后运算,如果转换失败,将字符数值转换成0
只要其中一方为null,则结果肯定为null

CONCAT();实现拼接
select CONCAT(last_name,first_name) as 姓名 可以将字段的值拼接展示

显示表结构 DESC 表名

条件查询

语法

select 
	查询列表
from
	表名
where
	筛选条件

分类
1、按条件表达式筛选
条件运算符: > < = != <> >= <=
2、按逻辑表达式筛选
逻辑运算符 && || ! and or not
3、模糊查询
like between and in is null

like搭配 通配符 %和 占位符_ 使用

between

id>=100 and id<=210
id between 100 and 210
临界值不要调换位置

in

name = 'zhu' or name = 'xu' or name = 'hua'
name in ('zhu','xu','hua')

is null

name = null #= 或 <>  不能用于判断null值
name is null
name is not null

安全等于. <=> 可以用于判断 null 值

排序查询

语法,默认升序 asc

order by 排序列表 asc/desc

按别名排序
select salary as 年薪 from employees order by 年薪
按函数排序

select length(name) 字节长度
from employee
order by  length(name)

多字段排序

order by salary asc,name desc;

总结
1、order by 子句中可以支持单个字段、多个字段、表达式、函数、别名
2、order by子句一半是放在查询语句的最后面,limit子句除外

常见函数

分类
1、单行函数 如concat、length、ifnull
2、分组函数:做统计使用,又称统计函数、聚合函数、组函数

字符函数
uper() 转大写
SUBSTR(). 截取字符
INSTR(); 返回子串第一次出现的所有
trim(); 去除前后空格
LPAD(); 用指定的字符左填充指定长度

数学函数
round 四舍五入
ceil 向上取整
floor 向下取整
truncate 截断
mod 取余

日期函数
now 返回当前系统日期时间
curdate 返回当前系统日期,不含时间
curtime 返回当前时间,不包含日期
在这里插入图片描述
在这里插入图片描述
流程控制函数
if函数 select IF(10<5,'大','小');

case函数

select salary 原始工资,department_id
case department_id
when 30 then salary*1.1
when 40 then salary*1.2
when 50 then salary*1.3
else salary
end as 新工资
from employees;

在这里插入图片描述

select salary
when salary>20000 then 'A'
when salary>15000 then 'B'
when salary>10000 then 'C'
else 'D'
end as 工资级别
from employees

在这里插入图片描述

分组函数

用作统计使用,有称聚合函数或统计函数或组函数
分类:
sum求和、avg平均值、max 最大值、min 最小值、count计算个数,都对null值忽略

select 
SUM(salary),
AVG(salary) 平均, MAX(salary) 最大,
MIN(salary) 最小, COUNT(salary) 非空个数 from employees;

sum和avg对非数字型字段没有意义返回值为0

在这里插入图片描述

可以和distinct搭配,以上都支持
select sum(DISTINCT salary) from employees; 去重后求和

count中加一个常量值,统计总行数
在这里插入图片描述
和分组函数一同查询的字段要求是group by后的字段,否则没有意义

分组查询

语法

select 分组函数,字段(要求出现在group by的后面)
from 表
【where 筛选条件】 
group by 字段
【order by 子句】

在这里插入图片描述
添加分组前筛选条件

分组后的筛选,关键字 HAVING
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
按多个字段分组,group by 后的字段顺序不影响结果
在这里插入图片描述

在这里插入图片描述

连接查询

又称多表查询,当查询的字段来自于多个表时,就会用到连接查询
笛卡尔乘积现象,没有有效的连接条件
在这里插入图片描述
在这里插入图片描述

等值连接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以添加分组
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

非等值连接

在这里插入图片描述

自连接

在这里插入图片描述

sql 99

在这里插入图片描述

inner join

等值连接

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

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

非等值连接

在这里插入图片描述

自连接

在这里插入图片描述

外连接

详细参见 MySQL高级(上) #七种join理论

全外连接
交叉连接

笛卡尔乘积
在这里插入图片描述

join连接总结

七种join
在这里插入图片描述
在这里插入图片描述

子查询

在这里插入图片描述

where后面的标量子查询(一行一列)

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

案例4:查询最低工资大雨50号部门最低工资的部门id和其最低工资,HAVING

在这里插入图片描述

where后面的列子查询(一行多列)

在这里插入图片描述
ANY和ALL 可读性不高,可以被替代,很少使用,比如
a>any(1,2,3). 可以被 a>min(1,2,3)替代
a>all(1,2,3)可以被a>max(1,2,3) 替代

在这里插入图片描述

where 后面的行子查询(一行多列)用不到,了解就行

在这里插入图片描述

select 后面的子查询

在这里插入图片描述

from后面的子查询

将子查询的结果集冲当了一张临时表,这张表必须其别名
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

exists 后面的子查询(相关子查询)

exists(完整的查询语句) 结果 1或0,有其中的查询语句有返回值就返回1

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

分页查询

在这里插入图片描述

1、要求多条查询语句的列数一致
2、要求多条查询语句的查询的每一列的类型和顺序一致
3、默认相同的数据会被去重,使用 UNION ALL 不去重

union联合查询

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

DML语言学习

数据操作语言
插入:inser
修改:update
删除:delete

插入语句

在这里插入图片描述

方式二、
在这里插入图片描述

修改语句

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

删除语句

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值