Mysql知识的小结01

select 语句执行顺序

select username,max(scores) from user where username is not null group by username having max(scores)>100 order by max

select 语句执行顺序:

开始->from->where->group by->having->order by->select->limit->结果

在上面的示例中 SQL 语句的执行顺序如下:

(1). 首先执行 FROM 子句, 从 tb_Grade 表组装数据源的数据

(2). 执行 WHERE 子句, 筛选 tb_Grade 表中所有数据不为 NULL 的数据

(3). 执行 GROUP BY 子句, 把 tb_Grade 表按 "学生姓名" 列进行分组(注:这一步开始才可以使用select中的别名,他返回的是一个游标,而不是一个表,所以在where中不可以使用select中的别名,而having却可以使用)

(4). 计算 max() 聚集函数, 按 "总成绩" 求出总成绩中最大的一些数值

(5). 执行 HAVING 子句, 筛选课程的总成绩大于 600 分的.

(7). 执行 ORDER BY 子句, 把最后的结果按 "Max 成绩" 进行排序.

delete,drop,truncate 都有删除表的作用,区别在于

delete 和 truncate 仅删除表数据,drop 表数据和表结构一起删除,打个比方,delete 是单杀,truncate 是团灭,drop 是把电脑摔了。

delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚,打个比方,delete 是发微信说分手,后悔还可以撤回,truncate 和 drop 是直接扇耳光说滚,不能反悔。

执行的速度上,drop>truncate>delete,打个比方,drop 是神舟火箭,truncate 是和谐号动车,delete 是自行车

UNION和UNION ALL对比

UNION 语句:用于将不同表中相同列中查询的数据展示出来;(不包括重复数据)

UNION ALL 语句:用于将不同表中相同列中查询的数据展示出来;(包括重复数据)

datetime/timestamp

datetime8个字节 默认为null,存null值为null 存时间不对时区做改变,计算时间差需要函数转换

timestamp4个字节,默认not null 存null自动转存当前时间,存时间自动转化为(utc-世界标准时间),计算时间差不需要函数转换,目标时间和1970元年做计算

左连接、右连接、内连接、外连接

内连接:inner join(等值连接) 只返回两个表中联结字段相等的数据

外连接:返回包括左/右表中的所有记录和右/左表中联结字段相等的记录

左外连接也称左连接。以左表为基表,在FROM子句中关键字“LEFT JOIN”来连接俩张表。

右外连接也称右连接。以右表为基表,在FROM子句中使用关键字“RIGHT JOIN”来连接俩张表。

1.内连接就是取交集的部分。

2.左连接就是左表全部的数据加上交集的数据。

3.右连接就是右表全部的数据加上交集的数据

4.外连接:返回包括左/右表中的所有记录和右/左表中联结字段相等的记录

常用函数


-- 字符串函数
SELECT CONCAT('我','热爱','学习'); -- 拼接字符串
SELECT UPPER('abc'); -- 转大写
SELECT LOWER('ZSR'); -- 转小写
SELECT INSTR('abcs','s'); -- 返回第一次出现字串索引的位置
SELECT REPLACE('加油就能胜利','加油','坚持'); -- 替换出现的指定字符串
SELECT SUBSTR('坚持就是胜利',3,6); -- 返回指定的字符串(源字符串,截取位置,截取长度)
SELECT REVERSE('rsz'); -- 反转字符串
-- 时间日期函数
SELECT CURRENT_DATE(); -- 获取当前日期
SELECT CURDATE(); -- 获取当前日期
SELECT now(); -- 获取当前时间
SELECT LOCALTIME(); -- 本地时间
SELECT SYSDATE(); -- 系统时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勿忘心安_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值