数据库_SQL基础查询和SQL关联查询

来源:互联网 发布:电视软件论坛 编辑:程序博客网 时间:2024/06/05 20:06



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
除了返回满足连接条件的记录,还会返回不满足连接条件的所有其它行。