mysql练习题emp,dept

mysql练习题emp,dept

mysql练习题emp,dept

mysql练习题emp,dept
DROP DATABASE IF EXISTS emp;
CREATE DATABASE emp;
USE emp;
 CREATE TABLE dept(
    deptno INT(2) NOT NULL, 
    dname VARCHAR(14),
    loc VARCHAR(13),
    CONSTRAINT pk_dept PRIMARY KEY(deptno)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
 SELECT *FROM  dept;
 INSERT INTO dept VALUES (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(4) NOT NULL PRIMARY KEY,
    ename VARCHAR(10),  
    job VARCHAR(9),  
    mgr INT(4),  
    hiredate DATE,  
    sal FLOAT(7,2),  
    comm FLOAT(7,2),  
    deptno INT(2),
    CONSTRAINT fk_deptno FOREIGN KEY(deptno) REFERENCES dept(deptno)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
SELECT *FROM emp;
INSERT INTO EMP VALUES (7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20); 
INSERT INTO EMP VALUES (7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30); 
INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20); 
INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30); 
INSERT INTO EMP VALUES (7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30); 
INSERT INTO EMP VALUES (7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10); 
INSERT INTO EMP VALUES (7788,'SCOTT','ANALYST',7566,'1987-07-13',3000,NULL,20); 
INSERT INTO EMP VALUES (7839,'KING','PRESIDENT',NULL,'1981-11-07',5000,NULL,10); 
INSERT INTO EMP VALUES (7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30); 
INSERT INTO EMP VALUES (7876,'ADAMS','CLERK',7788,'1987-07-13',1100,NULL,20); 
INSERT INTO EMP VALUES (7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30); 
INSERT INTO EMP VALUES (7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20); 
INSERT INTO EMP VALUES (7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);
SELECT *FROM emp;
CREATE TABLE salgrade (  
    grade INT, 
    losal INT,  
    hisal INT
) ENGINE=INNODB DEFAULT CHARSET=utf8; 
INSERT INTO SALGRADE VALUES (1,700,1200); 
INSERT INTO SALGRADE VALUES (2,1201,1400); 
INSERT INTO SALGRADE VALUES (3,1401,2000); 
INSERT INTO SALGRADE VALUES (4,2001,3000); 
INSERT INTO SALGRADE VALUES (5,3001,9999);
SELECT *FROM salgrade;
-- SQL练习训练一sal工资,comm奖金,mgr 经理编号
-- 1、 选择部门30中的雇员
SELECT *FROM emp WHERE deptno='30';
-- 2、 检索emp表中的员工姓名、月收入及部门编号
SELECT ename 姓名,sal 月收入,empno 部门编号 FROM emp;

-- 3、 检索emp表中员工姓名、及雇佣时间(雇佣时间按照yyyy-mm-dd显示)
 SELECT ename 姓名,hiredate 雇佣时间 FROM emp;
-- 4、 检索emp表中的部门编号及工种,并去掉重复行 
SELECT DISTINCT empno 部门编号,job 工种 FROM emp;
-- 5、 检索emp表中的员工姓名及全年的月收入 
SELECT ename 姓名,sal*12 年收入 FROM emp;
-- 6、 用姓名显示员工姓名,用年收入显示全年月收入。 
SELECT ename 姓名,sal*12 年收入 FROM emp;
-- 7、 检索月收入大于2000的员工姓名及月收入 
SELECT ename 姓名,sal 月收入 FROM emp WHERE sal>2000;
-- 8、 检索月收入在1000元到2000元的员工姓名、月收入及雇佣时间  
SELECT ename &#x59D3;&#x540D;,sal &#x6708;&#x6536;&#x5165; FROM emp WHERE sal<=2000 and sal>=1000;
-- 9&#x3001; &#x68C0;&#x7D22;&#x4EE5;S&#x5F00;&#x5934;&#x7684;&#x5458;&#x5DE5;&#x59D3;&#x540D;&#x53CA;&#x6708;&#x6536;&#x5165;
SELECT ename &#x59D3;&#x540D;,sal &#x6708;&#x6536;&#x5165; FROM emp WHERE ename LIKE 's%';
-- 10&#x3001;&#x68C0;&#x7D22;emp&#x8868;&#x4E2D;&#x6708;&#x6536;&#x5165;&#x662F;800&#x7684;&#x6216;&#x662F;1250&#x7684;&#x5458;&#x5DE5;&#x59D3;&#x540D;&#x53CA;&#x90E8;&#x95E8;&#x7F16;&#x53F7;
SELECT ename &#x59D3;&#x540D;, empno &#x90E8;&#x95E8;&#x7F16;&#x53F7; FROM emp WHERE sal='800'OR sal='1250';
-- 11&#x3001;&#x663E;&#x793A;&#x5728;&#x90E8;&#x95E8;20&#x4E2D;&#x5C97;&#x4F4D;&#x662F;CLERK&#x7684;&#x6240;&#x6709;&#x96C7;&#x5458;&#x4FE1;&#x606F;&#xA0;
SELECT *FROM (SELECT *FROM emp WHERE job='CLERK') s WHERE s.deptno='20';
-- 12&#x3001;&#x663E;&#x793A;&#x5DE5;&#x8D44;&#x9AD8;&#x4E8E;2500&#x6216;&#x5C97;&#x4F4D;&#x4E3A;MANAGER&#x7684;&#x6240;&#x6709;&#x96C7;&#x5458;&#x4FE1;&#x606F;&#xA0;
SELECT *FROM emp WHERE sal>2500 OR job='MANAGER';
-- 13&#x3001;&#x68C0;&#x7D22;emp&#x8868;&#x4E2D;&#x6709;&#x5956;&#x91D1;&#x7684;&#x5458;&#x5DE5;&#x59D3;&#x540D;&#x3001;&#x6708;&#x6536;&#x5165;&#x53CA;&#x5956;&#x91D1;&#xA0;
SELECT ename &#x59D3;&#x540D;,sal &#x6708;&#x6536;&#x5165;,comm &#x5956;&#x91D1; FROM emp WHERE comm>0;
-- 14&#x3001;&#x68C0;&#x7D22;emp&#x8868;&#x4E2D;&#x90E8;&#x95E8;&#x7F16;&#x53F7;&#x662F;30&#x7684;&#x5458;&#x5DE5;&#x59D3;&#x540D;&#x3001;&#x6708;&#x6536;&#x5165;&#x53CA;&#x63D0;&#x6210;&#xFF0C;&#x5E76;&#x8981;&#x6C42;&#x5176;&#x7ED3;&#x679C;&#x6309;&#x6708;&#x6536;&#x5165;&#x5347;&#x5E8F;&#x3001;&#x7136;&#x540E;&#x6309;&#x63D0;&#x6210;&#x964D;&#x5E8F;&#x663E;&#x793A;&#xA0;
SELECT s.ename &#x59D3;&#x540D;,s.sal &#x6708;&#x6536;&#x5165;,s.mgr &#x63D0;&#x6210; FROM(SELECT *FROM emp WHERE deptno='30' ORDER BY sal ASC) s ORDER BY s.mgr DESC;
-- 15&#x3001;&#x5217;&#x51FA;&#x6240;&#x6709;&#x529E;&#x4E8B;&#x5458;&#x7684;&#x59D3;&#x540D;&#x3001;&#x7F16;&#x53F7;&#x548C;&#x90E8;&#x95E8;(&#x59D3;&#x540D;&#x5BF9;&#x4E0D;&#x4E0A;)
SELECT &#xA0;a.ename &#x59D3;&#x540D;,a.empno ,b.deptno FROM dept a LEFT JOIN emp b WHERE a.ename=b.dname;
-- 17&#x3001;&#x627E;&#x51FA;&#x90E8;&#x95E8;10&#x4E2D;&#x6240;&#x6709;&#x7ECF;&#x7406;&#x548C;&#x90E8;&#x95E8;20&#x4E2D;&#x7684;&#x6240;&#x6709;&#x529E;&#x4E8B;&#x5458;&#x7684;&#x8BE6;&#x7EC6;&#x8D44;&#x6599;
SELECT *FROM emp WHERE (deptno='10' AND job='MANAGER') OR (deptno ='20' AND job='CLERK');
-- 18&#x3001;&#x627E;&#x51FA;&#x90E8;&#x95E8;10&#x4E2D;&#x6240;&#x6709;&#x7ECF;&#x7406;&#x3001;&#x90E8;&#x95E8;20&#x4E2D;&#x6240;&#x6709;&#x529E;&#x4E8B;&#x5458;&#xFF0C;&#x65E2;&#x4E0D;&#x662F;&#x7ECF;&#x7406;&#x53C8;&#x4E0D;&#x662F;&#x529E;&#x4E8B;&#x5458;&#x4F46;&#x5176;&#x85AA;&#x91D1;>=2000&#x7684;&#x6240;&#x6709;&#x96C7;&#x5458;&#x7684;&#x8BE6;&#x7EC6;&#x8D44;&#x6599;
SELECT *FROM emp WHERE (deptno='10' AND job='MANAGER') OR (deptno ='20' AND job='CLERK')OR (job NOT IN('MANAGER','CLERK') AND sal>=2000);

