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将为查询结果里的第一列分组统计一个阶段性总和(相当于“小计”),最后再为全体
记录统计一个最终的总和。