2017年7月13日学习总结:
基本查询语句
FROM子句
指定要从哪个表中查询。
语法:
FROM table
AS 关键字
使用别名。
语法:
column AS String
table AS String
AS可以省略。
WHERE子句
限制查询结果。
语法:
WHERE expression
SELECT子句
查询列
语法:
SELECT [column]
列可以有多个,列与列之间逗号隔开。
SELECT * FROM table 查询所有的列。
查询条件
使用>,<,>=,<=,<>,==
注意<>是不等于。
AND(与),OR(或)关键字
LIKE(模糊查询)
_:任意的单个字符。
%:0到多个任意字符。
例如:WHERE name LIKE '_A%'名字第二个字符是A的就符合查询条件。
IN和NOT IN
语法:
IN(list)
取出符合列表中的数据记录
NOT IN(list)
取出不符合列表中的数据记录
BETWEEN...AND...
某2个值之间的范围符合查询条件。
IS NULL
是NULL的就符合查询条件。
NOT NULL
不是NULL的就符合查询条件。
>ANY:大于最小
<ANY:小于最大
>ALL:大于最大
<ALL:小于最小
查询条件中可以使用表达式和函数
DISTINCT过滤重复
语法:
DISTINCT column
排序
ORDER BY子句
语法:
ORDER BY culumn [ASC|DESC]
注意必须用在SELECT中的最后一个子句。
[ ]里不写,默认升序,NULL最大。
多个列排序
每个列需要单独设置排序方式,中间逗号隔开。
首先按第一列排序,如果第一列数据相同,
再以第二列排序,依次类推。
聚合函数
定义:将表的全部数据划分为几组数据,每组数据统计出一个结果。
也叫作分组函数、多行函数、集合函数。
MAX(column)
查询列或表达式的最大值
MIN(column)
查询列或表达式的最小值
AVG(column)
查询列或表达式的平均值
SUM(column)
查询列或表达式的总和
COUNT(column)
查询表中的记录条数,注意会忽略NULL值
分组
GROUP BY子句
语法:
GROUP BY column
注意:当SELECT子句中有聚合函数时,那么凡不在聚合函数中的单独字段,
都必须出现在GROUP子句中。
HAVING子句
对分组后的结果进一步限制。
注意必须跟在GROUP BY 后面,不能单独存在。
SQL(关联查询)
关联的概念
实际应用中所需要的数据,
经常会需要查询两个或两个以上的表,叫做连接查询。
笛卡尔积
做关联操作的每个表的每一行都和其它表的每一行做组合。
加上两个表的记录条数分别是X和Y,笛卡尔积就返回X*Y条记录。
关联查询时不指定连接条件就会出现笛卡尔积。
使用等号“=”连接相关的表。
语法:
FROM table1,table2 WHERE table1.column1=table2.column2
内连接
返回所有满足连接条件的记录。
语法:
table1 JOIN table2 ON table1.column1=table2.column2
JOIN table3 ON table2.column2=table3.column3 ...
外连接
外连接可以将不满足连接条件的记录也查询出来。
左外连接:
语法:
table1 LEFT OUTER JOIN table2 ON table1.column1=table2.column2
以JOIN左侧表作为驱动表,该表中所有记录都要查询出来,
不满足连接条件的记录,来自右侧表的字段的值全部为NULL。
右外连接:
语法:
table1 RIGHT OUTER JOIN table2 ON table1.column1=table2.column2
以JOIN右侧表作为驱动表,该表中所有记录都要查询出来,
不满足连接条件的记录,来自左侧表的字段的值全部为NULL。
全外连接:
语法:
table1 FULL OUTER JOIN table2 ON table1.column1=table2.column2
除了返回满足连接条件的记录,还会返回不满足连接条件的所有其它行。