简介
本系列(MySQL学习笔记)是我基于B站上非常受欢迎的MySQL 基础+高级篇- 数据库 -sql -尚硅谷视频所做的笔记,方便大家学习和掌握MySQL。
说明
1.这个系列基本包含了视频中老师讲课的所有内容,包括知识点、案例、部分测试题。
2.所需的配套资料(来自B站评论区)
@黎曼的猜想:
配套资料下载–>公众号公众号 DragonWell 回复:mysql 注意:是公众号!!是公众号!!是公众号,点那个 搜一搜 搜索!!!
不是私人号,是公众号!!! (可以直接在 搜一搜 搜索 dragonwell) 名称是:DragonWell公众号
3.SQLyog的安装(来自B站评论区)
@江左萌粽猪 链接:https://pan.baidu.com/s/18PDjbqEeDSAjQM0VQye6og 提取码:qjuz
目录
MySQL学习笔记1:数据查询语言(DQL语言)select基本用法
MySQL学习笔记2:where 条件查询
MySQL学习笔记3:order by 排序查询
MySQL学习笔记4:常见函数(一) 单行函数
MySQL学习笔记5:常见函数(二) 分组函数
MySQL学习笔记6:group by 分组查询
MySQL学习笔记7:join 连接查询(SQL 92标准)
MySQL学习笔记8:join 连接查询(SQL 99标准)
MySQL学习笔记9:子查询(内查询)
MySQL学习笔记10:union 联合查询
MySQL学习笔记11:limit 分页查询
MySQL学习笔记12:数据操纵语言(DML语言)insert update delete
MySQL学习笔记13:数据定义语言(DDL语言)create alter drop
MySQL学习笔记14:常见数据类型
MySQL学习笔记15:常见约束
MySQL学习笔记16:事务控制语言(TCL语言)
MySQL学习笔记17:视图
MySQL学习笔记18:存储过程
MySQL学习笔记19:函数
MySQL学习笔记20:流程控制结构
常见函数的学习
函数功能:将逻辑语句封装在方法体中,对外暴露方法名
调用:select 函数名(实参列表) [from 表];
特点:
函数名,函数功能
分类:
单行函数(ifnull ,concat, length) 输入一个值返回一个值
分组函数,做统计使用 又称为统计函数、聚合函数、组函数
常见单行函数:
字符函数:length,concat,substr,instr,upper,lower,lpad,rpad,replace
数学函数:round,ceil,floor,truncate,mod
日期函数:now,curdate,curtime,year,monthname,str_to_date,date_format
其他函数:version,database,user
控制函数:if,case
单行函数见MySQL学习笔记4:常见函数(一)
二.分组函数
功能:用做统计使用,又称聚合函数,统计函数,组函数
分类:
sum 求和
avg 平均值
max 最大值
min 最小值
count 计算非HULL值的个数
特点:
1.sum ,avg 值处理数值型,max,min,count 可以处理任何类型
2.以上分组函数都忽略NULL值
3.可以和distinct搭配使用实现去重
4.count函数介绍:
一般使用count(*)统计行数
5.补充
和分组函数一同查询的字段要求是group by 后的字段
1.简单使用
SELECT SUM(salary) FROM employees;
SELECT ROUND(AVG(salary),2) AS 平均 ,COUNT(salary) AS 数量 FROM employees;
2.参数支持哪些类型: 处理数值型
SELECT SUM(last_name),AVG(hiredate) FROM employees; # 0 没意义、
SELECT MAX(last_name),MIN(last_name) FROM employees; # 有意义
SELECT COUNT(last_name),COUNT(commission_pct) FROM employees; # 只计算不为NULL的个数
3.分组函数忽略NULL值
SELECT SUM(commission_pct),AVG(commission_pct)*35 FROM employees; # 忽略了NULL
4.distinct
SELECT SUM(DISTINCT salary),SUM(salary) FROM employees;
SELECT COUNT(DISTINCT salary),COUNT(salary) FROM employees;
5. count
SELECT COUNT(*) FROM employees; # 统计行数
SELECT COUNT('Ngeu') FROM employees; # 加任意常量,统计行数
效率:MYISAM存储引擎下,count(*)的效率高
INNoDB存储引擎下,count(*),count(1)的效率差不多,比count(字段)高一些
6.和分组函数一同查询的字段有限制
SELECT AVG(salary),employee_id FROM employees; #无意义!avg返回一个值,后者返回一个表格
测试题
查询员工表中最大入职时间和最小入职时间的相差天数(difference)
SELECT DATEDIFF('2020-07-15','2011-05-01');
SELECT DATEDIFF(MAX(hiredate),MIN(hiredate)) AS difference FROM employees;
查询部门编号为90 的员工个数
SELECT COUNT(*) FROM employees WHERE department_id=90;