数据库 SQL 的多表查询:eg: table1: employees, table2: departments,table3: salary_grades;

	一:内连接:
1):等值连接:
把表employees中的department_id 与表departmes中的department_id相匹配的找出来
select e.last_name, d.department_id
from employees e,departments d
where e.department_id = d.department_id --等值内连接的缺点是:筛选条件中没有匹配的则无法选出; 2):非等值连接:
把表employees中的salary按照表salary_grades中的等级进行分配等级:
select last_name ,salary,grade_level
from employees,job_grades
where salary between lowest_sal and highest_sal 二:外连接:
--相对于内连接中的等值连接,等值连接的缺点显而易见,要想把不匹配的内容显现出来,则要使用外连接; 1):左连接: 右边去匹配左边的内容,把匹配不到的左边的原样输出,要在等式右边加上'(+)';
select e.last_name, d.department_id
from employees e,departments d
where e.department_id = d.department_id(+) 2):右连接: 左边去匹配右边的内容,把匹配不到的右边的原样输出,要在等式左边加上'(+)';
select e.last_name, d.department_id
from employees e,departments d
where e.department_id(+) = d.department_id --外连接也是有缺陷的,它的缺陷是:左右连接不能同时使用,要想同时输出两边都不匹配的,需要用到SQL99: 三: SQL99:
--SQL99又是另一套体系; 1): --针对上述外连接的缺陷,SQL99可以使用natural join 来解决:
select last_name, department_id
from employees e natural join departments d --他的缺陷是自动匹配两个表中列名称完全一样并且数据类型完全相同的{所有列中}的(不只是目标列)情况; 2): --针对上述1)的缺陷,可以考虑使用以下的:
select last_name, d.department_id
from employees e join departments d
on e.department_id = d.department_id --和where的意思一样 3):
select last_name, department_id
from employees join departments
using(department_id) --这种方式需要两个表中的列名陈和数据类型完全一样 4): 左连接:
select last_name, d.department_id
from employees e left outer join departments d
on e.department_id = d.department_id 5): 右连接:
select last_name, d.department_id
from employees e right outer join departments d
on e.department_id = d.department_id 6): 全连接:
select last_name, d.department_id
from employees e full outer join departments d
on e.department_id = d.department_id 四: 自连接:
--去实现查询表employees中last_name = 'chen' 的员工的老板的工资和email:
select emp.last_name,emp.manager_id,managers.salary,managers.email
from employees emp,employees managers
where emp.manager_id = managers.employee_id and lower(emp.last_name) = 'chen'

  

数据库SQL的多表查询的更多相关文章

  1. 数据库——SQL数据单表查询

    数据查询   语句格式 SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>] … FROM <表或视图名>[,<表或视图名&g ...

  2. 基于ACCESS和ASP的SQL多个表查询与计算统计代码(一)

    近期在写几个关于"Project - Subitem - Task"的管理系统,说是系统还是有点夸大了,基本就是一个多表查询调用和insert.update的数据库操作.仅仅是出现 ...

  3. 非关心数据库无法进行连表查询 所以我们需要在进行一对多查询时候 无法满足 因此需要在"1"的一方添加"多"的一方的的id 以便用于进行连表查询 ; 核心思想通过id进行维护与建文件

     非关心数据库无法进行连表查询 所以我们需要在进行一对多查询时候 无法满足 因此需要在"1"的一方添加"多"的一方的的id 以便用于进行连表查询 ; 核心思想通 ...

  4. mysql,SQL标准,多表查询中内连接,外连接,自然连接等详解之查询结果集的笛卡尔积的演化

    先附上数据. CREATE TABLE `course` ( `cno` ) NOT NULL, `cname` ) CHARACTER SET utf8 NOT NULL, `ctime` ) NO ...

  5. python实现简易数据库之二——单表查询和top N实现

    上一篇中,介绍了我们的存储和索引建立过程,这篇将介绍SQL查询.单表查询和TOPN实现. 一.SQL解析 正规的sql解析是用语法分析器,但是我找了好久,只知道可以用YACC.BISON等,sqlit ...

  6. oracle 基础SQL语句 多表查询 子查询 分页查询 合并查询 分组查询 group by having order by

    select语句学习 . 创建表 create table user(user varchar2(20), id int); . 查看执行某条命令花费的时间 set timing on: . 查看表的 ...

  7. SQL Fundamentals || 多表查询(内连接,外连接(LEFT|RIGHT|FULL OUTER JOIN),自身关联,ON,USING,集合运算UNION)

    SQL Fundamentals || Oracle SQL语言 一.多表查询基本语法 在进行多表连接查询的时候,由于数据库内部的处理机制,会产生一些“无用”的数据,而这些数据就称为笛卡尔积. 多表查 ...

  8. SQL总结 连表查询

    连接查询包括合并.内连接.外连接和交叉连接,如果涉及多表查询,了解这些连接的特点很重要. 只有真正了解它们之间的区别,才能正确使用. 1.Union UNION 操作符用于合并两个或多个 SELECT ...

  9. sql语句-单表查询

    一:单表查询 CREATE TABLE `Score`( `s_id` ), `c_id` ), `s_score` ), PRIMARY KEY(`s_id`,`c_id`) ); ); ); ); ...

随机推荐

  1. 明天软软onsite

    现在在飞机上,还有1.5小时到达.买了网络包,速度不错.今年上半年第三次飞西雅图,过几天也许还有第四次... 今天群主FB加面系统设计非常顺利,祝他拿到大包裹,也希望拿到以后发大红包,这回我一定不能错 ...

  2. 嵌入式开发之zynqMp ---Zynq UltraScale+ MPSoC 图像编码板zcu102

    1.1 xilinx zynqMp 架构 1.1.1 16nm 级别工艺 Zynq UltraScale+  MPSoC架构 Xilinx新一代Zynq针对控制.图像和网络应用推出了差异化的产品系,这 ...

  3. Houdini技术体系 基础管线(二) :Heightfiled与UE4的无缝导入以及对World Composition的支持

    Authored by TraceYang 前言    传统的制作做比较真实大世界3D关卡地形时,通常的采用的方式是把HeightMap和SplatMap(Layer Mask)导入到引擎的地形系统里 ...

  4. SpringBoot系统列 3 - 多线程数据处理(ThreadPoolTaskExecutor、DruidDataSource)

    在上篇文章的基础上进行改造: package com.hello.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; impo ...

  5. MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report e

    早上来到公司,线上的项目报错: Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionExcepti ...

  6. ES6 扩展运算符 三点(...)

    含义 扩展运算符( spread )是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. console.log(...[, , ]) // 1 2 3 conso ...

  7. Piggy-Bank 完全背包

    来源hdu1114 Problem Description Before ACM can do anything, a budget must be prepared and the necessar ...

  8. axios+post方法提交formdata步骤详解

    遇到的问题 :怎么看自己发送的格式和后台发送的格式 参考 http://www.php.cn/js-tutorial-396014.html https://blog.csdn.net/qq73705 ...

  9. laravel安装一直报错

    laravel安装一直报错 原因: 1.找到php版本是否对应 2.缺少第三方扩展库vendor 需要composer update 解决链接:https://learnku.com/docs/lar ...

  10. 解决ssh出现"Write failed: Broken pipe"问题

    用 ssh 命令连接服务器之后,如果一段时间不操作,再次进入 Terminal 时会有一段时间没有响应,然后就出现错误提示: Write failed: Broken pipe 只能重新用 ssh 命 ...