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,sal12 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‘;
--邏輯運算符
--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;
Oracle入門SQL練習(一)