日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Oracle SQL語句實操練習!含圖表及答案!適合新手~

 老張的菜地 2019-10-23

創(chuàng)建了兩張表和一些問題 , 基本上把oracle的基礎語句都用上了, 適合新手練習與鞏固知識.

可以自己在oracle中創(chuàng)建表然后練習.沒有可視化界面的可以用我下面準備好的語句直接導入.

EMP表


DEPT表


員工表建表語句:

CREATE TABLE EMP (
ENAME VARCHAR2(30),
EMPNO NUMBER(5),
DEPTNO NUMBER(5),
JOB VARCHAR2(20),
HIREDATE DATE,
COMM NUMBER(6,2),
SAL NUMBER(6,2)
)

部門表建表語句:

CREATE TABLE DEPT (
DNAME VARCHAR2(30),
DEPTNO NUMBER(5),
LOC VARCHAR2(50)
)

員工表插入數據:

INSERT INTO EMP VALUES ('Zhou潤發(fā)', 10001, 10, '辦事員', TO_DATE('20161130131322', 'YYYYMMDDHH24MISS'), 2500, 2400);
INSERT INTO EMP VALUES ('Liu德華', 10002, 10, '辦事員', TO_DATE('20170105131334', 'YYYYMMDDHH24MISS'), 1800, 2250);
INSERT INTO EMP VALUES ('Li連杰', 20001, 20, '辦事員', TO_DATE('20170313131339', 'YYYYMMDDHH24MISS'), 2200, 2350);
INSERT INTO EMP VALUES ('xiang華強', 20000, 20, '經理', TO_DATE('20160130131343', 'YYYYMMDDHH24MISS'), 3980, 3500);
INSERT INTO EMP VALUES ('Zhang柏芝', 30001, 30, '辦事員', TO_DATE('20170314131346', 'YYYYMMDDHH24MISS'), 1300, 2200);
INSERT INTO EMP VALUES ('成long', 10000, 10, '經理', TO_DATE('20151031133724', 'YYYYMMDDHH24MISS'), 4800, 4000);
INSERT INTO EMP VALUES ('zhang子怡', 30000, 30, '經理', TO_DATE('20161011133915', 'YYYYMMDDHH24MISS'), 3500, 3480);
INSERT INTO EMP VALUES ('zhang家輝', 20002, 20, '辦事員', TO_DATE('20170330134519', 'YYYYMMDDHH24MISS'), 1600, 2000);
INSERT INTO EMP VALUES ('Liu亦菲', 30002, 30, '駕駛員', TO_DATE('20170330135457', 'YYYYMMDDHH24MISS'), NULL, 2500);
INSERT INTO EMP VALUES ('peng于晏', 20003, 20, '駕駛員', TO_DATE('20170411135625', 'YYYYMMDDHH24MISS'), NULL, 2500);
INSERT INTO EMP VALUES ('Zhang涵予', 10003, 10, '駕駛員', TO_DATE('20170408135706', 'YYYYMMDDHH24MISS'), NULL, 2500);

部門表插入數據:

INSERT INTO DEPT VALUES ('市場部', 10, '北京');
INSERT INTO DEPT VALUES ('公關部', 20, '上海');
INSERT INTO DEPT VALUES ('研發(fā)部', 30, '南京');

兩張表已全部建好,自己用查詢語句查看一下表結構和數據是否沒問題.

Select * From EMP                     Select * From DEPT

下面是題目:可以復制下來做, 做完再和我做答案對照一下, 當然, 有的題目可以用多種方法去做, 看你自己選擇了.

還有一點需要注意的是:我是用的可視化界面輸入的語句,別名中文不需要加引號,一開始我加引號老是報錯,后來無意間去掉反而好了,不知道為什么.我開始學的時候,別名使用中文是需要加引號的,看你實際的情況吧!!

題目:

