MySQL阅读笔记

左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录。
右连接:包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录。

select ename,deptname from emp left join dept on emp.deptno = dept.deptno;
select ename,deptname from dept right join emp on dept.deptno = emp.deptno;


================

如上查询出来的结果是一样的。

union和union all的主要区别是union all是把结果集直接合并在一起,而union是将union all后的
结果进行一次distinct,去除重复记录后的结果。

对于小数的表示,mysql分为两种方式,浮点数和定点数。浮点数包括float(单精度)和double(双精度)。
而定点数则只有                                                                                                                                                                                                             decimal一种表示。

浮点数和定点数都可以用类型名称后加“(M,D)”的形式来表示,“(M,D)”表示该值一共显示M位数字(整数位+小数位),
其中D位位于小数点后面,M和D又称为精度和标度。


Mysql比较运算符

IS NULL =====> 为NULL
IS NOT NULL =====> 不为NULL
LIKE 通配符匹配
REGEXP 或 RLIKE 正则表达式匹配

<> 不等于
!= 不等于
NOT IN(X,X,X,X)

百分号(%)通配符,%表示任何字符出现的任意次数。
下划线(_)通配符,只匹配单个字符。

SELECT Concat(Rtrim(vend_name),' (',Rtrim(vend_country),')') AS vend_title FROM vendors order by vend_name;


group by子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在select中使用表达式,
则必须在group by子句中指定相同的表达式。不能使用别名

除聚集计算语句外,select语句中的每个列都必须在group by子句中给出。

group by子句必须出现在where子句之后,order by子句之前。


===================================================================

连接类型:
等值连接(内连接)、自联接、自然联接、外部联接。

GROUP BY ... WITH ROLLUP

GROUP BY语法又增加了一个新的关键字with rollup. 如果group by子句里只有一个数据列,加上with rollup关键字的效果是mysql将在查询结果的最后一行将自动增加一条

总数统计记录,这条记录的ID字段取值或者说这条记录的名称永远是NULL.

WITH ROLLUP 关键字在多个数据列上的效果更让人感兴趣。在这种场合,GROUP BY将为查询结果里的第一列分组统计一个阶段性总和(相当于“小计”),最后再为全体

记录统计一个最终的总和。

原文地址:https://www.cnblogs.com/google4y/p/3533875.html