MySQL学习笔记--SELECT

一、Aliases:
(1)Column Aliases
aliase不能用在WHERE,USING,ON等子句中
(2)Table Aliases
多用来实现单一表的关联查询。比如,在一个唱片表album(artist_id, album_id, album_name)中,想要知道是否有不同人的唱片同名,不用aliases就无法实现:
SELECT a1.artist_id, a2.album_id
FROM album AS a1, album AS a2
WHERE a1.album_name=a2.album_name AND a1.artist_id <> a2.artist_id;

二、DISTINCT clause -- remove duplicates

三、GROUP BY clause

四、HAVING clause:
HAVING子句中必须包含在SELECT中出现的表达式或列名。如果你要用在HAVING中用到的表达式或列名不在SELECT中,那么你应该使用的是WHERE。

五、ORDER BY 子句

六、LIMIT clause
LIMIT 5
LIMIT 5, 5

七、Joining Tables
(1)INNER JOIN
SELECT column_a,column_b FROM table_a INNER JOIN table_b
USING (column_c);

SELECT column_a,column_b FROM table_a INNER JOIN table_b
ON table_a.column_c = table_b.column_c;

等价于where table_a.column_c=table_b.column_c

(2)LEFT [OUTER] JOIN  and RIGHT [OUTER] JOIN
由连接中的左表或右表驱动,含有驱动表中的全部数据

(3)NATURAL JOIN
MySQL自动需找参与连接的表中名称相同的列做连接条件

八、UNION:
把多个SELECT结果合并,要求不同的SELECT返回相同数量和类型的COLUMN。如果不
想去重,使用UNION ALL。在UNION的多个子SELECT中,如果没有指定LIMIT,基于效率考虑,MySQL会自动忽略ORDER BY

九、Nested Queries
(1)ANY 等价于 SOME, 代指某一个或某几个
= ANY 和 IN 等价, <> ANY 或者 != ANY 和 NOT IN 等价

(2)ALL 代指所有,如果ALL后面是空集,则恒为真。

(3) EXISTS and NOT EXISTS

你可能感兴趣的:(C++,c,mysql,C#)