1,設有關系EMP(ENO,ENAME,SALARY,DNO),其中各屬性的含義依次為職工號、姓名、工資和所在部門號,以及關系DEPT(DNO,DNAME,MANAGER),其中各屬性含義依次為部門號、部門名稱、部門經理的職工號
1.試用SQL語句完成以下查詢:
列出各部門中工資不低於600元的職工的平均工資。
分析:這里要求各部門,證明用到分組group by,按什么分組,各部門的名稱,所以group by dname;
答案:select dname as 部門名稱 avg(salay) as 平均工資 from emp e ,dept d where e.dno=d.dno and e.salary >= 600 group by dname;
2.請用SQL語句將“銷售部”的那些工資數額低於600的職工的工資上調10%。
分析:首先應該查出銷售部所有人的工資,在判斷條件工資小於600的人的工資上調10%,也就是乘以1.1,分析好后,我們開始寫代碼。
最基本的這肯定是修改:
update EMP set salay = salay*1.1 where salay<600 and ENO in (select ENO from EMP join DEPT on EMP.DNO = DEPT.DNO 銷售部=DEPT.DNAME) ;
錯誤案例:
UPDATE EMP
SET SALARY = 1.1*SALARY
WHERE EMP.DNO = DEPT.DNO
AND DNAME = “銷售部”
AND SALARY < 600;
這樣寫,DEPT是不識別的,表名是只能在from字句中的
A表中有B表中的id,有這么一個需求,A表中的一個id可能對應B表中的多個id,怎么根據A表的id查出B表id對應的所有信息(姓名、性別、電話、收入)
SELECT g.phone,g.name,g.img,r.status,r.type FROM good g,re_good r WHERE r.id = #id# AND r.type = #type# AND g.o_id = r.o_id