-- 19&#x3001;&#x627E;&#x51FA;&#x6536;&#x53D6;&#x5956;&#x91D1;&#x7684;&#x96C7;&#x5458;&#x7684;&#x4E0D;&#x540C;&#x5DE5;&#x4F5C;
SELECT DISTINCT job &#x5DE5;&#x4F5C; FROM emp WHERE comm>0;
-- 20&#x3001;&#x627E;&#x51FA;&#x4E0D;&#x6536;&#x53D6;&#x5956;&#x91D1;&#x6216;&#x6536;&#x53D6;&#x7684;&#x5956;&#x91D1;&#x4F4E;&#x4E8E;100&#x7684;&#x96C7;&#x5458;&#xA0;
SELECT ename &#x59D3;&#x540D; FROM emp WHERE comm<100 1 or comm is null; -- 21、找出各月倒数第三天受雇的所有雇员 select ename 各月倒数三天受雇人姓名 from emp where dayofmonth(last_day(hiredate))-dayofmonth(hiredate)<="3;" last_day(hiredate) emp; dayofmonth(last_day(hiredate)) dayofmonth(hiredate) dayofmonth(now()) 22、获取当前日期所在月的最后一天 curdate();   获取当前日期 date_add(curdate(),interval -day(curdate())+1 day) 获取本月第一天 last_day(curdate()); 获取当月最后一天 date_add(curdate()-day(curdate())+1,interval month ) 获取下个月的第一天 datediff(date_add(curdate()-day(curdate())+1,interval ),date_add(curdate(),interval day)) dual 获取当前月的天数 23、找出早于25年之前受雇的雇员 *from date_add(now(),interval -25 year)>hiredate;

-- 24&#x3001;&#x663E;&#x793A;&#x6B63;&#x597D;&#x4E3A;6&#x4E2A;&#x5B57;&#x7B26;&#x7684;&#x96C7;&#x5458;&#x59D3;&#x540D;
SELECT *FROM emp WHERE ename LIKE '%______';&#xA0;
SELECT *FROM emp WHERE LENGTH(ename)='6';
-- 25&#x3001;&#x663E;&#x793A;&#x4E0D;&#x5E26;&#x6709;'R'&#x7684;&#x96C7;&#x5458;&#x59D3;&#x540D;
SELECT *FROM emp WHERE ename &#xA0;NOT LIKE '%R%';
-- 26&#x3001;&#x663E;&#x793A;&#x96C7;&#x5458;&#x7684;&#x8BE6;&#x7EC6;&#x8D44;&#x6599;&#xFF0C;&#x6309;&#x59D3;&#x540D;&#x6392;&#x5E8F;
SELECT *FROM emp ORDER BY ename;
-- 27&#x3001;&#x663E;&#x793A;&#x96C7;&#x5458;&#x59D3;&#x540D;&#xFF0C;&#x6839;&#x636E;&#x5176;&#x670D;&#x52A1;&#x5E74;&#x9650;&#xFF0C;&#x5C06;&#x6700;&#x8001;&#x7684;&#x96C7;&#x5458;&#x6392;&#x5728;&#x6700;&#x524D;&#x9762;&#xA0;
&#xA0;SELECT ename &#x59D3;&#x540D;,hiredate FROM emp ORDER BY hiredate;
-- 28&#x3001;&#x663E;&#x793A;&#x6240;&#x6709;&#x96C7;&#x5458;&#x7684;&#x59D3;&#x540D;&#x3001;&#x5DE5;&#x4F5C;&#x548C;&#x85AA;&#x91D1;&#xFF0C;&#x6309;&#x5DE5;&#x4F5C;&#x7684;&#x964D;&#x5E8F;&#x987A;&#x5E8F;&#x6392;&#x5E8F;&#xFF0C;&#x800C;&#x5DE5;&#x4F5C;&#x76F8;&#x540C;&#x65F6;&#x6309;&#x85AA;&#x91D1;&#x5347;&#x5E8F;
SELECT t.ename &#x59D3;&#x540D;,t.job &#x5DE5;&#x4F5C;,t.sal &#x85AA;&#x91D1; FROM(SELECT * FROM emp ORDER BY job DESC) t ORDER BY t.sal ASC;
-- 29&#x3001;&#x663E;&#x793A;&#x6240;&#x6709;&#x96C7;&#x5458;&#x7684;&#x59D3;&#x540D;&#x548C;&#x52A0;&#x5165;&#x516C;&#x53F8;&#x7684;&#x5E74;&#x4EFD;&#x548C;&#x6708;&#x4EFD;&#xFF0C;&#x6309;&#x96C7;&#x5458;&#x53D7;&#x96C7;&#x65E5;&#x6240;&#x5728;&#x6708;&#x6392;&#x5E8F;&#xFF0C;&#x5C06;&#x6700;&#x65E9;&#x5E74;&#x4EFD;&#x7684;&#x9879;&#x76EE;&#x6392;&#x5728;&#x6700;&#x524D;&#x9762;&#xA0;
SELECT t.ename &#x59D3;&#x540D;, YEAR(t.hiredate) &#x5E74;&#x4EFD;, MONTH(t.hiredate)&#x6708;&#x4EFD; &#xA0;FROM(SELECT *FROM emp ORDER BY DAY(hiredate))t ORDER BY YEAR(t.hiredate);
-- 30&#x3001;&#x663E;&#x793A;&#x5728;&#x4E00;&#x4E2A;&#x6708;&#x4E3A;30&#x5929;&#x7684;&#x60C5;&#x51B5;&#x4E0B;&#x6240;&#x6709;&#x96C7;&#x5458;&#x7684;&#x65E5;&#x85AA;&#x91D1;
SELECT sal/30 &#x65E5;&#x85AA;&#x91D1; FROM emp WHERE &#xA0;DAY(LAST_DAY(hiredate));
SELECT LAST_DAY(hiredate) FROM emp;
-- 31&#x3001;&#x627E;&#x51FA;&#x5728;&#xFF08;&#x4EFB;&#x4F55;&#x5E74;&#x4EFD;&#x7684;&#xFF09;2&#x6708;&#x53D7;&#x8058;&#x7684;&#x6240;&#x6709;&#x96C7;&#x5458;
SELECT ename &#x59D3;&#x540D;,MONTH(hiredate) &#x6708;&#x4EFD; FROM emp WHERE MONTH(hiredate)=2;
-- 32&#x3001;&#x5BF9;&#x4E8E;&#x6BCF;&#x4E2A;&#x96C7;&#x5458;&#xFF0C;&#x663E;&#x793A;&#x5176;&#x52A0;&#x5165;&#x516C;&#x53F8;&#x7684;&#x5929;&#x6570;
SELECT ename &#x59D3;&#x540D;,TIMESTAMPDIFF(DAY,hiredate,NOW()) &#x52A0;&#x5165;&#x516C;&#x53F8;&#x5929;&#x6570; FROM emp;
-- 33&#x3001;&#x663E;&#x793A;&#x59D3;&#x540D;&#x5B57;&#x6BB5;&#x7684;&#x4EFB;&#x4F55;&#x4F4D;&#x7F6E;&#xFF0C;&#x5305;&#x542B; "A" &#x7684;&#x6240;&#x6709;&#x96C7;&#x5458;&#x7684;&#x59D3;&#x540D;&#xA0;
SELECT SUBSTRING(ename,1,1)&#x7B2C;&#x4E00;&#x4E2A;&#x5B57;&#x6BCD;,SUBSTRING(ename,2,1)&#x7B2C;&#x4E8C;&#x4E2A;&#x5B57;&#x6BCD;,SUBSTRING(ename,3,1)&#x7B2C;&#x4E09;&#x4E2A;&#x5B57;&#x6BCD;,SUBSTRING(ename,4,1)&#x7B2C;&#x56DB;&#x4E2A;&#x5B57;&#x6BCD;,SUBSTRING(ename,5,1)&#x7B2C;&#x516D;&#x4E2A;&#x5B57;&#x6BCD;,SUBSTRING(ename,6,1)&#x7B2C;&#x4E94;&#x4E2A;&#x5B57;&#x6BCD;,ename &#x59D3;&#x540D; FROM emp WHERE ename LIKE '%A%';
-- 34&#x3001;&#x4EE5;&#x5E74;&#x3001;&#x6708;&#x548C;&#x65E5;&#x663E;&#x793A;&#x6240;&#x6709;&#x96C7;&#x5458;&#x7684;&#x670D;&#x52A1;&#x5E74;&#x9650;&#xA0;
SELECT ename &#x59D3;&#x540D;, YEAR(hiredate) &#x5E74;,MONTH(hiredate)&#x6708;,DAY(hiredate) &#x65E5;,TIMESTAMPDIFF(YEAR,hiredate,NOW()) &#x670D;&#x52A1;&#x5E74;&#x6570; FROM emp;
&#xA0;
-- 35&#x3001;&#x9009;&#x62E9;&#x516C;&#x53F8;&#x4E2D;&#x6709;&#x5956;&#x91D1; (COMM&#x4E0D;&#x4E3A;&#x7A7A;,&#x4E14;&#x4E0D;&#x4E3A;0) &#x7684;&#x5458;&#x5DE5;&#x59D3;&#x540D;&#xFF0C;&#x5DE5;&#x8D44;&#x548C;&#x5956;&#x91D1;&#x6BD4;&#x4F8B;,&#x6309;&#x5DE5;&#x8D44;&#x9006;&#x6392;&#x5E8F;,&#x5956;&#x91D1;&#x6BD4;&#x4F8B;&#x9006;&#x6392;&#x5E8F;.

