oracle

SqlPlus 命令


在oracle中使用sqlplus命令来操作数据库。

首先在windows下打开cmd命令窗口。

示例:sqlplus命令使用

sqlplus回车

输入用户和命令

 

 

 

示例:切换到scott用户

conn scott/tiger

 

 

在scott 用户默认提供有一张emp雇员表,我们使用select语句查询一下。

select * from emp;

 

为了格式化显示我们使用一下命令:

set linesize 300 –表示设置行的尺寸

set pagesize 30 –表示设置每页显示多少记录

 

 

 

服务的配置

在win 的服务中,把Oracle相关的服务自动设置为手动。

oracle服务的开启

监听服务OracleOraDb11g_home1TNSListener

实例服务OracleServiceORAC

 

 

开启监听和实例服务之后我们就可以正常使用sqlplus来操作oracle了。

基本的SQL语句示例(增删改查)

select * from emp;

select * from dept;

 

 

示例:查询所有雇员的雇员编号、雇员姓名、薪资、职位。

select empno,ename,sal,job

from emp;

 

 

示例:查询所有雇员的雇员编号、雇员姓名、年薪。

select empno,ename,sal*12

from emp;

 

 

示例:列出emp表中所有的部门编号(dis)。

select distinct deptno

from emp;

 

 

示例:列出emp表中所有的职位及对应的部门编号。

select distinct job,deptno

from emp;

 

 

切换用户、虚拟表dual

切换用户时,sys用户必须使用dba身份登录

conn sys/change_on_install as sysdba

conn system/manager

conn scott/tiger

conn sh/sh

 

 

 

 

虚拟表dual

now() –MySQL日期(函数)

sysdate –Oracle日期(伪列)

select sysdate from emp;(不用虚拟表,不方便)

select sysdate from dual;

 

 

 

 

 

接下来的内容要求有MySql基础。

练习题目:

题目1:查询每个部门的平均薪水,之后显示部门平均薪水>2000的部门编号和其平均薪水。

select avg(sal) from emp group by deptno;

 

select deptno,avg(sal)

from emp

group by deptno having avg(sal)>2000;

 

 

 

 

 

题目2:描述SQL语句:select deptno,avg(sal) from emp where sal>2000 group by deptno;

用文字描述,注意:薪资大于2000的雇员筛选出,对筛选出的数据再分组。

 

 

题目2扩展:查询在平均薪水大于2000的部门中,薪水大于三千的员工所在部门的部门编号,部门平均薪水。

select deptno,avg(sal)

from emp

group by deptno having avg(sal)>2000;

 

select deptno,avg(sal)

from emp

where deptno in(select deptno

         from emp

         group by deptno having avg(sal)>2000)

         and sal >3000

group by deptno;

 

 

 

 

 

 

 

 

 

 

其实与以下语句是等价的

select deptno,avg(sal)

from emp

where sal>3000

group by deptno having avg(sal)>2000;

 

 

 

 

题目3:查询每个部门的薪水和,再计算出所有部门的薪水的平均值。

select sum(sal)

from emp

group by deptno;

 

select deptno,sum(sal),avg(sal)

from emp

group by deptno;

posted on 2017-11-24 10:24  小闵Y  阅读(178)  评论(0编辑  收藏  举报