问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sql中内联 和外联是什么意思,光看书太死板了,

发布网友 发布时间:2022-04-23 18:33

我来回答

2个回答

懂视网 时间:2022-04-30 15:54

SQL连接(内连接、外连接、交叉连接)

假设现在有两个表:table1 , table2

   table1:                                table2 :
  id      name                          id      score  
  1       lee                            1        90  
  2       zhang                         2        100    
  4       wang                          3       70    

表的连接是针对列(属性),将两个表通过某种规则将两个表进行连接起来,一般是要么增加列或是减小列的个数,如

id    name    id    score   
  1    lee       1      90   
  2    zhang    2     100   

1)内联接:join   或   inner   join

select   *   from   表1   join   表2   on   两个表关联部分 where 条件语句

如:

  select   *   from   table1   join   table2   on   table1.id=table2.id   

内联接是用比较运算符比较要联接列的值的联接 ,只有两个表相匹配的行才进行连接 ,他等价

 select   a.*,b.*   from   table1   a,table2   b   where   a.id=b.id

结果:

 id    name    id    score   
  1    lee       1      90   
  2    zhang    2     100   

 

2)外连接(左连接、右连接、全连接)

左连接:left   join   或   left   outer   join   

select   *   from   表1   left   join   表2   on   两个表关联部分

select   *   from   table1   left   join   table2   on   table1.id=table2.id

左向外联接的结果集包括   LEFT   OUTER   子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(null)。   

结果

  1  lee     1       90   
  2  zhang  2      100   
  4  wang  NULL  NULL  //左表的某行在右表中没有匹配行,右表填 null。   

 

 右连接:right   join   或   right   outer   join   

select   *   from   表1   right   join   表2   on   两个表关联部分

如select   *   from   table1   right   join   table2   on   table1.id=table2.id

 右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。    

结果

  id      name   id    score   
  1       lee     1     90   
  2       zhang  2    100   
  NULL  NULL   3    70   //右表的某行在左表中没有匹配行,左表填空值
 

 完整外部联接:full   join   或   full   outer   join     

select   *   from   表1   full   join   表2   on   两个表关联部分

select   *   from   table1   full   join   table2   on   table1.id=table2.id

完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。 
结果

  id      name     id     score   
  1        lee      1        90   
  2       zhang    2        100   
  4       wang    NULL   NULL   
  NULL   NULL   3        70   //某一个表中没有匹配行时,则另一个表填空值
    

3)交叉连接(完全,笛卡尔积) : cross   join   (不带on条件where...)  

select   *   from   表1   cross   join   表2  

如select   *   from   table1   cross   join   table2

没有 WHERE子句(或者是ON子句)的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。(table1和table2交叉连接产生3*3=9条记录),他等价select   *   from   table1,table2  

结果
  id        name       id         score   
  1        lee           1         90   
  2        zhang        1         90   
  4        wang        1          90   
  1        lee           2         100   
  2        zhang        2         100   
  4        wang        2          100   
  1        lee           3          70   
  2        zhang        3          70   
  4        wang        3          70   

SQL连接(内连接、外连接、交叉连接)

标签:

热心网友 时间:2022-04-30 13:02

连接分为:内连接、外连接、交叉连接
一、内连接--最常用
定义:仅将两个表中满足连接条件的行组合起来作为结果集。
在内连接中,只有在两个表中匹配的行才能在结果集中出现
关键词:INNER
JOIN
格式:SELECT
列名表
FROM
表名1
[INNER]
JOIN
表名2
ON或WHERE
条件表达式
说明:
(1)列名表中的列名可以出自后面的两个表,但如果两个表中有同名列,应在列名前标明出处,格式为:表名.列名
(2)若连接的两个表名字太长,可以为它们起个别名。
格式为:表名
AS
别名
(3)INNER是默认方式,可以省略
二、外连接
1、左(外)连接
定义:在内连接的基础上,还包含左表中所有不符合条件的数据行,并在其中的右表列填写NULL
关键字:LEFT
JOIN
2、右(外)连接
定义:在内连接的基础上,还包含右表中所有不符合条件的数据行,并在其中的左表列填写NULL
关键字:RIGHT
JOIN
3、完全连接
定义:在内连接的基础上,还包含两个表中所有不符合条件的数据行,并在其中的左表、和右表列填写NULL
关键字:FULL
JOIN
三、交叉连接
定义:将两个表的所有行进行组合,连接后的行数为两个表的乘积数。(笛卡尔积)
关键词:CROSS
JOIN
格式:FROM
表名1
CROSS
JOIN
表名2
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
14岁每天做多少蹲起和提踵不影响长高 每天晚上提踵来练弹跳会影响长高吗? 提踵和练肌肉会不会长不高? 提踵(抬脚跟)训练会影响长个吗 求高人指点 提踵 会不会影响身高的增长? 我现在15岁 提踵有利于长高吗 提踵影响长高吗 win10可不可以玩盗版的中2,帝战,拿战 沧州蓝海光伏设备有限公司怎么样? 为什麽女巫要骑扫帚不骑板凳。。。 华为3900一载波支持多少用户 用join in造句,短一点的,要注明意思~谢谢~ 用join in造句,短一点的,要注明意思~ 不要用什么将来,过去时态,只用现在时态 vfp6.0中的join命令怎么使用,最好有实例,谢谢! 关于VF中select left(right) join的准确用法 sql 中join多个表,哪里出错了? js中join和split的用法 什么时候用left join 前前台把一个JOIN样式的字符串存入隐藏域,后台获取后转化为JOIN类型后再取出对应的字段,怎么做? 在内链接的语法格式中,inner join 关键字用于连接两个表 什么关键字用... right join 的正确用法 left join 一对多,左表怎么只取一行? linux中怎么使用join前先sort?命令行怎么写? Linux命令join用了没反应,求解释,具体看图 javascript(js) join函数如何使用方法介绍 jio格式用什么软件可以打开? left join 和 left outer join 有什么区别? 小米平板电池多少mah? 小米平板3和华为M3青春版哪个好 小米平板3多少钱一台 SQL 几种联表查询方式 电力载波监控的方案 连接查询多个表怎么写? 电力线载波plc通信模块 哪家好 大家觉得电力线载波用在物联网中有优势吗 电力载波远传式电表是智能插卡的吗 KQ330科强电子电力载波模块,谁有跟51单片机搭配的C语言代码,急求!!!! 苹果5s 和苹果6的像素分别是多少? 手机电话录音怎么查看? 学CNC编程该从哪下手学起? 如何着手学习CNC数控编程?如何入门如何精通? cnc编程自学? 数控车床操作入门是什么? 如何着手学习CNC数控编程?如何入门如何精通 学CNC编程,首先要学习什么?那些编程人员都是操机操出来的吗? 想学CNC编程,需要哪些基础呢? 怎么去做cnc编程入门 我想学习数控编程(CNC),可不知道怎么入手? 如何学好CNC数控编程,如何入门一窍不通,求人带一下。 男孩取名,袁允梵,是何意义?