专栏首页SQL/ORACLESQL语句多表关联查询语法

SQL语句多表关联查询语法

                       **sql语句多表关联查询语法**

一、外连接

1.左连接 left join 或 left outer join

SQL语句:select * from student left join score on student.Num=score.Stu_id;

2.右连接 right join 或 right outer join

SQL语句:select * from student right join score on student.Num=score.Stu_id;

3.完全外连接 full join 或 full outer join

SQL语句:select * from student full join score on student.Num=score.Stu_id;

通过上面这三种方法就可以把不同的表连接到一起,变成一张大表,之后的查询操作就简单一些了。

而对于select * from student,score;则尽量不使用此语句,产生的结果过于繁琐。

二、内连接

join 或 inner join

SQL语句:select * from student inner join score on student.Num=score.Stu_id;

此时的语句就相当于:select * from student,score where student.ID=course.ID;

三、交叉连接

cross join,没有where指定查询条件的子句的交叉联接将产生两表的笛卡尔积。

SQL语句:select * from student cross join score;

四、结构不同的表连接

当两表为多对多关系的时候,我们需要建立一个中间表student_score,中间表至少要有两表的主键。

SQL语句:select s.Name,C.Cname from student_score as sc left join student as s on s.Sno=sc.Sno left join score as c on c.Cno=sc.Cno

select C_name,grade from student left join score on student.Num=score.Stu_id where name=‘李五一’; 红色部分即中间表,是集合两表所有内容的一张总表。

五、UNION操作符用于合并两个或多个select语句的结果集。

UNION内部的SELECT语句必须拥有相同数量的列,每个列也必须拥有相似的数据类型,每条SELECT语句中的列的顺序必须相同。

select Num from student union select Stu_id from score; union操作符是默认查重的,如果允许重复的值,就可以使用union all 。对于两张结构相同的表,union也可以把他们合并成一张表:

select * from student1 union select *from student2; 六、子查询

有时候,查询时需要的条件是另外一个select语句的结果,就会使用到子查询。

1.带IN关键字的子查询

SQL语句:select * from student where Num IN(select Stu_id from score);

2.带EXISTS关键字的子查询

exists内查询返回一个真价值,若返回true时,外查询进行查询,否则外查询不进行查询。

SQL语句:select * from student where exists(select * from score where C_name=‘计算机’);

3.带ANY关键字的子查询

使用ANY关键字只要有一个满足,就通过该条件来执行外查询。

SQL语句:select sname,(date_format(from_days(now())-to_days(birthday)),’%Y’)+0) as ‘年龄’ from student where birthday>ANY(select birthday from student where bumen=‘计算机系’);

4.带ALL关键字的子查询

使用ALL关键字必须满足所有的内层查询语句返回的所有结果,才执行外查询

SQL语句:select sname,(date_format(from_days(now())-to_days(birthday)),’%Y’)+0) as ‘年龄’ from student where birthday>ALL(select birthday from student where bumen=‘计算机系’);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mysql常用sql语句(14)- 多表查询

    https://www.cnblogs.com/poloyy/category/1683347.html

    小菠萝测试笔记
  • sql查询语句

    select sal*12 as "年工资" , age 年龄,name username from 表名;

    HUC思梦
  • SQL语句汇总(终篇)—— 表联接与联接查询

    既然是最后一篇那就不能只列出些干枯的标准语句,更何况表联接也是SQL中较难的部分,所以此次搭配题目来详细阐述表联接。

    _DIY
  • T-SQL查询语句

    L宝宝聊IT
  • SQL复杂查询语句

     进行多表连接查询,掌握多表连接查询的连接条件或连接谓词,理解内连接、左连接和右连接的含义并熟练操作。

    慕白
  • SQL基本查询语句

    SELECT是SQL关键字,SQL关键字是不区分大小写的,但是表名是区分大小写的。SELECT关键字表示查询操作,而*表示查询所有字段。FROM是SQL关键字,...

    zy010101
  • MySQL多表关联数据同时删除sql语句

    DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释:

    用户4988376
  • sql sever基本查询语句

    查询(*可代表全部)(<>代表不等于于) select 列名 from 表名(,隔开) where 查询条件 order by 排序的列名 +连接的数据类型必须...

    房上的猫
  • SQL基本查询语句(二)

    无论是基础查询还是条件查询,最终的结果都是显示了所有字段。即:包含了id, class_id, name, gender, score。如果我们只关心name字...

    zy010101
  • SQL基本查询语句(三)

    多表查询的结果是表的乘积,不是显示多个表。这个非常不好用,因为很容易就导致表很大。下面是个例子。

    zy010101
  • Oracle 查询表空间使用率 SQL 语句

    Oracle 数据库的表空间如果使用超过100%,会导致数据库无法使用,因此需要及时扩展!

    Lucifer三思而后行
  • laravel 获取某个查询的查询SQL语句方法

    以上这篇laravel 获取某个查询的查询SQL语句方法就是小编分享给大家的全部内容了,希望能给大家一个参考。

    砸漏
  • Mysql查询语句之连表查询和增删改查语句补充

    上次怎么大概说了一下or,!=,in/not in between,like,limit,order by,group by。

    前端皮皮
  • Oracle 高级查询-【联合语句】【联合查询】【层次查询】

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    颍川
  • THINKPHP 中关联查询(多表查询)

    THINKPHP 中关联查询(多表查询)可以使用 table() 方法或和join方法,请看示例:

    PM吃瓜
  • pandas与SQL的查询语句对比

    在pandas的官方文档中对常用的SQL查询语句与pandas的查询语句进行了对比,这里以 @猴子 社群里面的朝阳医院数据为例进行演示,顺便求第四关门票,整体数...

    带萝卜
  • Mybaits多表查询,关联多张表

    <resultMap id="BaseResultMap" type="用户Entity" >

    用户5640963
  • Mysql常用sql语句(3)- select 查询语句基础使用

    https://www.cnblogs.com/poloyy/category/1683347.html

    小菠萝测试笔记
  • 关于linq语句与sql语句查询条件==null处理的奇妙现象

    易兒善

扫码关注云+社区

领取腾讯云代金券