SELECT t.ename &#x6709;&#x5956;&#x91D1;&#x5458;&#x5DE5;&#x59D3;&#x540D;,t.sal &#x5DE5;&#x8D44;,t.comm &#x5956;&#x91D1; FROM ( SELECT *FROM emp WHERE comm>0 ORDER BY sal DESC) t ORDER BY t.comm DESC;&#xA0;
-- 36&#x3001;&#x9009;&#x62E9;&#x516C;&#x53F8;&#x4E2D;&#x6CA1;&#x6709;&#x7BA1;&#x7406;&#x8005;&#x7684;&#x5458;&#x5DE5;&#x59D3;&#x540D;&#x53CA;job&#xA0;
SELECT ename &#x59D3;&#x540D;,job &#x5DE5;&#x4F5C; FROM emp WHERE job NOT IN('MANAGER','PRESIDENT');
-- 37&#x3001;&#x9009;&#x62E9;&#x5728;1987&#x5E74;&#x96C7;&#x7528;&#x7684;&#x5458;&#x5DE5;&#x7684;&#x59D3;&#x540D;&#x548C;&#x96C7;&#x7528;&#x65F6;&#x95F4;&#xA0;
SELECT ename &#x59D3;&#x540D;,hiredate &#x96C7;&#x7528;&#x65F6;&#x95F4; FROM emp WHERE YEAR(hiredate)=1987;
-- 38&#x3001;&#x9009;&#x62E9;&#x5728;20&#x6216;10&#x53F7;&#x90E8;&#x95E8;&#x5DE5;&#x4F5C;&#x7684;&#x5458;&#x5DE5;&#x59D3;&#x540D;&#x548C;&#x90E8;&#x95E8;&#x53F7;&#xA0;
SELECT ename &#x59D3;&#x540D;,deptno &#x90E8;&#x95E8;&#x53F7; FROM &#xA0;emp WHERE deptno=10 OR deptno=20;
-- 39&#x3001;&#x9009;&#x62E9;&#x96C7;&#x7528;&#x65F6;&#x95F4;&#x5728;1981-02-01&#x5230;1981-05-01&#x4E4B;&#x95F4;&#x7684;&#x5458;&#x5DE5;&#x59D3;&#x540D;&#xFF0C;&#x804C;&#x4F4D;(job)&#x548C;&#x96C7;&#x7528;&#x65F6;&#x95F4;,&#x6309;&#x4ECE;&#x65E9;&#x5230;&#x665A;&#x6392;&#x5E8F;.&#xA0;
SELECT ename &#x59D3;&#x540D;,job &#x804C;&#x4F4D;,hiredate &#x96C7;&#x4F63;&#x65F6;&#x95F4; FROM emp WHERE hiredate>'1981-02-01' AND hiredate<'1981-05-01'; -- 40、选择工资不在5000到12000的员工的姓名和工资  select ename 姓名,sal 工资 from emp where not sal>'5000' AND sal<'12000'; -- 41、查询员工号为7934的员工的姓名和部门号  select ename 姓名,deptno 部门号 from emp where empno in('7934'); 42、查询工资大于1200的员工姓名和工资 姓名,sal 工资 sal>1200;

-- &#x590D;&#x6742;&#x67E5;&#x8BE2;
-- 1. &#xA0;&#x5217;&#x51FA;&#x4E0E;&#x201C;SCOTT&#x201D;&#x4ECE;&#x4E8B;&#x76F8;&#x540C;&#x5DE5;&#x4F5C;&#x7684;&#x6240;&#x6709;&#x5458;&#x5DE5;&#x53CA;&#x90E8;&#x95E8;&#x540D;&#x79F0;&#xFF0C;&#x90E8;&#x95E8;&#x4EBA;&#x6570;&#x3002;
SELECT ename &#x540D;&#x5B57;,dname &#x90E8;&#x95E8;&#x540D;&#x79F0;,(SELECT COUNT(*) FROM emp WHERE deptno=20) &#x4EBA;&#x6570; FROM emp,dept WHERE emp.job(SELECT emp.JOB FROM emp WHERE emp.ENAME = 'SCOTT')AND emp.deptno=dept.deptno;
SELECT COUNT(*) FROM emp WHERE deptno=20;

-- 2. &#xA0;&#x5217;&#x51FA;&#x516C;&#x53F8;&#x5404;&#x4E2A;&#x5DE5;&#x8D44;&#x7B49;&#x7EA7;&#x96C7;&#x5458;&#x7684;&#x6570;&#x91CF;&#x3001;&#x5E73;&#x5747;&#x5DE5;&#x8D44;&#x3002;
SELECT salgrade.GRADE AS '&#x85AA;&#x8D44;&#x7B49;&#x7EA7;', COUNT(tt.EMPNO) AS '&#x5458;&#x5DE5;&#x6570;' ,AVG(tt.sal)&#x5E73;&#x5747;&#x5DE5;&#x8D44;
FROM salgrade,&#xA0;
(SELECT emp.EMPNO, emp.SAL emp) AS tt WHERE tt.SAL >= salgrade.LOSAL AND tt.SAL <= salgrade.hisal group by salgrade.grade; -- 3.  列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称。    select max(sal) from emp where deptno="30;" *from sal>(SELECT MAX(sal) FROM emp WHERE deptno=30);
&#xA0; &#xA0;SELECT c.ename &#x59D3;&#x540D;,c.sal &#x85AA;&#x91D1;,d.dname &#x90E8;&#x95E8;&#x540D;&#x79F0; FROM dept AS d JOIN (SELECT *FROM emp WHERE sal>(SELECT MAX(sal) FROM emp WHERE deptno=30)) AS c WHERE d.deptno=c.deptno;&#xA0;
-- 4. &#xA0;&#x5217;&#x51FA;&#x5728;&#x6BCF;&#x4E2A;&#x90E8;&#x95E8;&#x5DE5;&#x4F5C;&#x7684;&#x5458;&#x5DE5;&#x6570;&#x91CF;&#x3001;&#x5E73;&#x5747;&#x5DE5;&#x8D44;&#x548C;&#x5E73;&#x5747;&#x670D;&#x52A1;&#x671F;&#x9650;&#x3002;
SELECT AVG(sal),(SELECT COUNT(*)FROM emp GROUP BY deptno) FROM emp ;
SELECT COUNT(*)FROM emp GROUP BY deptno;
SELECT AVG(sal)FROM emp GROUP BY deptno;
SELECT COUNT(*),AVG(sal),AVG(YEAR(NOW())-YEAR(hiredate))FROM emp GROUP BY deptno;
-- 5. &#xA0;&#x5217;&#x51FA;&#x6240;&#x6709;&#x5458;&#x5DE5;&#x7684;&#x59D3;&#x540D;&#x3001;&#x90E8;&#x95E8;&#x540D;&#x79F0;&#x548C;&#x5DE5;&#x8D44;&#x3002;
SELECT e.ename &#x59D3;&#x540D;,d.dname &#x90E8;&#x95E8;&#x540D;&#x79F0;,e.sal &#x5DE5;&#x8D44; FROM emp e JOIN dept d ON e.deptno=d.deptno;
-- 6. &#xA0;&#x5217;&#x51FA;&#x6240;&#x6709;&#x90E8;&#x95E8;&#x7684;&#x8BE6;&#x7EC6;&#x4FE1;&#x606F;&#x548C;&#x90E8;&#x95E8;&#x4EBA;&#x6570;&#x3002;
SELECT d.*,COUNT(*) &#x90E8;&#x95E8;&#x4EBA;&#x6570; FROM dept d JOIN emp e ON e.deptno=d.deptno GROUP BY deptno;
-- 7. &#xA0;&#x5217;&#x51FA;&#x5404;&#x79CD;&#x5DE5;&#x4F5C;&#x7684;&#x6700;&#x4F4E;&#x5DE5;&#x8D44;&#x53CA;&#x4ECE;&#x4E8B;&#x6B64;&#x5DE5;&#x4F5C;&#x7684;&#x96C7;&#x5458;&#x59D3;&#x540D;&#x3002;
SELECT job, MIN(sal) FROM emp &#xA0;GROUP BY job;
SELECT job, MIN(sal) FROM emp &#xA0;GROUP BY job;

