文章目录
- 完成度
- 基本语法
- 高级语法
- 连接
- 日期
- 函数
- 编写函数
- 聚合函数
因为上过的数据库课实在太水了,所以打算先在菜鸟教程/CSDN/leetcode先学一下基本语法,然后去做Stanford数据库原理的课程CS145。
小目标:把leetcode上不用钱的mysql的题先做一次,对数据库语法有个基本概念
完成度
9.10~9.11 13题
基本语法
LIMIT x
:取前x行
DISTINCT
:选取不重复的表项
OFFSET x
:偏移x行
ORDER BY col
:按col升序排列
ORDER BY col DESC
:按col降序排列
AS tableName
:改获得的表为新表名
value is NULL
:判断值是否为空值,注意不能用=,而是is
高级语法
连接
参考链接
- 内连接:和顺序无关,包括交叉连接,相等连接和不等连接等
- 外连接:和顺序有关,包括左外连接和右外连接
使用ON
关键字进行关联
日期
DATEDIFF(DAY1, DAY2):DAY1-DAY2的天数
TIMEDIFF(TIME1,TIME2):TIME1-TIME2的时间段
函数
编写函数
编写函数名称,定义参数类型和名称,定义返回值的类型。BEGIN和END包住函数体,RETURN返回值。函数体内还可以进行变量定义和赋值等操作,以协助返回值的计算。
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT;
SET M = N - 1;
RETURN (
XXX
);
END
ISFULL(table, table1, table2)
:如果table为空则返回table1,否则返回table2
聚合函数
HAVING和WHERE的区别
GROUP BY 将表项进行分组,HAVING筛选符合条件的表项
SELECT选择符合WHERE条件的表现
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT 的字段 -> DISTINCT -> ORDER BY -> LIMIT
COUNT(col)
:计算表中col不为空的表项数量,添加DINSTINCT关键字可计算表中col不为空的不重复的表项数量
num IN(data)
:判断num是否在data中出现
num NOT IN(data)
:判断num是否不在data中出现