oracle试题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.用sqlplus连接数据库时,为什么会出Oracle not available错误?
Oracle server(即通常所说的数据库)是否启动,ORACLE_SID是否正确设置。
2.找出员工的姓中(last_name)第三个字母是a的员工名字
select last_name from s_emp where last_name like '_ _a%';
3.找出员工名字中含有a和e的
select first_name from s_emp where first_name like '%a%' and first_name like '%e%';
比较:
select first_name from s_emp where first_name like '%a%e%';
此种方式查询出来的数据,只是先出现“a”然后出现“e”的数据表记录。总的记录条数可能少于第一种方式的。
4.找出所有有提成的员工,列出名字、工资、提出,显示结果按工资从小到大,
提成从小到大.
select first_name,salary,commission_pct from s_emp where commission_pct is not null order by salary desc,commission_pct;
5.42部门有哪些职位
select distinct title from s_emp where dept_id=42;
6.哪些部门不是Sales部
select id,name,region_id from s_dept where name <> 'Sales';
注意大小写!
7.显示工资不在1000到1550之间的员工信息:名字、工资,按工资从大到小
排序。
select first_name,salary from s_emp where salary not between 1000 and 1550 order by salary desc;
需要使用到not between and 函数,不能使用salary > 1550 and salary <1000
8.显示职位为Stock Clerk和Sales Representative,年薪在14400和17400之
间的员工的信息:名字、职位、年薪。
select first_name,title,salary*12 ann_sal from s_emp where title in ('Stock Clerk','Sales Representative') and salary between 1200 and 1450;
注意把年薪的范围换算成了每月的工资salary,而不是salary*12。以提高查询效率。
9.解释select id,commission_pct from s_emp where commission_pct is null和
select id,commission_pct from s_emp where commission_pct = null的输出结果。
is null判断是否为空,= null判断某个值是否等于null,null=null和null<>null 都为null。
第一条语句有输出结果,就是没有提成的ID号。
第二条语句没有输出。
10.select语句的输出结果为
select * from s_dept;
select * from s_emp;
select * from s_region;
select * from s_customer;
……
当前用户有多少张表,结果集有多少条记录。
select 'select * from '||table_name||';' from user_tables;
11.判断select first_name,dept_id from s_emp where salary > '1450'是否抱错,
为什么?
隐式数据类型转换
✧(CORE-E-002)综合练习
▪定义
CORE-F-006——CORE-F-008的综合练习:
1.改变NLS_LANG的值,让select to_char(salary*12,’L99,999.99’) from s_emp
输出结果的货币单位是¥和$
setenv NLS_LANG 'SIMPLIFIED CHINESE_CHINA.ZHS16GBK'
setenv NLS_LANG 'AMERICAN_7ASCII'
L99,999.99和L00,000.00的区别:99,999.99只显示有效位数;00,000.00的方式默认显示位数大于有效位数,以0填充。
2.列出每个员工的名字,工资、涨薪后工资(涨幅为8%),元为单位进行四舍
五入
select first_name,salary,round(salary*1.08) from s_emp;
3.找出谁是最高领导,将名字按大写形式显示
select upper(first_name) from s_emp where manager_id is null;
4.Ben的领导是谁(Ben向谁报告)。
select e1.first_name from s_emp e1,s_emp e2 where e2.manager_id = e1.id and e2.first_name = 'Ben';
用子查询也可以实现,如下:
select first_name from s_emp e1,s_emp e2 where id = (select manager_id from s_emp where first_name = 'Ben');
5.Ben领导谁。(谁向Ben报告)。
select e1.first_name from s_emp e1,s_emp e2 where e1.manager_id = e2.id and e2.first_name = 'Ben';
6.哪些员工的工资高于他直接上司的工资,列出员工的名字和工资,上司的名