SELECT ename FROM emp e JOIN (SELECT job, MIN(sal) FROM emp &#xA0;GROUP BY job) t WHERE e.job=t.job AND e.sal=MIN(sal);&#xA0;
-- 8. &#xA0;&#x5217;&#x51FA;&#x5404;&#x4E2A;&#x90E8;&#x95E8;&#x7684;MANAGER(&#x7ECF;&#x7406;)&#x7684;&#x6700;&#x4F4E;&#x85AA;&#x91D1;&#x3001;&#x59D3;&#x540D;&#x3001;&#x90E8;&#x95E8;&#x540D;&#x79F0;&#x3001;&#x90E8;&#x95E8;&#x4EBA;&#x6570;&#x3002;
SELECT MIN(e.sal),e.ename FROM emp e JOIN dept t ON e.deptno=t.deptno WHERE job IN('MANAGER') GROUP BY t.deptno;
SELECT e.sal,e.ename, d.dname,COUNT=(SELECT COUNT(*) FROM emp WHERE job IN('MANAGER')GROUP BY deptno ) FROM emp e JOIN dept d ON e.deptno=d.deptno WHERE job IN('MANAGER')
-- 9. &#xA0;&#x5217;&#x51FA;&#x6240;&#x6709;&#x5458;&#x5DE5;&#x7684;&#x5E74;&#x5DE5;&#x8D44;&#xFF0C;&#x6240;&#x5728;&#x90E8;&#x95E8;&#x540D;&#x79F0;&#xFF0C;&#x6309;&#x5E74;&#x85AA;&#x4ECE;&#x4F4E;&#x5230;&#x9AD8;&#x6392;&#x5E8F;&#x3002;
&#xA0;SELECT ename, sal*12 FROM emp ORDER BY sal*12 ASC;
-- 10. &#x67E5;&#x51FA;&#x67D0;&#x4E2A;&#x5458;&#x5DE5;&#x7684;&#x4E0A;&#x7EA7;&#x4E3B;&#x7BA1;&#x53CA;&#x6240;&#x5728;&#x90E8;&#x95E8;&#x540D;&#x79F0;&#xFF0C;&#x5E76;&#x8981;&#x6C42;&#x51FA;&#x8FD9;&#x4E9B;&#x4E3B;&#x7BA1;&#x4E2D;&#x7684;&#x85AA;&#x6C34;&#x8D85;&#x8FC7;3000
&#xA0; &#xA0; SELECT mgr FROM emp WHERE ename='SMITH'&#xA0;
&#xA0; &#xA0; SELECT e.ename ,d.dname FROM emp e JOIN dept d ON e.deptno=d.deptno WHERE empno=(SELECT mgr FROM emp WHERE ename='SMITH') AND e.sal>3000;
-- 11. &#x6C42;&#x51FA;&#x90E8;&#x95E8;&#x540D;&#x79F0;&#x4E2D;&#xFF0C;&#x5E26;&#x2018;S&#x2019;&#x5B57;&#x7B26;&#x7684;&#x90E8;&#x95E8;&#x5458;&#x5DE5;&#x7684;&#x5DE5;&#x8D44;&#x5408;&#x8BA1;&#x3001;&#x90E8;&#x95E8;&#x4EBA;&#x6570;&#x3002;
&#xA0; &#xA0;SELECT deptno FROM dept WHERE dname LIKE '%S%';-- &#x67E5;&#x8BE2;&#x90E8;&#x95E8;
&#xA0; &#xA0;SELECT SUM(sal),COUNT(*)FROM emp WHERE deptno IN(SELECT deptno FROM dept WHERE dname LIKE '%S%') GROUP BY deptno;
-- 12. &#x7ED9;&#x4EFB;&#x804C;&#x65E5;&#x671F;&#x8D85;&#x8FC7;40&#x5E74;&#x6216;&#x8005;&#x5728;87&#x5E74;&#x96C7;&#x4F63;&#x7684;&#x96C7;&#x5458;&#x52A0;&#x85AA;&#xFF0C;&#x52A0;&#x85AA;&#x539F;&#x5219;&#xFF1A;10&#x90E8;&#x95E8;&#x589E;&#x957F;10%&#xFF0C;20&#x90E8;&#x95E8;&#x589E;&#x957F;20%&#xFF0C;30&#x90E8;&#x95E8;&#x589E;&#x957F;30%&#xFF0C;&#x4F9D;&#x6B21;&#x7C7B;&#x63A8;&#x3002;
&#xA0; &#xA0; &#xA0;SELECT *FROM emp WHERE &#xA0;YEAR(NOW())-YEAR(hiredate)>40 OR YEAR(hiredate)=1987;
&#xA0; &#xA0; &#xA0;SELECT YEAR(NOW())-YEAR(hiredate)FROM emp;
&#xA0; &#xA0; &#xA0;SELECT IF(emp.deptno=10,sal+sal*0.1,IF(emp.sal=20,sal+sal*0.2,IF(emp.deptno=30,sal+sal*0.3,'&#x65E0;'))) FROM emp WHERE YEAR(NOW())-YEAR(hiredate)>40 OR YEAR(hiredate)=1987;&#xA0;
-- 13. &#x5217;&#x51FA;&#x81F3;&#x5C11;&#x6709;&#x4E00;&#x4E2A;&#x5458;&#x5DE5;&#x7684;&#x6240;&#x6709;&#x90E8;&#x95E8;&#x7684;&#x4FE1;&#x606F;&#xFF1A;
&#xA0; &#xA0; &#xA0;SELECT COUNT(*)FROM emp GROUP BY deptno;
&#xA0; &#xA0; &#xA0;SELECT &#xA0; deptno FROM emp &#xA0;;
&#xA0; &#xA0; &#xA0;SELECT *FROM emp LEFT JOIN dept ON dept.deptno=emp.deptno GROUP BY dept.dname &#xA0;HAVING COUNT(emp.empno)>=5;
&#xA0; &#xA0; &#xA0;SELECT dept.DNAME AS '&#x90E8;&#x95E8;&#x540D;', COUNT(emp.EMPNO) AS '&#x5458;&#x5DE5;&#x4E2A;&#x6570;'
FROM dept LEFT JOIN emp ON dept.DEPTNO = emp.DEPTNO
GROUP BY dept.DNAME HAVING COUNT(emp.EMPNO) >= 5;
-- 14. &#x5217;&#x51FA;&#x85AA;&#x6C34;&#x6BD4;&#x201C;SMITH&#x201D;&#x591A;&#x7684;&#x6240;&#x6709;&#x5458;&#x5DE5;&#x4FE1;&#x606F;

SELECT *FROM emp WHERE emp.SAL > (SELECT emp.SAL emp WHERE emp.ENAME = 'SMITH');

-- 15. &#x5217;&#x51FA;&#x6240;&#x6709;&#x5458;&#x5DE5;&#x7684;&#x59D3;&#x540D;&#x4EE5;&#x53CA;&#x5176;&#x76F4;&#x63A5;&#x4E0A;&#x7EA7;&#x7684;&#x59D3;&#x540D;&#xFF1A;
SELECT DISTINCT e.ename &#x5458;&#x5DE5;&#x59D3;&#x540D;,d.ename FROM emp e JOIN (SELECT ename FROM emp WHERE empno IN(SELECT mgr FROM emp WHERE ename=ename)) d;&#xA0;
SELECT mgr FROM emp WHERE ename=ename;
SELECT ename FROM emp WHERE empno IN(SELECT mgr FROM emp WHERE ename=ename);

SELECT emp.ENAME AS '&#x5458;&#x5DE5;&#x540D;&#x79F0;', tt.lname AS '&#x9886;&#x5BFC;&#x540D;&#x79F0;'
FROM emp LEFT JOIN (
&#xA0; &#xA0; SELECT emp.EMPNO, emp.ENAME AS 'lname'
&#xA0; &#xA0; FROM emp&#xA0;
&#xA0; &#xA0; WHERE empno IN (SELECT mgr FROM emp)) AS tt ON emp.MGR = tt.empno;

-- 16. &#x5217;&#x51FA;&#x53D7;&#x96C7;&#x65E5;&#x671F;&#x65E9;&#x4E8E;&#x5176;&#x76F4;&#x63A5;&#x4E0A;&#x7EA7;&#x7684;&#x6240;&#x6709;&#x5458;&#x5DE5;&#x7684;&#x7F16;&#x53F7;&#x3001;&#x59D3;&#x540D;&#xFF0C;&#x90E8;&#x95E8;&#x540D;&#x79F0;
SELECT t2.eno AS '&#x7F16;&#x53F7;', t2.ename AS '&#x59D3;&#x540D;', dept.DNAME AS '&#x90E8;&#x95E8;&#x540D;&#x79F0;', t2.ehiredate AS '&#x5458;&#x5DE5;&#x53D7;&#x96C7;&#x65E5;&#x671F;', t2.lhiredate AS '&#x9886;&#x5BFC;&#x53D7;&#x96C7;&#x65E5;&#x671F;'
FROM dept
INNER JOIN&#xA0;
(
&#xA0; &#xA0; SELECT emp.EMPNO AS 'eno', emp.ENAME, emp.HIREDATE AS 'ehiredate', t1.lhiredate, emp.DEPTNO
&#xA0; &#xA0; FROM&#xA0;
&#xA0; &#xA0; emp LEFT JOIN&#xA0;
&#xA0; &#xA0; (
&#xA0; &#xA0; &#xA0; &#xA0; SELECT emp.EMPNO AS 'lno', emp.HIREDATE AS 'lhiredate'
&#xA0; &#xA0; &#xA0; &#xA0; FROM emp&#xA0;
&#xA0; &#xA0; &#xA0; &#xA0; WHERE empno IN&#xA0;
&#xA0; &#xA0; &#xA0; &#xA0; (
&#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; SELECT mgr FROM emp
&#xA0; &#xA0; &#xA0; &#xA0; ) -- &#x627E;&#x51FA;&#x6240;&#x6709;&#x662F;&#x9886;&#x5BFC;&#x7684;&#x5458;&#x5DE5;no
&#xA0;
&#xA0; &#xA0; ) AS t1
&#xA0; &#xA0; ON emp.MGR = t1.lno
) AS t2
ON t2.deptno = dept.DEPTNO
WHERE t2.ehiredate < &#xA0;t2.lhiredate OR t2.lhiredate IS NULL;
-- 17. &#x5217;&#x51FA;&#x90E8;&#x95E8;&#x540D;&#x79F0;&#x548C;&#x8FD9;&#x4E9B;&#x90E8;&#x95E8;&#x7684;&#x5458;&#x5DE5;&#x4FE1;&#x606F;&#xFF0C;&#x540C;&#x65F6;&#x5217;&#x51FA;&#x90A3;&#x4E9B;&#x6CA1;&#x6709;&#x5458;&#x5DE5;&#x7684;&#x90E8;&#x95E8;
SELECT dept.DNAME AS '&#x90E8;&#x95E8;&#x540D;&#x79F0;', emp.ENAME AS '&#x5458;&#x5DE5;&#x540D;&#x79F0;', emp.JOB AS '&#x804C;&#x4F4D;', emp.HIREDATE AS '&#x5165;&#x804C;&#x65F6;&#x95F4;', emp.SAL AS '&#x85AA;&#x6C34;'
FROM dept LEFT JOIN emp ON dept.DEPTNO = emp.DEPTNO;
&#xA0;
&#xA0;

-- 18. &#x5217;&#x51FA;&#x6240;&#x6709;"CLERK(&#x804C;&#x5458;)"&#x7684;&#x59D3;&#x540D;&#x4EE5;&#x53CA;&#x90E8;&#x95E8;&#x540D;&#x79F0;&#xFF0C;&#x90E8;&#x95E8;&#x7684;&#x4EBA;&#x6570;
SELECT emp.ENAME AS '&#x59D3;&#x540D;', dept.DNAME AS '&#x90E8;&#x95E8;&#x540D;&#x79F0;', tt.emp_count AS '&#x90E8;&#x95E8;&#x4EBA;&#x6570;'
FROM emp LEFT JOIN dept ON emp.DEPTNO = dept.DEPTNO
INNER JOIN&#xA0;
(
&#xA0; &#xA0; SELECT dept.DEPTNO, COUNT(emp.EMPNO) AS 'emp_count'
&#xA0; &#xA0; FROM dept LEFT JOIN emp ON dept.DEPTNO = emp.DEPTNO
&#xA0; &#xA0; GROUP BY dept.DEPTNO&#xA0;
&#xA0;
) AS tt
ON emp.DEPTNO = tt.deptno
&#xA0;
WHERE emp.JOB = 'CLERK';
-- 19. &#x5217;&#x51FA;&#x6700;&#x4F4E;&#x85AA;&#x91D1;&#x5927;&#x4E8E;1500&#x7684;&#x5404;&#x79CD;&#x5DE5;&#x4F5C;&#x4EE5;&#x53CA;&#x4ECE;&#x4E8B;&#x6B64;&#x5DE5;&#x4F5C;&#x7684;&#x5168;&#x90E8;&#x96C7;&#x5458;&#x4EBA;&#x6570;
SELECT emp.JOB AS '&#x5DE5;&#x4F5C;&#x540D;&#x79F0;', COUNT(emp.EMPNO) AS '&#x96C7;&#x5458;&#x4EBA;&#x6570;'
FROM emp&#xA0;
WHERE emp.JOB IN (
&#xA0; &#xA0; SELECT emp.JOB
&#xA0; &#xA0; FROM emp
&#xA0; &#xA0; GROUP BY emp.JOB HAVING MIN(emp.SAL) >1500
)
GROUP BY emp.JOB;
-- 20. &#x5217;&#x51FA;&#x5728;&#x90E8;&#x95E8;"SALES"&#x5DE5;&#x4F5C;&#x7684;&#x5458;&#x5DE5;&#x7684;&#x59D3;&#x540D;&#xFF0C;&#x5047;&#x5B9A;&#x4E0D;&#x77E5;&#x9053;&#x9500;&#x552E;&#x90E8;&#x7684;&#x90E8;&#x95E8;&#x7F16;&#x53F7;
SELECT emp.ENAME AS '&#x9500;&#x552E;&#x90E8;&#x4EBA;&#x5458;'
FROM emp
WHERE emp.DEPTNO = (
&#xA0; &#xA0; SELECT dept.DEPTNO
&#xA0; &#xA0; FROM dept
&#xA0; &#xA0; WHERE dept.DNAME = 'sales'
);
-- 21. &#x5217;&#x51FA;&#x85AA;&#x91D1;&#x9AD8;&#x4E8E;&#x516C;&#x53F8;&#x5E73;&#x5747;&#x85AA;&#x91D1;&#x7684;&#x6240;&#x6709;&#x5458;&#x5DE5;&#xFF0C;&#x6240;&#x5728;&#x90E8;&#x95E8;&#xFF0C;&#x4E0A;&#x7EA7;&#x9886;&#x5BFC;&#xFF0C;&#x516C;&#x53F8;&#x7684;&#x5DE5;&#x8D44;&#x7B49;&#x7EA7;
SELECT t1.ename AS '&#x5458;&#x5DE5;&#x540D;&#x79F0;', dept.DNAME AS '&#x90E8;&#x95E8;&#x540D;&#x79F0;', t2.ename AS '&#x4E0A;&#x7EA7;&#x540D;&#x79F0;', t1.grade AS '&#x5DE5;&#x8D44;&#x7B49;&#x7EA7;', t1.sal AS '&#x5DE5;&#x8D44;'
&#xA0;
FROM&#xA0;
(
&#xA0; &#xA0; SELECT emp.EMPNO, emp.DEPTNO, emp.ENAME, emp.SAL, emp.MGR,salgrade.GRADE
&#xA0; &#xA0; FROM emp, salgrade
&#xA0; &#xA0; WHERE emp.SAL > (
&#xA0; &#xA0; &#xA0; &#xA0; SELECT AVG(sal) AS 'avg_sal'
&#xA0; &#xA0; &#xA0; &#xA0; FROM emp
&#xA0; &#xA0; ) AND emp.SAL >= salgrade.LOSAL AND emp.SAL <= salgrade.hisal ) as t1 left join  (   select emp.empno 'mgr', emp.ename -- 注意这里是查出所有领导的empno,作为mgr编号 from emp  where in  distinct(emp.mgr) 必须要distinct 不然查出来的mgr有重复,后面上层再查重复值接近笛卡尔积 emp mgr is not null t2 on t1.mgr="t2.mgr" join dept t1.deptno="dept.DEPTNO;" 22. 列出至少有一个员工的所有部门编号、名称,并统计出这些部门的平均工资、最低工资、最高工资。 23. 列出薪金比"smith"或"allen"多的所有员工的编号、姓名、部门名称、其领导姓名。 24. 列出所有员工的编号、姓名及其直接上级的编号、姓名,显示的结果按领导年工资的降序排列。 '员工编号', '员工名称', (emp.sal*12) '年薪'  order by 年薪 asc;  25. 列出受雇日期早于其直接上级的所有员工的编号、姓名、部门名称、部门位置、部门人数。  26. 列出部门名称和这些部门的员工信息(数量、平均工资),同时列出那些没有员工的部门。 dept.dname '部门名称', count(emp.empno) '员工数量', round(avg(emp.sal), 2) '平均工资', t2.avg_year '平均服务年限' dept.deptno="emp.DEPTNO" t1.deptno, round(avg(t1.year), 0) 'avg_year' 四舍五入,保留0位小数 from  emp.deptno, round((to_days(now())-to_days(emp.hiredate)) 366, 'year' group t2  dept.deptno;  27. 列出所有"clerk"(办事员)的姓名及其部门名称,部门的人数,工资等级。 '姓名', tt.emp_count '部门人数' emp.deptno="dept.DEPTNO" inner dept.deptno, 'emp_count' dept.deptno  tt emp.job="CLERK" ; 28. 列出最低薪金大于1500的各种工作及此从事此工作的全部雇员人数及所在部门名称、位置、平均工资。  '工作名称', '雇员人数' in having min(emp.sal)>1500
)
GROUP BY emp.JOB;
29. &#x5217;&#x51FA;&#x5728;&#x90E8;&#x95E8;&#x201C;SALES&#x201D;&#xFF08;&#x9500;&#x552E;&#x90E8;&#xFF09;&#x5DE5;&#x4F5C;&#x7684;&#x5458;&#x5DE5;&#x7684;&#x59D3;&#x540D;&#x3001;&#x57FA;&#x672C;&#x5DE5;&#x8D44;&#x3001;&#x96C7;&#x4F63;&#x65E5;&#x671F;&#x3001;&#x90E8;&#x95E8;&#x540D;&#x79F0;&#xFF0C;&#x5047;&#x5B9A;&#x4E0D;&#x77E5;&#x9053;&#x9500;&#x552E;&#x90E8;&#x7684;&#x90E8;&#x95E8;&#x7F16;&#x53F7;&#x3002;&#xA0;
30. &#x5217;&#x51FA;&#x85AA;&#x91D1;&#x9AD8;&#x4E8E;&#x516C;&#x53F8;&#x5E73;&#x5747;&#x85AA;&#x91D1;&#x7684;&#x6240;&#x6709;&#x5458;&#x5DE5;&#xFF0C;&#x6240;&#x5728;&#x90E8;&#x95E8;&#xFF0C;&#x4E0A;&#x7EA7;&#x9886;&#x5BFC;&#xFF0C;&#x516C;&#x53F8;&#x7684;&#x5DE5;&#x8D44;&#x7B49;&#x7EA7;&#x3002; &#xA0; &#xA0;&#xA0;
-- 31. &#x5217;&#x51FA;&#x4E0E;&#x201C;SCOTT&#x201D;&#x4ECE;&#x4E8B;&#x76F8;&#x540C;&#x5DE5;&#x4F5C;&#x7684;&#x6240;&#x6709;&#x5458;&#x5DE5;&#x53CA;&#x90E8;&#x95E8;&#x540D;&#x79F0;&#xFF0C;&#x90E8;&#x95E8;&#x4EBA;&#x6570;&#x3002;
SELECT emp.EMPNO AS '&#x5458;&#x5DE5;&#x7F16;&#x53F7;', emp.ENAME AS '&#x5458;&#x5DE5;&#x540D;&#x79F0;', dept.DNAME AS '&#x90E8;&#x95E8;&#x540D;&#x79F0;'-- , emp.DEPTNO
FROM emp, dept
WHERE emp.JOB = (
&#xA0; &#xA0; SELECT emp.JOB -- &#x67E5;&#x8BE2;&#x51FA;SCOTT&#x4ECE;&#x4E8B;&#x7684;&#x804C;&#x4E1A;
&#xA0; &#xA0; FROM emp
&#xA0; &#xA0; WHERE emp.ENAME = 'SCOTT'
) AND emp.ENAME <> 'SCOTT'
AND emp.DEPTNO = dept.DEPTNO;
-- 32. &#x67E5;&#x8BE2;dept&#x8868;&#x7684;&#x7ED3;&#x6784;
33. &#x68C0;&#x7D22;emp&#x8868;&#xFF0C;&#x7528;is a &#x8FD9;&#x4E2A;&#x5B57;&#x7B26;&#x4E32;&#x6765;&#x8FDE;&#x63A5;&#x5458;&#x5DE5;&#x59D3;&#x540D;&#x548C;&#x5DE5;&#x79CD;&#x4E24;&#x4E2A;&#x5B57;&#x6BB5;
34. &#x68C0;&#x7D22;emp&#x8868;&#x4E2D;&#x6709;&#x63D0;&#x6210;&#x7684;&#x5458;&#x5DE5;&#x59D3;&#x540D;&#x3001;&#x6708;&#x6536;&#x5165;&#x53CA;&#x63D0;&#x6210;&#x3002;

SELECT *FROM emp WHERE deptno='20'
SELECT *FROM emp;
SELECT *FROM dept;
SELECT *FROM salgrade;</=></=></'12000';></'1981-05-01';></100></=2000>

答案二

USE emp;
-- 1.

SELECT *FROM emp WHERE emp.deptno=30;
-- 2.

SELECT ename &#x59D3;&#x540D;,sal &#x6536;&#x5165;, deptno &#x90E8;&#x95E8;&#x7F16;&#x53F7; FROM emp;
-- 3.

SELECT ename &#x59D3;&#x540D;, DATE_FORMAT(hiredate,'%Y&#x5E74;%m&#x6708;%d&#x65E5;') &#x65F6;&#x95F4; FROM emp;
-- select date_format(now(),'%Y-%m-%d %H:%i:%s');
-- 4
SELECT DISTINCT deptno &#x90E8;&#x95E8;&#x7F16;&#x53F7; ,job &#x5DE5;&#x4F5C; FROM emp;
-- 5
SELECT ename &#x59D3;&#x540D; ,sal*12 &#x5E74;&#x5DE5;&#x8D44; FROM emp;
-- 6
SELECT ename &#x59D3;&#x540D; ,CONCAT('&#xFFE5;',ROUND(sal*12)) &#x5E74;&#x6536;&#x5165; FROM emp;
-- 7
SELECT ename ,sal FROM emp WHERE sal>2000;
-- 8
SELECT ename, sal,hiredate FROM emp wher sal BETWEEN 1000 AND 200;
-- 9
SELECT ename, sal FROM emp WHERE ename LIKE 'S%';
-- 10
SELECT ename,deptno FROM emp WHERE sal IN(800,1250);
-- 11
SELECT *FROM emp WHERE deptno=20 AND job='CLERK';
-- 12
slect *FROM emp WHERE sal>2500 OR job='MANAGER';
-- 13
SELECT ename,sal,comm FROM emp WHERE comm IS NOT NULL;
-- 14
SELECT  ename , sal,comm FROM emp WHERE deptno=30 ORDER BY sal ASC,comm DESC;
-- 15
SELECT ename ,empno,deptno FROM emp WHERE job='CLERK'
-- 16
SELECT *FROM emp WHERE comm>sal;
-- 17
SELECT *FROM emp WHERE deptno=10 AND job='MANAGER' OR deptno=20 AND job='CLERK';
-- 18
SELECT *FROM emp WHERE deptno=10 AND job='MANAGER' OR deptno=20 AND job='CLERK' OR sal>=2000 AND (job!='MANAGER' AND job!='CLERK');
-- 19
SELECT job FROM emp WHERE comm IS NOT NULL;
-- 20
SELECT *FROM emp WHERE comm IS NULL OR comm<100; 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 -- select *from emp where hiredate="DATE_ADD(LAST_DAY(hiredate),INTERVAL" -2 day); last_day(now()); last_day(curdate()); last_day(current_date()); hiredate<date_add(current_date,interval -35 year); ename from char_length(ename)="6;" like '______'; regexp '^.{6}$'; enamenot '%r%'; instr(ename,'r')="0;" order by ename; ename,hiredate asc; ename,job,sal job desc,sal ,year(hiredate),month(hiredate) year(hiredate),month(hiredate); ename, sal,round(sal 30) emp; month(hiredate)="2;" between '1981-2-1'and last_day('1981-2-28'); timestampdiff(day,hiredate,now()) '%a%'; ename,timestampdiff(year,hiredate,now()) 年, timestampdiff(month,date_add(hiredate,interval timestampdiff(year,hiredate,now())year),now())月, timestampdiff(day,date_add(date_add(hiredate,interval timestampdiff(year,hiredate,now()) year),interval timestampdiff(year,hiredate,now())year),now()) month),now())日 ,sal,round(comm sal) comm is not null and>0 ORDER BY DESC,ROUND(comm/sal,2) DESC;
-- 36
SELECT ename , job FROM emp WHERE mgr IS NULL;
-- 37
SELECT ename,hiredate FROM emp WHERE YEAR(hiredate)=1987;
SELECT ename,hiredate FROM emp WHERE hiredate BETWEEN '1987-1-1' AND '1987-12-31';
-- 38
SELECT ename ,deptno FROM emp WHERE deptno IN(10,20);
SELECT ename ,deptno FROM emp WHERE deptno =10 OR deptno=20;

