From 5e83c7a8656d297ecad523e116cee023a30a590a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=81=B5=E9=92=B0?= <3279815787@qq.com> Date: Tue, 28 Feb 2023 23:21:24 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E2=80=9C=E9=99=88=E7=81=B5=E9=92=B0?= =?UTF-8?q?=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\350\257\242 \344\275\234\344\270\232.md" | 335 ++++++++++++++++++ 1 file changed, 335 insertions(+) create mode 100644 "31 \351\231\210\347\201\265\351\222\260/20230227 \345\205\263\350\201\224\346\237\245\350\257\242 \344\275\234\344\270\232.md" diff --git "a/31 \351\231\210\347\201\265\351\222\260/20230227 \345\205\263\350\201\224\346\237\245\350\257\242 \344\275\234\344\270\232.md" "b/31 \351\231\210\347\201\265\351\222\260/20230227 \345\205\263\350\201\224\346\237\245\350\257\242 \344\275\234\344\270\232.md" new file mode 100644 index 0000000..5d4cc64 --- /dev/null +++ "b/31 \351\231\210\347\201\265\351\222\260/20230227 \345\205\263\350\201\224\346\237\245\350\257\242 \344\275\234\344\270\232.md" @@ -0,0 +1,335 @@ +# 1.作业 + +\1. 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。用SQL语句创建四个表并完成相关题目。 + +\2. **数据库的表结构** + +表(一)Student (学生表) + +| 属性名 | 数据类型 | 可否为空 | 含义 | +| --------- | ------------ | -------- | ------------ | +| Sno | varchar (20) | 否 | 学号(主码) | +| Sname | varchar (20) | 否 | 学生姓名 | +| Ssex | varchar (20) | 否 | 学生性别 | +| Sbirthday | datetime | 可 | 学生出生年月 | +| Class | varchar (20) | 可 | 学生所在班级 | + +表(二)Course(课程表) + +| 属性名 | 数据类型 | 可否为空 | 含义 | +| ------ | ------------ | -------- | ---------------- | +| Cno | varchar (20) | 否 | 课程号(主码) | +| Cname | varchar (20) | 否 | 课程名称 | +| Tno | varchar (20) | 否 | 教工编号(外码) | + +表(三)Score(成绩表) + +| 属性名 | 数据类型 | 可否为空 | 含义 | +| -------------- | ------------ | -------- | -------------- | +| Sno | varchar (20) | 否 | 学号(外码) | +| Cno | varchar (20) | 否 | 课程号(外码) | +| Degree | Decimal(4,1) | 可 | 成绩 | +| 主码:Sno+ Cno | | | | + +表(四)Teacher(教师表) + +| 属性名 | 数据类型 | 可否为空 | 含义 | +| --------- | ------------ | -------- | ---------------- | +| Tno | varchar (20) | 否 | 教工编号(主码) | +| Tname | varchar (20) | 否 | 教工姓名 | +| Tsex | varchar (20) | 否 | 教工性别 | +| Tbirthday | datetime | 可 | 教工出生年月 | +| Prof | varchar (20) | 可 | 职称 | +| Depart | varchar (20) | 否 | 教工所在部门 | + +\3. **数据库中的数据**: + +-- 1,查询所有学生,都学了哪些课程,要显示学生信息和课程信息/ + +-- 2,查询没有学生的教师的所有信息 + + + + + +表(一)Student + +| Sno | Sname | Ssex | Sbirthday | class | +| ---- | ----- | ---- | --------- | ----- | +| 108 | 曾华 | 男 | 1977-9-1 | 95033 | +| 105 | 匡明 | 男 | 1975-10-2 | 95031 | +| 107 | 王丽 | 女 | 1976-1-23 | 95033 | +| 101 | 李军 | 男 | 1976-2-20 | 95033 | +| 109 | 王芳 | 女 | 1975-2-10 | 95031 | +| 103 | 陆君 | 男 | 1974-6-3 | 95031 | + +表(二)Course + +| Cno | Cname | Tno | +| ----- | ---------- | ---- | +| 3-105 | 计算机导论 | 825 | +| 3-245 | 操作系统 | 804 | +| 6-166 | 数字电路 | 856 | +| 9-888 | 高等数学 | 831 | + +表(三)Score + +| Sno | Cno | Degree | +| ---- | ----- | ------ | +| 103 | 3-245 | 86 | +| 105 | 3-245 | 75 | +| 109 | 3-245 | 68 | +| 103 | 3-105 | 92 | +| 105 | 3-105 | 88 | +| 109 | 3-105 | 76 | +| 101 | 3-105 | 64 | +| 107 | 3-105 | 91 | +| 108 | 3-105 | 78 | +| 101 | 6-166 | 85 | +| 107 | 6-166 | 79 | +| 108 | 6-166 | 81 | + +表(四)Teacher + +| Tno | Tname | Tsex | Tbirthday | Prof | Depart | +| ---- | ----- | ---- | --------- | ------ | ---------- | +| 804 | 李诚 | 男 | 1958-12-2 | 副教授 | 计算机系 | +| 856 | 张旭 | 男 | 1969-3-12 | 讲师 | 电子工程系 | +| 825 | 王萍 | 女 | 1972-5-5 | 助教 | 计算机系 | +| 831 | 刘冰 | 女 | 1977-8-14 | 助教 | 电子工程系 | + +\4. 查询 + +① 查询Score表中的最高分的学生学号和课程号。 + +② 查询所有学生的Sname、Cno和Degree列。 + +③ 查询所有学生的Sno、Cname和Degree列。 + +④ 查询所有学生的Sname、Cname和Degree列。 + +⑤ 查询“95033”班学生的平均分。 + +⑥ 查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。 + +⑦ 查询score中选学多门课程的同学中分数为非最高分成绩的记录。 + +⑧ 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。 + +⑨ 查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。 + +⑩ 查询“张旭“教师任课的学生成绩。 + +11 查询选修某课程的同学人数多于5人的教师姓名。 + +12 查询出“计算机系“教师所教课程的成绩表。 + +13 查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。 + +14 查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。 + +15 查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree. + +16 查询成绩比该课程平均成绩低的同学的成绩表。 + +17 查询所有任课教师的Tname和Depart. + +18 查询所有未讲课的教师的Tname和Depart. + +19 查询“男”教师及其所上的课程。 + +20 查询最高分同学的Sno、Cno和Degree列。 + +21 查询和“李军”同性别的所有同学的Sname. + +22 查询和“李军”同性别并同班的同学Sname. + +23 查询所有选修“计算机导论”课程的“男”同学的成绩表。 + +create database zuoye2 charset utf8; +use zuoye2; + +create table student( + sno varchar(20)primary key, + sname varchar(20)not null, + ssex varchar(20)not null, + sbirthday datetime, + class varchar(20) +); + +create table course( + cno varchar(20)primary key, + cname varchar(20) not null, + tno varchar(20)not null, + foreign key (tno) references teacher(tno) +); + +create table score( + sno varchar(20)not null, + cno varchar(20)not null, + degree decimal(4,1), + foreign key (sno) references student(sno), + foreign key (cno) references course(cno) +); + +create table teacher( + tno varchar(20)primary key, + tname varchar(20)not null, + tsex varchar(20)not null, + tbirthday datetime, + prof varchar(20), + depart varchar(20)not null +); + +insert into student values(108,'曾华','男','1977-9-1','95033'); +insert into student values(105,'匡明','男','1975-10-2','95031'); +insert into student values(107,'王丽','女','1976-1-23','95033'); +insert into student values(101,'李军','男','1976-2-20','95033'); +insert into student values(109,'王芳','女','1975-2-10','95031'); +insert into student values(103,'陆君','男','1974-6-3','95031'); + +insert into course values('3-105','计算机导论','825'); +insert into course values('3-245','操作系统','804'); +insert into course values('6-166','数字电路','856'); +insert into course values('9-888','高等数学','831'); + +insert into score values('103','3-245','86'); +insert into score values('105','3-245','75'); +insert into score values('109','3-245','68'); +insert into score values('103','3-105','92'); +insert into score values('105','3-105','88'); +insert into score values('109','3-105','76'); +insert into score values('101','3-105','64'); +insert into score values('107','3-105','91'); +insert into score values('108','3-105','78'); +insert into score values('101','6-166','85'); +insert into score values('107','6-166','79'); +insert into score values('108','6-166','81'); + +insert into teacher values('804','李诚','男','1958-12-2','副教授','计算机系'); +insert into teacher values('856','张旭','男','1969-3-12','讲师','电子工程系'); +insert into teacher values('825','王萍','女','1972-5-5','助教','计算机系'); +insert into teacher values('831','刘冰','女','1977-8-14','助教','电子工程系'); + +-- 1,查询所有学生,都学了哪些课程,要显示学生信息和课程信息/ +select student.sno,sname,ssex,sbirthday,class,cname +from student left join score on student.sno=score.sno +left join course on score.cno=course.cno; +-- 2,查询没有学生的教师的所有信息\ +select tname from +teacher left join course on teacher.tno=course.tno +left join score on course.cno=score.cno +left join student on score.sno=student.sno +where min(lishi( +select count(score.cno),cname as rshu from +score right join course on score.cno=course.cno group by course.cno)); +-- 不会做别抄 + +select * from teacher; +select * from score; + +select * from course; + +-- 4.查询 +-- ① 查询Score表中的最高分的学生学号和课程号。 +select sno,cno from score where degree=(select max(degree) from score); +-- ② 查询所有学生的Sname、Cno和Degree列。 +select sname,score.cno,degree from student inner join score on student.sno=score.sno; +-- ③ 查询所有学生的Sno、Cname和Degree列。 +select score.sno,cname,degree from score inner join course on score.cno=course.cno; +-- ④ 查询所有学生的Sname、Cname和Degree列。 +select sname,cname,degree from student inner join score on student.sno=score.sno inner join course on score.cno=course.cno; +-- ⑤ 查询“95033”班学生的平均分。 +select avg(score.Degree) from score inner join student on student.Sno = score.Sno where student.Class = '95033'; +-- ⑥ 查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。 +select * from student +inner join score on student.sno=score.sno +where score.cno='3-105' and degree > +(select degree from score where score.sno=109 and score.cno='3-105' ); +-- ⑦ 查询score中选学多门课程的同学中分数为非最高分成绩的记录。 +select max(score.degree) from score where 1< (select count(sno) from score) +select count(sno) from score group by sno +-- 不会做别抄 +-- ⑧ 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。 +select * from score +where degree>( +select degree from score where score.sno=109 and score.cno='3-105'); +-- ⑨ 查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。 +select sno,sname,sbirthday from +student where sbirthday=(select sbirthday from student where sno=108); +-- 这个只有他自己生日一样下面是不输出他自己生日的代码 +select sno,sname,sbirthday from student +where sbirthday=(select sbirthday from student where sno=108) +and sno!=108; +-- ⑩ 查询“张旭“教师任课的学生成绩。 +select degree from score left join course +on score.cno=course.cno +left join teacher +on course.tno=teacher.tno +where score.cno=( +select course.cno from course left join teacher +on course.tno=teacher.tno +where tname='张旭') +-- ⑪ 查询选修某课程的同学人数多于5人的教师姓名。 +select tname from teacher left join course +on teacher.tno=course.tno +left join score +on course.cno=score.cno +where (select count(score.cno) from score group by cno ) +-- 不会做 +-- ⑫ 查询出“计算机系“教师所教课程的成绩表。 +select score.sno,score.cno,degree from score left join course +on score.cno=course.cno +left join teacher +on course.tno=teacher.tno +where depart='计算机系'; + +-- ⑬ 查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。 +select tname,prof from teacher where prof in (select distinct prof from teacher); +-- ⑭ 查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。 + +select score.cno,score.sno,score.degree from +score inner join course +on score.cno = course.cno +and score.cno = '3-105' +and score.degree > ( +select max(degree) from score where score.cno='3-245') +order by score.degree desc; +-- ⑮ 查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree. +select score.cno,score.sno,score.degree from +score inner join course +on score.cno = course.cno +and score.cno = '3-105' +and score.degree > ( +select max(degree) from score where score.cno='3-245'); +-- ⑯ 查询成绩比该课程平均成绩低的同学的成绩表。 +select degree +-- ⑰ 查询所有任课教师的Tname和Depart. +select tname,depart from teacher +-- 不会做 +-- ⑱ 查询所有未讲课的教师的Tname和Depart. +select tname,depart from teacher +-- 不会做 +-- ⑲ 查询“男”教师及其所上的课程。 +select tname,cname from teacher left join course +on teacher.tno=course.tno +where tsex='男'; +-- ⑳ 查询最高分同学的Sno、Cno和Degree列。 +select sno,cno,degree from score where degree=( +select max(degree) from score); +-- 21 查询和“李军”同性别的所有同学的Sname. +select sname from student +where ssex=(select ssex from student where sname='李军'); +-- 22 查询和“李军”同性别并同班的同学Sname. +select sname from student +where ssex=(select ssex from student where sname='李军') +and class=(select class from student where sname='李军'); +-- 23 查询所有选修“计算机导论”课程的“男”同学的成绩表。 +select score.* from score left join course +on score.cno=course.cno +left join student +on score.sno=student.sno +where score.cno=(select course.cno from course where cname='计算机导论') + +and ssex='男'; + -- Gitee From dba42a464daf42e29c116994d95b15d654805c68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=81=B5=E9=92=B0111?= <11785101+chen-lingyu-111@user.noreply.gitee.com> Date: Wed, 1 Mar 2023 08:20:21 +0000 Subject: [PATCH 2/3] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=2031?= =?UTF-8?q?=20=E9=99=88=E7=81=B5=E9=92=B0/20230227=20=E5=85=B3=E8=81=94?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=20=E4=BD=9C=E4=B8=9A.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\350\257\242 \344\275\234\344\270\232.md" | 335 ------------------ 1 file changed, 335 deletions(-) delete mode 100644 "31 \351\231\210\347\201\265\351\222\260/20230227 \345\205\263\350\201\224\346\237\245\350\257\242 \344\275\234\344\270\232.md" diff --git "a/31 \351\231\210\347\201\265\351\222\260/20230227 \345\205\263\350\201\224\346\237\245\350\257\242 \344\275\234\344\270\232.md" "b/31 \351\231\210\347\201\265\351\222\260/20230227 \345\205\263\350\201\224\346\237\245\350\257\242 \344\275\234\344\270\232.md" deleted file mode 100644 index 5d4cc64..0000000 --- "a/31 \351\231\210\347\201\265\351\222\260/20230227 \345\205\263\350\201\224\346\237\245\350\257\242 \344\275\234\344\270\232.md" +++ /dev/null @@ -1,335 +0,0 @@ -# 1.作业 - -\1. 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。用SQL语句创建四个表并完成相关题目。 - -\2. **数据库的表结构** - -表(一)Student (学生表) - -| 属性名 | 数据类型 | 可否为空 | 含义 | -| --------- | ------------ | -------- | ------------ | -| Sno | varchar (20) | 否 | 学号(主码) | -| Sname | varchar (20) | 否 | 学生姓名 | -| Ssex | varchar (20) | 否 | 学生性别 | -| Sbirthday | datetime | 可 | 学生出生年月 | -| Class | varchar (20) | 可 | 学生所在班级 | - -表(二)Course(课程表) - -| 属性名 | 数据类型 | 可否为空 | 含义 | -| ------ | ------------ | -------- | ---------------- | -| Cno | varchar (20) | 否 | 课程号(主码) | -| Cname | varchar (20) | 否 | 课程名称 | -| Tno | varchar (20) | 否 | 教工编号(外码) | - -表(三)Score(成绩表) - -| 属性名 | 数据类型 | 可否为空 | 含义 | -| -------------- | ------------ | -------- | -------------- | -| Sno | varchar (20) | 否 | 学号(外码) | -| Cno | varchar (20) | 否 | 课程号(外码) | -| Degree | Decimal(4,1) | 可 | 成绩 | -| 主码:Sno+ Cno | | | | - -表(四)Teacher(教师表) - -| 属性名 | 数据类型 | 可否为空 | 含义 | -| --------- | ------------ | -------- | ---------------- | -| Tno | varchar (20) | 否 | 教工编号(主码) | -| Tname | varchar (20) | 否 | 教工姓名 | -| Tsex | varchar (20) | 否 | 教工性别 | -| Tbirthday | datetime | 可 | 教工出生年月 | -| Prof | varchar (20) | 可 | 职称 | -| Depart | varchar (20) | 否 | 教工所在部门 | - -\3. **数据库中的数据**: - --- 1,查询所有学生,都学了哪些课程,要显示学生信息和课程信息/ - --- 2,查询没有学生的教师的所有信息 - - - - - -表(一)Student - -| Sno | Sname | Ssex | Sbirthday | class | -| ---- | ----- | ---- | --------- | ----- | -| 108 | 曾华 | 男 | 1977-9-1 | 95033 | -| 105 | 匡明 | 男 | 1975-10-2 | 95031 | -| 107 | 王丽 | 女 | 1976-1-23 | 95033 | -| 101 | 李军 | 男 | 1976-2-20 | 95033 | -| 109 | 王芳 | 女 | 1975-2-10 | 95031 | -| 103 | 陆君 | 男 | 1974-6-3 | 95031 | - -表(二)Course - -| Cno | Cname | Tno | -| ----- | ---------- | ---- | -| 3-105 | 计算机导论 | 825 | -| 3-245 | 操作系统 | 804 | -| 6-166 | 数字电路 | 856 | -| 9-888 | 高等数学 | 831 | - -表(三)Score - -| Sno | Cno | Degree | -| ---- | ----- | ------ | -| 103 | 3-245 | 86 | -| 105 | 3-245 | 75 | -| 109 | 3-245 | 68 | -| 103 | 3-105 | 92 | -| 105 | 3-105 | 88 | -| 109 | 3-105 | 76 | -| 101 | 3-105 | 64 | -| 107 | 3-105 | 91 | -| 108 | 3-105 | 78 | -| 101 | 6-166 | 85 | -| 107 | 6-166 | 79 | -| 108 | 6-166 | 81 | - -表(四)Teacher - -| Tno | Tname | Tsex | Tbirthday | Prof | Depart | -| ---- | ----- | ---- | --------- | ------ | ---------- | -| 804 | 李诚 | 男 | 1958-12-2 | 副教授 | 计算机系 | -| 856 | 张旭 | 男 | 1969-3-12 | 讲师 | 电子工程系 | -| 825 | 王萍 | 女 | 1972-5-5 | 助教 | 计算机系 | -| 831 | 刘冰 | 女 | 1977-8-14 | 助教 | 电子工程系 | - -\4. 查询 - -① 查询Score表中的最高分的学生学号和课程号。 - -② 查询所有学生的Sname、Cno和Degree列。 - -③ 查询所有学生的Sno、Cname和Degree列。 - -④ 查询所有学生的Sname、Cname和Degree列。 - -⑤ 查询“95033”班学生的平均分。 - -⑥ 查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。 - -⑦ 查询score中选学多门课程的同学中分数为非最高分成绩的记录。 - -⑧ 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。 - -⑨ 查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。 - -⑩ 查询“张旭“教师任课的学生成绩。 - -11 查询选修某课程的同学人数多于5人的教师姓名。 - -12 查询出“计算机系“教师所教课程的成绩表。 - -13 查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。 - -14 查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。 - -15 查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree. - -16 查询成绩比该课程平均成绩低的同学的成绩表。 - -17 查询所有任课教师的Tname和Depart. - -18 查询所有未讲课的教师的Tname和Depart. - -19 查询“男”教师及其所上的课程。 - -20 查询最高分同学的Sno、Cno和Degree列。 - -21 查询和“李军”同性别的所有同学的Sname. - -22 查询和“李军”同性别并同班的同学Sname. - -23 查询所有选修“计算机导论”课程的“男”同学的成绩表。 - -create database zuoye2 charset utf8; -use zuoye2; - -create table student( - sno varchar(20)primary key, - sname varchar(20)not null, - ssex varchar(20)not null, - sbirthday datetime, - class varchar(20) -); - -create table course( - cno varchar(20)primary key, - cname varchar(20) not null, - tno varchar(20)not null, - foreign key (tno) references teacher(tno) -); - -create table score( - sno varchar(20)not null, - cno varchar(20)not null, - degree decimal(4,1), - foreign key (sno) references student(sno), - foreign key (cno) references course(cno) -); - -create table teacher( - tno varchar(20)primary key, - tname varchar(20)not null, - tsex varchar(20)not null, - tbirthday datetime, - prof varchar(20), - depart varchar(20)not null -); - -insert into student values(108,'曾华','男','1977-9-1','95033'); -insert into student values(105,'匡明','男','1975-10-2','95031'); -insert into student values(107,'王丽','女','1976-1-23','95033'); -insert into student values(101,'李军','男','1976-2-20','95033'); -insert into student values(109,'王芳','女','1975-2-10','95031'); -insert into student values(103,'陆君','男','1974-6-3','95031'); - -insert into course values('3-105','计算机导论','825'); -insert into course values('3-245','操作系统','804'); -insert into course values('6-166','数字电路','856'); -insert into course values('9-888','高等数学','831'); - -insert into score values('103','3-245','86'); -insert into score values('105','3-245','75'); -insert into score values('109','3-245','68'); -insert into score values('103','3-105','92'); -insert into score values('105','3-105','88'); -insert into score values('109','3-105','76'); -insert into score values('101','3-105','64'); -insert into score values('107','3-105','91'); -insert into score values('108','3-105','78'); -insert into score values('101','6-166','85'); -insert into score values('107','6-166','79'); -insert into score values('108','6-166','81'); - -insert into teacher values('804','李诚','男','1958-12-2','副教授','计算机系'); -insert into teacher values('856','张旭','男','1969-3-12','讲师','电子工程系'); -insert into teacher values('825','王萍','女','1972-5-5','助教','计算机系'); -insert into teacher values('831','刘冰','女','1977-8-14','助教','电子工程系'); - --- 1,查询所有学生,都学了哪些课程,要显示学生信息和课程信息/ -select student.sno,sname,ssex,sbirthday,class,cname -from student left join score on student.sno=score.sno -left join course on score.cno=course.cno; --- 2,查询没有学生的教师的所有信息\ -select tname from -teacher left join course on teacher.tno=course.tno -left join score on course.cno=score.cno -left join student on score.sno=student.sno -where min(lishi( -select count(score.cno),cname as rshu from -score right join course on score.cno=course.cno group by course.cno)); --- 不会做别抄 - -select * from teacher; -select * from score; - -select * from course; - --- 4.查询 --- ① 查询Score表中的最高分的学生学号和课程号。 -select sno,cno from score where degree=(select max(degree) from score); --- ② 查询所有学生的Sname、Cno和Degree列。 -select sname,score.cno,degree from student inner join score on student.sno=score.sno; --- ③ 查询所有学生的Sno、Cname和Degree列。 -select score.sno,cname,degree from score inner join course on score.cno=course.cno; --- ④ 查询所有学生的Sname、Cname和Degree列。 -select sname,cname,degree from student inner join score on student.sno=score.sno inner join course on score.cno=course.cno; --- ⑤ 查询“95033”班学生的平均分。 -select avg(score.Degree) from score inner join student on student.Sno = score.Sno where student.Class = '95033'; --- ⑥ 查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。 -select * from student -inner join score on student.sno=score.sno -where score.cno='3-105' and degree > -(select degree from score where score.sno=109 and score.cno='3-105' ); --- ⑦ 查询score中选学多门课程的同学中分数为非最高分成绩的记录。 -select max(score.degree) from score where 1< (select count(sno) from score) -select count(sno) from score group by sno --- 不会做别抄 --- ⑧ 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。 -select * from score -where degree>( -select degree from score where score.sno=109 and score.cno='3-105'); --- ⑨ 查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。 -select sno,sname,sbirthday from -student where sbirthday=(select sbirthday from student where sno=108); --- 这个只有他自己生日一样下面是不输出他自己生日的代码 -select sno,sname,sbirthday from student -where sbirthday=(select sbirthday from student where sno=108) -and sno!=108; --- ⑩ 查询“张旭“教师任课的学生成绩。 -select degree from score left join course -on score.cno=course.cno -left join teacher -on course.tno=teacher.tno -where score.cno=( -select course.cno from course left join teacher -on course.tno=teacher.tno -where tname='张旭') --- ⑪ 查询选修某课程的同学人数多于5人的教师姓名。 -select tname from teacher left join course -on teacher.tno=course.tno -left join score -on course.cno=score.cno -where (select count(score.cno) from score group by cno ) --- 不会做 --- ⑫ 查询出“计算机系“教师所教课程的成绩表。 -select score.sno,score.cno,degree from score left join course -on score.cno=course.cno -left join teacher -on course.tno=teacher.tno -where depart='计算机系'; - --- ⑬ 查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。 -select tname,prof from teacher where prof in (select distinct prof from teacher); --- ⑭ 查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。 - -select score.cno,score.sno,score.degree from -score inner join course -on score.cno = course.cno -and score.cno = '3-105' -and score.degree > ( -select max(degree) from score where score.cno='3-245') -order by score.degree desc; --- ⑮ 查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree. -select score.cno,score.sno,score.degree from -score inner join course -on score.cno = course.cno -and score.cno = '3-105' -and score.degree > ( -select max(degree) from score where score.cno='3-245'); --- ⑯ 查询成绩比该课程平均成绩低的同学的成绩表。 -select degree --- ⑰ 查询所有任课教师的Tname和Depart. -select tname,depart from teacher --- 不会做 --- ⑱ 查询所有未讲课的教师的Tname和Depart. -select tname,depart from teacher --- 不会做 --- ⑲ 查询“男”教师及其所上的课程。 -select tname,cname from teacher left join course -on teacher.tno=course.tno -where tsex='男'; --- ⑳ 查询最高分同学的Sno、Cno和Degree列。 -select sno,cno,degree from score where degree=( -select max(degree) from score); --- 21 查询和“李军”同性别的所有同学的Sname. -select sname from student -where ssex=(select ssex from student where sname='李军'); --- 22 查询和“李军”同性别并同班的同学Sname. -select sname from student -where ssex=(select ssex from student where sname='李军') -and class=(select class from student where sname='李军'); --- 23 查询所有选修“计算机导论”课程的“男”同学的成绩表。 -select score.* from score left join course -on score.cno=course.cno -left join student -on score.sno=student.sno -where score.cno=(select course.cno from course where cname='计算机导论') - -and ssex='男'; - -- Gitee From dfaf32506cf40b8eac4550e0a66ef222e4c3a5a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=81=B5=E9=92=B0111?= <11785101+chen-lingyu-111@user.noreply.gitee.com> Date: Wed, 1 Mar 2023 08:38:07 +0000 Subject: [PATCH 3/3] =?UTF-8?q?=E9=99=88=E7=81=B5=E9=92=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 陈灵钰111 <11785101+chen-lingyu-111@user.noreply.gitee.com> --- ...75\346\225\260\344\275\234\344\270\232.md" | 261 ++++++++++++++++++ 1 file changed, 261 insertions(+) create mode 100644 "31 \351\231\210\347\201\265\351\222\260/20230227 \345\207\275\346\225\260\344\275\234\344\270\232.md" diff --git "a/31 \351\231\210\347\201\265\351\222\260/20230227 \345\207\275\346\225\260\344\275\234\344\270\232.md" "b/31 \351\231\210\347\201\265\351\222\260/20230227 \345\207\275\346\225\260\344\275\234\344\270\232.md" new file mode 100644 index 0000000..87be130 --- /dev/null +++ "b/31 \351\231\210\347\201\265\351\222\260/20230227 \345\207\275\346\225\260\344\275\234\344\270\232.md" @@ -0,0 +1,261 @@ +```mysql +create database zuoye2 charset utf8; +use zuoye2; + +create table student( + sno varchar(20)primary key, + sname varchar(20)not null, + ssex varchar(20)not null, + sbirthday datetime, + class varchar(20) +); + +create table course( + cno varchar(20)primary key, + cname varchar(20) not null, + tno varchar(20)not null, + foreign key (tno) references teacher(tno) +); + +create table score( + sno varchar(20)not null, + cno varchar(20)not null, + degree decimal(4,1), + foreign key (sno) references student(sno), + foreign key (cno) references course(cno) +); + +create table teacher( + tno varchar(20)primary key, + tname varchar(20)not null, + tsex varchar(20)not null, + tbirthday datetime, + prof varchar(20), + depart varchar(20)not null +); + +insert into student values(108,'曾华','男','1977-9-1','95033'); +insert into student values(105,'匡明','男','1975-10-2','95031'); +insert into student values(107,'王丽','女','1976-1-23','95033'); +insert into student values(101,'李军','男','1976-2-20','95033'); +insert into student values(109,'王芳','女','1975-2-10','95031'); +insert into student values(103,'陆君','男','1974-6-3','95031'); + +insert into course values('3-105','计算机导论','825'); +insert into course values('3-245','操作系统','804'); +insert into course values('6-166','数字电路','856'); +insert into course values('9-888','高等数学','831'); + +insert into score values('103','3-245','86'); +insert into score values('105','3-245','75'); +insert into score values('109','3-245','68'); +insert into score values('103','3-105','92'); +insert into score values('105','3-105','88'); +insert into score values('109','3-105','76'); +insert into score values('101','3-105','64'); +insert into score values('107','3-105','91'); +insert into score values('108','3-105','78'); +insert into score values('101','6-166','85'); +insert into score values('107','6-166','79'); +insert into score values('108','6-166','81'); + +insert into teacher values('804','李诚','男','1958-12-2','副教授','计算机系'); +insert into teacher values('856','张旭','男','1969-3-12','讲师','电子工程系'); +insert into teacher values('825','王萍','女','1972-5-5','助教','计算机系'); +insert into teacher values('831','刘冰','女','1977-8-14','助教','电子工程系'); + + +``` + +-- 1,查询所有学生,都学了哪些课程,要显示学生信息和课程信息/ + +```mysql +select student.sno,sname,ssex,sbirthday,class,cname +from student left join score on student.sno=score.sno +left join course on score.cno=course.cno; +``` + +-- 2,查询没有学生的教师的所有信息\ + +```mysql +select * from teacher; +select * from score; + +select * from course; +``` + +-- 4.查询 +-- ① 查询Score表中的最高分的学生学号和课程号。 + +```mysql +select sno,cno from score where degree=(select max(degree) from score); +``` + +-- ② 查询所有学生的Sname、Cno和Degree列。 + +```mysql +select sname,score.cno,degree from student inner join score on student.sno=score.sno; +``` + +-- ③ 查询所有学生的Sno、Cname和Degree列。 + +```mysql +select score.sno,cname,degree from score inner join course on score.cno=course.cno; +``` + +-- ④ 查询所有学生的Sname、Cname和Degree列。 + +```mysql +select sname,cname,degree from student inner join score on student.sno=score.sno inner join course on score.cno=course.cno; +``` + +-- ⑤ 查询“95033”班学生的平均分。 + +```mysql + +``` + +-- ⑥ 查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。 + +```mysql +select * from student +inner join score on student.sno=score.sno +where score.cno='3-105' and degree > +(select degree from score where score.sno=109 and score.cno='3-105' ); +``` + +-- ⑦ 查询score中选学多门课程的同学中分数为非最高分成绩的记录。 + +```mysql + +``` + +-- ⑧ 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。 + +```mysql +select * from score +where degree>( +select degree from score where score.sno=109 and score.cno='3-105'); +``` + +-- ⑨ 查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。 + +```mysql +select sno,sname,sbirthday from +student where sbirthday=(select sbirthday from student where sno=108); +``` + +-- 这个只有他自己生日一样下面是不输出他自己生日的代码 + +```mysql +select sno,sname,sbirthday from student +where sbirthday=(select sbirthday from student where sno=108) +and sno!=108; +``` + +-- ⑩ 查询“张旭“教师任课的学生成绩。 + +```mysql + +``` + +-- ⑪ 查询选修某课程的同学人数多于5人的教师姓名。 + +```mysql + +``` + +-- ⑫ 查询出“计算机系“教师所教课程的成绩表。 + +```mysql +select score.sno,score.cno,degree from score left join course +on score.cno=course.cno +left join teacher +on course.tno=teacher.tno +where depart='计算机系'; +``` + +-- ⑬ 查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。 + +```mysql +select tname,prof from teacher where prof in (select distinct prof from teacher); +``` + +-- ⑭ 查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。 + +```mysql + +``` + +-- ⑮ 查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree. + +```mysql +select score.cno,score.sno,score.degree from +score inner join course +on score.cno = course.cno +and score.cno = '3-105' +and score.degree > ( +select max(degree) from score where score.cno='3-245'); +``` + +-- ⑯ 查询成绩比该课程平均成绩低的同学的成绩表。 + +```mysql +select + + +``` + +-- ⑰ 查询所有任课教师的Tname和Depart. + +```mysql + +``` + +-- ⑱ 查询所有未讲课的教师的Tname和Depart. + +```mysql + +``` + +-- ⑲ 查询“男”教师及其所上的课程。 + +```mysql +select tname,cname from teacher left join course +on teacher.tno=course.tno +where tsex='男'; +``` + +-- ⑳ 查询最高分同学的Sno、Cno和Degree列。 + +```mysql +select sno,cno,degree from score where degree=( +select max(degree) from score); +``` + +-- 21 查询和“李军”同性别的所有同学的Sname. + +```mysql +select sname from student +where ssex=(select ssex from student where sname='李军'); +``` + +-- 22 查询和“李军”同性别并同班的同学Sname. + +```mysql +select sname from student +where ssex=(select ssex from student where sname='李军') +and class=(select class from student where sname='李军'); +``` + +-- 23 查询所有选修“计算机导论”课程的“男”同学的成绩表。 + +```mysql +select score.* from score left join course +on score.cno=course.cno +left join student +on score.sno=student.sno +where score.cno=(select course.cno from course where cname='计算机导论') +and ssex='男'; +``` + -- Gitee