MySQL学生表和分数表的多表查询

news/2024/11/24 9:20:28/

目录

         一、创建学生表

二、创建分数表

 1.查询student表的所有记录

2.查询student表的第2条到4条记录

3.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息

4.从student表中查询计算机系和英语系的学生的信息

5.从student表中查询年龄30~35岁的学生信息

6.从student表中查询每个院系有多少人

7.从score表中查询每个科目的最高分

8.查询李四的考试科目(c_name)和考试成绩(grade)

9.用连接的方式查询所有学生的信息和考试信息

10.计算每个学生的总成绩

11.计算每个考试科目的平均成绩

12.查询计算机成绩低于95的学生信息

13.查询同时参加计算机和英语考试的学生的信息

14.将计算机考试成绩按从高到低进行排序

15.从student表和score表中查询出学生的学号,然后合并查询结果

16.查询姓张或者姓王的同学的姓名、院系和考试科目及成绩

17.查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩


一、创建学生表

create table student (id int(10) not null unique primary key, name  varchar(20) not null, sex varchar (4), brith year, department varchar(20), address varchar(50) 
);

二、创建分数表

create table score (-> id int(10) not null unique primary key auto_increment,-> stu_id int(10) not null,-> c_name varchar (20),-> grade int(10)-> );

查看表的结构是否建立

插入数据给两张表里面

向student表插入记录的INSERT语句如下:

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表插入记录的INSERT语句如下:

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);

 1.查询student表的所有记录


2.查询student表的第2条到4条记录

SELECT * FROM student LIMIT 1,3;

3.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息

MSELECT id,NAME,department FROM student;

4.从student表中查询计算机系和英语系的学生的信息

select *from student 
where department = '计算机系' or department = '英语系';

5.从student表中查询年龄30~35岁的学生信息

select * , year(now())-brith as age 
from student where brith < 1992 and brith > 1987;

6.从student表中查询每个院系有多少人

select department as '院系',count(department) as `院系人数` 
from student  group by department;

7.从score表中查询每个科目的最高分

select c_name as '科目', max(grade) as '最高分'
from score group by c_name;

8.查询李四的考试科目(c_name)和考试成绩(grade)

select s.id , s.name,s.sex,s.department,c.c_name 
from student as s inner join score as c 
on s.id=c.stu_id where s.name='李四';

9.用连接的方式查询所有学生的信息和考试信息

select s.id,s.name,s.sex,s.brith,s.department,s.address,
c.c_name,c.grade from score as c 
inner join student as s  
on s.id = c.stu_id ;

第二种方法:

SELECT st.id,st.name,st.sex,st.brith,st.department,st.address,
group_concat(s.c_name) as '科目',
group_concat(s.grade)as '成绩' 
FROM score  s 
LEFT JOIN student  st 
ON s.stu_id = st.id GROUP BY st.id;

10.计算每个学生的总成绩

SELECT st.name,sum(s.grade) as'总成绩' FROM score  s 
LEFT JOIN student  st ON s.stu_id = st.id GROUP BY st.id;

11.计算每个考试科目的平均成绩

SELSELECT c_name,avg(grade) as'平均成绩' FROM score  
GROUP BY c_name;

12.查询计算机成绩低于95的学生信息

select st.id,st.name,st.sex,st.brith,st.department,s.c_name,s.grade 
from score as s 
inner join student as st 
on st.id = s.stu_id 
where c_name='计算机'  and grade < 95 ;

13.查询同时参加计算机和英语考试的学生的信息

SELECT st.id,st.name,st.sex,st.brith,st.department,st.address,
group_concat(s.c_name) as '科目' FROM score  s 
LEFT JOIN student  st 
ON s.stu_id = st.id 
GROUP BY st.id 
having `科目`='计算机,英语';

14.将计算机考试成绩按从高到低进行排序

