oracle学习篇三:SQL查询

select * from emp;

--1.找出部门30的员工
select * from emp where deptno = 30;

--2.列出所有办事员(CLERK)的姓名,变化和部门编号
select * from emp where job = upper(‘clerk‘);

--3.找出佣金高于薪金的员工。
select * from emp where comm > sal;

--4.找出佣金高于薪金60%的员工。
select *
from emp
where comm > sal * 0.6

--5.找出部门10中所有的经理(MANAGER)和部门20中所有的办事员(CLERK)的详细资料
select *
from emp
where (deptno = 10 and job = upper(‘manager‘))
or (deptno = 20 and job = upper(‘clerk‘));

--6.找出部门10中所有的经理(MANAGER)和部门20中所有的办事员(CLERK)的详细资料,既不是经理又不是办事员,但薪资大于等于2000的所有员工地详细信息
select *
from emp
where (deptno = 10 and job = upper(‘manager‘))
or (deptno = 20 and job = upper(‘clerk‘))
or (job not in (‘MANAGER‘, ‘CLERK‘) and sal >= 2000);

--7.找出收取佣金的员工地不同工作
select distinct job from emp where comm is not null;

--8.找出不收取佣金或收取佣金低于100的员工.
select *
from emp
where comm is null
or comm < 100;

--9.找出各个月倒数第3天受雇的员工
select LAST_DAY(HIREDATE)
from emp
select * from emp where LAST_DAY(HIREDATE) - 2 = HIREDATE;

--10.找出早于12年前受雇的员工.
select * from emp where months_between(sysdate, hiredate) / 12 > 12;

--11.以首字母大写的方式显示所有员工姓名
select initcap(ename) from emp;

--12.显示正好为5个字符的员工姓名.
select * from emp where length(ename) = 5;

--13.显示不带“R”的员工姓名.
select * from emp where ename not like ‘%R%‘;

--14.显示所有员工共姓名前三个字符.
select substr(ename, 0, 3) from emp;

--15.显示所有员工,用“a"替换"A"
select replace(ename, ‘A‘, ‘a‘) from emp;

--16.显示满10年的员工姓名和授雇日期
select ename, hiredate
from emp
where months_between(sysdate, hiredate) / 12 > 10;

--17.显示员工的详细资料,按姓名排序
select * from emp order by ename;

--18.显示员工姓名和授雇日期,根据其服务年限,将最老的员工牌在最前面
select ename, hiredate from emp order by hiredate;

--19.显示所有员工的姓名/工作和薪资,按工作的降序排序,若共工作相同则按薪资排序
select ename, job, sal from emp order by job desc, sal;

--20.显示所有员工的姓名/加入公司的年份和月份,安排受雇日前所作的月排序,若月份相同则将最早年份的员工排在最前面。
select ename, to_char(hiredate, ‘yyyy‘) y, to_char(hiredate, ‘mm‘) m
from emp
order by m, y;

--21.显示在一个月为30天的情况,所有员工日薪资,忽略余数。
select ename, round(sal / 30) from emp;

--22.找出在(任何年份的)2月份受雇的员工。
select * from emp where to_char(hiredate, ‘mm‘) = ‘02‘;

--23.对于每个员工显示其加入公司的天数。
select ename, trunc(sysdate - hiredate) from emp;

--24.显示姓名字段的任何位置包含“A”的所有员工地姓名。
select ename from emp where ename like ‘%A%‘;

--25.以年月日的方式显示所有员工的服务年限(大概)
select ename,
hiredate,
trunc(months_between(sysdate, hiredate) / 12) y,
trunc(mod(months_between(sysdate, hiredate), 12)) m,
trunc(mod(sysdate - hiredate, 30)) d
from emp;

时间: 2024-11-06 02:22:05

oracle学习篇三:SQL查询的相关文章

Oracle学习笔记三 SQL命令

SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)               下面是这四种SQL语言的详细笔记: Oracle学习笔记三 SQL命令(二):SQL操作语言类别 Oracle数据类型 创建表时,必须为各个列指定数据类型 以下是 Oracle 数据类型的类别: 字符数据类型 CHAR类型 当需要固定长度的字符串时,使用 CHAR 数据类型. CHAR 数据类型存储字母数字值. CH

