From dd7ea52fa8fac6054ab9bd2ce70358f2cad90a02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E9=9B=AA=E5=BD=B1=E7=9A=84=E4=BD=9C=E4=B8=9A?= <2156239329@qq.com> Date: Tue, 28 Feb 2023 23:02:57 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8E=8B=E9=9B=AA=E5=BD=B1=E7=9A=84=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...63\350\201\224\346\237\245\350\257\242.md" | 145 ++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 "39 \347\216\213\351\233\252\345\275\261/2023228 \345\244\232\350\241\250\345\205\263\350\201\224\346\237\245\350\257\242.md" diff --git "a/39 \347\216\213\351\233\252\345\275\261/2023228 \345\244\232\350\241\250\345\205\263\350\201\224\346\237\245\350\257\242.md" "b/39 \347\216\213\351\233\252\345\275\261/2023228 \345\244\232\350\241\250\345\205\263\350\201\224\346\237\245\350\257\242.md" new file mode 100644 index 0000000..78c0e8c --- /dev/null +++ "b/39 \347\216\213\351\233\252\345\275\261/2023228 \345\244\232\350\241\250\345\205\263\350\201\224\346\237\245\350\257\242.md" @@ -0,0 +1,145 @@ +## 笔记 + +```mysql +foreign key 外键 + +多表连接查询 +select*from 表1 inner/left/right join 表2 on 条件 inner/left/right join 表3 on 条件 + +order by 排序 +desc 降序 +asc 升序 +select*from 表 order by 字段 desc/asc + +``` + +## 作业 + +```mysql +create database class1; +use class1; +create table Student( + Sno varchar(20) primary key, + Sname varchar(20) not null, + Ssex varchar (20) not null, + Sbirthday datetime, + Class varchar(20) + ); +insert into Student 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','950031'); +desc Student; +select*from Student; + +create table Course( + Cno varchar(20) primary key, + Cname varchar(20)not null, + Tno varchar(20) not null + ); +insert into Course values + ('3-105','计算机导论','825'), + ('3-245','操作系统','804'), + ('6-166','数字电路','856'), + ('9-888','高等数学','831'); +desc Course; +select*from Course; + + create table Score( + Sno varchar(20), + Cno varchar(20), + Degree decimal(4,1), + primary key (Sno,Cno) +); +insert into Score 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); +desc Student; +select*from Student; + +create table Teacher( + Tno varchar(20) primary key, + Tname varchar(20) not null, + Tsex varchar(20) not null, + Tbirthday varchar(20) not null, + Prof varchar(20) not null, + Depart varchar(20) + ); +insert into Teacher values + ('804','李诚','男','1958-12-2','副教授','计算机系'), + ('856','张旭','男','1969-3-12','讲师','电子工程系'), + ('825','王萍','女','1972-5-5','助教','计算机系'), + ('831','刘冰','女','1977-8-14','助教','电子工程系'); +desc Student; +select*from Student; + +alter table Student add constraint student_sno foreign key(Sno) references Score(Sno) on update cascade on delete cascade; + +alter table Course add constraint teacher_tno foreign key(Tno) references Teacher(Tno) on update cascade on delete cascade; + +alter table Score add constraint course_cno foreign key(Cno) references Course(Cno) on update cascade on delete cascade; +#查询所有学生,都学了哪些课程,要显示学生信息和课程信息 +select *from Student inner join Score on Score.Sno=Student.Sno inner join Course on Course.Cno=Score.Cno; +#查询没有学生的教师的所有信息 +select Teacher.Tno,Tname,Tsex,Tbirthday,Prof,Depart from Course inner join Score on Course.Cno=Score.Cno right join Teacher on Teacher.Tno=Course.Tno where Degree is null; +#查询Score表中的最高分的学生学号和课程号。 +select max(Degree) from Score; +#查询所有学生的Sname、Cno和Degree列。 +select Sname,Cno,Degree from student inner join score on score.Sno=student.Sno; +#查询所有学生的Sno、Cname和Degree列。 +select Sno,Cname,Degree from Score inner join Course on Course.Cno=Score.Cno; +#查询所有学生的Sname、Cname和Degree列。 +select Sname,Cname,Degree from Score right join Course on Score.Cno=Course.Cno right join Student on Score.Sno=Student.Sno; +#查询“95033”班学生的平均分。 +select avg(Degree) from Student inner join Score on Score.Sno=Student.Sno where Class='95033'; +#查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。 +select Sname,Degree from Student inner join Score on Score.Sno=Student.Sno where Degree>76 ; +#查询score中选学多门课程的同学中分数为非最高分成绩的记录。 +select Cname,Degree from Course left join Score on Score.Cno=Course.Cno where Degree<(select max(Degree) from Score); +#查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。 +select Sno,Degree from Score where Degree>76; +#查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。 +select Sno,Sname,Sbirthday from Student where Sno='108'; +#查询“张旭“教师任课的学生成绩。 +select Tname,Degree,Cname from Course inner join Score on Course.Cno=Score.Cno right join Teacher on Teacher.Tno=Course.Tno where Tname='张旭'; +#查询选修某课程的同学人数多于5人的教师姓名。 +select Tname from Course inner join Score on Course.Cno=Score.Cno inner join Teacher on Teacher.Tno=Course.Tno group by Course.Cno having count(Score.Cno)>5; +#查询出“计算机系“教师所教课程的成绩表。 +select Tname,Degree from Course inner join Score on Course.Cno=Score.Cno right join Teacher on Teacher.Tno=Course.Tno where Tname='李诚' or Tname= +#查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。 +select Tname,Prof from Teacher ; +#查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。 +select Degree,Cno,Student.Sno from Student inner join Score on Score.Sno=Student.Sno where Cno='3-105' and Degree>72 order by Degree desc; +#查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree. +select Degree,Cno,Student.Sno from Student inner join Score on Score.Sno=Student.Sno where Cno='3-105' and Degree>72; +#查询成绩比该课程平均成绩低的同学的成绩表。 +select Sname,Degree from Student right join Score on Student.Sno=Score.Sno where Degree<(select avg(Degree) from Score); +#查询所有任课教师的Tname和Depart. +select Tname,Depart from Course inner join Score on Course.Cno=Score.Cno right join Teacher on Teacher.Tno=Course.Tno where Degree is not null; +#查询所有未讲课的教师的Tname和Depart. +select Tname,Depart from Course inner join Score on Course.Cno=Score.Cno right join Teacher on Teacher.Tno=Course.Tno where Degree is null; +#查询“男”教师及其所上的课程。 +select Tname,Tsex,Cname from Teacher inner join Course on Course.Tno=Course.Tno where Tsex='男'; +#查询最高分同学的Sno、Cno和Degree列。 +select Sname,Degree,Cno,Student.Sno from Student inner join Score on Student.Sno=Score.Sno where Degree=(select max(Degree) from Score); +#查询和“李军”同性别的所有同学的Sname. +select Sname,Ssex from Student where Ssex='男'; +#查询和“李军”同性别并同班的同学Sname. +select Sname,Class from Student where Ssex='男' and class='95033'; +#查询所有选修“计算机导论”课程的“男”同学的成绩表。 +select Cname,Ssex from Course inner join Score on Course.Cno=Score.Cno inner join Student on Student.Sno=Score.Sno where Cname='计算机导论' and Ssex='男'; +``` + -- Gitee