diff --git "a/17 \350\221\243\345\272\206\345\274\272/20230309\344\275\234\344\270\2321.md" "b/17 \350\221\243\345\272\206\345\274\272/20230309\344\275\234\344\270\2321.md" new file mode 100644 index 0000000000000000000000000000000000000000..80f5ab343c12c1e8e8e26a81aa5bffb343789cf5 --- /dev/null +++ "b/17 \350\221\243\345\272\206\345\274\272/20230309\344\275\234\344\270\2321.md" @@ -0,0 +1,98 @@ +```sql +CREATE DATABASE ku CHARSET utf8; +use ku; +CREATE TABLE stuinfo( +stuNO VARCHAR(20) PRIMARY KEY, +stuName VARCHAR(20), +stuAge int(11), +stuAddress VARCHAR(20), +stuSeat INT(11), +stuSex INT(11) +); + +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(11), +stuNO VARCHAR(20), +writtenExam int(11), +labExam int(11), +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 * from stuinfo; +2.查询学生信息表(stuinfo)中的姓名,年龄和地址三列的信息 +SELECT stuName,stuAge,stuAddress from stuinfo; +3.查询学生分数表(stuexam)中的学号,笔试和机试三列的信息,并为这三列取中文名字 +SELECT * from stuexam; +5.查询学生分数表(stuexam)中的学生的学号,笔试,机试以及总分这四列的信息 +SELECT * from stuexam; +6.查询学生信息表(stuInfo)中学生来自哪几个地方 +SELECT DISTINCT stuAddress from stuinfo; +SELECT stuAddress from stuinfo GROUP BY stuAddress; +7.查询学生信息表(stuInfo)中学生有哪几种年龄,并为该列取对应的中文列名 +SELECT DISTINCT stuAge from stuinfo; +8.查询学生信息表(stuInfo)中前3行记录 +SELECT stuNO,stuName,stuAge from stuinfo; +9.查询学生信息表(stuInfo)中前4个学生的姓名和座位号 +SELECT stuNO,stuName,stuAge,stuAddress from stuinfo; +11.将地址是湖北武汉,年龄是20的学生的所有信息查询出来 +SELECT * from stuinfo WHERE stuAddress='湖北武汉' AND stuAge=20; +12.将机试成绩在60-80之间的信息查询出来,并按照机试成绩降序排列 +SELECT labExam from stuexam WHERE labExam between 60 and 80 ORDER BY labExam DESC; +13.查询来自湖北武汉或者湖南长沙的学生的所有信息 +SELECT * from stuinfo INNER JOIN stuExam on stuinfo.stuNO=stuExam.stuNO WHERE stuAddress='湖北武汉' or stuAddress='湖南长沙'; +14.查询出笔试成绩不在70-90之间的信息,并按照笔试成绩升序排列 +SELECT * from stuExam WHERE writtenexam<70 xor writtenexam>90 ORDER BY writtenexam asc; +15.查询年龄没有写的学生所有信息 +SELECT * from stuInfo WHERE stuAge is null; +16.查询年龄写了的学生所有信息 +SELECT * from stuInfo WHERE stuAge is not null; +17.查询姓张的学生信息 +SELECT * from stuInfo where stuName like '张%'; +18.查询学生地址中有‘湖’字的信息 +SELECT * from stuInfo where stuaddress like '%湖%'; +19.查询姓张但名为一个字的学生信息 +SELECT * from stuInfo where stuName like '张_'; +20.查询姓名中第三个字为‘俊’的学生的信息,‘俊’后面有多少个字不限制 +SELECT * from stuInfo where stuName like '__俊%'; +21.按学生的年龄降序显示所有学生信息 +SELECT * from stuInfo ORDER BY stuAge desc; +22.按学生的年龄降序和座位号升序来显示所有学生的信息 +select * from stuinfo order by stuAddress desc,stuSeat asc; +23显示笔试第一名的学生的考试号,学号,笔试成绩和机试成绩 +select examNO,writtenExam,labExam from stuexam WHERE writtenexam=(select max(writtenExam) from stuexam); +; +select examNO,writtenExam,labExam +from stuexam where writtenExam=(select max(writtenExam)from stuexam); + +24.显示机试倒数第一名的学生的考试号,学号,笔试成绩和机试成绩 +SELECT MIN(labExam) from stuinfo INNER JOIN stuExam ON stuExam.stuNO=stuinfo.stuNO; +25.查询每个地方的学生的平均年龄 +SELECT stuaddress,avg(stuage) from stuinfo GROUP BY stuaddress; +26.查询男女生的分别的年龄总和 +select sum(stuAge)from stuinfo group by stuSex; + +SELECT SUM(stuAge) from stuinfo GROUP BY stusex; +27.查询每个地方的男女生的平均年龄和年龄的总和 +select stuAddress,stuSex,avg(stuAge),sum(stuAge) +from stuinfo group by stuAddress,stuSex +```