-- 39
SELECT ename,job,hiredate FROM emp WHERE  hiredate BETWEEN '1981-01-01' AND '1981-05-01' ORDER BY hiredate ASC;
-- 40
SELECT ename ,sal FROM emp WHERE sal NOT BETWEEN 5000 AND 12000;

-- 41
SELECT ename deptno FROM emp WHERE empno=7934;
-- 42
SELECT ename,sal FROM emp sal >1200;

-- &#x590D;&#x6742;&#x67E5;&#x8BE2;
-- 1
-- 2
SELECT s.grade,COUNT(*),AVG(e.sal) FROM emp e LEFT JOIN salgrade s ON e.sal BETWEEN s.losal AND s.hisal GROUP BY s.grade;
-- 3
SELECT e.ename ,e.sal,d.dname,d.deptno FROM emp e LEFT JOIN dept d ON e.deptno=d.deptno WHERE e.sal>(SELECT MAX(sal) FROM emp WHERE deptno=30);
-- 4
SELECT COUNT(*),AVG(sal),AVG(YEAR(NOW())-YEAR(hiredate)) FROM emp GROUP BY deptno;
-- 5
SELECT e.ename,d.dname,e.sal FROM emp e LEFT JOIN dept d ON e.deptno=d.deptno;
-- 6
SELECT d.*,COUNT(*)  FROM dept d LEFT JOIN emp e ON e.deptno=d.deptno GROUP BY d.deptno;

