SQL语句进阶学习二

  • 子查询:查询的结果当做另一查询的条件。
  • 1)查询:任何SQL语句都是查询。一般指select语句。
  • 2)子查询:嵌套其他查询中的查询。
  • 3)实例:
  • 4)计算字段使用子查询
  • 联接表
  • 1.外键:外键为另一个表中的列,它包含该表的主键值。
  • 2.可伸缩性:可以适应不断增加的工作量而不失败。
  • 3.联接:联接是一种机制。用select语句关联表格。
  • 4.实例:
  • 5.where语句的重要性
  • 6.笛卡儿积:由没有联接条件的表关系返回的结果为笛卡儿积。检索出来的结果行数就是第一个表格的行数与第二个表格的行数乘积。
  • 7.等值联接:两个表之间的相等测试。又称为内部联接。
  • 8.联接多个表格
  • 9.子查询和联接查询的相互转化。
  • 创建高级联接
  • 1.使用表别名
  • 2.自联接
  • 上述也可以以子查询进行操作。
  • 3.自然联接
  • 1)自然联接:自然联接排除多次出现的列,使每个列只返回一次。
  • 2)实例
  • 4.外部联接
  • 1)概念:联接中包含了那些相关表无关联行的行。如:列出所有产品和订购数量,包括那些没有人订购的产品。
  • 2)实例
  • 5.使用带聚集函数的联接
  • 6.使用联接和联接条件
  • 7.使用左连接
  • 8.使用右连接


子查询:查询的结果当做另一查询的条件。

1)查询:任何SQL语句都是查询。一般指select语句。
2)子查询:嵌套其他查询中的查询。
3)实例:

sql server关联规则 sql关联语句怎么写_联接查询


该查询包含两个子查询。一个是select cust_id from orders where order_num in,另一个是select order_num from orderitems where prod_id = ‘TNT2’;

SQL语句解释:列出订购物品TNT2的所有客户

(1) 检索包含物品TNT2的所有订单的编号。

(2) 检索具有前一步骤列出的订单编号的所有客户的ID。

(3) 检索前一步骤返回的所有客户ID的客户信息。

4)计算字段使用子查询

sql server关联规则 sql关联语句怎么写_sql server关联规则_02


子查询中,使用了orders.cust_id = customers.cust_id完全限定列名(即表名.列名,select操作多个表时,应使用完全限定列名来避免歧义)。

联接表

1.外键:外键为另一个表中的列,它包含该表的主键值。
2.可伸缩性:可以适应不断增加的工作量而不失败。
3.联接:联接是一种机制。用select语句关联表格。
4.实例:

sql server关联规则 sql关联语句怎么写_联接查询_03


分析:查询的字段从vendors和products两个表中获得,where语句接vendors.vend_id = products.vend_id。这种完全限定列名。因为两个表中都有vend_id,如果不限定表名就不知道指代那个vend_id。

5.where语句的重要性

select关联几个表,where语句则将第一个表格的每一行与第二个表格的每一行进行匹配。应保证所有的联接都有where语句,where表示连个表的联接条件。

6.笛卡儿积:由没有联接条件的表关系返回的结果为笛卡儿积。检索出来的结果行数就是第一个表格的行数与第二个表格的行数乘积。

sql server关联规则 sql关联语句怎么写_子查询_04

7.等值联接:两个表之间的相等测试。又称为内部联接。

sql server关联规则 sql关联语句怎么写_子查询_05


分析:1.from 表格A inner join 表格B on 联接条件。联接条件由on语句给出而不是where语句。

2.优先选择inner join的语法而不是where语法。

8.联接多个表格

sql server关联规则 sql关联语句怎么写_联接查询_06


注意事项:尽量不要关联不必要的表格。联结的表格越多,性能下降越快。

9.子查询和联接查询的相互转化。

sql server关联规则 sql关联语句怎么写_子查询_07

创建高级联接

1.使用表别名

sql server关联规则 sql关联语句怎么写_sql server关联规则_08


对customers orders orderitems 分别取别名为c o oi。

2.自联接

sql server关联规则 sql关联语句怎么写_SQL学习_09


分析:找出生产ID为DTNTR生产商生产的其他的商品信息。where语句对两个表进行关联。

上述也可以以子查询进行操作。

sql server关联规则 sql关联语句怎么写_联接查询_10


注意事项:自联接的性能比子查询的性能要快很多。

3.自然联接
1)自然联接:自然联接排除多次出现的列,使每个列只返回一次。
2)实例

sql server关联规则 sql关联语句怎么写_笛卡儿积_11

4.外部联接
1)概念:联接中包含了那些相关表无关联行的行。如:列出所有产品和订购数量,包括那些没有人订购的产品。
2)实例

sql server关联规则 sql关联语句怎么写_子查询_12


分析:外部联接使用语法outer join,使用outer join语法时必须加上关键字left 或者right。执行时选择左边表格所有的行或者右边表格所有的行。

5.使用带聚集函数的联接

sql server关联规则 sql关联语句怎么写_联接查询_13

6.使用联接和联接条件

sql server关联规则 sql关联语句怎么写_子查询_14

7.使用左连接
select l.str as left_str,r.str as right_str from l left join r on l.val = r.val

左表l数据列全部显示
oracle中的做左连接也可以写为

select l.str as left_str,r.str as right_str from l , r where  l.val(+) = r.val
8.使用右连接
select l.str as left_str,r.str as right_str from l rightjoin r on l.val = r.val

右表r数据列全部显示