精华内容
下载资源
问答
  • ** oracle 10.2.1,PL/SQL** ## 具体要求: _ 查询学分修满25分的同学姓名和学分详情_ **表结构,忽略约束条件** ``` --学生信息表:student_info create table student_info ( stuid int, --学号 stuname ...
  • biao_one ID NAME age ... 自然连接就是在两张表中寻找那些数据类型和列名都相同的记录。  执行sql  select * from biao_one one natural join biao_two two;  提示未选定行  因为 biao_o
    
    

    biao_one
    ID NAME age
    1 a 34
    2 b 35

    biao_two
    ID NAME age
    1 a 34
    2 d 35

    自然连接:
     自然连接就是在两张表中寻找那些数据类型和列名都相同的记录。

     执行sql
     select * from biao_one one natural join biao_two two;
     提示未选定行

     因为 biao_one 和 biao_two 没有相同的数据(字段名相同,类型相同,值相同)

    内连接:
     内连接就是,两张表按连接条件,将两张表的相关记录连接在一起。
     (有多少条记录满足连接条件,最后就有多少条记录)

    左连接:
     左联接就是,以左边的表为基准,如果右边的表有符合条件的,则显示指定的内容

    右连接:
     右连接就是,以右边的表为基准,如果左边的表有符合条件的,则显示指定的内容




    全连接:就是左联接和右连接的结合。

    自连接:就是一个表,自己和自己连接。

    展开全文
  • 自然连接(Natural Join) select * FROM COURSE NATURAL JOIN SCORE; Result(取相同字段并混合该相同字段): >>> 自然连接后只能得到一条数据:小明 2019001 左外连接(LEFT OUTER JOIN...

    =>【连接1】广义笛卡儿积+一般连接+自连接

     



    自然连接(Natural Join) 



    select * FROM COURSE NATURAL JOIN SCORE;



    Result(取相同字段并混合该相同字段): 

     

     >>> 自然连接后只能得到一条数据:小明 2019001



     

    • 左外连接(LEFT OUTER JOIN)    =>   将左表的所有数据显示,不存在的字段值为NULL
    • 右外连接(RIGHT OUTER JOIN)     =>   将右表的所有数据显示,不存在的字段值为NULL

    /右外连接后需要使用on指定按照哪一个属性列进行连接:

    • ON AAA.name=BBB.name


     

    展开全文
  • Oracle连接查询,包含内关联(inner jion )和外关联(outer join),其中外关联又分为左外关联(left outer join)、右外关联(right outer join)和全外关联(full outer join)其中外关联可以使用(+)来表示。

    内连接、外连接、自然连接,交叉连接,自连接

    结构导图
    在这里插入图片描述

    一、建表SQL语句

    create table TEST1
    (
      id      VARCHAR2(8),
      name    VARCHAR2(64),
      age     NUMBER,
      address VARCHAR2(256)
    )
    
    create table TEST2
    (
      id      VARCHAR2(8),
      name    VARCHAR2(64),
      age     NUMBER,
      address VARCHAR2(256)
    )
    
    create table TEST3
    (
      id      VARCHAR2(8),
      name    VARCHAR2(64),
      age     NUMBER,
      address VARCHAR2(256)
    )
    
    insert into test1 values('1001','xiaoxue',24,null);
    insert into test1 values('1002','zhangsan',24,null);
    insert into test1 values('1003','lisi',19,null);
    insert into test1 values('1005','zhaoliu',25,null);
    
    insert into test2 values('1001','xiaoxue',24,null);
    insert into test2 values('1002','zhangsan',24,null);
    insert into test2 values('1004','wangwu',18,null);
    insert into test2 values('1006','sakura',24,null);
    
    insert into test3 values('1001','xiaoxue',24,null);
    insert into test3 values('1003','lisi',19,null);
    insert into test3 values('1004','wangwu',18,null);
    insert into test3 values('1007','yuma',28,null);
    

    二、单表查询!

    1.查询test1表

    select * from test1;
    

    在这里插入图片描述

    2.查询test2表

    select * from test2;
    

    在这里插入图片描述

    3.查询test3表

    select * from test3;
    

    在这里插入图片描述

    三、两个表联合查询

    1、SQL-92标准方式查询两个表
    1)笛卡尔积
    如果不加查询条件(where),就会产生笛卡尔积
    笛卡尔积:全排列,将A表和B表中的数据一一对应一次,得到一个新的结果集表
    特点:结果集表中有符合要求的数据也有垃圾数据

    select t1.*, t2.*
    from test1 t1, test2 t2
    

    在这里插入图片描述
    2)等值筛选:有筛选条件

    select t1.*, t2.*
    from test1 t1, test2 t2
    where t1.id = t2.id;
    

    在这里插入图片描述
    3)非等值筛选
    4)自查询
    5)外连接查询

    2.多表联合查询(重点)–99方式
    1)交叉连接(Cross join)
    换算两张表的笛卡尔积

    select t1.*, t2.*
    from test1 t1
    cross join test2 t2;
    

    在这里插入图片描述
    2)自然连接(Natural join)
    作用:底层自动的按照联合查询的表的所有相同字段名进行等值筛选
    注意:
    –按照所有的相同字段名进行筛选,联合查询的表中必须存储相同字段名
    –进行的是等值筛选

    select *
    from test1 t1
    natural join test2 t2;
    

    在这里插入图片描述
    3)内连接(Inner Join/Join)

    • using关键字
      语法:select * from 表名 别名 inner join 表名 别名 using(字段名,字段名…)
      作用:
      –使用指定的相同字段进行联合查询的等值筛选
      注意:
      –联合的表中必须存在using指定的字段
    select *
    from test1 t1
    inner join test2 t2
    using(id);
    

    在这里插入图片描述

    • on关键字
    select t1.*,t2.*
    from test1 t1
    inner join test2 t2
    on t1.id = t2.id;
    

    在这里插入图片描述

    4)自查询

    select t1.*,t2.*
    from test1 t1
    inner join test1 t2
    on t1.id = t2.id;
    

    在这里插入图片描述

    5)外连接查询(outer join)

    • 左外连接(left outer join / left join)
    select t1.*,t2.* from
    test1 t1
    left outer join test2 t2
    on t1.id = t2.id;
    
    等同于(下同):
    select t1.*,t2.* from
    test1 t1
    left join test2 t2
    on t1.id = t2.id;
    

    在这里插入图片描述

    • 右外连接(right outer join / right join)
    select t1.*,t2.* 
    from test1 t1
    right outer join test2 t2
    on t1.id = t2.id;
    

    在这里插入图片描述

    • 全外连接(full outer join / full join)
    select t1.*,t2.*
    from test1 t1
    full outer join test2 t2
    on t1.id = t2.id;
    

    在这里插入图片描述

    四、多表联合查询

    1.三个表内连接查询
    只查询出三个表共有的数据

    select * 
    from test1 t1
    inner join test2 t2
    on t1.id = t2.id
    inner join test3 t3
    on t1.id = t3.id;
    

    在这里插入图片描述

    2.三个表外连接查询

    select * 
    from test1 t1
    full outer join test2 t2
    on t1.id = t2.id
    full outer join test3 t3
    on t1.id = t3.id;
    

    在这里插入图片描述

    展开全文
  • oracle连接总结(内连接、外连接、自然连接,交叉连接,自连接) 1) 两个表的连接,是通过将一个表中的一列或者多列同另一个表中的列链接而建立起来的。用来连接两张表的表达式组成了连接条件。当连接成功后,第...

    oracle连接总结(内连接、外连接、自然连接,交叉连接,自连接)


    1) 两个表的连接,是通过将一个表中的一列或者多列同另一个表中的列链接而建立起来的。用来连接两张表的表达式组成了连接条件。当连接成功后,第二张表中的数据就同第一张表连接起来了,并形成了复合结果集

    2) 有5种基本类型的的连接,inner,outer,natural,cross连接,自连接。

    2.说明与例子

    1)内连接 (inner join (可简写为join))

    内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。 

    1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列, 包括其中的重复属性。 (区别于自然连接)

    2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的  列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。 

    teacher 和 student 表

       

    eg1:等值连接:

    SELECT S.*, T.* FROM STUDENT S INNER JOIN TEACHER  T ON S.TEACHERID = T.ID; //注意oracle重命名table 不能加as只需加空格即可,as可用于重命名列

    结果:(注意结果中包含重复属性,重复的属性结果中重命名了)

    eg2:

    SELECT * FROM STUDENT JOIN TEACHER ON STUDENT.DEPTNO= TEACHER.DEPTNO;


    2)自然连接(natural join)

      自然连接是在广义笛卡尔积R×S中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系。

    自然连接是在两张表中寻找那些数据类型和列名都相同的字段(无论有几个),然后自动地将他们连接起来,并返回所有符合条件按的结果

     eg1:
    SELECT STUDNET.CLASSID,TEACHER.DEPTNO FROM STUDENT  NATURAL JOIN TEACHER;

    报错:(不能加限定条件)

    SQL 错误: ORA-25155: NATURAL 联接中使用的列不能有限定词
    25155. 00000 -  "column used in NATURAL join cannot have qualifier"
    *Cause:    Columns that are used for a named-join (either a NATURAL join
               or a join with a USING clause) cannot have an explicit qualifier.
    *Action:   Remove the qualifier.


    eg2:

    SELECT * FROM STUDENT  NATURAL JOIN TEACHER;

    分析:两个表中有两个相同属性,TEACHERID和DEPTNO,不用加限定条件即按照这两个字段连接

    结果:(注意deptno属性只有一个)

    下面对比使用inner join的结果:(包含重复属性,并且包含重复行)

    SELECT * FROM STUDENT JOIN TEACHER ON STUDENT.DEPTNO= TEACHER.DEPTNO;

    3) 外连接 (outer join)

    外连接,返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接或左连接))、右表(右外连接或右连接)或两个边接表(全外连接)中的所有数据行。

    1.left join(左联接)等价于(left outer join)  返回包括左表中的所有记录和右表中联结字段相等的记录;

    2.right join(右联接)等价于(right outer join) 返回包括右表中的所有记录和左表中联结字段相等的记录;

    3.  full join (全连接)等价于(full outer join)查询结果等于左外连接和右外连接的和;

    eg1:

    SELECT  S.*, T.* FROM STUDENT S LEFT JOIN TEACHER  T ON S.CLASSNO = T.CLASS;

    输出结果:(包含student中的所有记录和满足条件的记录)

    eg2:

    SELECT  S.*, T.* FROM STUDENT S RIGHT JOIN TEACHER  T ON S.CLASSNO = T.CLASS;

    结果:

    eg3:
    SELECT  S.*, T.* FROM STUDENT S FULL JOIN TEACHER  T ON S.CLASSNO = T.CLASS;

    输出:(因为teacher中有的对应student中都有,所以结果和left join相同)

    4) 交叉连接(cross join)

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

    eg1:
    SELECT  S.*, T.* FROM STUDENT S CROSS JOIN TEACHER  T ;

    等价于:

    SELECT  S.*, T.* FROM STUDENT S , TEACHER  T ;

    输出结果:

    5)自连接

    连接的表是同一张表,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。

    用途举例:计算公交链路换乘问题(见eg2)

    eg1:

    SELECT  S1.*, S2.* FROM STUDENT S1 , STUDENT S2 WHERE S1.DEPTNO=S2.DEPTNO AND S1.CLASSNO=S2.CLASSNO;

    结果:

    eg2:

    table route(num, company, pos, stop)
    SELECT * FROM route R1, route R2 WHERE R1.stop=R2.stop;

    可查询公用同一公交车站的所有路线

    3.总结

    1)即使是在连接条件不满足的情况下,外部连接也会在结果集内返回行,而内部连接不会在结果集类返回行 当外部连接不满足连接条件时,通常返回一个表中的列,但是第二个表中没有返回值--为null

    2)自然连接不包含重复的属性

    3)交叉连接是两个表数据笛卡尔积(相当于不加连接条件)

    展开全文
  • oracle sql 连接

    2014-11-25 16:41:22
    1、内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现  2、外连接: 包括  (1)左外连接(左边的表不加限制)  (2)右外连接(右边的表不加限制)  (3)全外连接(左右两表都不加限制)  3、自...
  • oracle连接

    2009-02-17 01:55:00
    多表连接:笛卡尔集、表连接表...oracle9i连接形式(sql99规范):交叉连接(Cross join) 自然连接(Natural join)使用Using子句建立连接使用On子句建立连接外连接(outer join):左外连接、右外连接、全外连接oracle8
  • Oracle连接查询

    千次阅读 2018-11-30 23:15:02
    笛卡尔集2.Oracle的连接查询2.1连接查询类型2.2语法2.3等值连接2.4不等值连接2.5外连接2.6自连接3.SQL99标准的连接查询3.2语法3.3叉集3.4自然连接3.5使用USING子句创建连接3.6使用ON子句创建连接 Oracle的连接查询 ...
  • 内连接(关键字:INNER JOIN) 两个表格中的数据都匹配才会查询出来。 左连接(关键字:LEFT JOIN) 左边的表为主表查询,右边的表匹配不上则为null 右连接(关键字:RIGHT ...自然连接(关键字:NATURAL JO...
  • 连接 场景:某班两门课出了成绩,想要把两份成绩表合一起。table1为语文课成绩,table2为数学课成绩 select a.name, a.course, a.grade, b.course, b.grade from table1 a inner join table2 b on a.name ...
  • Oracle左右全等连接(自然连接

    千次阅读 2015-05-15 15:59:18
    select * from mytable;----基本表 ...---Oracle连接 以左边表为主表,即右边的表数据可以为空,但左边的表数据记录全部显示出来 select t1.*,t2.pro_name,t2.score from mytable t1,myusertest t2 w
  • Oracle natural join(自然连接)

    千次阅读 2013-08-29 22:48:11
    虽然natural join(自然连接)实际上的用的比较少,但实际上这个连接是非常有用的,若能经常使用一下,实际上是非常方便的。 自然连接是在两张表中寻找那些数据类型和列名都相同的字段,然后自动地将他们连接起来,并...
  • 1. 内连接(自然连接) 2. 外连接 (1)左外连接 (左边的表不加限制)  (2)右外连接(右边的表不加限制)  (3)全外连接(左右两表都不加限制) 3. 自连接(同一张表内的连接)   SQL的标准...
  • oracle连接和外连接

    2012-06-27 09:52:01
    内连接(自然连接):只有两个表匹配的才能在结果中出现 外连接  左连接:显示左边的全部和右边与左边匹配的部分。  右连接:显示右边的全部与左边与右边匹配的部分 自连接:连接在一张表中 下面通过例子来说明 1...
  • Oracle中内连接查询(inner join),自然连接查询(natural join),自连接查询,外连接查询(outer join),左外连接(left join),右外连接(right join),完全外连接(full join)
  • oracle 在做 自然连接时候 字段类型不一样 报错昨天在连接两张表时候 由于要连接的两个字段类型不一样,导致了invalid number错误。sql如下: select c.* from cms_node_main a,cms_resource_properties b,cms_...
  • Oracle数据库的左、右连接: (+):代表连接的方向 主表的数据可以完全查出来 左连接,左边的表的表是主表;右连接,右边的表示主表 如果(+)在右边,是左连接;(+)在左,是右连接 select e.ename,e.job,m.ename...
  • Oracle连接方式详解(外链接、内连接、自连接

    万次阅读 多人点赞 2016-08-03 16:18:08
    1. 内连接(自然连接) 2. 外连接 (1)左外连接 (左边的表不加限制)  (2)右外连接(右边的表不加限制)  (3)全外连接(左右两表都不加限制) 3. 自连接(同一张表内的连接)   SQL的标准语法: select...
  • Oracle连接,右连接

    2013-06-22 11:27:23
    1、内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 2、外连接: 包括 (1)左外连接 (左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 3、自连接(连接...
  • Oracle连接、左外连接、右外连接、全外连接小总结 数据库版本:Oracle 9i 连接n个表,至少需要n-1个连接条件。例如:连接三个表,至少需要两个连接条件。 表TESTA,TESTB,TESTC,各有A, B两列 连接...
  • Oracle 连接查询

    2019-01-05 20:48:45
    连接查询分为内连接、外连接和自连接 前三点可以说是最基础的,后几点算是基础吧。 一、笛卡儿积 员工表: select * from emp;----14 结果如下: 部门表: select * from dept;----4...
  • 1.cross join:自然连接。主要用于产生笛卡尔积。  select * from emp cross join dept; 2.natural join:自然连接。这种情况下,数据库会自动找到一个字段来消除笛卡尔积。一般来说,数据库会找那些通过外键约束...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,724
精华内容 13,089
关键字:

oracle自然连接