-- 7
SELECT a.ename,t.* FROM emp a LEFT JOIN -(SELECT job,MIN(sal) FROM emp GROUP BY job) t ON a.job=t.job;
-- 8 binary &#x533A;&#x5206;&#x5927;&#x5C0F;&#x5199;
SELECT a.mm,c.ename,b.dname,b.cc,c.job FROM
(SELECT d.dname, e.deptno ,MIN(sal) mm FROM emp  e LEFT JOIN dept d ON e.deptno=d.deptno WHERE job='MANAGER' GROUP BY deptno) a
LEFT JOIN
(SELECT d.deptno,d.dname, COUNT(*) cc FROM dept d LEFT JOIN emp e ON e.deptno=d.deptno GROUP BY d.deptno) b ON a.deptno=b.deptno
LEFT JOIN emp c ON c.sal=a.mm AND b.deptno =c.deptno;
-- 9
SELECT empno,ename,sal*12,d.dname FROM emp LEFT JOIN dept d ON d.deptno=emp.deptno BY sal*12 ASC;
-- 10
SELECT a.empno,a.ename,b.ename &#x9886;&#x5BFC;,b.sal &#x9886;&#x5BFC;&#x5DE5;&#x8D44; FROM emp a LEFT JOIN  emp b ON a.mgr=b.empno WHERE b.sal>3000;
-- 11
SELECT d.dname, d.deptno,COUNT(*),SUM(e.sal) FROM emp e LEFT JOIN dept d ON e.deptno=d.deptno WHERE d.dname LIKE '%S%' GROUP BY d.deptno ;
-- 12
UPDATE emp SET sal=sal+sal*(deptno/100) WHERE (YEAR(NOW())-YEAR(hiredate))<40 13 14 or year(hiredate)="1987;" select *from emp; -- distinct d.* from dept d left join emp e on d.deptno="e.deptno;" ename where sal>(SELECT sal FROM emp WHERE ename='smith');
-- 15
SELECT a.empno,a.ename,b.ename FROM emp a LEFT JOIN emp b ON a.mgr=b.empno;
-- 16
SELECT a.empno,a.ename,b.ename,d.deptno FROM emp a LEFT JOIN emp b ON a.mgr=b.empno LEFT JOIN dept d ON d.deptno=a.deptno WHERE a.hiredate<b.hiredate 17 18 19 ; -- select *from dept d left join emp e on d.deptno="e.deptno;" a.ename,a.job,b.dname,b.cc from a (select d.deptno,d.dname,count(*)cc group by d.deptno) b b.deptno="a.deptno" and a.job="CLERK" job,min(sal),count(*) where sal>1500 GROUP BY job;
-- 20
SELECT ename  FROM emp WHERE deptno IN(SELECT deptno FROM dept WHERE dname='sales');
SELECT e.ename FROM emp e JOIN dept d ON e.deptno=d.deptno AND d.dname='sales';
-- 21&#x5217;&#x51FA;&#x85AA;&#x91D1;&#x9AD8;&#x4E8E;&#x516C;&#x53F8;&#x5E73;&#x5747;&#x85AA;&#x91D1;&#x7684;&#x6240;&#x6709;&#x5458;&#x5DE5;&#xFF0C;&#x6240;&#x5728;&#x90E8;&#x95E8;&#xFF0C;&#x4E0A;&#x7EA7;&#x9886;&#x5BFC;&#xFF0C;&#x516C;&#x53F8;&#x7684;&#x5DE5;&#x8D44;&#x7B49;&#x7EA7;

