请关注新浪微博 账号:大数据进行时(http://weibo.com/u/3272022684)
1、order by
select name,sal,comm
from emp
order by 3; -- comm
2、空值排序、或者空值排在前面或后面
使用 case 来标记
select ename,sal,common
from(
select ename,sal,common,
case when common is null then 0
else 1
end as is_null
from emp
) x
order by is_null,comm;
-------------------------------------------
1、记录集的叠加
UNION ALL
把多个表的行组合到一起;这些表不必具有相同的关键字,但是,他们对应列的数据类型应相同。
select ename as ename_and_dname , deptno
from emp
where deptno = 10
union all
select '----------' , null
union all
select dname , deptno
from dept
所有SELECT列表中的项的数目和类型必须要匹配。
UNION ALL 包括了重复的数据;如果要把重复的去掉,用UNION
通常:查询中使用UNION ALL,不使用UNION
2、从一个表中查找另一个表中没有的值(差集)
ORACLE支持差集操作:MINUS
select deptno from dept
minus
select deptno from emp;
如果不支持差集操作,使用如下SQL
select deptno from dept
where deptno not in (select deptno from emp);
3、在一个表中查找与其他表不匹配的记录
如:查找没有职员的部门
select d.*
from dept d left out join emp e on(d.deptno = e.deptno) --左外连接,以左表为标准
where e.deptno is null;
oracle:
select d.*
from dept d ,emp e
where d.deptno = e.deptno(+)
and e.deptno is null;
4、查询中增加连接而不影响其他连接
查询员工的姓名、部门名、奖励日期(来自于奖励表)
如果使用where 语句,两个等值连接条件,只能获取有奖励的员工信息。
如下:
select e.name,d.loc,eb.received
from emp e, dept d, emp_bonus eb
where e.deptno = d.deptno
and e.empno = eb.empno;
解决此类问题,
(1)使用标量子查询:
select e.name, d.loc ,
(select eb.received from emp_bonus eb where eb.empno = e.empno) as received
from emp e,dept d
where e.deptno = d.deptno;
(2)使用左外连接
select e.name,d.loc,eb.received
from emp e join dept d
on (e.deptno = d.deptno)
left out join emp_bonus eb
on(e.empno = eb.empno);
oracle:
select e.name ,d.loc,eb.received
from emp e, dept d ,emp_bonus eb
where e.deptno = d.deptno
and e.empno = eb.empno(+);
5、检测两个表中是否有相同的数据
也就是求交集;主要使用 UNION ALL 和 MINUS (oracle)
比如有表 EMP 和 它的视图 V
步骤如下:
(1)找出EMP中存在而V中没有的行 (MINUS)
(2)合并(UNION ALL)在V中存在而EMP中没有的行
如果EMP和V是相等的,那么将没有数据返回;否则返回有差异的行。
可以先查询基数是否相同:
select count(*) from emp
union
select count(*) from v
因为UNION会筛选重复的行,所以,如果两个表的基数一样,那么只会返回一行,否则返回两行。
(也可以使用UNION ALL,看基数是否一样)
6、消除笛卡尔积
使用 n-1 规则;n 为from 子句中表的数量。
分享到:
相关推荐
本文将详细介绍SQL的基础知识,包括SELECT语句的用法、DISTINCT关键词以及TOP子句的概念与应用。 首先,关于SELECT语句,它是SQL中用来从数据库表中选择数据的最重要的命令之一。SELECT语句的基本用法是从表中选取...
计算机后端-PHP视频教程. php与mysql基础-sql基础1-数据库概念.wmv
本书是畅销书《SQL基础教程》第2版,介绍了关系数据库以及用来操作关系数据库的SQL语言的使用方法。书中通过丰富的图示、大量示例程序和详实的操作步骤说明,让读者循序渐进地掌握SQL的基础知识和使用技巧,切实提高...
《SQL Server 2012 T-SQL基础教程——源码与示例数据库》 本教程专注于Microsoft SQL Server 2012中的Transact-SQL(T-SQL)语言,这是SQL Server的主要查询语言,用于数据操作、查询、存储过程和数据库对象的编程...
本教程“SQL基础教程-Mick-示例程序&习题答案”由Mick编写,旨在为初学者提供一个实用的学习资源,帮助他们快速掌握SQL的核心概念和操作。 1. SQL基础知识: - 数据类型:SQL支持多种数据类型,如整数(INT)、...
SQL语句基础教程旨在帮助新手和需要复习SQL的资料仓储业界老将,学习SQL基础知识和语法。 SQL指令 -------- SQL指令是SQL语言的基础,用于储存、读取、处理数据库中的资料。常用的SQL指令包括: * SELECT:从...
通过学习这个“SQL基础教程”,你将能够熟练地掌握SQL的基本操作,包括查询、插入、更新和删除数据,创建和管理数据库结构,以及使用视图和存储过程。在实践中不断练习,你将能够更有效地管理和利用数据库资源。
本教程基于“SQL基础教程(第2版)”的高清扫描版,将带你深入理解和掌握SQL的基本概念和核心技能。 首先,我们要理解SQL的主要功能。SQL可以用来创建数据库、定义数据结构、插入和更新数据、查询数据以及管理...
《SQL基础教程(第二版)_思维导图》是由日本作者MICK编写的一本关于SQL学习的经典著作,虽然这里无法提供完整的书籍内容,但通过提供的思维导图,我们可以深入探讨SQL的基础知识及其在数据库管理中的重要性。...
本教程"SQL基础 (ppt)"是针对初学者设计的,旨在帮助你从零开始掌握SQL的基本概念和常用操作。 首先,我们从01.SQL命令基础.ppt开始。这部分主要介绍了SQL语言的基础构成,包括如何创建数据库、数据表以及对数据的...
SQL基础是每个数据库管理员、数据分析师和开发者的必备技能。本文将深入讲解SQL的基础知识,包括数据库的基本操作,如创建、查询、更新和删除数据。 首先,我们从创建数据库开始。在SQL中,可以使用`CREATE ...
SQL基础.sql SQL基础知识
数据库SQL基础知识是IT领域中至关重要的一环,尤其对于初学者来说,掌握好SQL语言是进入数据管理和分析世界的敲门砖。SQL(Structured Query Language),结构化查询语言,是用于管理和处理关系型数据库的标准语言。...
这个"SQL基础教程PPT"显然是一份详细的教育资源,旨在帮助初学者理解并掌握SQL的基础知识。以下将对教程可能涵盖的内容进行详细讲解。 1. **SQL简介**:首先,教程可能会介绍SQL的起源、发展以及其在现代信息技术中...
数据库 SQL Server 基础及使用
SQL基础学习代码,MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database ...
SQL(Structured Query Language...总结,SQL是现代数据管理的核心,理解和掌握SQL基础对于任何涉及数据处理的开发者来说都是至关重要的。通过不断实践和学习,可以充分利用SQL的强大功能,实现高效的数据管理和分析。
### SQL基础教程知识点详解 #### 一、SQL简介 **SQL**(Structured Query Language),即结构化查询语言,是访问和处理数据库的标准计算机语言。它不仅被广泛应用于各种数据库管理系统中,如MS Access、DB2、...