diff --git "a/40 \351\237\251\351\234\207\346\264\213/20230311 \346\237\245\350\257\242\344\275\234\344\270\232.md" "b/40 \351\237\251\351\234\207\346\264\213/20230311 \346\237\245\350\257\242\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..2fa458b1e5355fcd54f1a5952be38cdffd893888 --- /dev/null +++ "b/40 \351\237\251\351\234\207\346\264\213/20230311 \346\237\245\350\257\242\344\275\234\344\270\232.md" @@ -0,0 +1,83 @@ +```mysql + +CREATE DATABASE class10 charset utf8; +use class10; +CREATE TABLE stuinfo ( + stuNO VARCHAR(20) PRIMARY KEY, + stuName VARCHAR(20), + stuAge INT, + stuAddress VARCHAR(20), + stuSeat INT, + stuSex int +); +DESC stuinfo; +INSERT INTO stuinfo VALUES('s2501','张秋利',20,'美国硅谷',1,1),('s2502','李斯文',18,'湖北武汉',2,0),('s2503','马文才',22,'湖南长沙',3,1),('s2504','欧阳俊熊',21,'湖北武汉',4,0),('s2505','梅超风',20,'湖北武汉',5,1),('s2506','陈旋风',19,'美国硅谷',6,1), +('s2507','陈风',20,'美国硅谷',7,0); + + +CREATE TABLE stuExam( + examNo INT, + stuNo VARCHAR(20) PRIMARY KEY, + writtenExam INT, + labExam INT, + FOREIGN KEY (stuNo) REFERENCES stuinfo(stuNo) +); +INSERT INTO stuexam VALUES(1,'s2501',50,70),(2,'s2502',60,65),(3,'s2503',86,85),(4,'s2504',40,80),(5,'s2505',70,90),(6,'s2506',85,90); + + +-- 按图片所给的数据进行数据表的建立和数据插入,然后进行以下查询操作 + +-- 1.查询学生信息表(stuinfo)中所有列信息,给每列取上中文名称 + + select stuNO 学号, stuName 姓名, stuAge 年龄, stuAddress 住址, stuSeat 座位号, stuSex 性别 from stuinfo; +-- 2.查询学生信息表(stuinfo)中的姓名,年龄和地址三列的信息 +select stuName,stuAge,stuAddress from stuinfo; +-- 3.查询学生分数表(stuexam)中的学号,笔试和机试三列的信息,并为这三列取中文名字 +select stuinfo.stuNO 学号,writtenExam 笔试,labExam 机试 from stuinfo left join stuexam on stuinfo.stuNO = stuexam.stuNo; +-- 5.查询学生分数表(stuexam)中的学生的学号,笔试,机试以及总分这四列的信息 + select stuinfo.stuNO,writtenExam,labExam,(writtenExam+labExam) from stuinfo left join stuexam on stuinfo.stuNO = stuexam.stuNo; +-- 6.查询学生信息表(stuInfo)中学生来自哪几个地方 + select stuAddress from stuinfo group by stuAddress; +-- 7.查询学生信息表(stuInfo)中学生有哪几种年龄,并为该列取对应的中文列名 + select stuAge 学生年龄分类 from stuinfo group by stuAge; +-- 8.查询学生信息表(stuInfo)中前3行记录 +select * from stuinfo order by stuNO limit 3; +-- 9.查询学生信息表(stuInfo)中前4个学生的姓名和座位号 + select stuName,stuSeat from stuinfo order by stuNO limit 4; +-- 11.将地址是湖北武汉,年龄是20的学生的所有信息查询出来 +select * from stuinfo left join stuexam on stuinfo.stuNO = stuexam.stuNo where stuAddress = '湖北武汉' and stuAge = '20'; +-- 12.将机试成绩在60-80之间的信息查询出来,并按照机试成绩降序排列 +select * from stuinfo left join stuexam on stuinfo.stuNO = stuexam.stuNo where labExam between 60 and 80 order by labExam desc; +-- 13.查询来自湖北武汉或者湖南长沙的学生的所有信息 +select * from stuinfo left join stuexam on stuinfo.stuNO = stuexam.stuNo where stuAddress = '湖北武汉' or stuAddress = '湖南长沙'; +-- 14.查询出笔试成绩不在70-90之间的信息,并按照笔试成绩升序排列 +select * from stuinfo left join stuexam on stuinfo.stuNO = stuexam.stuNo where labExam not between 70 and 90 order by labExam ; +-- 15.查询年龄没有写的学生所有信息 +select * from stuinfo left join stuexam on stuinfo.stuNO = stuexam.stuNo where stuAge is null; +-- 16.查询年龄写了的学生所有信息 +select * from stuinfo left join stuexam on stuinfo.stuNO = stuexam.stuNo where stuAge is not null; +-- 17.查询姓张的学生信息 +select * from stuinfo left join stuexam on stuinfo.stuNO = stuexam.stuNo where stuName like '张%'; +-- 18.查询学生地址中有‘湖’字的信息 +select * from stuinfo left join stuexam on stuinfo.stuNO = stuexam.stuNo where stuAddress like '%湖%'; +-- 19.查询姓张但名为一个字的学生信息 +select * from stuinfo left join stuexam on stuinfo.stuNO = stuexam.stuNo where stuName = '张_'; +-- 20.查询姓名中第三个字为‘俊’的学生的信息,‘俊’后面有多少个字不限制 +select * from stuinfo left join stuexam on stuinfo.stuNO = stuexam.stuNo where stuName like '__俊%'; +-- 21.按学生的年龄降序显示所有学生信息 +select * from stuinfo left join stuexam on stuinfo.stuNO = stuexam.stuNo order by stuAge desc; +-- 22.按学生的年龄降序和座位号升序来显示所有学生的信息 +select * from stuinfo left join stuexam on stuinfo.stuNO = stuexam.stuNo order by stuAge desc, stuSeat; +-- 23显示笔试第一名的学生的考试号,学号,笔试成绩和机试成绩 + +select examNo,stuNo,writtenExam,labExam,writtenExam from stuexam where writtenExam = (select max(writtenExam) from stuexam); +-- 24.显示机试倒数第一名的学生的考试号,学号,笔试成绩和机试成绩 +select examNo,stuNo,writtenExam,labExam,writtenExam from stuexam where labExam = (select min(labExam) from stuexam); +-- 25.查询每个地方的学生的平均年龄 +select stuAddress,avg(stuAge) from stuinfo left join stuexam on stuinfo.stuNO = stuexam.stuNo group by stuAddress; +-- 26.查询男女生的分别的年龄总和 +select sum(stuAge),stuSex from stuinfo left join stuexam on stuinfo.stuNO = stuexam.stuNo group by stuSex; +-- 27.查询每个地方的男女生的平均年龄和年龄的总和 +select stuAddress,sum(stuAge),avg(stuAge) from stuinfo left join stuexam on stuinfo.stuNO = stuexam.stuNo group by stuAddress; +``` +