sqlplus sys/tiger  as sysdba;

alter user scott account unlock;

用户已更改

切换用户:conn scott/tiger as sysdba;

修改密码:alter user scott indentified by tiger;

1.select语句:

select sysdate from dual;

select ename,sal*12+comm from emp;(结果是错的,如果comm为空,那么sal*12+comm整个为空)

select ename ,sal*12 year_sal from emp;

select ename||sal from emp;

select ename || 'dhfaf' from emp;

select ename || 'jfkjdk''kdjfkla' from emp;

distinct:

select distinct deptno from emp; //重复的编号去除掉

select distinct deptno,job from emp; //查询的结果会出现重复的编号和job,但deptno+job不重复

2.where:

select ename,sal,comm from emp where comm is null;

select ename,sal,comm from emp where comm is not null;

select ename,sal,comm from emp where sal in (800,1500,2000);

select ename,sal,comm from emp where sal in ('Simth','abc','ABC');

如果想查询大于2007年2月25日以后入职的员工信息

首先select sysdate from emp;

查询结果是25-2月-07

必须得按这个字符串特定的格式来写:

select ename,sal,hiredate from emp where hiredate >'25-2月-07';

select ename,sal,from emp where deptno =10 and/or sal>1000;

where ename,sal from emp where sal not in (800,1500); //取反

select ename from emp where ename like '%ALL%'; //%表示0个或多个字母

select enaem from emp where ename like '_A%'; //_表示占位符

如果名字里面本身就有%:

select ename from emp where ename like '%$%%' escape '$'; //指定$为转义字符

3.order by

select * from dept order by deptno desc; //降序排列

select empno,ename from emp order by empno asc; //升序排列

select empno,ename from emp where empno <>10 order by empno asc;//先过滤再排序

按照两个字段排序:

select ename,sal,deptno from emp order by deptno asc,ename desc; //先按deptno升序排列再在相同deptno中ename用降序排列

4.函数lower

select lower(ename) from emp;

查询员工名字不管大小写,第二个字母是a的名字:

select ename from emp where lower(ename) like '_a%';

或者:select ename from emp where ename like '_a%' or ename like '_A%';

5.函数substr 截取

select substr(ename,1,3) from emp; //从第一个字符开始截取,长度为3

6.函数chr 把而刺客码转换成字符

select chr(65) from dual; //查询结果为A

7.函数ascii 把字符转换成ASCII

select ascii('A') from dual; //查询结果为65

8.函数round 四舍五入

select round(23.652) from dual; //24

select round(23.652,2) from dual; //23.65

select round(23.652,1) from dual; //23.7

select round(23.652,-1) from dual; //20

*9.函数to_char 把数字/日期转换成相关字符串并且有特定的格式控制

select to_char(sal,'$99,999.9999') from emp;

select to_char(sal,'L99,999.9999') from emp; //人民币

select to_char(hiredate,'YYYY-MM-DD HH24:MI:SS') from emp;

*10.to_date 把特定格式的字符串转换成日期类型

select ename,hiredate from emp where hiredate >to_date('1981-2-20 12:34:56','YYYY-MM-DD HH24:MI:SS');

*11.to_number 把特定格式的数字转换成相关类型

select sal from emp where sal > to_number('$1.250.00','$9,999.99');

*12.nvl 处理空值的

select ename,sal*12 + nvl(comm,0) from emp;

*13.组函数:输入好多条记录,输出只有一条

max(sal) min(sal) avg(sal) sum(sal)

select to_char(avg(sal),'99999.99999') from emp;

select round(avg(sal),2) from emp;

count(*) //表示表中有多少条记录(不是空值的有多少个)

select count(*) from emp where deptno=10;

select count(distinct deptno) from emp; //部门编号有多少个

*14.group by

哪个部门的平均薪水是多少:

select deptno,avg(sal) from emp group by deptno;

按照多个字段进行分组:

select deptno,job,max(sal) from emp group by deptno,job;

输出薪水最高的员工的名字:

错误的是:select ename,max(sal) from emp;

