diff --git "a/32 \346\235\250\346\257\205/20230309 \344\275\234\344\270\232.md" "b/32 \346\235\250\346\257\205/20230309 \344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..25856821874fe6094b416cfc417bd1a14f8f4c89 --- /dev/null +++ "b/32 \346\235\250\346\257\205/20230309 \344\275\234\344\270\232.md" @@ -0,0 +1,123 @@ +CREATE DATABASE class0309 charset utf8; +use class0309; + + +CREATE TABLE stuinfo( + stuno VARCHAR(5), + stuname VARCHAR(4), + stuage int, + stuaddress VARCHAR(4), + stuseat int, + stusex INT + ); + + 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(5), + writtenexam int, + labexam int + ); + + INSERT into stuexam VALUES + (1,'s2501',50,70), + (1,'s2502',60,65), + (1,'s2503',86,85), + (1,'s2504',40,80), + (1,'s2505',70,90), + (1,'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 stuno,writtenexam,labexam FROM stuexam; +-- +-- 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); +#SELECT examno,stuno,max(writtenexam),labexam FROM stuexam; +-- +-- 24.显示机试倒数第一名的学生的考试号,学号,笔试成绩和机试成绩 +SELECT examno,stuno,writtenexam,labexam FROM stuexam WHERE labexam = (SELECT min(labexam) FROM stuexam); +#SELECT examno,stuno,min(labexam),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; + +-- \ No newline at end of file