梁韵莹

2020-06-17   阅读量: 800

Mysql 语法

#0607期DAY3# MySQL语法每日复盘起来!

扫码加入数据分析学习群

不知不觉又来到了周中,周一和周二的知识点都记牢了么?课堂上写的语法下课后都过了一遍了吗?

那么来看看周三的知识点整理吧~🙌

今天主要围绕 子查询常用函数 进行学习:

DQL数据查询语言 (接上昨天未讲完的知识点

1. 不等值连接: t1.key1 比较 t2.key2 (vs. 等值连接:t1.key1=t2.key2)

  • select * from table 1eft join table 2 on table1.字段 between table2.字段1 and table2.字段2; <-- 仅作为举例,join方式及比较方式按实际要求编写喔

2. 子查询 = 嵌套查询 (最多嵌套32句) ****重点****

  • select 字段 from table1 where 字段1 比较 (子查询结果); -- 标量子查询,子查询的结果是单行单列
  • select 字段 from table1 where (字段1,字段2)=子查询结果); -- 行子查询,子查询的结果当行多列
  • select 字段 from table1 where 字段 [not] in (子查询结果); -- [not] in 列子查询
  • select 字段 from table1 where 字段 比较符 any/all (子查询结果); --- any/all 列子查询,可以转换为min/max的标量查询
  • select 字段 from table 1 left join (子查询结果)as 表别名table2 on table1.字段=table2.字段 [where] 条件; --- from表子查询,必须要设置子查询的表别名,且引用聚合运算的字段也要设置别名,原因是SQL语言执行顺序
  • select 字段,(子查询)as 新字段别名 from table1 [group by] 字段; --- select子查询

*where语句中需要使用聚合函数时,必须要用到子查询

子查询分类: (按返回结果分类,非严格分类)

子查询出现的位置:

子查询操作符

常用函数

1. 字符串函数

select concat('CDA','数据', '分析'); -- 合并字符串,最多合并255个字符串,只要有一个Null值即返回Null值

select instr('CDA', 'A'); -- 查找字符串位置,找不到返回0

select left('CDA数据分析', 3); -- 从左边提取字符串

select right('CDA数据分析', 4); -- 从右边提取字符串

select mid('CDA数据分析', 4, 2); -- 中间提取字符,如第三个参数不写即截取所有的字符

select substring('CDA数据分析',1,3); -- 也是提取字符串,功效同mid

select ltrim(' CDA数据分析'); -- 删除字符串左边的空格

select rtrim('CDA数据分析 '); -- 删除字符串右边的空格

select trim(' CDA数据分析 '); -- 删除字符串的左右的空格,中间有不删,常用。

select replace('CDA数据分析', 'CDA', 'cda'); -- 替换

select upper('cda'); -- 改大写,和replace都只能替换英文字符串

select lower('CDA'); -- 改小写

2. 数学函数

select abs(-32); -- 返回绝对值

select floor(1.23); -- 向下取整

select floor(-1.23); -- 答案是-2,向下取整

select ceiling(1.23); -- 向上取整

select ceiling(-1.23); -- 答案是-1,向上取整

select round(1.58,1); -- 如果第二个参数省略不写,就是四舍五入为整数

3. 时间型函数

select date('20200101'); -- 返回日期表达式的日期部分或讲文本转日期格式

select date('2020/6/17 15:37:00');

select week('2020-01-01'); -- 返回指定日期是一年中的第几周,mode有0即0-52或1即1-53,默认模式是0

select year('20-01-01'); -- 返回四位数字的年份

select month('2020-01-01'); -- 返回月份数

select day('2020-01-01'); -- 返回指定日期的日

select hour('2020-01-01 12:00:00'); -- 返回指定日期的小时数

select DATE_ADD('2020-01-01',interval 1 day); -- 加1天/月/年

select DATE_Sub('2020-01-01',interval 1 day); -- 减1天/月/年

select DATE_FORMAT('2020-01-01','%Y-%M-%D'); -- 把日期格式化

select curdate(); -- 获取当日日期

select curdate() + 0;

select curtime(); -- 获取当日时间

select curtime() + 0;

select now(); -- 获取当日日期及时间

select now() + 0;

select datediff('2020-06-17','2020-06-10'); -- 返回参数1结束日及参数2起始日之间的天数

select unix_timestamp(); -- 把时间转换为时间戳

select from_unixtime(); -- 把时间戳转为标准年月日的时间

4. 分组合并函数

GROUP_CONCAT([distinct] str [order by str asc/desc] [separator]) #把分组字符串合并为长字符串

5. 逻辑函数

IFNULL(字段,替代数值) -- 判断Null值并替换

IF(expr1,expr2,expr3) -- expr1满足,那么返回expr2,不满足返回expr3,和excel的if函数使用逻辑一致

CASE WHEN expr1 THEN expr2 [WHEN expr3 THEN expr4...ELSE expr] END -- 和if使用方式差不多但不用嵌套

6. 开窗函数 (明天再开窗🙃

SQL语言执行顺序(update)

  • FROM -> ON -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> UNION -> ORDER BY -> LIMIT

以上,冲鸭~~😏

24.8986 3 1 关注作者 收藏

评论(0)


暂无数据

推荐课程