真确的是:select ename from emp where sal=(select max(sal) from emp);

输出每个部门挣钱最多人的名字

错误的是:select ename,max(sal) from emp group by deptno;

真确的是:select deptno,max(sal) from emp group by deptno; //deptno在分组里面确确实实只有一个

*15.having 是对分组进行限制

where语句是对单条的记录进行过滤

把平均薪水大于2000的部门取出来

select avg(sal),deptno from emp group by deptno having avg(sal)>2000;

顺序:select * from emp

where sal>1000

group by deptno

having

order by

例子:薪水大于1200的雇员按照部门编号进行分组,分组后的平均薪水必须大于1500,查询分组后的平均工资,按工资的倒叙排列

select avg(sal) from emp where sal>1200 group by deptno having avg(sal)>1500 order by avg(sal) desc;

*16.子查询:在一个select语句里面套了个另外的select语句

套的select语句可以出现在where里面,也可以出现在from语句后面

求哪些人的工资位于所有平均工资之上

select ename,sal from emp where sal>(select avg(sal) from emp);

按照部门进行分组后,每个部门里面挣钱最多的员工信息

select ename,sal,deptno from emp

where sal=(select max(sal) from emp group by deptno);//错误的

select ename,sal,deptno from emp

where sal in (select max(sal) from emp group by deptno);//错误的

select ename,sal from emp

join (select max(sal)  max_sal,deptno from emp group by deptno ) t

on (emp.sal=t.max_sal and emp.deptno=t.deptno); //正确的

*17.自连接:其实是在同一张表内进行两次查询.为同一张表其不同别名,当成两张表来用

找出员工对应的经理的名字(分析:员工名字和经理名字都在emp表的ename列中)

select t1.ename,t2.ename from emp t1 ,emp t2 where t1.mgr=t2.empno;

*18.

等值连接:找出每位员工的部门名称

select ename,dname from emp join dept on (emp.deptno=dept.deptno);

求部门平均薪水的等级

select deptno,avg_sal,grade from

(select avg(sal) avg_sal,deptno from emp group by deptno) t

join salgrade s on (t.avg_sal between s.losal and s.hisal);

求部门平均的薪水等级

select deptno ,avg(grade) from

(select deptno,ename,grade from emp join salgrade s on (emp.sal between s.losal and s.hisal)) t

group by deptno;

雇员中有哪些人是经理

select ename from emp where empno in (select distinct mgr from emp);

面试题:

1.不用组函数,求出薪水的最高值(自连接)

左边的一张表中的薪水小于右边一张表的薪水,有一条或多条是连接不上右边,就是左边的最大值没有小于右边表的薪水

select distinct sal from emp where sal not in

(select distinct e1.sal from emp e1 join emp e2 on (e1.sal<e2.sal));

2.平均薪水最高的部门的部门编号

select deptno,avg_sal from

(select avg(sal) avg_sal,deptno from emp group by deptno) t

where avg_sal=

(select max(avg_sal) from t);

3.平均薪水最高的部门的部门

select dname from dept where deptno =

(

select deptno,avg_sal from

(select avg(sal) avg_sal,deptno from emp group by deptno) t

where avg_sal=

(select max(avg_sal) from t)

);