Oracle学习篇之SQL语句的优化

①在使用SELECT语句查询时,不要用"*"代替所有列名,因为这样的写法对Oracle系统来说会存在解析的动态问题.Oracle系统会通过查询数据字典来将"*"转换成表的所有列名,这自然会消耗系统时间. ②在子查询中,[NOT] IN子句将执行一个内部的排序与合并,无论在那种情况下,[NOT] IN都是最低效的,因为他对子查询中的表执行了一个全表遍历.为了提高效率,我们可以把它改写成外连接.NOT EXISTS 或者 EXISTS 子句. ③驱动表是指被最先访问的表

oracle学习 第三章 常用的SQL*PLUS命令 ——02

今天接着昨天的RUN命令继续讲. 3.5 n(设置当前行)命令和A(PPEND)(附加)命令 设想,你输入了例3-10的查询语句 例 3-10 SQL> SELECT ename 2 FROM emp; 例 3-10 结果 看到以上输出时,您发现在SELECT子句中忘了job,sal.这时您又如何修改您的SELECT子句呢?首先您应该使用SQL*PLUS的L(LIST)命令来显示SQL缓冲中的内容. 例 3-11 SQL> L 例 3-11 结果 在例3-11显示的结果中,2后面的"

Oracle学习(六):子查询

1.知识点:可以对照下面的录屏进行阅读 SQL> --子查询所要解决的问题:问题不能一步求解 SQL> --查询工资比SCOTT高的员工信息 SQL> --(1)使用普通方法 SQL> --1. SCOTT的工资 SQL> select sal from emp where ename='SCOTT'; SQL> --2. 查询比3000高的员工 SQL> select * 2 from emp 3 where sal>3000; SQL> --(2)

Oracle 学习(三)多表联查

目录 Oracle 学习(三)多表联查 一.99语法 二.至少两种方式行转列 三.分页 Oracle 学习(三)多表联查 @ 一.99语法 Oracle学习(二)中我们学习了92语法,现在我们学习一下99语法 sql 1999语法 1.1.cross join 笛卡尔积 select * from emp cross join dept; 1.2.natural join 自然连接 当两个表不具有相同列名,进行cross join,具有相同列名,自动匹配 select * from emp e

oracle新建用户执行sql查询语句出现错误ORA-00942:表或视图不存在

oracle创建新用户后客户端执行SQL查询后出现错误提示如下: 执行查询语句如下: select * from sm_sales_order; ORA-00942:表或视图不存在 创建新用户并指定表空间和临时表空间 CREATE USER xxx IDENTIFIED BY xxxx DEFAULT TABLESPACE LMS TEMPORARY TABLESPACE TEMP; 授予系统权限connect grant connect to xxx; 授予对象权限,只限查询 grant se

oracle 学习笔记(三)

1. SQL(基础查询) 1.1. 基本查询语句 1.1.1. FROM子句 SQL查询语句的语法如下: SELECT <*, column [alias], -> FROM table; 其中:SELECT用于指定要查询的列,FROM指定要从哪个表中查询.如果要查询所有列,可以在SELECT后面使用*号,如果只查询特定的列,可以直接在SELECT后面指定列名,列名之间用逗号隔开.例句如下,查询dept表中的所有记录: SELECT * FROM dept; 1.1.2. 使用别名 在SQL语

【知了堂学习笔记】SQL查询基础语句(单表查询、多表查询)

SQL查询基础 1.单表查询 从数据库中查找数据 专业的称谓又称为投影 基本查询语句结构 select 列 from 表 * 所有列不是所有其他东西 查询所有数据 例:SELECT * FROM t_studen 需要执行比较细的操作  加上条件筛选:查询id为2号的学生信息 SELECT * FROM t_student WHERE id=2; 筛选的执行步骤 例:SELECT * FROM t_student WHERE id=2; SELECT *          (3) 再查询  筛选

Oracle学习(三)之安装plsql developer客户端

1.下载Oracle客户端 a) 下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html,点击连接进入会出现以下页面.选择第一个Instant Client for Microsoft Windows (32-bit) 进行下载就可以了,请不要下载64bit的,我试过,不能实现连接的. b) 直接解压到你安装的目录中,这个客户端不需要安装,直接解压配置既可使用,比如解压到D