1:等值连接
迪卡尔集连接
select ename, a.deptno as a_deptno,b.deptno as b_deptno ,b.dname as 部门
from emp a, dept b
等值连接
select ename, a.deptno as a_deptno,b.deptno as b_deptno ,b.dname as 部门
from emp a, dept b
where a.deptno = b.deptno;
2:非等值连接,在emp表和salgrade表中查找员工的姓名,工资,等级,工资上线,工资下线
select ename as 姓名, sal as 工资, grade as 工资等级,losal as 工资上线,hisal as 工资下线
from emp, salgrade
where sal between losal and hisal;
3:外连
右外连
select e.ename, d.dname, e.deptno
from emp e,dept d
where e.deptno = d.deptno(+);
左外连与右外连相反
以hr登陆查询表employees 和departments 表
select first_name as 姓名, department_name as 部门名称, d.department_id as 部门编号
from employees e, departments d
where e.department_id= d.department_id(+) ;
4:自连:在同一个表中查询每个员工及上司的工号和姓名
select a.empno as 员工编号, a.ename as 员工姓名, a.mgr as 上司的员工编号, b.ename as 上司姓名
from emp a, emp b
where a.mgr = b.empno;
5:sql99
交叉连接 cross join------相当于迪卡尔集
select e.ename,d.dname
from emp e cross join dept d;
自然连接 natural join------相当等值连接
select e.ename, d.dname
from emp e natural join dept d;
using子句-----使用同名列查询
select e.ename, d.dname
from emp e join dept d
using (deptno);
on子句 ------当列名不同时用on子句
用on查询两张表
select e.ename, d.dname
from emp e join dept d
on e.deptno = d.deptno;
用on查询多张表
select e.ename, d.dname
from emp e join dept d
on e.deptno = d.deptno
join 第三个表
on 列1 = 列2;
内连接(Inner join)-------内连接只返回满足连接条件的数据
select employee_id, last_name, salary, department_id, department_name
from employees inner join departments using(department_id);
左外连
select employee_id, last_name, salary, department_id, department_name
from employees left join departments using(department_id);
右外连
select employee_id, last_name, salary, department_id, department_name
from employees right join departments using(department_id);
满外连
select employee_id, last_name, salary, department_id, department_name
from employees full outer join departments using(department_id);
子查询------------
查找出工资比scott高的人
select ename, sal from emp
where sal>
(select sal from emp where ename='SCOTT');
查找那些人和scott相同职位的人
select ename, job from emp
where job=
(select job from emp where ename='SCOTT')
and ename <> 'SCOTT';
any的用法 < any意味着小于最大、> any大于最小
select empno, ename, sal, job
from emp
where sal<any(select sal from emp where job='SALESMAN');
all的用法 < all:小于所有,即小于最小、> all:大于所有,即大于最大
select empno, ename, sal, job
from emp
where sal<all(select sal from emp where job='SALESMAN');
分享到:
相关推荐
oracle sql 多表连接和子查询 oracle sql 多表连接和子查询
Oracle数据库中的多表连接是数据库...通过这些练习,我们能够掌握Oracle中的多表连接、子查询、聚合函数如`COUNT()`和`AVG()`,以及时间比较和条件过滤等高级查询技术。这些技能对于理解和处理复杂数据库查询至关重要。
### Oracle 表连接和子查询实例解析 #### 一、最大薪资部门的员工信息 **SQL语句**: ```sql SELECT ename, sal FROM emp JOIN (SELECT MAX(sal) max_sal, deptno FROM emp GROUP BY deptno) t ON (emp.sal = t....
在Oracle数据库系统中,多表连接与子查询是SQL查询中的关键概念,它们允许用户从多个相关表中获取复杂的数据信息。以下是对这些概念的详细解释: 1. **多表连接**: - **等值连接(Equijoin)**:这是最基本的连接...
开发者可以使用其他查询方式,例如使用子查询或 EXISTS 语句来替代多表连接查询。 6. 优化数据统计 数据统计是数据库性能的关键。开发者可以使用不同的统计方法,例如使用索引、分区表、物化视图等来提高数据统计...
在Oracle中,连接查询和子查询以及存储过程与触发器是数据库管理与开发中的核心概念,下面将对这些主题进行深入讲解。 首先,让我们探讨**连接查询**。在数据库操作中,连接查询用于合并两个或更多表的数据,根据...
oracle select group 子查询 表连接
本文将详细介绍 Oracle SQL 语句多表关联查询的知识点,包括字符串和数字的比较、分组查询、HAVING 子句、查询顺序、Oracle 中的伪列、子查询和表连接等。 一、字符串和数字的比较 在 Oracle 中,字符串和数字可以...
在Oracle中,表连接和子查询是两种关键的查询技术,用于从多个表中获取数据和执行复杂的逻辑。 首先,我们来看看表连接。表连接允许我们将两个或多个相关表的数据合并在一起,以便在一个查询中同时获取多个表的信息...
本篇将深入探讨Oracle中的多表查询技术,包括基本概念、联接类型、子查询以及高级查询技巧。 一、基本概念 1. 表关系:在数据库设计中,表与表之间可能存在一对一、一对多、多对多的关系。这些关系决定了我们需要...
4. **子查询与连接的比较**:在某些情况下,子查询可能比连接更高效,反之亦然。文章可能比较了两者在不同场景下的性能表现。 5. **并行查询**:Oracle支持并行执行查询,这可以在大型数据集上提高性能。不过,过度...
查询可以是简单的SELECT语句,也可以是复杂的联接、子查询等。 5. **处理查询结果**:发送SQL语句后,可以使用“接收数据行”命令获取查询结果集的一行数据,再通过“数据列数目”和“数据列值”等命令获取列信息和...
Oracle多表查询是数据库操作中常见且重要的技能,特别是在处理涉及多个数据源的复杂查询时。多表查询允许用户从两个或更多个表中合并数据,以获取更全面的信息。以下将详细介绍多表查询的基本概念、操作方法以及注意...
在Oracle数据库中,多表关联的UPDATE语句用于更新一个表中的数据,这些数据依赖于另一个或多个表的记录。这种操作在数据整合、错误修正或者数据同步时非常常见。以下我们将详细探讨如何使用不同方式执行多表关联的...
例如,如果存在一个学院表TEST_DEP,包含DW_NAME、DW_CODE、YEAR和ADDR字段,我们可以用子查询来连接教师表和学院表,统计不同学院的教师信息。以下是一个例子: ```sql SELECT T1.DW_NAME, COUNT(T1.DW_NAME) AS...
虽然这些未在标题和描述中明确提及,但它们是进行高效查询不可或缺的一部分,通常会与多表查询和子查询结合使用。 总的来说,“ORACLE-select-query.rar”提供的资料深入浅出地介绍了Oracle数据库中的查询技巧,...
- **简单连接**(JOIN):连接两个或更多表,没有特定连接条件。 - **内连接**(INNER JOIN):只返回两个表中匹配的行。 - **外连接**(OUTER JOIN): - **左外连接**(LEFT JOIN):返回所有左表的行,即使右表...
* 子查询可以与其他查询技术结合使用,例如:连接、子查询、视图等。 Oracle子查询是SQL查询语言中的一种重要技术,可以帮助开发者解决复杂的查询问题。但是,子查询也需要遵守一定的语法和规则,以避免出现错误和...
- 分解复合子查询:大型子查询可以分解成多个小的子查询,分别处理,然后组合结果。 6. **案例分析**: - 查找销售最高和最低的产品:通过子查询找出销售额最高的产品ID,再在外层查询中找出该ID对应的产品详情。...