SELECT st.id,st.name,st.sex,st.brith,st.department,st.address,
s.c_name,s.grade 
FROM score s 
inner JOIN student st 
ON s.stu_id = st.id 
where s.c_name='计算机' 
order by grade desc;

15.从student表和score表中查询出学生的学号,然后合并查询结果

16.查询姓张或者姓王的同学的姓名、院系和考试科目及成绩

select st.name,st.department,s.c_name,s.grade 
from score as s 
inner join student as st 
on st.id=s.stu_id 
where st.name like '张%' or st.name like '王%';

第二种方法:

SELECT NAME,department,c_name,grade FROM score,
(SELECT * FROM student WHERE NAME LIKE '张%' OR NAME LIKE '王%')st 
WHERE stu_id=st.id;

17.查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩

select name,(year(now())-brith) as age, department,c_name,grade 
from score ,
(select *from student where address like '湖南%')st 
where st.id=stu_id;

 第二种方法:

select name,(year(now())-brith) as age, department,c_name,grade 
from score as s 
inner join student as st 
on s.stu_id=st.id 
where address like '湖南%';


http://www.ppmy.cn/news/903910.html

相关文章

地铁区间——各种支架、接触网布置

地铁区间——各种支架、接触网布置&#xff1a; 地铁区间——电缆支架布置 地铁区间——接触网&#xff08;吊架和汇流排&#xff09;布置 地铁区间——环网支架布置 地铁区间——通信支架布置

xy坐标正负方向_道路施工图纸上x坐标和y坐标分别代表什么方向?哪个代表南北方向?哪个代表东西方向?...

展开全部 答&#xff1a; xy因各软件设置问题&#xff0c;导致可以互相转化&#xff0c;但是在一般情况下&#xff1a; x坐标e68a84e8a2ad3231313335323631343130323136353331333363396366代表南北方向。 y坐标代表东西方向。 坐标上X的数值越大表示该点越向北&#xff0c;X的数…

地铁区间——接触网(吊架和汇流排)布置

地铁区间——接触网&#xff08;吊架和汇流排&#xff09;布置 地铁区间——电缆支架布置

Hexagon图形分析器介绍(十)

Hexagon图形分析器介绍&#xff08;十&#xff09; 3.8.3 硬件/软件线程视图3.8.3.1 数据显示与解读3.8.3.2 悬停数据3.8.3.3 过滤3.8.3.4 缩放3.8.3.5 上下文菜单 3.8.4 软件线程视图3.8.4.1 数据显示和解读3.8.4.2 悬停数据3.8.4.3 过滤3.8.4.4 排序3.8.4.5 缩放3.8.4.6 上下…

Hexagon图形分析器介绍(十九)

Hexagon图形分析器介绍&#xff08;十九&#xff09; 4.22 L2-Cache 访问事件4.23 L2 – 缓存丢失事件4.24 软件线程创建事件4.25 软件线程销毁事件4.26 软件线程栈大小事件 4.22 L2-Cache 访问事件 格式&#xff1a;full L2_HIT_(R | W | F),CY cyclenum ,TH tnum ,PCaddr,VA…

石油化工工艺管道安装设计图册 管道支吊架之PT型平管支托的介绍

<spanclass"bjh-image-caption center">PT-2型平管支托 在石油化工装置工艺管道的安装设计中&#xff0c;管道支吊架是一个非常重要的组成部分。管道支吊架在管道安装中具有重要的作用&#xff0c;能够保证管道的安全性、稳定性和可靠性。PT型平管支托是一种重…

汽水管道支吊架之C型螺杆管夹和C型钢带管夹

汽水管道支吊架对于保证管道的稳固运行有着非常重要的作用。而在汽水管道结构中&#xff0c;支吊架则是不可或缺的重要部件之一。其中&#xff0c;C型螺杆管夹和C型钢带管夹作为支吊架的重要组成部分&#xff0c;也是业内常用的两种型号。C型螺杆管夹是一种基于机械原理设计的管…