⼀ 、 M y S Q L 函 数
数 据 分 析 的 基 础
1 . 排 序
1 . m a x
2 . m i n
2 . 汇 总
1 . c o u n t
2 . s u m
3 . a v g
3 . 数 制
1 . ⼆ 进 制
1 . 0 0
2 . 1 1
3 . 2 1 0
4 . 3 1 1
5 . 4 1 0 0
2 . ⼋ 进 制
3 . ⼗ 进 制
4. ⼗六进制
5. AA 27
1、聚合函数
只有 select ⼦句和 having ⼦句、order by ⼦句中能使⽤聚合函 数,where ⼦句不能使⽤聚合函数。当使⽤聚合查询以后,不能 使⽤where条件,如果要添加条件,就使⽤having
2、其他常⽤函数
(1)⽇期函数
(2)数字函数
(3)字符串函数
⼆、MySQL 分组查询
语法:
select 聚合函数(表头名 1),表头名 2 from 数据表名 group by 表 头名;
select 聚合函数(表头名) 临时表头名,真实表头名 from 数据表名 group by 真实表头名;
若⽤ group by 分组查询语句,必须加⼊聚合函数,否则报错 (踩坑)
下⾯实例:
三、MySQL ⼦语句查询
⼦查询是指⼀个查询语句嵌套在另⼀个查询语句内部的查询;
该查询语句可以嵌套在⼀个 SELECT、SELECT...INTO、 INSERT...INTO 等语句中。
在执⾏查询时,⾸先会执⾏⼦查询中的语句,再将返回的结果作 为外层查询的过滤条件。
在⼦查询中通常可以使⽤⽐较运算符和 IN、EXISTS、ANY、 ALL 等关键字。
例如:select * from class where cid=(select classid from student where sname='张三');
1、⽐较运算符的⼦查询
也就是⽤“=”、“、“>”这类⽐较运算符
2、exists 关键字的⼦查询
exists 关键字后⾯的参数可以是任意⼀个⼦查询, 它不产⽣任 何数据只返回 true 或 false。⽽当返回值为 true 时外层查询才会 执⾏。
相当于内层句⼦是⼀个判断句式。
四、MySQL 多表联合查询
1、交叉连接查询
交叉连接返回的结果是被连接的两个表中所有数据⾏的笛卡尔 积;
⽐如:集合A={a,b},集合B={0,1,2},则集合A和B的笛卡尔积为 {(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)。所以,交叉连接也被称为笛卡 尔连接。
语法:
select * from 表1 cross join 表2;
2、多表联合查询
语法:select 查询字段1,查询字段2, ... from 表1 join 表2 join ... on 表1.关系字段=表2.关系字段=...;
join:联合
on:条件
五、MySQL 授权
1、MySQL 基础权限
2、权限语法
grant all on test.user
客户机地址可以有以下表现形式:
%:表示所有地址
192.168.33.%:表示 33 ⽹段下所有主机,⼀般为你想为哪个⽹ 段授权,或为⾃⼰⽹段下的主机授权
六、MySQL 触发器
1、概念
触发器是⼀种特殊的存储过程,它在插⼊,删除或修改特定表中 的数据时触发执⾏,它⽐数据库本身标准的功能有更精细和更复 杂的数据控制能⼒
1. 例如在某⼀个时间触发什么事情
2. 例如不允许股票价格的升幅⼀次超过%10
3. 审计功能,某⼀个⼈登录会记录所有的操作
2、触发器语法
create trigger 触发器名称 触发的时机 触发的动作 on 表名 for each row 触发器状态
1. 语法的红字为固定格式
2. 触发器名称:⾃定义 mysql> drop user haha@'192.168.100.%'; # 删除⽤户 Query OK, 0 rows affected (0.00 sec) mysql> show grants for haha@'192.168.100.%'; ERROR 1141 (42000): There is no such grant defined for user 'haha' on host '192.168.100.%'
3. 触发的时机:before(之前) 或 after(之后),在执⾏动作之前还是 之后
4. 触发的动作:指的激发触发程序的语句类型(插⼊、更新、删除表或数据等)
5. each row:操作的每⼀⾏都会被监控 6. 触发器状态:在触发的动作之前或之后做什么事情,⽐如当我删 了表 1 的某条数据后,⾃动清空表 2。
3、触发器创建的四要素
(1)监视地点:table(表)
(2)监视事件:insert(插⼊)、update(更新)、delete(删除) 等动作
(3)触发时间:before(之前)、after(之后)
(4)触发事件:在监视事件之前或之后,对当前表或其他表的插 ⼊、更新、删除等动作