`

ORACLE数据库总结03

 
阅读更多

字段的别名

当SELECT子句中使用了函数或者表达式

时,结果集该字段的名字就是这个函数

或者表达式,可读性差,这时候可以使用

别名。

当别名中希望出现空格或者区分大小写时,

可以使用双引号括起来

SELECT ename,sal*12 "Annual Salary"

FROM emp

 

查询职员表中薪水低于2000元的职员信息

 

查询职员表中不属于部门 10 的员工信息 (<>)

 

查询职员表中在1982年1月1号以后入职的职员信息

 

 

AND和OR连接多个条件

查看工资高于1000的CLERK和SALESMAN

SELECT ename,job,sal

FROM emp

WHERE sal>1000

AND (job='SALESMAN'

OR job='CLERK')

 

AND的优先级高于OR,所以要想提高OR的

优先级,需要使用括号。

 

 

LIKE关键字用于添加模糊匹配字符串

的条件,支持两个通配符:

“_”:表示任意一个字符

“%”:表示任意个字符(0-多个)

 

查看第二个字母是A并且地四个字母是T的?

SELECT ename,sal,job

FROM emp

WHERE ename LIKE '_A_T%'

 

 

IN(list),NOT IN(list)

判断是否在列表中或不在列表中

IN常用在子查询的判断中使用

 

SELECT ename, job 

FROM emp  

WHERE 

 job NOT IN ('MANAGER', 'CLERK')

 

BETWEEN... AND ...

判断在两者之间

查看工资在1500到3000之间(包含)

SELECT ename, sal 

FROM emp  

WHERE 

 sal BETWEEN 1500 AND 3000

 

 

ANY(list),ALL(list)

当需要判断>,>=,<,<=一个别表中的

数据时,要搭配ANY与ALL使用

通常判断的内容不是确定值,而是用在

判断子查询的结果。

>ANY:大于最小的

<ANY:小于最大的

>ALL:大于最大的

<ALL:小于最小的

SELECT empno, ename, job, sal, deptno

FROM emp

WHERE sal > ANY (3500,4000,4500);

 

DISTINCT可以将结果集中指定字段

值重复的记录去除,DISTINCT应当

紧跟在SELECT之后。

 

查看公司有哪些职位?

SELECT DISTINCT job

FROM emp

 

 

DISTINCT对多个字段去重

去重原则:多字段值的组合没有重复

SELECT DISTINCT job,deptno

FROM emp

 

结果集排序

ORDER BY子句

ORDER BY可以根据其后指定的字段按照

升序或降序进行排序

ORDER BY子句只能写在SELECT语句的

最后一个子句上。

 

查看公司工资的排名

SELECT ename,sal,deptno

FROM emp

ORDER BY sal DESC

 

多字段排序时有优先级,ORDER BY

会按照第一个字段排序结果集,当第一个

字段的值有重复的时,才会按照第二个字段

排序这几条记录,以此类推。

SELECT ename,sal,deptno

FROM emp

ORDER BY deptno,sal DESC

 

排序的字段中若含有NULL值,NULL

被认为是最大值

SELECT ename,comm

FROM emp

ORDER BY comm DESC

 

 

 

 

聚合函数

用来统计结果集指定字段的值

 

MAX,MIN:求最大值与最小值

 

查看公司的最高工资与最低工资?

SELECT MAX(sal),MIN(sal)

FROM emp

 

查看公司平均工资与工资总和?

SELECT AVG(sal),SUM(sal)

FROM emp

 

聚合函数忽略NULL值

SELECT NVL(comm,0)

FROM emp

 

SELECT AVG(NVL(comm,0)),SUM(comm)

FROM emp

 

COUNT函数

COUNT统计的是指定字段不为NULL的记录

总数

 

查看公司总共多少人?

SELECT COUNT(ename)

FROM emp

 

通常可是使用COUNT(*)统计记录数

 

查看公司职位是"MANAGER"的人数?

SELECT COUNT(*)

FROM emp

WHERE job='MANAGER'

 

查看公司中CLERK的平均工资是多少?

SELECT AVG(sal)

FROM emp

WHERE job='CLERK'

 

 

分组

GROUP BY子句

GROUP BY子句可以将查询结果集按照其后

指定的字段值相同的记录划分为一组。

分组的目的是配合聚合函数作细化的统计工作

 

查看每个职位的平均工资?

SELECT AVG(sal),job

FROM emp

GROUP BY job

 

当SELECT子句中使用了聚合函数,那么

凡是不在聚合函数中的单独字段必须出现

在GROUP BY子句中,反过来则不是必须的

 

SELECT MAX(sal),MIN(sal),deptno

FROM emp

GROUP BY deptno

 

SELECT COUNT(*),job

FROM emp

GROUP BY job

 

查看部门的平均工资,前提是该部门的

平均工资高于2500

SELECT AVG(sal),deptno

FROM emp

WHERE AVG(sal)>2500

GROUP BY deptno

 

WHERE子句中不能使用聚合函数作为

过滤条件,原因在于过滤时机不对。

WHERE是在查询表获取结果集的过程

中对表中数据逐条过滤,以形成结果集。

聚合函数是建立在结果集基础上进行的,

所以使用聚合函数的结果过滤是在WHERE

之后进行。

 

HAVING子句

HAVING子句必须跟在GROUP BY子句之后

HAVING可以使用聚合函数作为过滤条件

HAVING决定着GROUP BY分组的取舍

 

SELECT MAX(sal),MIN(sal),deptno

FROM emp

WHERE job='MANAGER'

GROUP BY deptno

HAVING AVG(sal)>2500

ORDER BY deptno

 

SELECT sal,deptno

FROM emp

ORDER BY deptno

 

关联查询

结果集中的字段来自多张表关联查询。

 

当查询的字段在多张表中都有时,需要明确

指定字段来自那张表,表可以定义别名,来

简化SQL语句的复杂度。

 

查看每个员工的信息以及其所在部门的信息

SELECT e.ename,e.deptno,d.dname

FROM emp e,dept d

WHERE e.deptno=d.deptno

 

多表关联查询通常要添加连接条件,否则

会产生笛卡儿积,这通常是一个无意义的结果

集,并且开销巨大。

SELECT e.ename,d.dname

FROM emp e,dept d

 

过滤条件要与连接条件同时成立

查看SALES部门的员工?

SELECT e.ename,e.sal,e.job,d.dname

FROM emp e,dept d

WHERE e.deptno=d.deptno

AND d.dname = 'SALES'

 

N张表联合查询,至少要有N-1个连接条件

 

 

内链接

SELECT e.ename,d.dname

FROM emp e JOIN dept d

ON e.deptno=d.deptno

WHERE d.dname='SALES'

 

关联查询忽略不满足连接条件的记录

 

 

外连接

外连接在进行关联查询时除了可以将

满足连接条件的记录查询出来之外,还

可以将不满足连接条件的记录查询出来

外连接分为:

左外连接:以JOIN左侧的表作为驱动表

        驱动表中的数据都要显示出来,那么

        当来某条记录不满足连接条件时,那

        来自JOIN右侧表的字段全部补NULL值

右外连接:

全外连接:

 

SELECT e.ename,e.job,d.dname,d.loc

FROM emp e 

  LEFT|RIGHT|FULL OUTER JOIN 

     dept d

ON e.deptno=d.deptno

 

 

SELECT e.ename,e.job,d.dname,d.loc

FROM emp e,dept d

WHERE e.deptno(+)=d.deptno

 

自连接

自连接的设计用于解决保存性质相同的数据

但是有存在上下级关系的树状结构数据时使用

 

SELECT empno,ename,mgr

FROM emp

 

查看每个员工以及其上司的名字?

SELECT e.ename,m.ename

FROM emp e JOIN emp m

ON e.mgr=m.empno

 

查看FORD的上司是谁?

SELECT m.ename

FROM emp e JOIN emp m

ON e.mgr = m.empno

WHERE e.ename='FORD'

 

查看FORD的上司在哪个城市工作?

SELECT e.ename,m.ename,d.loc

FROM emp e,emp m,dept d

WHERE e.mgr=m.empno

AND m.deptno=d.deptno

AND e.ename='FORD'

 

内连接

SELECT e.ename,m.ename,d.loc

FROM emp e JOIN emp m

ON e.mgr=m.empno

JOIN dept d

ON m.deptno=d.deptno

WHERE e.ename='FORD'

 

查看每个员工以及其上司的名字?

SELECT e.ename,m.ename

FROM emp e JOIN emp m

ON e.mgr=m.empno

 

查看KING的下属?

SELECT e.ename

FROM emp e,emp m

WHERE e.mgr=m.empno

AND m.ename='KING'

 

 

 

 

分享到:
评论

相关推荐

    ORACLE数据库学习总结资料.pdf

    Oracle数据库学习总结资料.pdf Oracle数据库学习总结资料.pdf 是一份关于 Oracle 数据库的学习总结资料,涵盖了 Oracle 数据库的各个方面,包括 Oracle 的简介、简单查询、标量函数和算数运算、多表查询、列函数和...

    Oracle数据库总结

    Oracle 数据库总结 Oracle 数据库是甲骨文公司的一款关系数据库管理系统,是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。下面是 Oracle 数据库的总结...

    查看登录oracle数据库用户记录.docx

    "查看登录 Oracle 数据库用户记录" Oracle 数据库是一个强大的关系型数据库管理系统,提供了强大的数据存储和管理功能。为了管理和监控数据库的访问情况,需要对登录 Oracle 数据库的用户记录进行跟踪和查看。本文...

    oracle数据库日志查看方法

    ### Oracle数据库日志查看方法详解 #### 一、概述 Oracle数据库是企业级应用中广泛使用的数据库管理系统之一,为了确保数据库系统的稳定运行和快速定位问题,掌握Oracle数据库日志查看方法至关重要。本文将详细...

    Oracle数据库知识点总结 Oracle数据库架构与组件学习攻略

    Oracle数据库知识点总结 章节目录 一、Oracle数据库概述 二、Oracle数据库架构与组件 三、SQL语言基础 四、PL/SQL编程 五、数据库对象管理 六、数据备份与恢复 七、性能优化与安全管理 八、如何学习Oracle数据库 九...

    oracle数据库

    oracle数据库总结oracle数据库总结oracle数据库总结oracle数据库总结

    oracle数据库总结.sql

    oracle数据库总结

    Oracle数据库的启停

    Oracle 数据库的启停 Oracle 数据库的启停是数据库管理员的重要任务之一。启停数据库的过程可以细分为三个步骤:启动实例、挂载数据库、打开数据库。下面将详细讲解 Oracle 数据库的启停过程。 启动数据库 启动...

    ORACLE数据库设计与优化

    总结,Oracle数据库设计与优化是一个涉及多方面知识的复杂过程,包括但不限于物理结构设计、SQL优化、索引策略、存储过程使用、性能监控以及备份恢复策略。理解这些核心概念并灵活应用,将有助于构建高效、稳定且...

    labview 调用oracle数据库

    总结,LabVIEW调用Oracle数据库涉及的关键点有:使用ODBC连接数据库、构建和执行SQL命令、创建和操作数据库表。理解这些概念和步骤,将有助于在LabVIEW环境中有效地管理和操作Oracle数据库。在实际应用中,还要考虑...

    C#版Oracle数据库通用操作类

    ### C# 版 Oracle 数据库通用操作类解析 在现代软件开发中,数据库操作是必不可少的一部分,而 C# 结合 Oracle 数据库的应用尤为广泛。本文将深入探讨一个用于简化 Oracle 数据库操作的 C# 类——`ConnForOracle`。...

    Oracle数据库开发和设计规范

    本文档总结了 Oracle 数据库开发和设计规范的主要内容,包括命名约定、表名规则、存储过程规则、视图规则、索引规则、序列规则、主键规则和外键规则等。 一、命名约定 Oracle 数据库开发和设计规范中,命名约定是...

    Oracle-新建Oracle数据库并连接(图文,详细).docx

    新建Oracle数据库并连接详细教程 在这篇教程中,我们将学习如何新建Oracle数据库并连接到该数据库。该教程分为两部分:新建Oracle数据库和连接到数据库。 新建Oracle数据库 新建Oracle数据库需要使用Database ...

    Oracle数据库命令 个人总结

    "Oracle数据库命令个人总结" Oracle数据库命令个人总结是徐博文在2014年3月整理的关于Oracle数据库的命令和心得的总结。下面是从该总结中提取的重要知识点: 1. 查询数据库数据文件的基本字段信息:使用DESC DBA_...

    oracle数据库克隆总结

    ### Oracle数据库克隆总结 #### 一、Oracle数据库克隆概述 在企业级应用中,Oracle数据库因其稳定性和高效性而被广泛采用。随着业务需求的变化和技术的发展,Oracle数据库克隆成为了维护和管理数据库的一项重要...

    access数据库MDB数据文件导入oracle数据库操作步骤.pdf

    Access 数据库 MDB 数据文件导入 Oracle 数据库操作步骤 Access 数据库 MDB 文件是 Microsoft Access 应用程序的数据库文件格式,而 Oracle 数据库是关系数据库管理系统。将 Access 数据库 MDB 文件导入 Oracle ...

    oracle数据库学习总结.doc.docx

    Oracle数据库是一种广泛应用于企业级应用中的关系型数据库管理系统,由美国甲骨文公司开发。在学习Oracle数据库的过程中,我们可以从以下几个关键知识点入手: 1. **可移植性和兼容性**: Oracle数据库因其采用...

    Oracle到Mysql数据库迁移总结

    Oracle到Mysql数据库迁移总结Oracle到Mysql数据库迁移总结Oracle到Mysql数据库迁移总结Oracle到Mysql数据库迁移总结

Global site tag (gtag.js) - Google Analytics