--1.選擇30部門的職員   
--2.列出所有辦事員的姓名、編號和部門   
--3.找出獎金高于薪資的雇員
--4.找出傭金高于薪金60%的雇員
--5.找出部門10中所有經理和部門20中的所有辦事員的詳細資料
--6.找出既不是經理又不是辦事員但其薪金>=2000的所有雇員的詳細資料
--7.找出收取傭金的雇員的不同工作
--8.找出不收取傭金或收取的傭金低于2000的雇員
--9.找出各月最后一天受雇的所有雇員
--10.找出早于1年之前受雇的雇員
--11.顯示只有首字母大寫的所有雇員的姓名
--12.顯示正好為7個字符的雇員姓名
--13.顯示不帶有'Z'的雇員姓名
--14.顯示所有雇員的姓名的前三個字符
--15.顯示所有雇員的姓名,用小寫 z 替換所有大寫 Z .
--16.顯示所有雇員的姓名以及滿1年服務年限的日期
--17.顯示雇員的詳細資料,按姓名排序
--18.顯示雇員姓名,根據其服務年限,將最老的雇員排在最前面
--19.顯示所有雇員的姓名、工作和薪金,按工作的降序順序排序,而工作相同時按薪金升序
--20.顯示所有雇員的姓名和加入公司的年份和月份,按雇員受雇日所在月排序,將最早年份的項目排在最前面
--21.顯示在一個月為30天的情況下所有雇員的日薪金
--22.找出在(任何年份的)1月受聘的所有雇員
--23.對于每個雇員,顯示其加入公司的天數
--24.顯示姓名字段的任何位置,包含 'i' 的所有雇員的姓名
--25.以年、月和日顯示所有雇員的服務年限

答案:

1--

select ename,deptno from emp where deptno=30;
2--

select e.ename,e.empno,d.dname,e.job from emp e,dept d where e.deptno=d.deptno and e.job='辦事員';
3--

select * from emp where comm>sal order by comm desc;

4--

select * from emp where comm>sal*0.6;
5.1--

select * from emp e,dept d where e.deptno=10 and e.job='經理' and e.deptno=d.deptno
union all
select * from emp e,dept d where e.deptno=20 and e.job='辦事員' and e.deptno=d.deptno;
5.2--

select * from emp e,dept d where (e.deptno=10 and e.job='經理' and e.deptno=d.deptno)
or (e.deptno=20 and e.job='辦事員' and e.deptno=d.deptno);
6--

select * from emp e,dept d where e.sal>=2000 and e.job<>'辦事員' and e.job<>'經理' and e.deptno=d.deptno;
7--

select distinct job from emp where comm>0;
8--

select ename,nvl(comm,0) comms from emp where nvl(comm,0)<2000;
9--

select * from emp where hiredate=last_day(hiredate);
10.1--

select * from emp where months_between(sysdate,hiredate)>12;
10.2--

select * from emp where hiredate<add_months(sysdate,-12);
11--

select * from emp where ename=initcap(ename);
12--

select * from emp where length(ename)=7;
13--

select * from emp where instr(ename,'Z')=0;
14--

select substr(ename,0,3) from emp
15--

select replace(ename,'Z','z') from emp
16--

select ename,add_months(hiredate,12) from emp
17--

select * from emp e,dept d where e.deptno=d.deptno order by e.ename
18.1--

select ename,trunc(months_between(sysdate,hiredate)/12,0) 服務年限 from emp order by 服務年限 desc
18.2--

select ename,hiredate from emp order by hiredate
19--

select ename,job,sal from emp order by job desc,sal asc
20.1--

select ename,extract(year from hiredate) 年份,extract(month from hiredate) 月份 from emp order by 年份,月份
20.2--

select ename,to_char(hiredate,'yyyy') 年份,to_char(hiredate,'mm') 月份 from emp order by hiredate
21--

select ename,sal/30,trunc(sal/30,1),floor(sal/30),ceil(sal/30) from emp
22.1--

select * from emp where extract(month from hiredate)=1
22.2--

select * from emp where to_char(hiredate,'mm')='01'
23--

select ename,floor(sysdate-hiredate) 入職天數 from emp order by 入職天數 desc
24.1--

select ename from emp where ename like '%i%';
24.2--

select ename from emp where instr(ename,'i')>0
25--

select ename,floor(months_between(sysdate,hiredate)/12) 服務總年數,

floor(months_between(sysdate,hiredate)) 服務總月數,

floor(sysdate-hiredate) 服務總天數 from emp order by 服務總天數;

最后送上一句勵志的話 ~~


    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多