oracle DBA操作的更多相关文章

  1. Oracle DBA 的常用Unix参考手册(二)

    9.AIX下显示CPU数量    # lsdev -C|grep Process|wc -l10.Solaris下显示CPU数量# psrinfo -v|grep "Status of pr ...

  2. Oracle DBA 的常用Unix参考手册(一)

    作为一名Oracle DBA,在所难免要接触Unix,但是Unix本身又是极其复杂的,想要深刻掌握同样很不容易.那么到底我们该怎么入手呢?Donald K Burleson 的<Unix for ...

  3. (摘)ORACLE DBA的职责

    ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控: (1). 每天对ORACLE数据库的运行状态,日志文件,备份情况,数据 库的空间使用情况,系统资源的使用情况进行检查,发现并解 ...

  4. Oracle DBA管理包脚本系列(二)

    该系列脚本结合日常工作,方便DBA做数据管理.迁移.同步等功能,以下为该系列的脚本,按照功能划分不同的包.功能有如下: 1)数据库对象管理(添加.修改.删除.禁用/启用.编译.去重复.闪回.文件读写. ...

  5. Oracle DBA 必须掌握的 查询脚本:

    Oracle  DBA 必须掌握的 查询脚本: 0:启动与关闭 orcle 数据库的启动与关闭 1:连接数据库 2:数据库开启状态的实现步骤:       2-1:启动数据库           2- ...

  6. ORACLE日常操作手册

    转发自:http://blog.csdn.net/lichangzai/article/details/7955766 以前为开发人员编写的oracle基础操作手册,都基本的oracle操作和SQL语 ...

  7. Oracle DBA面试突击题

    一份ORACLE DBA面试题 一:SQL tuning 类 1:列举几种表连接方式 答: Oracle的多表连接算法有Nest Loop.Sort Merge和Hash Join三大类,每一类又可以 ...

  8. Oracle DBA 学习总结

    对于学习Oracle 数据库,应该先要了解Oracle 的框架.它有物理结构(由控制文件.数据文件.重做日志文件.参数文件.归档文件.密码文件组成) ,逻辑结构(表空间.段.区.块),内存分配( SG ...

  9. Oracle DBA常用查询

    Oracle DBA常用查询 –1. 查询系统所有对象select owner, object_name, object_type, created, last_ddl_time, timestamp ...

随机推荐

  1. 快速创建 Vue 项目

    转载:https://www.jianshu.com/p/c7df292915e7 为了便于 Vue 项目的管理, Vue 团队官方开发了 vue-cli 工具. 本文将带您使用 vue-cli 快速 ...

  2. python自动化登录获取图片登录验证码

    主要记录一下:图片验证码1.获取登录界面的图片2.获取验证码位置3.在登录页面截取验证码保存4.调用百度api识别(目前准确率较高的识别图片api)本次登录的系统页面,可以看到图片验证码的位置登录页面 ...

  3. 100-continue

    https://wiki.open.qq.com/wiki/技术优化原则#1._.E7.A8.8B.E5.BA.8F.E8.AE.BE.E8.AE.A1.E6.97.B6.E9.9C.80.E8.A6 ...

  4. ArcPy地理处理工具案例教程—批量添加栅格数据

    ArcPy地理处理工具案例教程-批量添加栅格数据 商务合作,科技咨询,版权转让:向日葵,135-4855__4328,xiexiaokui#qq.com 关键字: Arcpy,python,地理处理工 ...

  5. 『MXNet』第六弹_Gluon性能提升 静态图 动态图 符号式编程 命令式编程

    https://www.cnblogs.com/hellcat/p/9084894.html 目录 一.符号式编程 1.命令式编程和符号式编程 2.MXNet的符号式编程 二.惰性计算 用同步函数实际 ...

  6. Kotlin集合——List集合

    Kotlin集合——List集合 转 https://www.jianshu.com/p/3f3bb4943638   List集合的最大特征就是集合元素都有对应的顺序索引.List集合允许使用重复元 ...

  7. openresty开发系列11--openresty的api入门

    openresty开发系列11--openresty的api入门 1)ngx_lua模块的hello world编辑nginx下conf配置文件nginx.conf# vi nginx.conf在se ...

  8. RabbitMQ 入门教程(PHP版) 延迟队列,延迟任务

    延迟任务应用场景 场景一:物联网系统经常会遇到向终端下发命令,如果命令一段时间没有应答,就需要设置成超时. 场景二:订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单. 场景三:过1分钟给新 ...

  9. Docker容器(五)——Docker静态化IP

    (1).Docker的四种网络模式 Docker有以下四种模式,通过--net=[参数]选项(现在也可以使用--network [参数])指定: host模式:使用宿主机的IP地址和端口.使用--ne ...

  10. 123457123457#0#----com.DoraGame.ShiZi75--前拼后广--识字dora

    com.DoraGame.ShiZi75--前拼后广--识字dora