day10-習題

習題1.Homework01

day10-習題

文章插圖
(1) D -- 沒有在別名上加引號(ps:別名的as可以省略)(2) B -- 判斷null或非空不能用不等于號(3) C2.Homework02
  1. 寫出查看dept表和emp表的結構的sql語句
  2. 使用簡單查詢語句完成
    1. 顯示所有部門名稱
    2. 顯示所有雇員名及其全年收入 13月(工資+補助),并指定列別名“年收入”
  3. 限制查詢數據
    1. 顯示工資超過2850的雇員的姓名和工資
    2. 顯示工資不在1500到2850之間的員工名和工資
    3. 顯示編號為7566的雇員姓名及所在的部門編號
    4. 顯示部門10和30中工資超過1500的員工名及工資
    5. 顯示無管理者的雇員名及崗位
  4. 排序數據
    1. 顯示在1991-2-1到1991-5-1之間雇用的員工名,崗位以及雇用日期,并以雇用日期進行排序
    2. 顯示獲得補助的所有員工名 , 工資以及補助,并以工資降序進行排序
練習
-- 2.寫出查看dept表和emp表的結構的sql語句DESC dept;DESC emp;-- 3.使用簡單查詢語句完成-- 3.1 顯示所有部門名稱SELECT dname FROM dept;-- 3.2 顯示所有雇員名及其全年收入 13月(工資+補助),并指定列別名“年收入”SELECT ename,(sal+IFNULL(comm ,0.0))*13 AS '年收入' FROM emp;-- 4.限制查詢數據-- 4.1顯示工資超過2850的雇員的姓名和工資SELECT ename,sal FROM emp WHERE sal>2850;-- 4.2顯示工資不在1500到2850之間的員工名和工資SELECT ename,sal FROM emp WHERE sal>2850 OR sal<1500;-- 4.3顯示編號為7566的雇員姓名及所在的部門編號SELECT ename,deptno FROM emp WHERE empno=7566;-- 4.4顯示部門10和30中工資超過1500的員工名及工資SELECT ename,sal FROM emp WHERE deptno IN (10,30) AND sal >1500;-- 4.5顯示無管理者的雇員名及崗位SELECT ename,job FROM emp WHERE mgr IS NULL;-- 5.排序數據-- 5.1顯示在1991-2-1到1991-5-1之間雇用的員工名,崗位以及雇用日期,-- 并以雇用日期進行排序SELECT ename,job,hiredate FROM emp WHERE hiredate>='1991-02-01' AND hiredate<='1991-05-01' ORDER BY hiredate;-- 顯示獲得補助的所有員工名 , 工資以及補助,并以工資降序進行排序SELECT ename,sal,comm FROM emp WHERE comm IS NOT NULL ORDER BY sal DESC;3.Homework03根據emp表寫出正確的sql
  1. 選擇部門30中的所有員工
  2. 列出所有辦事員(CLERK)的姓名 , 編號和部門編號
  3. 找出傭金高于薪金的員工
  4. 找出傭金高于薪金60%的員工
  5. 找出部門10中所有經理(MANAGER)和部門20中的所有辦事員(CLERK)的詳細資料
  6. 找出部門10中所有經理(MANAGER),部門20中的所有辦事員(CLERK),還有既不是經理又不是辦事員但其薪金大于或等于2000的所有員工的詳細資料
  7. 找出收取傭金的員工的不同工作
  8. 找出不收取傭金或收取傭金低于100的員工
  9. 找出各月倒數第三天受雇的所有員工
  10. 找出早于12年前受雇的員工
  11. 以首字母小寫的方式顯示所有員工的姓名
  12. 顯示正好為5個字符的員工的姓名
練習
SELECT * FROM emp;-- 1. 選擇部門30中的所有員工SELECT * FROM emp WHERE deptno = 30;-- 2. 列出所有辦事員(CLERK)的姓名,編號和部門編號SELECT ename,empno,deptno FROM emp WHERE job = 'CLERK';-- 3. 找出傭金高于薪金的員工SELECT ename FROM emp WHERE IFNULL(comm,0)>sal; -- 4. 找出傭金高于薪金60%的員工SELECT ename FROM emp WHERE IFNULL(comm,0)>(sal*0.6); -- 5. 找出部門10中所有經理(MANAGER)和部門20中的所有辦事員(CLERK)的詳細資料SELECT * FROM emp WHERE (deptno = 10 AND job= 'MANAGER')OR(deptno = 20 AND job= 'CLERK');-- 6. 找出部門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);-- 7. 找出收取傭金的員工的不同工作SELECT DISTINCT job FROM emp WHERE comm IS NOT NULL;-- 8. 找出不收取傭金或收取傭金低于100的員工SELECT ename FROM emp WHERE comm IS NULL OR IFNULL(comm,0) <100;-- 9. 找出各月倒數第三天受雇的所有員工-- 關于最后一天 last_day(日期)可以返回該日期所在月份的最后一天SELECT * FROM emp WHERE LAST_DAY(hiredate)-2 = hiredate;-- 10. 找出早于12年前受雇的員工SELECT * FROM emp WHERE hiredate < DATE_SUB(NOW(),INTERVAL 12 YEAR);-- 11. 以首字母小寫的方式顯示所有員工的姓名-- 先截取首字母,將其小寫 LCASE (LEFT(ename,1))-- 再截取剩下的字母 RIGHT(ename, (LENGTH(ename)-1))-- 將兩者拼起來 CONCATSELECT CONCAT(LCASE(LEFT(ename,1)),RIGHT(ename, (LENGTH(ename)-1))) FROM emp-- 或者SELECT CONCAT( LCASE(LEFT(ename,1)) ,SUBSTRING(ename,2)) FROM emp; -- 12. 顯示正好為5個字符的員工的姓名SELECT ename FROM emp WHERE ename LIKE '_____';-- 或者SELECT ename FROM emp WHERE LENGTH(ename)=5;

推薦閱讀