diff --git "a/08 \350\256\270\350\215\243\346\263\225/20230309 \346\237\245\350\257\242.md" "b/08 \350\256\270\350\215\243\346\263\225/20230309 \346\237\245\350\257\242.md" new file mode 100644 index 0000000000000000000000000000000000000000..bc02a71621315cec17fb4e51c6e804f39dc2dd9a --- /dev/null +++ "b/08 \350\256\270\350\215\243\346\263\225/20230309 \346\237\245\350\257\242.md" @@ -0,0 +1,215 @@ +# 作业 + +```mysql +CREATE DATABASE hitorie charset utf8; +USE hitorie; +CREATE TABLE stuinfo ( + stuNO CHAR ( 5 ), + stuName VARCHAR ( 5 ), + stuAge INT ( 2 ), + stuAddress CHAR ( 4 ), + stuSeat INT ( 1 ), + stuSex CHAR ( 1 ) +); +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 );-- 学生必修成绩 +CREATE TABLE stuExam ( examNO INT ( 1 ), stuNO CHAR ( 5 ), writtenExam INT ( 3 ), -- +labExam INT ( 3 ) ); +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 + LIMIT 0, + 3;-- 9.查询学生信息表(stuInfo)中前4个学生的姓名和座位号 +SELECT + stuName, + stuSeat +FROM + stuinfo + LIMIT 0, + 4;-- 11.将地址是 湖北武汉,年龄是20的学生的所有信息查询出来 +SELECT + * +FROM + stuinfo +WHERE + stuAge = 20 + AND stuAddress = '湖北武汉';-- 12.将机试成绩在60-80之间的信息查询出来,并按照机试成绩降序排列 +SELECT + * +FROM + stuexam +WHERE + labExam BETWEEN 60 + AND 80 +ORDER BY + labExam DESC;-- 13.查询来自 湖北武汉 或者 湖南长沙 的学生的所有信息 +SELECT + * +FROM + stuinfo +WHERE + stuAddress IN ( '湖北武汉', '湖南长沙' );-- 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 IN ( SELECT max( writtenExam ) FROM stuexam );-- +-- 24.显示机试倒数第一名的学生的考试号,学号,笔试成绩和机试成绩 +SELECT + * +FROM + stuexam +WHERE + labExam IN ( SELECT min( labExam ) FROM stuexam );-- +-- 25.查询每个地方的学生的平均年龄 +SELECT + stuAddress, + avg( stuAge ) +FROM + stuinfo +GROUP BY + stuAddress;-- +-- 26.查询男女生的分别的年龄总和 +SELECT + stuSex, + sum( stuAge ) +FROM + stuinfo +GROUP BY + stuSex;-- +-- 27.查询每个地方的男女生的平均年龄和年龄的总和 +SELECT + stuAddress, + stuSex, + avg( stuAge ), + sum( stuAge ) +FROM + stuinfo +GROUP BY + stuAddress, + stuSex; +``` +