1.查出emp表中薪水在3000以上(包括3000)的所有员工的员工号、姓名、薪水。
select empno,ename,sal from emp where sal >= 3000;
2.查询出emp表中所有员工一年的薪水,显示形式如下:
编号为XX的员工,姓名为XX,年薪XX。(提示:使用||将多个列合并)
select '编号为'||empno||'的员工,姓名为'||ename||',年薪为'||(sal*12)||'。' from emp;
3.查询出emp表中部门编号为20,薪水在2000以上(不包括2000)的所有员工,显示他们的员工号,姓名以及薪水,以如下列名显示:员工编号 员工名字 薪水
select empno as "员工编号",ename as "员工名字",sal as "薪水" from emp where deptno = 20 and sal > 2000;
4.查询出emp表中所有的工作种类(无重复)
select distinct(job) from emp;
5.查询出所有奖金(comm)字段不为空的人员的所有信息。
select * from emp where comm is not null;
6.查询出薪水在800到2500之间(闭区间)所有员工的信息。(注:使用两种方式实现and以及between and)
select * from emp where sal >= 800 and sal <= 2500;
select * from emp where sal between 800 and 2500;
7.查询出员工号为7521,7900,7782的所有员工的信息。(注:使用两种方式实现,or以及in)
select * from emp where empno = 7521 or empno = 7900 or empno = 7782;
select * from emp where empno in (7521,7900,7782);
8.查询出名字中有“A”字符,并且薪水在1000以上(不包括1000)的所有员工信息。
select * from emp where ename like '%A%' and sal > 1000;
9.查询出名字第三个字母是“M”的所有员工信息。
select * from emp where ename like '__M%';
10.将所有员工按薪水升序排序,薪水相同的按照入职时间降序排序。
select * from emp order by sal asc,hiredate desc;
11.将所有员工按照名字首字母升序排序,首字母相同的按照薪水降序排序。
select * from emp order by ename asc,sal desc;
12.显示所有员工名字的小写形式、薪水及部门编号。
select lower(ename),sal,deptno from emp;
13.查询出所有在30号部门的员工的员工名字、薪水和所在部门编号,其中名字按照首字母大写,其余小写的形式显示。
select initcap(ename),sal,deptno from emp where deptno = 30;
14.将所有人的名字截掉首字母后显示。
select substr(ename,2) from emp;
15.查询出emp表中所有名字长度在5以上(不包括5)人的名字、员工编号、薪水以及名字的长度。
select ename,empno,sal,length(ename) from emp where length(ename) > 5;
16.查询出emp表中不在10号部门所有人的名字、薪水和部门编号,将名字中所有的字符‘E’替换成‘%’显示。
select replace(ename,'E','%') as ename,sal,deptno from emp where deptno != 10;
17.查询出所有薪水在1500以上(不包括1500)的所有人的名字、薪水、入职时间,使用四舍五入的
方式将所有薪水保留一位小数。
select ename,round(sal,1),hiredate from emp where sal > 1500;
18.查询出所有薪水在1800以下(包括1800)的所有人的名字、薪水、入职时间,使截取的方式将所有薪水小数截掉。
select ename,trunc(sal),hiredate from emp where sal <= 1800;
19.查询出最早工作的那个人的名字、入职时间和薪水。
select ename,hiredate,sal from emp where hiredate = (select min(hiredate) from emp);
20.查询出最晚工作的那个人的名字、入职时间。
select ename,hiredate from emp where hiredate = (select max(hiredate) from emp);
21.计算出最早入职的员工和最晚入职的员工的入职年份只之差。
select max(TO_CHAR(hiredate,'yyyy'))-min(TO_CHAR(hiredate,'yyyy')) from emp;
22.显示所有员工的名字、薪水、奖金,如果没有奖金,暂时显示100.
select ename,sal,NVL(comm,100) from emp;
23.使用nullif函数求出所有名字长度为6的员工的名字和部门编号。
select ename,deptno from emp where nullif(length(ename),6) is null;
24.显示出薪水最高人的职位。
select job from emp where sal = (select max(sal) from emp);
25.查出emp表中所有部门的最高薪水和最低薪水,部门编号为10的部门不显示。
select max(sal),min(sal),deptno from emp where deptno != 10 group by deptno;
26.查询出所有薪水在'ALLEN'之上的所有人员信息。
select * from emp where sal > (select sal from emp where ename = 'ALLEN');
27.查询出员工名字、薪水、入职年份、部门编号和部门名称。
ame,e.sal,e.hiredate,e.deptno,d.dname from emp e,dept d where e.deptno = d.deptno;
28.查询出所有员工的名字以及其上司的名字。
ame from emp e1,emp e2 = e2.empno;
29.查出所有员工的个人信息和部门信息(多表连接),暂时没有部门的也要查出来。
select * from emp e,dept d where e.deptno = d.deptno;
30.查询所有员工的信息和其薪水对应的级别。(salgrade:薪水分级表)
select e.*,s.grade from emp e,salgrade s where e.sal between s.losal and s.hisal;
31.在emp表中新添加一个员工:ename:ZHANGSAN empno:1234 job:manager
hiredate:2009-01-23
Insert Into emp(empno,ename,hiredate) Values(1234,'ZHANGSAN',to_date('2009-01-23','yyyy-mm-dd'));
32.将新添加的员工工作改为:ANALYST,薪水改为3000,入职时间加一年。
33.将新添加的员工的奖金改为和编号为7499一样高。(7499若没有奖金先为7499添加奖金100)
34.更新表中数据如下:Update emp Set deptno=55 Where empno=7499
能否更新成功,为什么?
35.将新添加的员工删除。
36.删除10号部门薪水最高的员工。
delete from emp where empno in (select empno from emp where sal =(select max(sal) from emp where deptno = 10));
37.将薪水最高的员工的薪水降30%。
update emp s
et sal = 0.7 * sal where sal = (select max(sal) from emp);
38.创建一个测试表,表名:test,其中有如下字段:id:Number类型4位,name:varchar2类型20位,birthday:Date类型,默认值为2008年08月08号。
39.删除测试表中的birthday字段。
Alter Table test Drop Column birthday。
40.什么是数据库中的事务?
41.char和varchar2的区别?
char---定长字符串
varchar2----变长字符串
oracle四舍五入char(20) abcd---------20
varchar(20) abcd--------4
42.NUMBER(N)和number(m,n)的区别?
NUMBER(N):表示整数位不能大于n个,小数位可以任意
number(m,n):表示总长度为m位,其中小数位为n,整数为为m-n
43.delete和truncate的作用以及区别?
两种方式
A.delete删除
区别:
delete:从数据库的缓存区清除该数据
truncate:把数据删除了,然后清空所占用的空间
delete可以撤销
truncate不能撤销
truncate===delete+commit
TRUNCATE 语法
TRUNCATE TABLE EMP;
44.TRUNCATE和drop 区别?
drop:删除表的定义,整个对象删掉,删除的是对象的本身,全部
truncate:删除表的内容,只是删除数据,表的结果会保留
45.什么是主键,主键的作用是什么?可以举例阐述
一般情况下,我们在创建表的同时,都会为表指定一个主键,用来唯一标识一条记录,以便在程序中实现修改,删除等业务逻辑操作时,根据该主键标识来准确定位到要操作的记录
46.什么是外键,外键的作用是什么?可以举例阐述
外来的键值,如EMP表的deptno字段引用了dept表中的deptno字段
我们认为:emp表中的deptno是一个外键,emp.deptno不能任意指定,只能从dept.deptno的值中任意选一个
47.什么是联合主键?
把多个字段合起来作为一个主键,要求多个字段每一项都不能为null,并且合起来的值不能重复.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论