MySQL語句查詢練習(一)

在這裏插入圖片描述
在這裏插入圖片描述
emp和dept表如下:

 create table dept(
 deptno int primary key,
 dname varchar(20),
 loc varchar(20))

 INSERT INTO DEPT VALUE (  10,'ACCOUNTING','NEW YORK');  
 INSERT INTO DEPT VALUES  (20,'RESEARCH','DALLAS');  
 INSERT INTO DEPT VALUES (30,'SALES','CHICAGO');  
 insert into dept values(40,'OPERATIONS','BOSTON');


create table emp(
empno int primary key,
ename varchar(20),
job varchar(10),
mgr int,
hiredate date,
sal float,
comm float,
deptno int,
foreign key (deptno) references dept(deptno))

INSERT INTO EMP VALUES
(7369,'SMITH','CLERK',7902,19820712,800,NULL,20),                 
(7499,'ALLEN','SALESMAN',7698,19810220,1600,300,30)   
(7521,'WARD','SALESMAN',7698,19810222,1250,500,30)
(7566,'JONES','MANAGER',7839,19810402,2975,N  ULL,20),                 
(7654,'MARTIN','SALESMAN',7698,19810928,1250,1400,30),                   
(7698,'BLAKE','MANAGER',7839,19810501,2850,NULL,30),
 (7782,'CLARK','MANAGER',7839,19810609,2450,NULL,10),
 (7788,'SCOTT','ANALYST',7566,19870612,3000,NULL,20),
(7839,'KING','PRESIDENT',NULL,19811117,5000,NULL,10), 
(7844,'TURNER','SALESMAN',7698,19810908,1500,0,30),
(7876,'ADAMS','CLERK',7788,19870613,1100,NULL,20),
(7900,'JAMES','CLERK',7698,19811203,950,NULL,30),
(7902,'FORD','ANALYST',7566,19811203,3000,NULL,20),  
(7934,'MILLER','CLERK',7782,19820123,1300,NULL,10); 

練習:
題目 、查出所有部門及所在地(loc)名稱
SQL: Select loc from dept;

題目 查出員工的姓名在81-1到82-1份參加工作
SQL: select ename from emp where hiredate between 19810101 and 19820101;

題目 、員工表的總記錄數
SQL select count(*) from emp;

題目 、職位是Manager的平均月收入是多少
SQL select avg(sal) from emp where job=’MANAGER’;

題目 收入大於平均收入且大於3000的員工的姓名(嵌套)
SQL select ename from emp where sal>avg(sal) and sal>3000;

題目 所有部門的名稱
SQL select dname from dept;

題目 存在僱員的所有部門號
SQL select deptno,group_concat(ename) from emp group by deptno;

題目 工資不超過2850的僱員姓名和工資
SQL select ename,sal from emp where sal<=2850;

題目 工資不在1500到2850之間的所有僱員名及工資
SQL select ename,sal from emp where sal not between 1500 and 2850;

題目 代碼爲7566的僱員姓名及所在部門代碼
分析 當要顯示等於某值的行時,應該在WHERE子句中使用=操作符
SQL select ename,empno from emp where empno=‘7566’;

題目 部門10和30中工資超過1500的僱員名及工資
SQL select ename,sal from emp where sal>1500 and deptno=‘10’ or deptno=‘30’;

題目 無管理者的僱員名及崗位
SQL select ename,job from emp where mgr is null;

題目 在1981年2月1日~1981年5月1日之間僱傭的僱員名、崗位及僱傭日期,並以僱傭日期的先後進行排序
SQL select ename,job,hiredate from emp where hiredate between 19810201 and 19810501 order by hiredate;

題目 獲得補助的所有僱員名、工資及補助額,並以工資和補助的降序排序。
SQL select ename,sal,comm from emp where comm is not null order by comm desc;

題目 給部門10的每個僱員增加到10%的工資
SQL update emp set sal=sal+sal*0.1 where deptno=‘10’;

題目 刪除部門50
SQL delete from emp where deptno=‘50’;

題目 所有僱員的平均工資,總計工資,最高工資,最低工資
SQL select avg(sal),count(sal),max(sal),min(sal) from emp;

題目 每種崗位的僱員總數,平均工資
SQL select count(ename),avg(sal) from emp group by job;

題目 員工總數,以及獲得補助的員工總數
SQL select count(*),count(comm) from emp where comm is not null;

題目 管理者的總人數
SQL select count(distinct mgr) from emp where mgr is not null;

題目 員工工資的最大差額
分析 工資最大差額=員工最高工資-員工最低工資
SQL select max(sal)-min(sal) as sub from emp;

題目 每個部門每個崗位的平均工資
SQL select count(ename),job,avg(sal) from emp group by deptno;

題目 BLAKE同部門的所有僱員,但不顯示BLAKE
SQL select ename from emp where deptno in (select deptno from emp where ename=‘BLAKE’) and ename <> ‘BLAKE’;

題目 超過平均工資的所有僱員名,工資及部門號
SQL select ename,sal,deptno from emp where sal >(select avg(sal) from emp);

題目 高於CLERK崗位所有僱員工資的所有僱員名,工資及崗位
SQL select ename,sal,job from emp where sal>(select max(sal) from emp where job=‘CLERK’);

題目 工資或補助額與SCOTT完全一致的所有僱員名,工資及補助額
SQL select ename,sal,comm from emp where sal in(select sal from emp where ename=‘SCOTT’) or comm in(select comm from emp where ename=‘SCOTT’);

題目 部門20的部門名,以及該部門的所有僱員名,僱員工資及崗位
SQL select ename,empno,sal,job from emp where deptno=‘20’;

題目 獲得補助的所有員工名,補助額以及所在部門名.
SQL select ename,empno,comm from emp where comm is not null;

題目 在”DALLAS”工作的所有僱員名,僱員工資及所在部門名
SQL select e.ename,e.sal,d.dname from emp as e join dept as d on d.deptno=e.deptno
where d.loc=‘DALLAS’;

題目 僱員名SCOTT的管理者名
SQL select e.mgr from emp as e join dept as d on e.deptno=d.deptno where e.ename=‘SCOTT’;

題目 部門10的所有僱員名,部門名,以及其他部門名.
SQL select e.ename,d.dname from emp as e left outer join dept as d
on d.deptno=e.deptno and d.deptno=‘10’;

題目 部門10的所有僱員名,部門名,以及其他僱員名.
SQL select e.ename,d.dname from emp as e left join dept as d on e.deptno=10 and
d.deptno=10 order by d.dname;

題目 部門10的所有僱員名,部門名,以及其他部門名和僱員名
SQL select e.ename,d.dname from emp as e join dept as d on e.deptno=10 and e.deptno=d.deptno order by e.ename;

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