我的编程空间,编程开发者的网络收藏夹
学习永远不晚

sql多表查询

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

sql多表查询

多表查询概念:从多张表查询数据

分类:连接查询和子查询。

有两张表A、B

连接查询: 内连接      相当于查询A、B交集数据

例1:select * from emp,dept where emp.dep_id=dept.id;

                    外连接      左外连接:相当于查询A表所有数据和交集部分数据

                                     右外连接:相当于查询B表所有数据和交集部分数据

子查询:查询中嵌套查询。

内连接(同时查询两张表的列)

 隐式内连接         select 字段列表 from 表一,表二 where 条件;

   如上面的例子:select * from emp,dept where emp.dep_id=dept.id;

          在没有条件语句的情况下返回笛卡尔积(排列组合)

   例2:select emp.name,emp.gender,dept.name  from emp,dept where emp.dep_id=dept.id;

  显式内连接       select 字段列表 from 表一 inner join 表二 on 条件;  

    例3:select * from emp iennr join dept on emp.dep_id = dept.id;           innner可以省略

4.外连接

    左外连接     select 字段列表 from 表1 left join 表2 on 条件;

     例4:查询emp表所有数据和对应的部门信息

                select * from emp left join dept on emp.dep_id = dept.id; 

    右外连接     select 字段列表 from 表1 right join 表2 on 条件;

    例5:查询dept表所有数据和对应员工信息

                  select * from emp right join dept on emp.dep_id = dept.id;

             或:  select * from  dept left join emp on emp.dep_id = dept.id;(工作中最常使用left join)

5.子查询

  (1)概念:查询中嵌套查询。

           子查询分为:单行单列         select 字段列表 from 表 where 字段名 = 子查询;

                                多行单列          select 字段列表 from 表 where 字段名  in 子查询;

                                多行多列          select 字段列表 from (子查询)where   条件;

        例1:查询班级中成绩高于叶淑华的学生的信息:

           select * from stus where score>(select score from stus where name = "叶淑华");

         

     例2:查询财务部和销售部的所有员工信息:

             select * from emp where dep_id in (select id from dept where dept_name = "财务部" or dept_name = "销售部")

            

IN 操作符用于匹配一组值,其后也可以接一个 SELECT 子句,从而匹配子查询得到的一组值。

         例3:查询年龄大于20的员工信息和部门信息

                 思路:先列出年龄大于20岁的员工的所有信息,作为虚拟表与dep_id进行内连接

      select * from (select * from emp where age>20)t1,dept where t1.dep_id =  dept.id;

t1是别名,select * from emp where age>20作为虚拟表。

多表查询案例:

职位表                                部门

 薪资等级表

                  员工表 

 

注意第三条要求里,由于peach的工资不在工资区间里,所以查询出来没有peach的记录。(对连接条件的理解)

第五条要求中,第一行是仅分组,第二行是分组后的表作为虚拟表跟dept连接,然后查询。

第五条还可写成别名形式:

select * from dept,(select count(emp.id) 人数,emp.dep_id 部门编号 from emp group by dep_id)t1 where dept.id = t1.部门编号

运行结果:

 

来源地址:https://blog.csdn.net/Finneab/article/details/124614467

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

sql多表查询

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

2023-09-01

sql多表查询语句怎么写

多表查询语句用于从多个表中获取数据。可使用 join 关键字指定表关系,常用类型为:inner join(匹配行)、left join(左表全行,右表匹配行或 null)、right join(右表全行,左表匹配行或 null)、full
sql多表查询语句怎么写
2024-05-30

SQL联表查询

表1学生信息表 表二专业信息表 – join on 连接查询 – where 等值查询 1、内连接 分为两种 等值连接: 查找两个表中连接字段相等的记录。 --查询每个学生的(学生表)学号、姓名、籍贯、年龄、(专业表)专业、班级--涉
2023-08-19

多表查询

多表查询:联接查询、子查询、集合运算  联接查询交叉联接:笛卡尔积select * from , 内联接:有条件的联接select * from inner join on --SQLselect * from , where --T
多表查询
2014-11-21

MySQL之单表查询、多表查询

一、单表查询:单个表的查询方法及语法顺序需要通过实际例子来熟悉先将表数据创建下:mysql> create database singe_t1; # 建个数据库singe_t1Query OK, 1 row affected (0.01
2023-01-31

sql多表数据如何嵌套查询

在SQL中,可以使用子查询来实现多表数据的嵌套查询。子查询是指在一个查询语句中嵌套另一个查询语句,以实现对多表数据的查询和筛选。例如,假设有两个表A和B,表A包含学生的信息,表B包含学生的成绩信息。要查询出所有成绩大于80分的学生信息,可
sql多表数据如何嵌套查询
2024-04-11

linq to sql多表查询怎么实现

这篇文章主要讲解了“linq to sql多表查询怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linq to sql多表查询怎么实现”吧!在手写sql的年代,如果想从sqlserv
2023-06-17

MySQL 多表查询

union 结果集合并使用多个select分别查询不同的表,把多个select查到的记录合并在一起一个select查到m条记录,另一个select查到n条记录,合并之后就是m+n条记录 #查询全校师生的id、name,使用2个select分别从tb_teach
MySQL  多表查询
2017-05-29

编程热搜

目录