三张表学会MySQL的单表操作!

表单一信息 

三张表学会MySQL的单表操作!_第1张图片

1、查询表中所有学生的信息

mysql> select * from student;

三张表学会MySQL的单表操作!_第2张图片
2、 查询表中所有学生的姓名和英语成绩

mysql> select name,english from student;

三张表学会MySQL的单表操作!_第3张图片
 3、过滤表中的重复数据

mysql> select DISTINCT * from student;

三张表学会MySQL的单表操作!_第4张图片
4、统计每个学生的总分

mysql> select name,chinese+math+english AS total from student;

三张表学会MySQL的单表操作!_第5张图片
5、所有学生总分上加上10

mysql> select name,chinese+math+english+10 AS 'total+10' from student;

三张表学会MySQL的单表操作!_第6张图片
6、使用别名表示学生分数

mysql> select chinese AS 语文 ,math AS 数学,english AS 英语 from student;

三张表学会MySQL的单表操作!_第7张图片
7、查询英语成绩大于90分的所有同学

mysql> select name from student
-> where english>90;

三张表学会MySQL的单表操作!_第8张图片
8、查询总分大于200分的所有同学

mysql> select name from student
    -> where chinese+math+english > 200;

三张表学会MySQL的单表操作!_第9张图片
9、查询英语成绩在80到90之间的所有同学

mysql> select name from student
    -> where english BETWEEN 80 AND 90;

三张表学会MySQL的单表操作!_第10张图片
10、 查询英语成绩不在80到90之间的所有同学

mysql> select name from student
    -> where not(english>=80 and english<=90);

三张表学会MySQL的单表操作!_第11张图片
11、查询数学分数为89,90,91的同学

mysql> select name from student
    -> where math in(89,90,90);


12、查询数学分数不为89,90,91的同学

mysql> select name from student
    -> where math not in(89,90,90);

三张表学会MySQL的单表操作!_第12张图片

13、查询所有姓李的学生英语成绩

mysql> select english from student
    -> where name like '李%';

三张表学会MySQL的单表操作!_第13张图片
14、查询数学分80且语文80分的同学

mysql> select name from student 
    -> where math=80 and chinese=80;


15、查询英语80或者总分200的同学

mysql> select name from student
    -> where english=80 or chinese+math+english=200;


16、对学生数学成绩进行降序排序后输出

mysql> select math from student
    -> order by math DESC;

三张表学会MySQL的单表操作!_第14张图片

17、 对总分从高到低的顺序输出

mysql> select chinese+math+english total from student
    -> order by chinese+math+english DESC;

三张表学会MySQL的单表操作!_第15张图片
18、 对姓李的学生按总成绩升序排序输出

mysql> select chinese+math+english total from student
    -> where name like '李%'
    -> order by chinese+math+english;

三张表学会MySQL的单表操作!_第16张图片

19、查询男生和女生分别有多少人,并将人数降序输出

mysql> SELECT gender, COUNT(*) AS count
    -> FROM student
    -> GROUP BY gender
    ->ORDER BY count DESC; 

三张表学会MySQL的单表操作!_第17张图片
20、查询男生和女生分别有多少人,并将人数降序输出,并查询出大于9的性别人数信

mysql> select gender ,count(*) count from student
    -> group by gender
    -> HAVING count > 9
    -> ORDER BY count DESC;

 三张表学会MySQL的单表操作!_第18张图片


表二信息三张表学会MySQL的单表操作!_第19张图片

 1、按员工编号升序排列不在10号部门工作的员工信息

mysql> select * from emp 
-> where deptno != 10;

三张表学会MySQL的单表操作!_第20张图片
  2、 查询姓名第二个字母不是'A'且薪水大于1000元的员工信息,按薪水降序排列

mysql> select * from emp
-> where ename != '_A%' and sal <= 1000;

三张表学会MySQL的单表操作!_第21张图片
  3、按年薪+奖金降序排序

mysql> select ename,sal*12+COALESCE(comm,0) '年薪+奖金' from emp
    -> order by sal*12+COALESCE(comm,0) DESC;

三张表学会MySQL的单表操作!_第22张图片
  4、求每个部门的平均薪水
  5、求每个部门的最高薪水

