diff --git "a/03 \346\236\227\345\261\225/20230310 \347\273\203\344\271\240\344\270\200.md" "b/03 \346\236\227\345\261\225/20230310 \347\273\203\344\271\240\344\270\200.md" new file mode 100644 index 0000000000000000000000000000000000000000..284188951e702bdcfb3621a4c7fd5ed3fff4905c --- /dev/null +++ "b/03 \346\236\227\345\261\225/20230310 \347\273\203\344\271\240\344\270\200.md" @@ -0,0 +1,235 @@ +```sql +create database caogao charset utf8; +use caogao +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; + + SELECT DISTINCT + stuAddress +FROM + stuInfo; + +-- 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; +-- 22.按学生的年龄降序和座位号升序来显示所有学生的信息 +SELECT + * +FROM + stuinfo +ORDER BY + stuAge + AND stuSeat DESC; +-- 23显示笔试第一名的学生的考试号,学号,笔试成绩和机试成绩 +SELECT * FROM stuexam WHERE writtenExam =( SELECT MAX( writtenExam ) FROM stuexam ); +-- 24.显示机试倒数第一名的学生的考试号,学号,笔试成绩和机试成绩 +SELECT * FROM stuexam ORDER BY labExam LIMIT 0, 1; SELECT * FROM stuexam WHERE labExam =( 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 + stuSex, + stuAddress, + AVG( stuAge ) +FROM + stuinfo +GROUP BY + stuAddress,stuSex; + + +``` +