`

Oracle数据库查询指令

 
阅读更多

20140920

 

单表查询

-- 查询************************************************************************************************************

-- 使用scott用户登录

 

-- 查看emp表

 

desc emp

 

--查看所有数据

select * from emp;

 

--查看指定数据,按顺序写

select empno,ename from emp;

 

-- 去重复,如果ename和job都相同,则只显示一个

select distinct ename,job from emp;

 

-- 查询某项的其他项

select job,empno from emp where ename = 'SMITH';

 

-- 查询部门编号为 10  和  20 的所有员工

select * from emp where deptno = 10 or deptno = 20;

 

-- 查询部门标号不为30的其余所有员工

select * from emp where deptno != 30;

 

-- 查询薪水在2000-2500之间的所有员工

select * from emp where sal>2000 and sal<=2500;

 

-- 查询入职日期在1981年11月17日前的

select *from emp where hiredate<'17-11月 -81'; 

 

-- 查询名字中包括B K 的(模糊查询)  %表示可以是任意内容

select * from emp where ename like '%B%K%';

 

-- 查询名字中第三个字母为O 的名字  _ 表示任意一个内容

select * from emp where ename like '__O%';

 

-- 查询号码中包含7369和1234的用户。

select * from rmp where empno in (7369,1234);

 

-- 查询没有上司的人。XXX is null

select * from emp where mgr is null;

 

-- 查询的时候使用别名显示菜单,其中as 可以省略

select empno as 编号,ename as 姓名,sal 薪水from emp where ename like '%K%';

 

-- 查询SMITH的年薪

select empno,ename,sal*12 from emp where ename = 'SMITH';

 

--  查询以J开头并且    薪水大于500或者为MANEGER的用户

select empno,ename,sal from emp where ename like 'J%' and (sal>500 or JOB = 'MANAGER');

 

-- 将所有数据按照薪水的高低排序,如果遇到了相同的,就看主键的大小来排序

-- 从小到大

select * from emp order by sal;

select * from emp order by sal asc;

 

-- 从大到小

select * from emp order by sal desc;

 

-- 统计所有数据中的编号,姓名,年薪(包含奖金)

-- nvl(comm,0) 如果comm值为null,则赋予其 0 。

select empno,ename,(sal+nvl(comm,0))*13 年薪 from emp;

 

-- 更据上面的年薪的别名排序

select empno,ename,(sal+nvl(comm,0))*13 年薪 from emp order by 年薪 desc;

 

 

 

 

-- 分组函数 max,min,avg,sum,count ****************************

-- 查询出月薪最高的和月薪最低的员工的编号,姓名,月薪

select empno,ename,sal from emp where sal = (select max(sal) from emp) or sal = (select min(sal) from emp) ;

 

-- 计算所有员工的平均月薪

select sum(sal)/count(empno) from emp;

select avg(sal) from emp;

 

-- 显示每个部门的平均工资和最高工资

-- group by

-- 先查询出分组条件

select deptno 部门,avg(sal) 平均工资,max(sal) 最高工资 from emp group by deptno ;

-- oracle 另一种写法:

select avg(sal) 平均工资,max(sal) 最高工资 from emp group by deptno ;

-- 按照部门数字从小到大显示

select deptno 部门,avg(sal) 平均工资,max(sal) 最高工资 from emp group by deptno order by deptno;

 

-- 显示每个部门的每个岗位的平均工资和最低工资

select deptno 部门,job 岗位,avg(sal) 平均工资,max(sal) 最高工资 from emp group by deptno,job order by deptno;

-- 加个总数

select deptno 部门,job 岗位,avg(sal) 平均工资,max(sal) 最高工资,count(sal) 人数 from emp group by deptno,job order by deptno;

 

-- 显示部门平均工资低于2000的部门的平均工资(分组之后再写条件用having,且不可使用别名)

select deptno 部门,avg(sal) 平均工资 from emp group by deptno having avg(sal)<2000;

 

-- 不能按下面的方式写

select deptno 部门,avg(sal) 平均工资 from emp group by deptno having 平均工资<2000;

 

-- where 写在group by 前面,oeder by 写在最后

select deptno 部门,avg(sal) 平均工资 from emp where deptno!=30  group by deptno ;

 

select deptno 部门,avg(sal) 平均工资 from emp where deptno!=10  group by deptno having avg(sal)>2000;

 

select deptno 部门,avg(sal) 平均工资 from emp where deptno!=30  group by deptno having avg(sal)>2000 order by deptno;

 

多表查询

 

--***************多表查询**********************************************************************************************

--查询部门表

select * from dept;

 

-- 显示员工的名字和所在部门的名字,给表加一个别名(笛卡尔集)

select e.ename,d.dname from emp e,dept d where e.deptno = d.deptno;

 

-- 只显示部门为10的

select e.ename,d.dname from emp e,dept d where e.deptno = d.deptno and e.deptno = 10;

 

-- 显示每个员工的工资以及对应的级别

select e.ename,e.sal,s.grade from emp e,salgrade s where e.sal between s.losal and s.hisal;

 

-- 显示员工名字,工资,所在部门名字,并且按部门号码排序

select e.ename,d.dname,e.sal from emp e,dept d where e.deptno = d.deptno order by e.deptno;

 

-- 查询SMITH的上司

select mgr,ename from emp where empno = (select mgr from emp where ename = 'SMITH');

       -- 自链接查询:将一张表做为两张表查询

select e1.mgr,e2.ename from emp e1, emp e2 where e1.mgr = e2.empno and e1.ename = 'SMITH';

 

       -- 查询部门10工作相同的员工信息

select e1.* from emp e1,emp e2 where e1.job = e2.job and e2.deptno = 10;

 

select * from emp where job in (select job from emp where deptno = 10);-- 多个结果用in

 

-- 显示工资比部门30最高的人高的员工信息

select * from emp where sal>(select max(sal) from emp where deptno = 30);

select * from emp where sal>all(select sal from emp where deptno = 30);

 

-- 查询部分数据

 

--伪列 ROWNUM,ROWID

select ROWNUM,ename from (select ROWNUM r,ename from emp where ROWNUM<=10) where r>5;

select * from (select ROWNUM r,ename from emp where ROWNUM<=10) where r>5;

 

-- 合并两次的结果

 

   -- union 对于多个表的结果合并

select * from emp where job = 'SALESMAN' union select * from emp where deptno  = 10;

select * from emp where job = 'SALESMAN'or deptno  = 10;

 

       -- union all 对于多个表的结果合并,保留重复

select * from emp where job = 'SALESMAN' union all select * from emp where deptno  = 10;

 

-- 取交集

 

   --intersect

select * from emp where job = 'SALESMAN' intersect select * from emp where sal>1500;

 

-- 得到在第一个结果集中存在但是第二个中不存在的数据

   --minus

select * from emp where job = 'SALESMAN' minus select * from emp where sal>1500;    

 

-- 字符串操作函数,数字操作函数,类型转换函数

 

 

 

--*******************************建表**************************************************************************

-- 用户表: BlogUsers

   -- userID

   -- userName

   -- userPassword 

   

   -- userSex

   -- userDate

   -- userAge

   -- userEmail

   -- userPhoneNumber

   

create table BlogUsers(userID number (10) primary key not null,userName varchar2(20),userPassword varchar2(30));  

 

-- 文章表 Articles

   -- articleID

   -- articleTitle

   -- articleContent

   -- articleTime

   -- userID 发表者

create table Articles(articleID number (10) primary key not null,articleTitle varchar2(20),articleTime DATE,articleContent varchar2(4000),userID number(10));

 

insert into articles values(123,'name','1-1月 1981','text',1234);

insert into articles values(124,'name',TO_DATE('2014-9-22','yyyy-mm-dd'),'text',1234);

-- 调节显示效果

set linesize 100;

 

-- 建立引用

alter table ARTICLES add constraint USERID foreign key (USERID) references BLOGUSERS (USERID);

    

 

-- 删除用户,如果需要同时删除文章,则需要更改级联关系。C。。。

 

0
1
分享到:
评论
1 楼 zxc3375 2014-09-24  
第一天用oracle也不看这样的文章了

相关推荐

    oracle数据库常用操作指令

    针对Oracle数据库,常用的操作指令可以分为数据控制语句(DML)、数据定义语句(DDL)以及查询语句(SELECT)三个部分。 首先,数据控制语句(DML)部分包括插入(INSERT)、删除(DELETE)和更新(UPDATE)等基本...

    Oracle数据库命令 个人总结

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

    Oracle数据库详细讲解

    “sqlplusscott/tiger”这一指令表示使用SQL*Plus工具登录Oracle数据库。SQL*Plus是Oracle提供的一个强大的交互式工具,可用于执行SQL语句、脚本,查看数据库对象,以及进行简单的数据管理和查询操作。通过SQL*Plus...

    oracle 数据库常用命令大全

    以上是Oracle数据库的一些基本操作和管理命令,它们涵盖了数据库启动、配置、连接、日期格式设置以及查询优化等多个方面。对于数据库管理员和开发人员来说,熟悉并掌握这些命令是日常工作的基础。在实际应用中,还...

    Oracle数据库备份恢复工具

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其稳定性和安全性深受企业信赖。为了确保数据的安全,定期备份和适时恢复是至关重要的环节。本工具"Oracle数据库备份恢复工具"是基于MFC(Microsoft ...

    基于RMAN的Oracle数据库备份与恢复机制.pdf

    基于RMAN的Oracle数据库备份与恢复机制.pdf 本文档详细介绍了基于RMAN的Oracle数据库备份与恢复机制。Oracle Recovery Manager(RMAN)是Oracle公司提供的一种专门备份工具,能够实现数据库定制备份、自动备份等...

    oracle数据库自动备份脚本带说明

    Oracle数据库是企业级广泛应用的关系型数据库管理系统,为了确保数据的安全性和可恢复性,定期进行数据库备份至关重要。"oracle数据库自动备份脚本带说明"的标题表明这是一个关于如何自动化执行Oracle数据库备份的...

    Oracle数据库导出文本的方法

    Oracle 数据库导出文本的方法 Oracle 数据库导出文本的方法是 Oracle 数据库的入门级应用,旨在介绍如何将 Oracle 数据库中的数据导出到文本文件中。在实际应用中,我们经常需要将查询结果导出到文本文件中,以便于...

    如何通过txt文件批量导入数据到oracle数据库

    在IT行业中,数据库管理是至关重要的任务之一,Oracle数据库作为全球广泛使用的数据库系统,经常需要处理大量的数据导入工作。在面对存储着大量记录的文本文件(如TXT)时,手动一条条输入数据显然是低效且易出错的...

    Oracle数据库11gx64位安装包 Linux版

    ### Oracle数据库11g x64位安装包Linux版知识点详解 #### 一、Oracle数据库简介 Oracle数据库是由美国Oracle公司开发的一款关系型数据库管理系统,是目前市场上最流行的企业级数据库之一。它提供了强大的数据管理和...

    JSp+oracle数据库应用系统开发与实例

    《JSP+Oracle数据库应用系统开发与实例》是一本深入探讨如何使用JSP技术与Oracle数据库结合构建实际应用系统的书籍。这本书通过丰富的实例,详细介绍了如何利用Java Server Pages(JSP)来处理动态网页,同时结合...

    Oracle数据库自动备份脚本FOR WIN.rar

    Oracle数据库在企业环境中起着至关重要的作用,存储了大量的关键业务数据。为了确保数据的安全性和可恢复性,定期备份是必不可少的。"Oracle数据库自动备份脚本FOR WIN.rar" 是一个针对Windows环境设计的自动化备份...

    DOC命令操作oracle数据库

    在Oracle数据库管理系统中,`doc`命令可能指的是文档或指令集,用于执行对数据库的一系列基本操作。这里我们将详细探讨如何使用这些命令来操作Oracle数据库。 首先,要查询已知表的全部数据,可以使用`SELECT * ...

    Oracle数据库的导出与导入操作

    2. **查询实例名称**:利用“databaseconfigurationassistant”查询当前Oracle数据库的实例名称。 3. **设置环境变量**:在命令行中输入“set oracle_sid=实例名称”,将环境变量oracle_sid设置为目标实例名称。 4. ...

    VC_中连接Oracle数据库的几种方法

    ### VC_中连接Oracle数据库的几种方法 #### 引言 随着信息技术的不断发展,数据库管理系统在各类信息系统中的地位越来越重要。Oracle数据库作为一种广泛使用的数据库系统,以其强大的功能、优秀的性能及高安全性...

    jsp连接oracle数据库代码

    ### JSP连接Oracle数据库知识点详解 #### 一、前言 在Web开发中,Java Server Pages (JSP) 是一种广泛使用的服务器端脚本技术,它允许开发者将动态内容嵌入到HTML页面中。JSP可以与各种类型的数据库进行交互,以...

    Oracle数据库表空间巡检指令

    ### Oracle数据库表空间巡检指令知识点详解 #### 一、Oracle数据库表空间巡检概述 在Oracle数据库管理中,表空间巡检是一项重要的维护工作,它可以帮助DBA(数据库管理员)及时发现并解决表空间使用情况中的问题。...

    oracle数据库介绍.ppt

    Oracle数据库介绍 Oracle数据库是当前流行的大型关系型数据库管理系统,具有高效、安全、可靠的特点。下面将从数据库的基本概念、数据库管理系统、数据库管理员、数据库系统等几个方面对Oracle数据库进行详细的介绍...

    Oracle数据库安装配置

    ### Oracle数据库安装配置 #### 了解Oracle数据库体系结构 Oracle数据库是业界领先的数据库管理系统之一,其体系结构设计基于客户端/服务器技术。在这个架构中,客户端应用程序通过网络与服务器端进行通信,请求...

Global site tag (gtag.js) - Google Analytics