create table dept( deptno int primary key auto_increment, dname varchar(50), loc varchar(50));create table emp( empno int primary key auto_increment not null, ename varchar(50) not null , job varchar(50) not null , mgr int, hiredate date, sal double, comm double, deptno int, foreign key(deptno) references dept(deptno));insert into dept values(null,‘项目部’,‘一号楼7层’);insert into dept values(null,‘人事部’,‘一号楼6层’);insert into dept values(null,‘营销部’,‘一号楼5层’);INSERT INTO emp VALUES(NULL,‘张三’,‘Java开发工程师’,1,‘2001-11-26’,‘6000’,‘2000’,1);INSERT INTO emp VALUES(NULL,‘李四’,‘Java实施工程师’,1,‘2001-01-26’,‘5000’,‘2000’,1);INSERT INTO emp VALUES(NULL,‘王五’,‘人事经理’,2,‘2010-11-26’,‘7000’,‘1000’,2);INSERT INTO emp VALUES(NULL,‘赵六’,‘人事总管’,2,‘2011-10-06’,‘4000’,‘2000’,2);INSERT INTO emp VALUES(NULL,‘王二’,‘网络销售’,3,‘2012-04-06’,‘4000’,‘2000’,3);INSERT INTO emp VALUES(NULL,‘麻子’,‘销售经理’,3,‘2001-12-06’,‘6000’,‘2000’,3);INSERT INTO emp VALUES(NULL,‘三’,‘Java开发工程师’,1,‘2001-11-26’,‘5200’,‘2400’,1);INSERT INTO emp VALUES(NULL,‘四’,‘Java实施工程师’,1,‘2001-01-26’,‘5900’,‘1800’,1);INSERT INTO emp VALUES(NULL,‘五’,‘人事经理’,2,‘2010-11-26’,‘6000’,‘1800’,2);INSERT INTO emp VALUES(NULL,‘六’,‘人事总管’,2,‘2011-10-06’,‘6000’,‘2400’,2);INSERT INTO emp VALUES(NULL,‘二’,‘网络销售’,3,‘2012-04-06’,‘3000’,‘2500’,3);INSERT INTO emp VALUES(NULL,‘子’,‘销售经理’,3,‘2001-12-06’,‘4000’,‘1200’,3);在Emp 表中完成如下练习:1、在emp表中查询出所有记录的姓名、部门编号、薪水,并且列名要显示为中文。select ename as 员工姓名,deptno as 部门编号,sal + comm as 薪水 from emp 2、在emp表中查询出薪水大于1500的记录,并且按照薪水的降序排列。select empno, sal + comm as 薪水 from emp WHERE sal + comm >1500 ORDER BY sal + comm DESC3、在emp表中查询出comm字段为空值的记录。select * from emp where comm=04、查询出emp表中含有几个部门的记录。(用DISTINCT去除重复记录)select DISTINCT(deptno) FROM emp 5、在emp表中查询出部门编号为10或20的记录(要求使用IN关键字)select * from emp where deptno in (1,2)6、在emp表中查询出姓名的第二个字母为A的记录。select * from emp where ename like '_三%'7、查询出emp表中总共有多少条记录。SELECT count() from emp8、查询emp表中出每个部门的部门代码、薪水之和、平均薪水。select DISTINCT(deptno) as 部门代码 ,sum(sal+comm) as 薪水,avg(sal+comm) from emp GROUP BY deptno 练习二:1.列出至少有一个员工的所有部门。 select deptno from dept where deptno in (select distinct deptno from emp)2.列出薪金比“SMITH”多的所有员工。 SELECT ename 员工姓名,sal 薪金 FROM emp WHERE sal>(SELECT sal FROM emp where ename=‘麻子’)3.列出所有员工的姓名及其直接上级的姓名。 SELECT ename FROM emp 4.列出受雇日期早于其直接上级的所有员工。 SELECT ename,hiredate FROM emp WHERE hiredate<‘2010-10-20’ 5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。 SELECT dept.dname,emp. FROM emp ,dept WHERE dept.deptno=emp.deptno6.列出所有“CLERK”(办事员)的姓名及其部门名称。 SELECT emp.ename ,dept.dname from emp,dept where dept.deptno =emp.deptno and emp.job='java工程师’select ename 姓名,dname 部门名称,job 工作 from emp left join dept on emp.deptno = dept.deptno where job = 'java开发工程师’7.列出最低薪金大于1500的各种工作。 select job as 工作 from emp where sal>15008.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。 SELECT emp.ename FROM emp,dept WHERE dept.deptno=emp.deptno AND dept.dname='项目部’9.列出薪金高于公司平均薪金的所有员工。 select ename from emp where sal>(SELECT avg(sal) from emp)10.列出与“SCOTT”从事相同工作的所有员工。 SELECT ename from emp where job=(select job from emp where ename =‘张三’)12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。 select ename 员工姓名,sal 薪金 from emp where sal > (select max(sal) from emp where deptno = 3)13.列出在每个部门工作的员工数量、平均工资和平均服务期限。select dept.dname 部门名称, count(empno) 员工数量,avg(sal) 平均工资,avg(DATEDIFF(CURDATE(),hiredate)) 平均服务期限from emp left join dept on emp.deptno = dept.deptno group by emp.deptno14.列出所有员工的姓名、部门名称和工资。 select ename 姓名,dname 部门名称,sal 工资 from emp left join dept on emp.deptno = dept.deptno 15.列出所有部门的详细信息和部门人数。 select dept.,count(emp.deptno) 部门人数 from emp RIGHT join dept on emp.deptno =dept.deptno GROUP BY dept.deptnoselect dept.,count(emp.deptno) 部门人数 from emp right join dept on emp.deptno = dept.deptno group by dept.deptno16.列出各种工作的最低工资。 select min(sal) as 最低工资 ,job as 工作 from emp GROUP BY job17.列出薪金最低的MANAGER的基本信息。 select * from emp where sal=(select min(sal) from emp where job =‘人事经理’)18.列出所有员工的年工资,按年薪从低到高排序。select ename as 姓名 , (12*(sal+comm)) as 年薪 from emp ORDER BY (12*(sal+comm))
SQL语句
最新推荐文章于 2024-04-18 15:35:27 发布