Mysql数据库查询练习题(附带建表语句!!!)

您所在的位置:网站首页 查询学生出生年份怎么查 Mysql数据库查询练习题(附带建表语句!!!)

Mysql数据库查询练习题(附带建表语句!!!)

2024-06-01 04:01| 来源: 网络整理| 查看: 265

基于mysql-5.7.27版本和Navicat Premium 15版本进行!

这里的建表语句只是简单的语句,仅供测试练习题使用!!!

sql语句作为参考,如果有错误还请及时指正…

练习题一:

student表 在这里插入图片描述 建表语句以及插入数据语句:

CREATE TABLE student ( id INT(10) NOT NULL PRIMARY KEY , #学生ID 自增 name VARCHAR(20) NOT NULL , #学生姓名 sex VARCHAR(4) , #学生性别 birth YEAR, #学生出生年份 department VARCHAR(20) , #所在院系 address VARCHAR(50) #家庭住址 ); INSERT INTO student VALUES( 901,'张老大', '男',1985,'计算机系', '北京市海淀区'); INSERT INTO student VALUES( 902,'张老二', '男',1986,'中文系', '北京市昌平区'); INSERT INTO student VALUES( 903,'张三', '女',1990,'中文系', '湖南省永州市'); INSERT INTO student VALUES( 904,'李四', '男',1990,'英语系', '辽宁省阜新市'); INSERT INTO student VALUES( 905,'王五', '女',1991,'英语系', '福建省厦门市'); INSERT INTO student VALUES( 906,'王六', '男',1988,'计算机系', '湖南省衡阳市');

score表

在这里插入图片描述 建表语句以及插入数据语句:

CREATE TABLE score ( id INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT , #自增ID stu_id INT(10) NOT NULL , #学生ID ,外键创建可有可无 c_name VARCHAR(20) , #学科名称 grade INT(10) #分数 ); INSERT INTO score VALUES(NULL,901, '计算机',98); INSERT INTO score VALUES(NULL,901, '英语', 80); INSERT INTO score VALUES(NULL,902, '计算机',65); INSERT INTO score VALUES(NULL,902, '中文',88); INSERT INTO score VALUES(NULL,903, '中文',95); INSERT INTO score VALUES(NULL,904, '计算机',70); INSERT INTO score VALUES(NULL,904, '英语',92); INSERT INTO score VALUES(NULL,905, '英语',94); INSERT INTO score VALUES(NULL,906, '计算机',90); INSERT INTO score VALUES(NULL,906, '英语',85);

题目以及参考sql语句:

3.查询student表的所有记录4.查询student表的第2条到4条记录5.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息6.从student表中查询计算机系和英语系的学生的信息7.从student表中查询年龄1985~1990年份的学生信息8.从student表中查询每个院系有多少人9.从score表中查询每个科目的最高分10.查询李四的考试科目(c_name)和考试成绩(grade)11.用连接的方式查询所有学生的信息和考试信息12.计算每个学生的总成绩13.计算每个考试科目的平均成绩14.查询计算机成绩低于95的学生信息15.将计算机考试成绩按从高到低进行排序16.查询姓张或者姓王的同学的姓名、院系和考试科目及成绩17.查询都是北京的学生的姓名、年龄、院系和考试科目及成绩 -- 3.查询student表的所有记录 SELECT * FROM student; -- 4.查询student表的第2条到4条记录 SELECT * FROM student WHERE id IN(902,903,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 = '英语系'; SELECT * FROM student WHERE department IN ('计算机系' , '英语系'); -- 7.从student表中查询年龄1985~1990年份的学生信息 SELECT * FROM student WHERE birth BETWEEN 1985 AND 1990; -- 8.从student表中查询每个院系有多少人 SELECT department,COUNT(1) 人数 FROM student GROUP BY department; -- 9.从score表中查询每个科目的最高分 SELECT c_name 科目,MAX(grade) 最高分 FROM score GROUP BY 科目; -- 10.查询李四的考试科目(c_name)和考试成绩(grade) SELECT name,c_name,grade FROM score INNER JOIN student stu ON stu.id = stu_id WHERE name = '李四'; -- 11.用连接的方式查询所有学生的信息和考试信息 SELECT stu.*,c_name,grade FROM student stu INNER JOIN score ON stu.id = stu_id; -- 12.计算每个学生的总成绩 SELECT stu_id,SUM(grade) FROM score GROUP BY stu_id; -- 13.计算每个考试科目的平均成绩 SELECT c_name 考试科目,AVG(grade) 平均成绩 FROM score GROUP BY 考试科目; -- 14.查询计算机成绩低于95的学生信息 SELECT stu.* FROM student stu INNER JOIN score ON stu.id = stu_id WHERE grade=1) a WHERE de.deptno = a.deptno; -- 2. 列出所有员工的姓名及其直接上级的姓名 SELECT a.ename,b.ename FROM emp a ,emp b WHERE a.mgr = b.empno; -- 3. 列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称 SELECT a.empno,a.ename,de.dname,a.hiredate,b.ename,b.hiredate FROM emp a ,emp b,dept de WHERE a.mgr = b.empno AND a.deptno=de.deptno AND a.hiredate15000 GROUP BY job; -- 6. 列出在销售部工作的员工的姓名,假定不知道销售部的部门编号。 SELECT ename FROM emp WHERE deptno= (SELECT deptno FROM dept WHERE dname='销售部'); -- 7. 列出薪金高于公司平均薪金的所有员工信息,所在部门名称,上级领导,工资等级。 SELECT em.*,de.dname FROM emp em LEFT JOIN dept de ON em.deptno=de.deptno WHERE (sal+IFNULL(comm,0))> (SELECT AVG(sal+IFNULL(comm,0)) FROM emp); select e1.*,e2.ename 领导,dname,grade from emp e1 left join emp e2 on e1.mgr=e2.empno left join dept d on e1.deptno=d.deptno left join salgrade on e1.sal between losal and hisal where (e1.sal+ifnull(e1.comm,0))>(select avg(sal+ifnull(comm,0))from emp); -- 8.列出与庞统从事相同工作的所有员工及部门名称。 SELECT em.ename,de.dname FROM emp em INNER JOIN dept de ON em.deptno=de.deptno WHERE em.job= (SELECT job FROM emp WHERE ename='庞统') ; -- 9.列出薪金高于在部门30工作的所有员工的薪金 的员工姓名和薪金、部门名称。 SELECT em.ename,em.sal,de.dname FROM emp em LEFT JOIN dept de ON em.deptno=de.deptno WHERE (sal+IFNULL(comm,0))>(SELECT MAX(sal+IFNULL(comm,0)) FROM emp WHERE deptno = 30); -- 10.查出年份、利润、年度增长比。 SELECT a.*, CONCAT((b.zz-a.zz)/a.zz*100,'%') 增长比 FROM profit a,profit b WHERE a.`year`+1=b.`year`;


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3