4、5
mysql> select deptno,avg(sal),max(sal) from emp 
    -> GROUP BY deptno;

三张表学会MySQL的单表操作!_第23张图片
  6、求每个部门每个岗位的最高薪水并美观

mysql> select deptno,job,max(sal)
    -> from emp
    -> group by deptno,job
    -> order by deptno,max(sal) DESC;

三张表学会MySQL的单表操作!_第24张图片
  7、求平均薪水大于2000的部门编号

mysql> select deptno,avg(sal) from emp 
    -> group by deptno
-> having avg(sal) > 2000;

三张表学会MySQL的单表操作!_第25张图片
  8、将部门平均薪水大于1500的部门编号列出来,按部门平均薪水降序排列

mysql> select deptno,avg(sal) from emp
    -> group by deptno
    -> having avg(sal) >1500
-> order by avg(sal) desc;

三张表学会MySQL的单表操作!_第26张图片
  9、选择公司中有奖金和员工姓名和工资

mysql> select ename,sal from emp
-> where comm is not null;

三张表学会MySQL的单表操作!_第27张图片
  10、查询员工最高工资和最低工资的差距

mysql> select max(sal)-min(sal) from emp;

三张表学会MySQL的单表操作!_第28张图片


第三张表信息

三张表学会MySQL的单表操作!_第29张图片

1. 查询出部门编号为30的所有员工

mysql> select ename,deptno from emp
-> where deptno = 30;

三张表学会MySQL的单表操作!_第30张图片2. 2.所有销售员的姓名、编号和部门编号。

mysql> select ename,empno,deptno from emp
-> where job = '销售员';

三张表学会MySQL的单表操作!_第31张图片

3. 找出奖金高于工资的员工。

mysql> select ename from emp
-> where comm > sai;

三张表学会MySQL的单表操作!_第32张图片4. 4.找出奖金高于工资60%的员工。

mysql> select ename from emp
    -> where comm > sai*0.6;

 三张表学会MySQL的单表操作!_第33张图片

 5.  找出部门编号为10中所有经理,部门编号为20中所有销售员

mysql> select * from emp 
-> where (deptno=10 and job='经理') or (deptno=20 and job='销售员');

6.找出部门编号为10中所有经理,部门编号为20中所有销售员,还有即不是经理又不是销售员但其工资大或等于20000的所有员工详细资料

mysql> select * from emp
    -> where (deptno=10 and job='经理')
    -> or (deptno=20 and job='销售员')
-> or (job!='经理' and job !='销售员' and sai >=20000);

 三张表学会MySQL的单表操作!_第34张图片

 7.无奖金或奖金低于1000的员工。

mysql> select ename from emp
-> where comm < 1000 OR comm is null;

三张表学会MySQL的单表操作!_第35张图片8.、查询名字由三个字组成的员工。
注意:一个汉字占三个字节

mysql> select ename from emp
-> where ename like '___';

 三张表学会MySQL的单表操作!_第36张图片

OR

mysql> select ename from emp
-> where LENGTH(ename)=9;

 三张表学会MySQL的单表操作!_第37张图片

9.查询2000年入职的员工。

mysql> select ename,YEAR(hiredate) from emp
-> where YEAR(hiredate)=2000;

三张表学会MySQL的单表操作!_第38张图片10. 10。查询所有员工详细信息,用编号升序排序

mysql> SELECT * FROM emp
-> order by empno ;

 三张表学会MySQL的单表操作!_第39张图片

11. 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序

mysql> SELECT * FROM emp
    -> order by sai DESC,hiredate;

三张表学会MySQL的单表操作!_第40张图片12.查询每个部门的平均工资

mysql> select deptno,avg(sai) from emp
-> group by deptno;

 三张表学会MySQL的单表操作!_第41张图片

13.查询每个部门的雇员数量

mysql> select deptno,count(deptno) from emp
-> group by deptno;

三张表学会MySQL的单表操作!_第42张图片14.查询每种工作的最高工资、最低工资、人数

mysql> select job,max(sai),min(sai),count(job) from emp
-> group by job;

三张表学会MySQL的单表操作!_第43张图片

你可能感兴趣的:(数据库,mysql,数据库)