diff --git "a/53 \345\276\220\345\205\210\351\221\253/2023.03.11 \345\244\247\344\275\234\344\270\232.md" "b/53 \345\276\220\345\205\210\351\221\253/2023.03.11 \345\244\247\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..8b9f6510ce08b29a196ba4ca8365a6d709e55604 --- /dev/null +++ "b/53 \345\276\220\345\205\210\351\221\253/2023.03.11 \345\244\247\344\275\234\344\270\232.md" @@ -0,0 +1,93 @@ +```sql +CREATE database lianxi charset utf8; +use lianxi ; +create table stuinfo( +stuno varchar(20) PRIMARY key, +stuname varchar(20), +stusex enum('男','女'), +stuage int, +stuaddress varchar(20), +stuseat int ); + +INSERT into stuinfo VALUES +('s2501','张秋利','男',20,'美国硅谷',1), +('s2502','李斯文','女',18,'湖北武汉',2), +('s2503','马文才','男',18,'湖南长沙',3), +('s2504','欧阳俊雄','女',21,'湖北武汉',4), +('s2505','梅超风','男',20,'湖北武汉',5), +('s2506','陈旋风','男',19,'美国硅谷',6); + +CREATE table stuexam( +examno int PRIMARY key, +stuno varchar(20), +writtenexam varchar(20), +labexam int, +FOREIGN key stuexam(stuno) REFERENCES stuinfo(stuno)); +INSERT into stuexam VALUES +(1,'s2501','50',70), +(2,'s2502','60',65), +(3,'s2503','86',70), +(4,'s2504','40',80), +(5,'s2505','70',85), +(6,'s2506','85',90); + + +-- 按图片所给的数据进行数据表的建立和数据插入,然后进行以下查询操作 + +-- 1.查询学生信息表(stuinfo)中所有列信息,给每列取上中文名称 +select stuno'学号',stuname '学生姓名', stusex'性别',stuage '年龄',stuaddress'地址',stuseat '座位'from stuinfo; +SELECT * from stuinfo; +-- 2.查询学生信息表(stuinfo)中的姓名,年龄和地址三列的信息 +select stuname,stuage,stuaddress from stuinfo; +-- 3.查询学生分数表(stuexam)中的学号,笔试和机试三列的信息,并为这三列取中文名字 + select +-- 5.查询学生分数表(stuexam)中的学生的学号,笔试,机试以及总分这四列的信息 +select stuno,writtenexam,labexam,(writtenexam+labexam) from stuexam; +-- 6.查询学生信息表(stuInfo)中学生来自哪几个地方 +select stuaddress from stuinfo GROUP BY stuaddress; +-- 7.查询学生信息表(stuInfo)中学生有哪几种年龄,并为该列取对应的中文列名 + select stuage '年龄' from stuinfo GROUP BY stuage; +-- 8.查询学生信息表(stuInfo)中前3行记录 +SELECT * from stuinfo limit 3; +-- 9.查询学生信息表(stuInfo)中前4个学生的姓名和座位号 +SELECT stuname,stuseat from stuinfo limit 0,4; +-- 11.将地址是湖北武汉,年龄是20的学生的所有信息查询出来 +select * from stuinfo where stuaddress='湖北武汉' and stuage= 20; +-- 12.将机试成绩在60-80之间的信息查询出来,并按照机试成绩降序排列 +select * from stuexam where labexam between 60 and 80 ORDER BY labexam desc; +-- 13.查询来自湖北武汉或者湖南长沙的学生的所有信息 + select * from stuinfo where stuaddress ='湖北武汉' or stuaddress='湖南长沙'; +-- 14.查询出笔试成绩不在70-90之间的信息,并按照笔试成绩升序排列 +select * from stuexam where writtenexam not between 70 and 90 ORDER BY writtenexam asc; +-- 15.查询年龄没有写的学生所有信息 +select * from stuinfo where stuname is null ; +-- 16.查询年龄写了的学生所有信息 + select * from stuinfo where stuname 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 stuage desc,stuseat asc; +-- 23显示笔试第一名的学生的考试号,学号,笔试成绩和机试成绩 + select examno ,stuno,writtenexam,labexam from stuexam where writtenexam =(select max(writtenexam) from stuexam); +-- 24.显示机试倒数第一名的学生的考试号,学号,笔试成绩和机试成绩 +SELECT examno , stuno,writtenexam,labexam from stuexam where labexam=(select min(labexam) from stuexam); +-- 25.查询每个地方的学生的平均年龄 + select avg(stuage),stuaddress from stuinfo GROUP BY stuaddress; +-- 26.查询男女生的分别的年龄总和 +select stusex, sum(stuage) from stuinfo GROUP BY stusex; +-- 27.查询每个地方的男女生的平均年龄和年龄的总和 +SELECT stusex,sum(stuage),stuaddress,avg(stuage) from stuinfo GROUP BY stusex; +UNION +select stusex,stuaddress, avg(stuage),sum(stuage) from stuinfo GROUP BY stuaddress; + +``` + +