SELECT t1.ename AS '&#x5458;&#x5DE5;&#x540D;&#x79F0;', dept.DNAME AS '&#x90E8;&#x95E8;&#x540D;&#x79F0;', t2.ename AS '&#x4E0A;&#x7EA7;&#x540D;&#x79F0;', t1.grade AS '&#x5DE5;&#x8D44;&#x7B49;&#x7EA7;', t1.sal AS '&#x5DE5;&#x8D44;'

FROM
(
    SELECT emp.EMPNO, emp.DEPTNO, emp.ENAME, emp.SAL, emp.MGR,salgrade.GRADE
    FROM emp, salgrade
    WHERE emp.SAL > (
        SELECT AVG(sal) AS 'avg_sal'
        FROM emp
    ) AND emp.SAL >= salgrade.LOSAL AND emp.SAL <= 22 23 salgrade.hisal ) as t1 left join ( select emp.empno 'mgr', emp.ename -- 注意这里是查出所有领导的empno,作为mgr编号 from emp where in distinct(emp.mgr) 必须要distinct 不然查出来的mgr有重复,后面上层再查重复值接近笛卡尔积 mgr is not null t2 on t1.mgr="t2.mgr" dept t1.deptno="dept.DEPTNO;" e.deptno,d.dname,avg(sal),max(e.sal),min(sal),count(*) d e e.deptno="d.deptno" group by e.deptno; a.empno,a.ename,d.dname,b.ename (select *from sal>(SELECT MIN(sal) FROM emp WHERE ename IN('smith','allen'))) a LEFT JOIN emp b ON a.mgr=b.empno LEFT JOIN dept d ON b.deptno=d.deptno ;
-- 24
SELECT a.empno,a.ename,b.empno,b.ename FROM emp a LEFT JOIN emp b ON a.mgr=b.empno ORDER BY b.sal*12;

-- 25
select ename from emp where ename not like '%R%';
select ename from emp where not ename like '%R%';
select ename from emp where instr(ename,'R') = 0;
select instr('helloR','r');

-- 26
SELECT d.deptno,d.dname,COUNT(e.ename),AVG(sal)FROM dept d LEFT JOIN emp e ON d.deptno=e.deptno BY d.deptno;

-- 27
SELECT a.deptno,a.ename,d.dname,a.sal,s.grade,(SELECT COUNT(ename) FROM emp WHERE deptno=a.deptno)&#x4EBA;&#x6570; FROM (SELECT *FROM emp WHERE job='clerk') a LEFT JOIN dept d ON a.deptno=d.deptno LEFT JOIN salgrade s
ON a.sal BETWEEN s.losal s.hisal;
-- 28
select ename,job,sal from emp order by job desc,sal asc;
-- 29
select ename,year(hiredate),month(hiredate) from emp order by
year(hiredate),month(hiredate);
-- 30
select ename,sal,round(sal/30) from emp;

-- 31
SELECT a.ename , d.dname ,(SELECT COUNT(ename) FROM emp WHERE deptno=a.deptno) FROM
(SELECT *FROM emp WHERE job=(SELECT job FROM emp WHERE ename='scott')) a LEFT JOIN dept d ON a.deptno =d.deptno ;
-- 32

DESC emp;
DESCRIBE emp;
SHOW CREATE TABLE emp;
SHOW COLUMNS FROM emp;
--  33
SELECT CONCAT(empno,ename,job) FROM emp;
SELECT CONCAT_WS('-',.empno,ename , job)FROM emp;
SELECT GROUP_CONCAT(DISTINCT job)FROM emp;
SELECT GROUP_CONCAT(DISTINCT ename) FROM emp;
SELECT GROUP_CONCAT(DISTINCT job ORDER BY sal SEPARATOR '=')FROM emp;
-- 34
SELECT ename ,sal
-- &#x6BCF;&#x4E2A;&#x90E8;&#x95E8;&#x6240;&#x6709;&#x5DE5;&#x4F5C;&#x7684;&#x6700;&#x4F4E;&#x5DE5;&#x8D44;&#xFF0C;&#x5DE5;&#x4F5C;&#x540D;&#x79F0;&#xFF0C;&#x5458;&#x5DE5;&#x59D3;&#x540D;
SELECT  MIN(sal),job FROM emp GROUP BY job;
SELECT e.ename &#x59D3;&#x540D;,b.job &#x5DE5;&#x4F5C;,b.s &#x5DE5;&#x8D44;,e.deptno &#x90E8;&#x95E8;&#x7F16;&#x53F7; FROM emp  e LEFT JOIN (SELECT  MIN(sal) s,job FROM emp GROUP BY job) b ON e.sal=b.s WHERE e.sal=b.s;
SELECT*FROM emp;
-- &#x6240;&#x6709;&#x90E8;&#x95E8;&#x7684;&#x5DE5;&#x4F5C;&#x7684;&#x6700;&#x4F4E;&#x5DE5;&#x8D44;&#xFF0C;&#x5DE5;&#x4F5C;&#x540D;&#x79F0;&#xFF0C;&#x5458;&#x5DE5;&#x59D3;&#x540D; ,&#x90E8;&#x95E8;&#x7F16;&#x53F7;
SELECT deptno FROM emp;
SELECT MIN(sal) FROM emp e LEFT JOIN (
SELECT job ,deptno FROM emp WHERE deptno IN(SELECT deptno FROM emp)) b e.deptno=b.deptno GROUP BY b.job;
SELECT sal FROM emp;</=></b.hiredate></40></100;>

Original: https://www.cnblogs.com/zcxxcvbn/p/15929018.html
Author: 一份人间烟火
Title: mysql练习题emp,dept

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590771/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • SQL语句的整合

    基础语法 https://blog.csdn.net/m0_37989980/article/details/103413942 CRUD 提供给数据库管理员的基本操作,CRUD(…

    数据库 2023年5月24日
    0100
  • 达梦产品技术支持培训-day8-DM8数据库备份与还原-实操

    Disql 工具:联机数据备份与还原,包括库备份、表空间备份与还原、表备份与还原; DMRMAN 工具:脱机数据库备份还原与恢复; 客户端工具 MANAGER和CONSOLE:对应…

    数据库 2023年6月11日
    073
  • Android Studio更改SDK、Gradle以及模拟器默认下载位置

    版本:Android Studio Chipmunk | 2021.2.1 Patch 2时间:2022年9月1日 1、更改SDK位置 找到 File -> Settings…

    数据库 2023年6月16日
    091
  • Vim配置文件-详解(.vimrc)

    Vim配置文件的作用 Vim启动时,会根据配置文件(.vimrc)来设置 Vim,因此我们可以通过此文件来定制适合自己的 Vim 所有系统用户在启动Vim时,都会加载这个配置文件。…

    数据库 2023年6月14日
    078
  • 千万级别的表分页查询非常慢,怎么办?

    一、问题复现 在实际的软件系统开发过程中,随着使用的用户群体越来越多,表数据也会随着时间的推移,单表的数据量会越来越大。 以订单表为例,假如每天的订单量在 4 万左右,那么一个月的…

    数据库 2023年6月14日
    090
  • MySQL删除重复数据

    重复数据如图所示 自关联,保留id最小的那一条,其它的都删除 DELETE t1 FROM invest_year t1, invest_year t2 WHERE t1.pro_…

    数据库 2023年6月14日
    088
  • 第15章 存储过程与函数

    MySQL从5.0版本开始支持存储过程和函数。存储过程和函数能够将复杂的SQL逻辑封装在一起,应用程序无须关注存储过程和函数内部复杂的SQL逻辑,而只需要简单地调用存储过程和函数即…

    数据库 2023年6月6日
    092
  • springboot~用正则表达式提取bearer token

    前后一体的应用,是这样进行认证的 用户向服务端发送验证信息(用户名、密码); 服务端验证成功就向用户返回一个sessionid; 服务端保存了这个session_id对应的信息,并…

    数据库 2023年6月6日
    099
  • vue入门(一)

    模板语法 插值语法 功能:用于解析标签体内容 写法:{{xxx}},xxx是js表达式,且可以直接读取到data中的所有属性。 指令语法 功能:用于解析标签(包括:标签属性、标签内…

    数据库 2023年6月6日
    084
  • SQL与数据库编程学习笔记——day3

    SQL与数据库编程学习笔记-day3 增加语句; 利用insert into语句进行增加数据库数据; 格式: insert into 表名 (字段名) values (数值);ps…

    数据库 2023年6月9日
    0129
  • MySQL查询性能优化七种武器之索引潜水

    有读者可能会一脸懵逼? 啥是 索引潜水? 你给它起名字了吗?你有指数蛙泳吗? [En] Did you give it the name? Do you have index br…

    数据库 2023年5月24日
    0100
  • IO流思维导图

    IO流思维导图 IO思维导图总结 总览: 1.文件 public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。 (几乎…

    数据库 2023年6月16日
    091
  • 02-MySQL高级

    * ALTER TABLE st2 AUTO_INCREMENT = 1000; INSERT INTO st2 (NAME, age) VALUES (‘校长’, 22); AL…

    数据库 2023年5月24日
    077
  • 细数线程池五大坑,一不小心线上就崩了

    系统性能优化的几种常用手段是异步和缓存。因此我们常常使用线程池异步处理一些业务。 线程池的使用还是相对比较简单的,首先创建一个线程池,然后通过execute或submit执行任务。…

    数据库 2023年6月6日
    0146
  • Volatile的学习

    首先先介绍三个性质 可见性 可见性代表主内存中变量更新,线程中可以及时获得最新的值。 下面例子证明了线程中可见性的问题 由于发现多次执行都要到主内存中取变量,所以会将变量缓存到线程…

    数据库 2023年6月11日
    063
  • 2_爬豆瓣电影_ajax动态加载

    什么是 AJAX ? AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 AJAX = Asynchronous JavaScript and XML(AJA…

    数据库 2023年6月11日
    0103
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球