zoukankan      html  css  js  c++  java
  • SqlServer2012——多表连接查询

    1、基本连接

    select A.姓名,A.性别,B.班级名,B.家庭住址
    From 学生信息 A,班级信息 B
    where A.所属班级=B.班级编号
    --把A表与B表连接起来

    2、内连接

    --内连接语法格式
    select select_list
    From table1 INNER join table2 [on join_conditions]
    where search_conditions
    order by order_expression
    --INNER可以省略,使用join就把两个表连接起来
    
    例子:
    select A。班级名,A.班级人数,B.姓名,B.联系方式
    From 班级信息 A inner join 辅导员信息 B
    on A.辅导员=B.辅导员编号
    
    select A。班级名,A.班级人数,B.姓名,B.联系方式
    From 班级信息 A inner join 辅导员信息 B
    on A.辅导员=B.辅导员编号 AND B.性别=''
    --注意:B.性别=''为限制条件,等价于下例
    select A。班级名,A.班级人数,B.姓名,B.联系方式
    From 班级信息 A inner join 辅导员信息 B
    on A.辅导员=B.辅导员编号 
    where B.性别=''

    3、外连接包含(左外连接,右外连接,全连接)

    外连接有主从表之分。以主表的每行数据匹配i从表中的数据,如果符合条件则直接而返回到查询结果中,如果主表的行在从表中没有找到匹配的行,则主表数据仍保留,并返回到查询结果中,相应的从表中的行被填上空值后也返回到查询结果中。

    左外连接(左表时主表)

    select A.班级名,A.班级人数,B.姓名,B.联系方式
    From 班级信息 A LEFT OUTER join 辅导员信息 B
    on A.辅导员=B.辅导员编号
    --OUTER可以省略,但是查询条件放到ON中跟放到where中相差比较大
    
    例子:
    select A.班级名,A.班级人数,B.姓名,B.联系方式
    From 班级信息 A LEFT OUTER join 辅导员信息 B
    on A.辅导员=B.辅导员编号 AND A.班级人数>20
    
    select A.班级名,A.班级人数,B.姓名,B.联系方式
    From 班级信息 A LEFT OUTER join 辅导员信息 B
    on A.辅导员=B.辅导员编号 
    where A.班级人数>20

    右外连接(右表是主表)

    select A.班级名,A.班级人数,B.姓名,B.联系方式
    From 班级信息 A RIGHT OUTER join 辅导员信息 B
    on A.辅导员=B.辅导员编号

    全连接(会显示两个表信息,不匹配的填空值)

    select A.班级名,A.班级人数,B.姓名,B.联系方式
    From 班级信息 A FULL OUTER join 辅导员信息 B
    on A.辅导员=B.辅导员编号

    4、交叉连接

    他返回被连接的两个表所有数据的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行乘以第二个表中符合查询条件的数据行数。

    --语法格式
    select select_list
    From table1 Cross Join table2
    where search_conditions
    order by conditions
    
    例子:
    select A.班级名称,A.班级人数,B.姓名
    From 班级信息 A Cross Join 辅导员信息 B

    5、自连接

    select A.班级名,A。班级人数,B.班级名
    From 班级信息 A,班级信息 B
    where A.班级人数=B.班级人数
    --注意A和B是同一个表
    
    select A.班级名,A。班级人数,B.班级名
    From 班级信息 A,班级信息 B
    where A.班级人数=B.班级人数 AND a.班级编号<>B.班级编号
    --注意A和B是同一个表
    上个例子中会有重复的数据

  • 相关阅读:
    Python中的passed by assignment与.NET中的passing by reference、passing by value
    从系统性能优化谈对象相等性
    .NET Core应用的三种部署方式
    cola-ui的使用
    谁不是一边娶妻生子,一边死在路上。请你好好生活
    MySQL的5种时间类型的比较
    压缩20M文件从30秒到1秒的优化过程
    CentOS 7下MySQL 5.7安装
    CentOS6.5下安装JDK1.7+MYSQL5.5+TOMCAT7+nginx1.7.5环境安装文档
    CentOS下安装FreeTDS
  • 原文地址:https://www.cnblogs.com/javier520/p/10865089.html
Copyright © 2011-2022 走看看