Mysql练习题

MySQL经典习题

DROP TABLE IF EXISTS emp;
CREATE TABLE IF NOT EXISTS emp(
empno INT PRIMARY KEY AUTO_INCREMENT,
ename VARCHAR(10) NOT NULL,
job VARCHAR(20),
salary DOUBLE(8,2),
mgr INT(10),
bonus DOUBLE(6,2),
hiredate DATE,
deptno INT(10),
address VARCHAR(50)
);
INSERT INTO emp VALUES(NULL,'mary','sales',7000,6,1000,'2014-1-1',10,'上海');
INSERT INTO emp VALUES(NULL,'lily','sales',6000,1,800,'2014-5-1',10,'广东');
INSERT INTO emp VALUES(NULL,'tom','sales',5000,1,4000,'2014-3-1',10,'深圳');
INSERT INTO emp VALUES(NULL,'james','account',8000,6,NULL,'2014-2-1',20,'广西');
INSERT INTO emp VALUES(NULL,'scott','teaching',8000,6,3000,'2014-1-20',30,'浙江');
INSERT INTO emp VALUES(NULL,'tom','BOSS',38000,NULL,NULL,'2013-1-20',30,'江苏');
INSERT INTO emp VALUES(NULL,'kitty','teaching',7000,5,700,'2014-5-20',30,'北京');
INSERT INTO emp VALUES(NULL,'kitty','teaching',6000,5,500,'2014-6-20',30,'武汉');
INSERT INTO emp VALUES(NULL,'green','analyst',15000,6,1000,'2014-2-20',40,'天津');
INSERT INTO emp VALUES(NULL,'brown','analyst',12000,9,7000,'2014-4-20',40,'山东');
INSERT INTO emp VALUES(NULL,'danis','department',3000,6,800,'2014-3-4',50,'河北');
INSERT INTO emp VALUES(NULL,'brown','department',1800,11,600,'2014-4-20',50,'贵州');
INSERT INTO emp VALUES(NULL,'smith','department',1200,11,500,'2014-5-20',50,'辽宁');

1:查询EMP表的全部职工的EMPNO、ENAME和JOB。

select empno,ename,job from emp;

2:查询EMP表的全部职工的EMPNO、ENAME和JOB,按salary升序次序排列。
按照某个字段进行排序,不需要将其显示,一定要确认查询的表中存在这个字段

select empno,ename,job from emp order by salary;

3:查询EMP表的全部列,列的次序为:JOB,SALARY,ENAME,EMPNO,MGR,HIREDATE,BONUS,DEPTNO,查询结果按年薪降序。

Select JOB,SALARY,ENAME,EMPNO,MGR,HIREDATE,BONUS,DEPTNO from emp order by (salary+bonus)*12 desc;

4:列出EMP表中的不同的JOB名称,

Select distinct job from emp;

5:查询在部门10中工作,其工资高于6000的职工信息。

Select * from emp where deptno=10 and salary+bonus>6000;

6:列出其JOB为MANAGER或ANALYST的职工名及职工号

Select ename,empno from emp where job in (‘manager’,’analyst’);

7:列出工资在5500至20000之间的职工名字、职工号。使用两种方式实现

Select ename,empno from emp where salary+bonus between 5500 and 20000;

8:查出工资为6k的人员所在的部门名称和地址。

select deptno,address from emp where salary+ bonus=6000;

9:查出以W开头或以S结尾的职工名的职工信息。

Select * from emp where ename like 'w%' or ename like '%s';

10:查出以k开头或以y结尾的职工信息和部门信息。

Select * from emp where ename like 'k%' or ename like '%y';

11:列出没有奖金的职工信息。

Select * from emp where bonus is null;

12:查询工资最高的人的信息以及部门信息

Select * from emp where order by salary+bonus desc limit 0,1;

13:查询每个部门的平均工资,部门名称,部门编号,并按照平均工资倒序排列

Select * from emp order by salary+bonus desc limit 0,1;

14:查询每个部门的平均工资,按照部门编号,部门名称,平均薪资顺序显示,低于5000的不要求显示,并按照平均工资倒序排列

Select  deptno,avg(salary+bonus) from emp group by deptno having avg(salary+bonus)>5000 order by avg(salary+bonus) desc;

15:查询‘lily’的领导信息

Select * from emp where empno=(select mgr from emp where ename='lily');

16:查詢在上海办公的人员信息

Select * from emp where address='上海';

17:列出所有部门的详细信息和部门人数。

select deptno,count(1) from emp group by deptno;

18:查询出所有薪水在’james’之上的所有人员信息,并按照工资降序排列

Select * from emp where salary >(select salary from emp where ename='james') order by salary desc;

19:查询出所有有奖金的人员信息,并按照奖金的多少进行降序排列

Select * from emp where bonus is not null order by bonus desc;

20:查出emp表中所有部门的最高薪水和最低薪水,部门编号为10的部门不显示。

Select deptno,max(salary),min(salary) from emp where deptno<>10 group by deptno;

21:查询所有mary下属的信息和工作地点,并且按照他们的工资降序排列

Select * from emp where mgr=(select empno from emp where ename='mary') order by salary desc;
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值