SQL多表连接

俺是菜鸟在这里写博就是被了跟大家交流,如果那里不对的地方请指出,小弟加以改正!

多表查询分为 内、外连接

外连接分为左连接(left join 或left outer join)、右连接(right join 或者 right outer join)、和完整外部连接 (full join 或者 full outer join)

左连接(left join 或 left outer join)的结果就是left join子句中的左表的所有行,而不仅仅是链接列所匹配的行,如果左表中的某行在右表中没有匹配,则在相关联的结果行中右表的所有选择列均为空值(NULL)

SQL语法 select * from  table1 left join table2 on table1.条件列名 = table2.条件列名;

注释:  显示的就是table1中的所有列和能匹配的列

右连接(right join 或 right outer join )在这里不做多说这左连接很象但是是相反的,只说一下语法

select *from table1 right join table2 on table1. 条件列= table2.条件列

完全外部连接(full join 或 full outer join)

显示左右表中的所有行,当某一个表中没有匹配的行时,则另一个表的选择列表列包含空值(NULL)如果有则显示全部数据

SQL语法:

select *from table1 full join table2 on  table1.条件列名= table2.条件列名

内连接:
概念:内连接就是用比较运算符比较要用连接列的值的连接

内连接(join 或者inner join )

SQL语法:

select *fron table1 join table2  on table1.条件列名 = table2.条件列名

返回符合匹配条件的两表列

等价于:

select A* ,B* from table1 A ,table2 B where A.条件列名 =B.条件列名

select *form table1 cross join table2 where table1.条件列名 = table2.条件列名(注: Cross join 后面不能跟on 只能用where)

交叉连接(完全)

概念:没有用where子句的交叉连接将产生连接所涉及的笛卡尔积第一个表的行数乘以第二个表的行数等于笛卡尔积和结果集的大小

交叉连接: Cross join(不带条件where,如果带返回或显示的是匹配的行数)

SQL语法:

select *from  table1 cross join table2

如果有条件(where)

select * from table1  cross join table2 where table1. 条件列名= table2.条件列名

等价于

select *from table1,table2 (不带where)

时间: 2024-10-13 11:49:48

SQL多表连接的相关文章

SQL多表连接查询

SQL多表连接查询 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中不会这样建表,实际开发中这两个表会有自己不同的主键.) 一.外连接 外连接可分为:左连接.右连接.完全外连接. 1.左连接  left join 或 left outer join SQL语句:select * from student left join course on student.

SQL多表连接查询(详细实例)

转自: http://www.dedecms.com/knowledge/data-base/sql-server/2012/0709/2872.html 本文主要列举两张和三张表来讲述多表连接查询.新建两张表:表1:student  截图如下:表2:course  截图如下:(此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键.)一.外连接外连接可分为:左连接.右连接.完全外连接.1.左连接  left join 或 left oute

sql server 表连接

数据库操作中,我们需要的结果可能在两张表甚至多张表中,这时候就需要表连接操作,多表查询中的各个表之间的字段会存在连接,比如主外键关联,可以使用主外键来关联每张表.表连接方式有以下几种: JOIN: 如果表中有至少一个匹配,则返回行 LEFT JOIN(左连接): 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN(右连接): 即使左表中没有匹配,也从右表返回所有的行 FULL JOIN(全连接): 只要其中一个表中存在匹配,就返回行 下面用两个表演示下上面4种连接方式,两表数据为:

2017-3-13 SQL server 表连接

表连接分为横向表连接和纵向表连接 横向表连接有三种方式: 1.select 列名,列名 from 表名,表名 where 表名.列名=表名.列名 select student.Sno,sname,cno,degree from Student,Score where Student.Sno = Score.Sno 2.子查询方式 select sno,sname,(select cno from Score where Student.Sno=Score.Sno) from Student 3.

SQL查询 - 表连接

一.连接查询简介 连接查询中用来连接连个表的条件称为连接条件或连接谓词.其形式为: [<表1>].<列名1><连接运算符>[<表2>].<列2> 常见的连接运算符包括 1.比较运算符:=.>.<.>=.<=.!=.between和and. 2.逻辑运算符:not.and.or. 3.使用between和and连接查询形式为[<表1>].<列名1><between>[<表2>]

sql两表连接

一直以来认为exists比in效率高的说法是不准确的.如果查询的两个表大小相当,那么用in和exists差别不大.如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:例如:表A(小表),表B(大表)1:select * from A where cc in (select cc from B)效率低,用到了A表上cc列的索引:select * from A where exists(select cc from B where cc=A.cc)效率高,用到了B表上

SQL多表连接查询补充

1.需求 从四张表中获取到以下信息: 进件流水号.申请人姓名.申请时间.申请本金.审批结果.签约通知时间.签约确认时间.保单号.含税保费.去税保费 2.书写方式: select a.business_no, a.loan_name, a.apply_time, a.loan_balance, a.screen_result, b.sign_apply_time, c.sign_confirm_time, d.policy_no, d.sum_premium, d.no_tax_premium f

sql server 表连接类型

Nested Loop,Hash Join,Merge Join对比 类别 Nested Loop Hash Join Merge Join 使用条件 任何条件 等值连接(=) 等值或非等值连接(>,<,=,>=,<=),‘<>’除外 相关资源 CPU.磁盘I/O 内存.临时空间 内存.临时空间 特点 当有高选择性索引或进行限制性搜索时效率比较高,能够快速返回第一次的搜索结果. 当缺乏索引或者索引条件模糊时,Hash Join比Nested Loop有效.通常比Merg

sql数据库的表连接方式图文详解

sql数据库表连接,主要分为:内连接.外连接(左连接.右连接 .全连接).交叉连接,今天统一整合一下,看看他们的区别. 首先建表填充值. 学生表:student(id,姓名,年龄,性别 ) 成绩表:score(id,学生id,成绩) 一.内连接(inner join……on) select student.* ,Score.* from student inner join Score on student.id=Score.sid 查询结果如下: 关系如下图: 总结:inner join取两表