Oracle入門SQL練習(一)

以下內容以scott用戶下Oracle自帶實例orcl庫中四張表進行查詢,作爲Oracle入門SQL基礎練習筆記,不忘初心,加油!

--1).查詢一個用戶下所有的表
SELECT * FROM tab;

--2).查詢一張表的結構(命令行):DESC 表名稱
DESC dept;

--簡單查詢語法結構:SELECT [DISTINCT] * | 列名稱 [別名],列名稱 [別名],... FROM 表名稱 [別名];

--3).查詢emp表中的全部記錄
SELECT * FROM emp;

--4).查詢每個僱員的編號、姓名、職位、工資
SELECT empno,ename,job,sal FROM emp;

--5).查詢所有的職位信息,使用DISTINCT消去重複
SELECT DISTINCT job FROM emp;

--6).查詢每個僱員的編號、姓名、職位、基本年薪(月薪12),使用別名
SELECT empno,ename,job,sal
12 income FROM emp;

--7).查詢每個僱員的編號、姓名、基本年薪(每年15薪,每月200元飯補、100元車補、100元話費,5個月的其他補貼200)
SELECT empno,ename,(sal15+(200+100+100)12+200*5) income FROM emp;

--8).常量+連接,查詢顯示結構:僱員XXX的基本工資是XXX
SELECT '僱員' || ename || '的基本工資是' || sal info FROM emp;

--限定查詢語法結構:SELECT [DISTINCT] | 列名稱 [別名],列名稱 [別名],... FROM 表名稱 [別名] [WHERE 過濾條件(s)];
--關係運算符
--9).查詢出所有基本工資高於2000的僱員信息
SELECT
FROM emp WHERE sal > 2000;

--10).查詢SMITH的完整信息
SELECT * FROM emp WHERE ename = 'SMITH';

--11.查詢工資爲5000的員工信息
SELECT * FROM emp WHERE sal = 5000;

--12.查詢不是銷售人員的編號、姓名、職位
SELECT empno,ename,job FROM emp WHERE job != 'SALESMAN';
SELECT empno,ename,job FROM emp WHERE job <> 'SALESMAN';

--邏輯運算符

--13.查詢出工資範圍在1500~3000之間的僱員信息
SELECT * FROM emp WHERE sal >= 1500 AND sal <= 3000;

--14.查詢工資大於2000或者職位是辦事員的僱員信息
SELECT * FROM emp WHERE sal > 2000 OR job = 'CLERK';

--15.查詢工資小於2000的僱員信息
SELECT FROM emp WHERE sal < 2000;
SELECT
FROM emp WHERE NOT sal >= 2000;

--範圍查詢

--16.查詢出工資範圍在1500~2000之間的僱員信息(包含1500,2000)
SELECT FROM emp WHERE sal >= 1500 AND sal <= 2000;
SELECT
FROM emp WHERE sal BETWEEN 1500 AND 2000;

--17.查詢所有在1981年僱傭的僱員信息
SELECT * FROM emp WHERE hiredate BETWEEN '01-1月 -1981' AND '31-12月 -1981';

--空判斷 注意空和0

--18.查詢所有領取佣金的僱員信息(佣金不爲null)
SELECT FROM emp WHERE NOT comm IS NULL;
SELECT
FROM emp WHERE comm IS NOT NULL;

--IN操作符

--19.要求查詢僱員編號爲7369、7566、7788、9999的僱員信息
SELECT * FROM emp WHERE empno IN (7369,7566,7788,9999);

--模糊查詢

--20.查詢姓名是以A開頭的僱員信息
SELECT * FROM emp WHERE ename LIKE 'A%';

--21.查詢姓名的第二字字母是A的僱員信息
SELECT * FROM emp WHERE ename LIKE '_A%'

--22.查詢姓名中包含字母是A的僱員信息
SELECT * FROM emp WHERE ename LIKE '%A%'

--查詢排序

--23.查詢所有僱員信息,要求按照工資由高到低排序(降序)
SELECT * FROM emp ORDER BY sal DESC;

--24.查詢所有銷售人員的信息,要求按照入職年限由早到晚排序(升序)
SELECT * FROM emp WHERE job='SALESMAN' ORDER BY hiredate ASC;

--25.要求按照工資由高到低排序,若工資相同,則按入職時間由早到晚排序
SELECT * FROM emp ORDER BY sal DESC, hiredate ASC;

--26.查詢每個僱員的編號,姓名,年薪,按照年薪升序
SELECT empno,ename,sal*12 income FROM emp ORDER BY income;

--基礎查詢練習

--1.查詢部門30中的所有員工信息
SELECT * FROM emp WHERE deptno=30;

--2.列出所有辦事員(CLERK)的編號、姓名和部門編號
SELECT empno,ename,deptno FROM emp WHERE job='CLERK';

--3.找出佣金高於薪金60%的員工
SELECT FROM emp WHERE comm > sal0.6;

--4.找出部門10中所有經理(MANAGER)和部門20中所有辦事員(CLERK)的全部信息
SELECT * FROM emp WHERE (deptno=10 AND job='MANAGER') OR (deptno=20 AND job='CLERK');

--5.找出部門10中所有經理(MANAGER),部門20中所有辦事員(CLERK),既不是經理又不是辦事員但其薪金大於等於2000的僱員信息
SELECT *
FROM EMP
WHERE (DEPTNO = 10 AND JOB = 'MANAGER')
OR (DEPTNO = 20 AND JOB = 'CLERK')
OR (JOB NOT IN ('MANAGER', 'CLERK') AND SAL >= 2000);

--6.找出收取佣金的員工的工作
SELECT DISTINCT job FROM emp WHERE comm IS NOT NULL;

--7.找出不收取佣金或者收取佣金小於100的員工
SELECT * FROM emp WHERE comm IS NULL OR comm<100;

--8.顯示姓名中不帶有‘R’的員工信息
SELECT * FROM emp WHERE ename NOT LIKE '%R%';

--9.顯示姓名中任何位置包含字母‘A'的員工信息,顯示的結果按照基本工資由高到低排序,
-- 若工資相同,則按照僱傭年限由早到晚排序,若年限相同,則按職位排序
SELECT * FROM emp WHERE ename LIKE '%A%' ORDER BY sal DESC,hiredate,job;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章