SQL 指定数据源的复习

来源:互联网 发布:许嵩 知乎 编辑:程序博客网 时间:2024/06/06 13:56

SQL 指定数据源的复习
 
一、交叉连接 ---- 非限制连接


将两个表不加任何约束地组合在一起,返回的结果集为: 新行集=表1行数*表2行数,新列数=表1列数+表2列数

格式1: SELECT * FORM tableName1 CROSS JOIN tableName2
格式2: SELECT * FORM tableName1,tableName2


二、内连接 ---- 自然接连

将两个表中满足连接条件的记录组合在一起。内连接就是将交叉连接产生的结果经过连接条件过滤后得到的,连接条件通常采用“  on 主键=外键 “

格式1: SELECT * FROM tableName1 [INNER] JOIN tableName2 on tableName1.columnName = tableName2.columnName
格式2: SELECT * FROM tableName1,tableName2 WHERE tableName1.columnName = talbeName2.columnName

三、使用外连接 --- 左、右、全外连接三种

1、左连接

将左表的所有记录分别与右表的每一条记录进行连接组合,结果集中除返回内部连接的记录以外,还在查询结果中显示出左表中不符合条件的记录并在右表的相应列中填上NULL值。

格式:SELECT * FROM tableName1 LEFT JOIN tableName2 ON tableName1.columnName = tableName2.columnName

2、右连接

将左表的所有记录分别与右表的每一条记录进行连接组合,结果集中除返回内部连接的记录以外,还在查询结果中显示出右表中不符合条件的记录并在右表的相应列中填上NULL值。

格式: SELECT * FROM tableName1 RIGHT JOIN tableName2 ON tableName1.columnName = tableName2.columnName

3、全连接

将左表的所有记录分别与右表的每一条记录进行组合连接,结果集中除返回内部连接的记录以外,还在查询结果中显示出两个表中不符合条件的全部记录并在左表或右表的相应列中填上NULL值。

格式:SELECT * FROM tableName1 FULL[OUTER] tableName2 ON tableName1.column = tableName2.column


四、使用自连接

将一张表的两个副本之间的内连接,使用它可以将同一个表的不同行连接起来。使用自连接时,必须指定两个不同的别名,使之在逻辑上成为两个表。

五、合并结果集

使用UNION语句可以把两个或两个以上的查询产生的结果集合并为一个结果集

格式: SELECT 语句
       {UNION SELECT 语句 } [...]

六、使用子查询

例:SELECT * FROM goods WHERE 价格>(SELECT AVG(价格) FROM goods)

七、使用子查询进行集成员测试

通过逻辑运算符 IN 或 NOT IN 将一个表达式的值与子查询返回的一列值进行比较

例如: SELECT * FROM customers WHERE 客户编号 IN (SELECT 客户编号 FROM orders)

八、使用子查询进行存在性测试

通过运算符 EXISTE 或 NOT EXISTE ,检查子查询所返回的结果集是否包含有记录。

例如: SELECT * FROM customers WHERE EXISTE (SELECT * FROM orders WHERE customers.客户编号=orders.客户编号)

九、使用子查询进行批量比较测试 1、ANY 2、ALL

1、ANY

格式:测试表达试 比较运算符 ANY (子查询)
例如:
   SELECT a.客户编号,a.姓名 FROM customers a WHERE 20<=ANY(SELECT 数量 FROM orders WHERE a.客户编号=orders.客户编
号)

2、ALL

格式: 测试表达式 比较运算符 ALL (子查询)

 

 

 

 

原创粉丝点击