diff --git "a/14 \351\231\210\346\226\260\346\210\220/20230309 \344\275\234\344\270\2322.md" "b/14 \351\231\210\346\226\260\346\210\220/20230309 \344\275\234\344\270\2322.md" new file mode 100644 index 0000000000000000000000000000000000000000..7d41b260e663f04da746d2d8ff1b9c554b228772 --- /dev/null +++ "b/14 \351\231\210\346\226\260\346\210\220/20230309 \344\275\234\344\270\2322.md" @@ -0,0 +1,139 @@ +```sql +create database class1 charset utf8; +use class1; +create table stuinfo( + stuNO char(5) primary key, + stuName varchar(4), + stuAge int, + stuAddress varchar(4), + stuSeat int unique not null auto_increment , + STUSEX enum("1","0") +); + +create table stuExam( +examNO int PRIMARY key, +stuNO char(5), +writtenExam int , +labExam int, +foreign key(stuNO) references stuinfo(stuNO) +); + + + +insert into stuinfo values +('s2501','张秋利',20,'美国硅谷',1,"1"), +('s2502','李斯文',18,'湖北武汉',2,"0"), +('s2503','马文才',18,'湖南长沙',3,"1"), +('s2504','欧阳俊熊',21,'湖北武汉',4,"0"), +('s2505','梅超风',20,'湖北武汉',5,"1"), +('s2506','陈旋风',19,'美国硅谷',6,"1"), +("s2507","陈风",20,'美国硅谷',7,"0"); + +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 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 where stuseat<=3; + +-- 9.查询学生信息表(stuInfo)中前4个学生的姓名和座位号 +-- +select stuname, stuseat from stuinfo where stuseat<=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 ; +-- 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 stuage desc,stuseat; + +-- 23显示笔试第一名的学生的考试号,学号,笔试成绩和机试成绩 +-- +select * from stuexam where writtenexam= +(select max(writtenexam) from stuexam); + +-- 24.显示机试倒数第一名的学生的考试号,学号,笔试成绩和机试成绩 +-- + +select * from stuexam where labexam= +(select min(labexam) from stuexam); +-- 25.查询每个地方的学生的平均年龄 +-- + +select stuaddress,avg(stuage) from stuinfo group by stuaddress; +-- 26.查询男女生的分别的年龄总和 +-- +select stusex,count(stusex) from stuinfo group by stusex; + +-- 27.查询每个地方的男女生的平均年龄和年龄的总和 +-- +select stuaddress,stusex,avg(stuage),sum(stusex) from stuinfo group by stuaddress,stusex; + + + +``` +