MySQL数据库表数据的查询操作实验

一.验证性实验
题目要求:
在公司的部门员工管理数据库的bumen表和yuangong表上进行信息查询。Bumen表和yuangong表的定义如表所示。
在这里插入图片描述
在这里插入图片描述
bumen表的练习数据:
INSERT INTO bumen(1001,‘人事部’,‘人事管理’,‘北京’);
INSERT INTO bumen(1002,‘科研部’,‘研发产品’,‘北京’);
INSERT INTO bumen(1003,‘生产部’,‘产品生产’,‘天津’);
INSERT INTO bumen(1004,‘销售部’,‘产品销售’,‘上海’);
在这里插入图片描述
yuangong表的练习数据:
INSERT INTO yuangong(8001,‘韩鹏’,‘男’,25,1002,4000,‘北京市海淀区’);
INSERT INTO yuangong(8002,‘张峰’,‘男’,26,1001,2500,‘北京市昌平区’);
INSERT INTO yuangong(8003,‘欧阳’,‘男’,20,1003,1500,‘湖南省永州市’);
INSERT INTO yuangong(8004,‘王武’,‘男’,30,1001,3500,‘北京市顺义区’);
INSERT INTO yuangong(8005,‘欧阳宝贝’,‘女’,21,1002,3000,‘北京市昌平区’);
INSERT INTO yuangong(8006,‘呼延’,‘男’,28,1003,1800,‘天津市南开区’);
在这里插入图片描述
然后在bumen表和yuangong表查询记录。查询的要求如下:
(1)查询yuangong表的所有记录。
SELECT * FROM yuangong;
在这里插入图片描述
或者列出yuangong表的所有字段名称。
SELECT id,name,sex,age,d_id,salary,address FROM yuangong;
在这里插入图片描述
(2)查询yuangong表的第四条到第五条记录。
SELECT id,name,sex,age,d_id,salary,address FROM yuangong LIMIT 3,2;
在这里插入图片描述
(3)从bumen表查询部门号(d_id)、部门名称(d_name)和部门职能(function)。
SELECT d_id,d_name,function FROM bumen;
在这里插入图片描述
(4)从yuangong表中查询人事部和科研部的员工的信息。先从bumen表查询出人事部和科研部的部门号。然后到yuangong表中去查询员工的信息。
SELECT * FROM yuangong
WHERE d_id=ANY(
SELECT d_id FROM bumen
WHERE d_name IN(‘人事部’,‘科研部’));
或者使用下面的代码。
SELECT * FROM yuangong
WHERE d_idIN(
SELECT d_id FROM bumen
WHERE d_name='人事部’ORd_name=‘科研部’);
在这里插入图片描述
(5)从yuangong表中查询年龄在25到30之间的员工的信息。可以通过两种方式来查询。
第一种方式:
SELECT * FROM yuangong WHERE age BETWEEN 25 AND 30;
第二种方式:
SELECT * FROM yuangong WHERE age>=25 AND age<=30;
在这里插入图片描述
(6)查询每个部门有多少员工。先按部门号进行分组,然后用COUNT()函数来计算每组的人数。
SELECT d_id,COUNT(id) FROM yuangong GROUP BY d_id;
在这里插入图片描述
或者给COUNT(id)取名为sum。
SELECT d_id,COUNT(id) AS sum FROM yuangong GROUP BY d_id;
在这里插入图片描述
(7)查询每个部门的最高工资。先按部门号进行分组,然后用MAX()函数来计算最大值。
SELECT d_id,MAX(salary) FROM yuangong GROUP BY d_id;
在这里插入图片描述
(8)用左连接的方式查询bumen表和yuangong表。
使用 LEFT JOINON 来实现左连接。
SELECT bumen.d_id,d_name,function,bumen.address,id,name,age,sex, salary,yuangong.address
FROM bumen LEFT JOIN yuangong ON yuangong.d_id=bumen.d_id;
在这里插入图片描述
(9)计算每个部门的总工资。先按部门号进行分组,然后用SUM()函数来求和。
SELECT d_id,SUM(salary) FROM yuangong GROUP BY d_id;
在这里插入图片描述
(10)查询yuangong表,按照工资从高到低的顺序排列。
SELECT * FROM yuangong ORDER BY salary DESC;
在这里插入图片描述
(11)从bumen表和yuangong表中查询出部门号,然后使用UNION合并查询结果。
SELECT d_id FROM yuangong UNION SELECT d_id FROM bumen;
在这里插入图片描述
(12)查询家是北京市员工的姓名、年龄、家庭住址。这里使用 LIKE 关键字。
SELECT name,age,address FROM yuangong WHERE address LIKE ‘北京%’;
在这里插入图片描述
二、设计性试验
将在student表和score表上进行查询。Student表和score表的定义如表所示:
在这里插入图片描述
表创建成功后,查看两个表的结构。
Student练习数据如下:
901,‘张军’,‘男’,1985,‘计算机系’,‘北京市海淀区’
902,‘张超’,‘男’,1986,‘中文系’,‘北京市昌平区’
903,‘张美’,‘女’,1990,‘中文系’,‘湖南省永州市’
904,‘李五一’,‘男’,1990,‘英语系’,‘辽宁省阜新市’
905,‘王芳’,‘女’,1991,‘英语系’,‘福建省厦门市’
906,‘王桂’,‘男’,1988,‘计算机系’,‘湖南省衡阳市’
在这里插入图片描述
score表练习数据如下:
01,‘计算机’,901,98
02,‘英语’,,901,80
03,‘计算机’,902,,65
04,‘中文’,902,88
05,‘中文’,903,95
06,‘计算机’,903,70
07,‘英语’,904,92
08,‘英语’,905,94
09,‘计算机’,906,90
10,‘英语’,906,85
在这里插入图片描述
然后按照下列要求进行表操作:
(1)查询student表的所有记录。
方法一:用”*“。
SELECT * FROM student;
在这里插入图片描述
方法二:列出所有的列名。
SELECT num,name,sex,birthday,bumen,address FROM student;
在这里插入图片描述
(2)查询student表的第二条到第四条记录。
SELECT num,name,sex,birthday,bumen,address FROM student LIMIT 3,2;
在这里插入图片描述
(3)从student表查询所有学生的学号、姓名和院系的信息。
SELECT num,name,bumen FROM student;
在这里插入图片描述
查询计算机系和英语系的学生的信息。
方法一:使用IN关键字
SELECT
*
FROM
student
WHERE
bumen IN ( ‘计算机系’, ‘英语系’ );
在这里插入图片描述
方法二:使用OR关键字
SELECT
*
FROM
student
WHERE
bumen = '计算机系’OR bumen= ‘英语系’ ;
在这里插入图片描述
(5)从student表中查询生日为1986到1990的学生的信息。
方法一:使用BETWEEN AND 关键字来查询
SELECT * FROM student WHERE birthday BETWEEN 1986 AND 1990;
在这里插入图片描述
方式二:使用 AND 关键字和比较运算符。
SELECT * FROM student WHERE birthday>=1986 AND birthday<=1990;
在这里插入图片描述
(6)student表中查询每个院系有多少人,为统计的人数列取别名sum_of_bumen。
SELECT bumen,COUNT(num) AS sum_of_bumen FROM student GROUP BY bumen;
在这里插入图片描述
(7)从score表中查询每个科目的最高分。
SELECT stu_id,MAX(grade) FROM score GROUP BY stu_id;
在这里插入图片描述
(8)查询李五一的考试科目(c_name)和考试成绩(grade)。
SELECT
C_name,
grade
FROM
score
WHERE
stu_id = ANY (
SELECT
num
FROM
student
WHERE
NAME IN ( ‘李五一’ ))
在这里插入图片描述
(9)用连接查询的方式查询所有学生的信息和考试信息。
在这里插入图片描述
在这里插入图片描述
(10)计算每个学生的总成绩(需显示学生姓名)。
在这里插入图片描述
(11)计算每个考试科目的平均成绩。
Select C_name,AVG(grade) AVG_C_name from score
Group by C_name;
在这里插入图片描述
(12)查询计算机成绩低于95的学生的信息。
select * FROM student where num in (select stu_id from score where C_name = ‘计算机’ and grade <95);
在这里插入图片描述
(13)查询同时参加计算机和英语考试的学生的信息。
select * FROM student where num =ANY(select Stu_id from score where Stu_id in(select Stu_id from score where C_name =‘计算机’) and C_name =‘英语’);
在这里插入图片描述
(14)将计算机成绩按从高到低进行排序。
select stu_id,grade from score where C_name =-‘计算机’ order by grade DESC;
在这里插入图片描述
(15)从student表和score表中查询出学生的学号,然后合并查询结果。
在这里插入图片描述
(16)查询姓张或者姓王的同学的姓名、院系、考试科目和成绩。
select s.name,s.bumen,c.C_name,c.grade from student s,score c where (s.name LIKE ‘张%’ or s.name like ‘王%’)and s.num =c.stu_id;
在这里插入图片描述
(17)查询都是湖南的同学的姓名、年龄、院系、考试科目和成绩。
select s.name,s.bumen,c.C_name,c.grade from student s,score c where s.address like ‘湖南%’ and s.num =c.stu_id;
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_55726741/article/details/129248013