sql进阶学习笔记
关于连表查询
join 用于把来自两个或多个表的行结合起来
join 有很多种,下面分别作说明演示
inner join
inner join 等同于 join
INNER JOIN 关键字,在表中存在至少一个匹配时返回行
join 是 左表的每个记录都会对右表进行一次遍历
所以会进行 【左表.length * 右表.length】 次匹配
语法
1 |
|
示例:
1 |
|
left join
LEFT JOIN 关键字从左表(table1)返回所有的行
即使右表(table2)中没有匹配
如果右表中没有匹配,则结果为 NULL
语法
1 |
|
right join
RIGHT JOIN 关键字从右表(table2)返回所有的行
即使左表(table1)中没有匹配
如果左表中没有匹配,则结果为 NULL
语法
1 |
|
full outer join
注意: MySQL中不支持 FULL OUTER JOIN
FULL OUTER JOIN 关键字
只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行
FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果
join 的小总结
A inner join B 取交集
A left join B 取 A 全部,B 没有对应的值为 null
A right join B 取 B 全部 A 没有对应的值为 null
A full outer join B 取并集,彼此没有对应的值为 null
对应条件在 on 后面填写
insert into select 语句
INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中
语法
1 |
|
示例
1 |
|
函数
Aggregate 函数
- AVG() - 返回平均值
- COUNT() - 返回行数
- FIRST() - 返回第一个记录的值
- LAST() - 返回最后一个记录的值
- MAX() - 返回最大值
- MIN() - 返回最小值
- SUM() - 返回总和
Scalar 函数
- UCASE() - 将某个字段转换为大写
- LCASE() - 将某个字段转换为小写
- MID() - 从某个文本字段提取字符,MySql 中使用
- SubString(字段,1,end) - 从某个文本字段提取字符
- LEN() - 返回某个文本字段的长度
- ROUND() - 对某个数值字段进行指定小数位数的四舍五入
- NOW() - 返回当前的系统日期和时间
- FORMAT() - 格式化某个字段的显示方式