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.1查詢出薪水在800到2500之間(閉區(qū)間)所有員工的信息。(注:使用兩種方式實現(xiàn)and以及between and)
select * from emp where sal >= 800 and sal <= 2500;
6.2查詢出薪水在800到2500之間(閉區(qū)間)所有員工的信息。(注:使用兩種方式實現(xiàn)and以及between and)
select * from emp where sal between 800 and 2500;
7.查詢出員工號為7521,7900,7782的所有員工的信息。(注:使用兩種方式實現(xiàn),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)的所有人的名字、薪水、入職時間,使用四舍五入的方式將所有薪水保留一位小數(shù)。
select ename,round(sal,1),hiredate from emp where sal > 1500;
18.查詢出所有薪水在1800以下(包括1800)的所有人的名字、薪水、入職時間,使截取的方式將所有薪水小數(shù)截掉。
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函數(shù)求出所有名字長度為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.查詢出員工名字、薪水、入職年份、部門編號和部門名稱。
select e.ename,e.sal,e.hiredate,e.deptno,d.dname from emp e,dept d where e.deptno = d.deptno;
28.查詢出所有員工的名字以及其上司的名字。
select e1.ename,e2.ename from emp e1,emp e2 where e1.mgr = 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.更新表中數(shù)據(jù)如下: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 set sal = 0.7 * sal where sal = (select max(sal) from emp);
38.創(chuàng)建一個測試表,表名:test,其中有如下字段:id:Number類型4位,name:varchar2類型20位,birthday:Date類型,默認值為2008年08月08號。
39.刪除測試表中的birthday字段。
Alter Table test Drop Column birthday。
40.什么是數(shù)據(jù)庫中的事務?
41.char和varchar2的區(qū)別?
char---定長字符串
varchar2----變長字符串
char(20) abcd---------20
varchar(20) abcd--------4
42.NUMBER(N)和number(m,n)的區(qū)別?
NUMBER(N):表示整數(shù)位不能大于n個,小數(shù)位可以任意
number(m,n):表示總長度為m位,其中小數(shù)位為n,整數(shù)為為m-n
43.delete和truncate的作用以及區(qū)別?
兩種方式
A.delete刪除
B.truncate清空表的內(nèi)容
區(qū)別:
delete:從數(shù)據(jù)庫的緩存區(qū)清除該數(shù)據(jù)
truncate:把數(shù)據(jù)刪除了,然后清空所占用的空間
delete可以撤銷
truncate不能撤銷
truncate===delete+commit
TRUNCATE 語法
TRUNCATE TABLE EMP;
44.TRUNCATE和drop 區(qū)別?
drop:刪除表的定義,整個對象刪掉,刪除的是對象的本身,全部
truncate:刪除表的內(nèi)容,只是刪除數(shù)據(jù),表的結(jié)果會保留
45.什么是主鍵,主鍵的作用是什么?可以舉例闡述
一般情況下,我們在創(chuàng)建表的同時,都會為表指定一個主鍵,用來唯一標識一條記錄,以便在程序中實現(xiàn)修改,刪除等業(yè)務邏輯操作時,根據(jù)該主鍵標識來準確定位到要操作的記錄
46.什么是外鍵,外鍵的作用是什么?可以舉例闡述
外來的鍵值,如EMP表的deptno字段引用了dept表中的deptno字段
我們認為:emp表中的deptno是一個外鍵,emp.deptno不能任意指定,只能從dept.deptno的值中任意選一個
47.什么是聯(lián)合主鍵?
把多個字段合起來作為一個主鍵,要求多個字段每一項都不能為null,并且合起來的值不能重復.
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。