12、MySQL练习

在这里插入图片描述
在这里插入图片描述

-- 3.查询student表的所有记录
-- SELECT * FROM student;

-- 4.查询student表的第2条到4条记录
-- SELECT * FROM student WHERE id BETWEEN 902 AND 904;
-- SELECT * FROM student LIMIT 1,3;

-- 5.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息
-- SELECT id,name,department FROM student;

-- 6.从student表中查询计算机系和英语系的学生的信息
-- SELECT * FROM student WHERE department = '计算机系' OR department = '英语系';

-- 7.从student表中查询年龄1985~1990年份的学生信息
-- SELECT * FROM student WHERE birth BETWEEN 1985 AND 1990;

-- 8.从student表中查询每个院系有多少人
-- SELECT department,COUNT(id) FROM student GROUP BY department;

-- 9.从score表中查询每个科目的最高分
-- SELECT c_name '科目',MAX(grade) '最高分' FROM score GROUP BY c_name;

-- 10.查询李四的考试科目(c_name)和考试成绩(grade)
-- SELECT t.id,t.`name`,e.c_name,e.grade
-- FROM student t,score e WHERE t.id = e.stu_id AND t.`name`='李四';

-- 11.用连接的方式查询所有学生的信息和考试信息
-- SELECT t.*,e.*
-- FROM student t,score e WHERE t.id = e.stu_id;

-- 12.计算每个学生的总成绩
-- SELECT t.`name` '学生姓名',SUM(grade) '总成绩'
-- FROM student t,score e WHERE t.id = e.stu_id GROUP BY e.stu_id;
-- 
-- 13.计算每个考试科目的平均成绩
-- SELECT c_name,AVG(grade) FROM score GROUP BY c_name;

-- 14.查询计算机成绩低于95的学生信息
-- SELECT t.*,e.c_name,e.grade
-- FROM student t,score e where t.id = e.stu_id AND e.c_name = '计算机' AND e.grade <95;
-- 
-- 15.将计算机考试成绩按从高到低进行排序
-- SELECT t.*,e.c_name,e.grade
-- FROM student t,score e where t.id = e.stu_id AND e.c_name = '计算机' ORDER BY e.grade DESC;

-- 16.查询姓张或者姓王的同学的姓名、院系和考试科目及成绩
-- SELECT t.`name`,t.department,e.c_name,e.grade
-- FROM student t,score e WHERE t.id = e.stu_id AND t.`name` like '张%' OR t.`name` LIKE '王%';
-- 
-- 17.查询都是北京的学生的姓名、年龄、院系和考试科目及成绩
SELECT t.`name`,YEAR(NOW())-t.birth '年龄',t.department,t.address,e.c_name,e.grade
FROM student t,score e WHERE t.id = e.stu_id AND t.address LIKE "%北京%";

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

-- 1. 查出至少有一个员工的部门。显示部门编号、部门名称、部门位置、部门人数。
-- SELECT d.*,COUNT(e.empno)
-- FROM dept d,emp e WHERE d.deptno = e.deptno GROUP BY e.deptno;

-- 2. 列出所有员工的姓名及其直接上级的姓名。
-- SELECT e1.empno,e1.ename,e1.mgr,e2.empno,e2.ename
-- FROM emp e1 LEFT JOIN emp e2 ON e1.mgr = e2.empno;

-- 3. 列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称。
-- SELECT e1.ename '员工',e1.hiredate,e2.ename '上司',e2.hiredate,d.dname
-- FROM emp e1,emp e2,dept d WHERE e1.mgr = e2.empno AND e1.deptno = d.deptno AND e1.hiredate < e2.hiredate;
-- 
-- 4. 列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
-- SELECT d.dname,e.*
-- FROM dept d LEFT JOIN emp e ON d.deptno = e.deptno ORDER BY d.deptno;

-- 5. 列出最低薪金大于15000的各种工作及从事此工作的员工人数。
-- SELECT e.job,COUNT(e.job)
-- FROM emp e WHERE e.sal > 15000 GROUP BY e.job;

-- 6. 列出在销售部工作的员工的姓名,假定不知道销售部的部门编号。
-- SELECT e.ename,e.job,d.dname
-- FROM emp e,dept d WHERE e.deptno = d.deptno AND d.dname = '销售部';

-- 7. 列出薪金高于公司平均薪金的所有员工信息,所在部门名称,上级领导,工资等级。
-- SELECT e1.ename,e1.job,e1.sal,e2.ename '上司',d.dname,s.GRADE
-- FROM salgrade s,emp e1 LEFT JOIN dept d ON e1.deptno = d.deptno 
-- LEFT JOIN emp e2 ON e1.mgr = e2.empno 
-- WHERE (e1.sal BETWEEN s.LOwSAL AND s.HISAL) AND e1.sal > (SELECT AVG(sal) FROM emp);

-- 8.列出与庞统从事相同工作的所有员工及部门名称。
-- SELECT e.empno,e.ename,e.job,d.dname,d.loc
-- FROM emp e LEFT JOIN dept d ON e.deptno = d.deptno WHERE e.job = (SELECT job FROM emp WHERE ename = '庞统');

-- 9.列出薪金高于在部门30工作的所有员工的薪金 的员工姓名和薪金、部门名称。
-- SELECT e.ename,e.job,e.sal,d.dname
-- FROM emp e LEFT JOIN dept d ON e.deptno = d.deptno 
-- WHERE e.sal > (SELECT MAX(sal) FROM emp WHERE deptno = 30); 

-- 10.查出年份、利润、年度增长比。 
SELECT p1.* ,CONCAT(((p1.zz - p2.zz)/p2.zz)*100,'%') '年度增长比'
FROM profit p1 LEFT JOIN profit p2 ON p1.`year` = p2.`year`+1 ORDER BY p1.`year`;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章