diff --git "a/24 \344\275\231\345\200\251/20230228 \345\205\263\350\201\224\346\237\245\350\257\242.md" "b/24 \344\275\231\345\200\251/20230228 \345\205\263\350\201\224\346\237\245\350\257\242.md" new file mode 100644 index 0000000000000000000000000000000000000000..df2a75e821cf785cec99217b65357afc1c940826 --- /dev/null +++ "b/24 \344\275\231\345\200\251/20230228 \345\205\263\350\201\224\346\237\245\350\257\242.md" @@ -0,0 +1,93 @@ +```sql +CREATE DATABASE mxdx charset utf8; +use mxdx; +CREATE TABLE student( +Sno varchar (20), +Sname varchar (20), +Ssex varchar (20), +Sbirthday datetime, +Class varchar (20) +); +CREATE TABLE Course( +Cno varchar (20), +Cname varchar (20), +Tno varchar (20) +); +CREATE TABLE Score( +Sno varchar (20), +Cno varchar (20), +Degree Decimal(4,1) +); +CREATE TABLE Teacher( +Tno varchar (20), +Tname varchar (20), +Tsex varchar (20), +Tbirthday datetime, +Prof varchar (20), +Depart varchar (20) +); +insert into student (Sno,Sname,Ssex,Sbirthday,class) values('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'); +insert into Course (Cno,Cname,Tno) values('3-105','计算机导论','825'),('3-245','操作系统','804'),('6-166','数字电路','856'),('9-888','高等数学','831'); +insert into Score(Sno,Cno,Degree) values('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'); +insert into Teacher(Tno,Tname,Tsex,Tbirthday,Prof,Depart) values('804','李诚','男','1958-12-2','副教授','计算机系'),('856','张旭','男','1969-3-12','讲师','电子工程系'),('825','王萍','女','1972-5-5','助教','计算机系'),('831','刘冰','女' ,'1977-8-14','助教','电子工程系'); +-- 三. 数据库中的数据: +-- 1,查询所有学生,都学了哪些课程,要显示学生信息和课程信息/ + +-- 2,查询没有学生的教师的所有信息 + +-- 四. 查询 +-- ① 查询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 Sno,Course.Cname,Degree FROM Score INNER JOIN Course on Score.Cno=Course.Cno; +-- ④ 查询所有学生的Sname、Cname和Degree列。 +select Student.sname,Course.Cname,Degree from score inner join student on score.Sno=Student.Sno INNER JOIN Course on Score.Cno=Course.Cno; +-- ⑤ 查询“95033”班学生的平均分。 +SELECT class,AVG(degree) FROM Score INNER JOIN Student on Score.sno=Student.sno WHERE class='95033'; +-- ⑥ 查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。 +不会 +-- ⑦ 查询score中选学多门课程的同学中分数为非最高分成绩的记录。 +不会 +-- ⑧ 查询成绩高于学号为“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 degree FROM score INNER JOIN course ON score.cno=course.cno INNER JOIN teacher on course.tno=teacher.tno WHERE score.cno=(select course.cno from course INNER JOIN teacher on course.tno=teacher.tno where tname='张旭') + +-- 11 查询选修某课程的同学人数多于5人的教师姓名。 + +-- 12 查询出“计算机系“教师所教课程的成绩表。 +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='计算机系'; +-- 13 查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。 +select tname,prof from teacher where prof in (select distinct prof from teacher); +-- 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列。 +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 查询所有选修“计算机导论”课程的“男”同学的成绩表。 +``` +