文章目录

  • 单表查询
  • SELECT语句
  • WHERE子句
  • 对查询结果排序(ORDER BY句)
  • 聚集函数及GROUP BY子句
  • 连接查询
  • 内连接(INNER JOIN)
  • (1)等值连接
  • (2)自然连接
  • 外连接(OUTER JOIN)
  • (1)左外连接(LEFT OUTER JOIN)
  • (2)右外连接(RIGHT OUTER JOIN)
  • (3)全外连接(FULL OUTER JOIN)
  • 自连接(SELF JOIN)
  • 交叉连接(CROSS JOIN)
  • 嵌套查询
  • 子查询的谓词
  • 集合查询
  • 综合练习实例


单表查询

sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据


 SELECT:投影运算(All所有是默认的)后一般跟分组属性+集函数, DISTINCT去掉重复列。0

 如查找年龄时有多个年龄可用DISTINCT去掉年龄列中重复的

TOP输出前几如(TOP 20 percent:输出前20%)
FROM<来自于哪>
WHERE<元组选择条件>

SELECT语句

SELECT:投影运算(All所有是默认的)后一般跟分组属性+集函数,DISTINCT去掉重复列
如查找年龄时有多个年龄可用DISTINCT去掉年龄列中重复的
TOP输出前几如(TOP 20 percent:输出前20%)


WHERE子句

<>是不等于的意思

sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据_02


判断是否为空:IS NULL,不能用等于

sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据_03


模糊查询可用字符匹配,如下

sql server 查询半年数据 sql查询2020年数据_子查询_04


sql server 查询半年数据 sql查询2020年数据_外连接_05


  • 当匹配串中有下划线,使用换码字符,在这个下划线前加入\且句子后加ESCAPE‘\’


  • is NULL中的is不能用=替代,AND优先级高于OR可用括号


  • 两个条件关系为与

对查询结果排序(ORDER BY句)

  • 用ORDER BY对选择结果排序{ASC为升序,DESC为降序(默认升序)}


聚集函数及GROUP BY子句

sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据_06


DISTINCT:去掉重复行


  • 聚集函数作用于每组而不作用于全体


sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据_07


GROUP BY:对查询结果按指定列值分组,将属性列值相等的为一个组,通常会在每组中作用聚集函数

HAVING:对分组后进行选择,满足条件的输出。不能用在WHERE中

WHERE作用于记录,HAVING作用于分组


sql server 查询半年数据 sql查询2020年数据_子查询_08

sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据_09


as:(修改列名),或直接加别名在后


连接查询

sql server 查询半年数据 sql查询2020年数据_元组_10
sql server 查询半年数据 sql查询2020年数据_元组_11
sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据_12
sql server 查询半年数据 sql查询2020年数据_子查询_13

两种语法形式:ANSI和SQL Server形式(建议用ANSI各种版本通用)

sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据_14


sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据_15

内连接(INNER JOIN)

普通连接(内连接)操作只输出满足连接条件的元组

(1)等值连接

字段类型必须可比
使用“=”


(2)自然连接

等值连接连接的基础上去掉重复目标列(SELECT后跟具体属性),如上图中读者卡号出现了两次

sql server 查询半年数据 sql查询2020年数据_元组_16


如上仅出现读者表的类别编号

外连接(OUTER JOIN)

外连接以指定表为连接主体,将主体表中不满足连接条件的元组一并输出

sql server 查询半年数据 sql查询2020年数据_外连接_17

(1)左外连接(LEFT OUTER JOIN)

保留左表中的非匹配元组,及右表中符合条件的元组,其中不匹配的分量在查询结果中显示为NULL。
左、右外连接中的OUTER关键字可以省略


(2)右外连接(RIGHT OUTER JOIN)

保留右表中的非匹配元组,及左表中符合条件的元组

(3)全外连接(FULL OUTER JOIN)

查询结果中查询匹配和非匹配的所有记录,是左外连接和右外连接的组合。其中满足条件的记录仅显示一次,不满足条件的分量显示为NULL

自连接(SELF JOIN)

自己与自己连接,一个表内自身的连接操作

sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据_18


sql server 查询半年数据 sql查询2020年数据_元组_19


sql server 查询半年数据 sql查询2020年数据_外连接_20

交叉连接(CROSS JOIN)

即关系代数的笛卡尔积运算,去掉ON之后的连接条件,则为交叉连接

嵌套查询

将一个查询块嵌在另一个的WHERE/HAVING中,排序语句ORDER BY句不能嵌套在里面 ①不相关子查询:由里向外逐层处理

②相关子查询:取外层元组依次放到内层查,若满足条件为真,则返回到结果表中(从内到外)

sql server 查询半年数据 sql查询2020年数据_子查询_21


sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据_22

sql server 查询半年数据 sql查询2020年数据_外连接_23


sql server 查询半年数据 sql查询2020年数据_子查询_24


父查询将表中每一条记录拿去与子查询结果比较,子查询返回True,父查询保留该行,子查询返回False父查询删除该行。父查询最后将得到的结果返回输出


子查询中,在得到的SC表中每一条记录依次查询判断其后的WHERE字句是否成立,成立返回True,否则返回False。

子查询的谓词

  • 带有比较运算符的子查询:
    格式:<字段名><比较符>(<子查询>)
  • 带有IN谓词的子查询
    格式:<字段名>[NOT] IN (<子查询>)
  • 带有ANY或ALL谓词的子查询
  • 带有EXISTS谓词的子查询

带有IN谓词查询的例子

sql server 查询半年数据 sql查询2020年数据_元组_25

使用ALL、ALL运算符的例子

sql server 查询半年数据 sql查询2020年数据_元组_26

ALL、ANY与集函数

sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据_27


[NOT] EXISTS(<子查询>)

EXISTS的查询在WHERE中一定要带上等于的条件,如下看例题

sql server 查询半年数据 sql查询2020年数据_元组_28

例子

sql server 查询半年数据 sql查询2020年数据_元组_29


sql server 查询半年数据 sql查询2020年数据_外连接_30

例子

sql server 查询半年数据 sql查询2020年数据_子查询_31


sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据_32

例子

sql server 查询半年数据 sql查询2020年数据_元组_33


sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据_34

sql server 查询半年数据 sql查询2020年数据_子查询_35

例题

sql server 查询半年数据 sql查询2020年数据_外连接_36


sql server 查询半年数据 sql查询2020年数据_外连接_37

集合查询

将多个SElECT语句的查询结果再进行集合运算。

SQL的组合查询运算符有UNION(并操作)、INTERSECT(交操作)、EXCEPT(差操作)三种。

sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据_38




综合练习实例

sql server 查询半年数据 sql查询2020年数据_外连接_39


sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据_40


sql server 查询半年数据 sql查询2020年数据_子查询_41


sql server 查询半年数据 sql查询2020年数据_外连接_42


sql server 查询半年数据 sql查询2020年数据_元组_43


sql server 查询半年数据 sql查询2020年数据_元组_44


sql server 查询半年数据 sql查询2020年数据_子查询_45


sql server 查询半年数据 sql查询2020年数据_外连接_46


sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据_47


sql server 查询半年数据 sql查询2020年数据_sql server 查询半年数据_48