From aa5bee652070d6bd73052edb6041c2993f50b306 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=B0=91=E6=B5=B7?= <3087930763@qq.com> Date: Sat, 18 Mar 2023 13:23:52 +0800 Subject: [PATCH 1/2] =?UTF-8?q?20230315=20MySQL=E7=9A=84=E7=BB=83=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20230315 MySQL\347\273\203\344\271\240.md" | 149 ++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 "21 \345\210\230\345\260\221\346\265\267/20230315 MySQL\347\273\203\344\271\240.md" diff --git "a/21 \345\210\230\345\260\221\346\265\267/20230315 MySQL\347\273\203\344\271\240.md" "b/21 \345\210\230\345\260\221\346\265\267/20230315 MySQL\347\273\203\344\271\240.md" new file mode 100644 index 0000000..2d49b05 --- /dev/null +++ "b/21 \345\210\230\345\260\221\346\265\267/20230315 MySQL\347\273\203\344\271\240.md" @@ -0,0 +1,149 @@ +向着星辰与深渊 + +角色信息(roleinfo) + +| 序号(id) | 角色名(name) | 主要定位(location) | 武器类型(wqtype) | E技能介绍eintroduce | Q技能介绍qintroduce | 角色所属地Address | +| ---------- | -------------- | -------------------- | ------------------ | ------------------- | ------------------- | ----------------- | +| | | | | | | | + + + +| 1 | 钟离 | 辅助 | 长枪 | 开盾减抗 | 输出控制 | 璃月 | +| ---- | -------- | ---- | ------ | ------------------------------ | ------------------------------ | ---- | +| 2 | 胡桃 | 主c | 长枪 | 为武器火附魔提升攻击力 | 造成大范围火伤 | 璃月 | +| 3 | 神里凌华 | 主c | 单手剑 | 造成小范围冰伤并产生能量球 | 生成持续7秒冰风暴 | 稻妻 | +| 4 | 雷神 | 辅助 | 长枪 | 造成持续30秒的跟随伤害 | 兄口拔刀斩断一切并提供全队充能 | 稻妻 | +| 5 | 夜兰 | 副c | 弓 | 长达3秒奔跑产生能量球 | 造成持续15秒的跟随伤害并增伤 | 璃月 | +| 6 | 温迪 | 辅助 | 弓 | 起飞并产生能量球 | 发射风龙卷聚怪并造成伤害 | 蒙德 | +| 7 | 纳西妲 | 副c | 法器 | 扫描后有条件提供30秒的跟随伤害 | 去她家做客提升e技能伤害 | 枫丹 | +| 8 | 心海 | 辅助 | 法器 | 放帮帮进行回血 | 重置帮帮忙,提升平a伤害 | 稻妻 | + +3.4深渊(syexam) + +| 序号id | 角色name | 持有率Holdratio | 使用率Useratio | 涨跌幅ZDratio | | | +| ------ | -------- | --------------- | -------------- | ------------- | ---- | ---- | +| | | | | | | | + + + +| 1 | 钟离 | 87.8% | 81.1% | +6.1% | | | +| ---- | -------- | ----- | ----- | ----- | ---- | ---- | +| 2 | 胡桃 | 53.8% | 38.4% | +9.9% | | | +| 3 | 神里凌华 | 56.6% | 18.2% | -5.8% | | | +| 4 | 雷神 | 85.7% | 70.3% | -3.9% | | | +| 5 | 夜兰 | 79.9% | 69.8% | +6.9% | | | +| 6 | 温迪 | 55.6% | 8.1% | -1.5% | | | +| 7 | 纳西妲 | 81.3% | 85.6% | -2.7% | | | +| 8 | 心海 | 45.4% | 56.5% | -6,5% | | | + +1. 在‘’角色信息‘’表格中添加一个新的角色序号‘’9‘’ 角色名‘丘丘人’主要定位‘前台主c’,武器类型‘武器大师‘, e技能介绍‘射弓箭’,q技能介绍‘火把冲锋’,角色所属地‘坎瑞亚’ + +2 将角色纳西达的角色所属地改为‘须弥 + + + +3 查询所有角色信息表(roleinfo)中所有列信息,给每列取上中文名称 + +4 查询使用长枪为武器的角色 + +5 查询主要定位为辅助的角色 + +6 查询持有率最高的角色 + +7 查询3.4深渊使用率排行前三的角色 + +8 找出角色持有率大于50%的所有角色中使用率不到40%的角色信息 + +9 查询3.4使用率在50%及以上的角色 + +10 查询3.4使用率在50%及以上的角色和角色主要定位 + +11 查询辅助角色在3.4深渊的使用率 + +12 查询上一期钟离使用率 + +13 按角色的持有率降序和使用率升序来显示所有(syexam) + +14 查询不同所属地的所有角色平均持有率 + +15 查询使用率比夜兰高的角色e技能介绍和q技能介绍 + +16 查询3.4涨幅和跌幅最高的角色 + +```mysql + +CREATE DATABASE yuanshen CHARSET utf8; +USE yuanshen +CREATE TABLE roleinfo ( +id int PRIMARY KEY COMMENT '序号', +name VARCHAR(20) COMMENT '角色名', +location VARCHAR(20)COMMENT'主要定位', +wqtype VARCHAR(20)COMMENT'武器类型', +eintroduce VARCHAR(20)COMMENT'E技能介绍', +qintroduce VARCHAR(20)COMMENT'Q技能介绍', +address VARCHAR(20)COMMENT'角色所属地' +); +CREATE TABLE syexam ( +id int COMMENT'序号', +name VARCHAR(20) COMMENT'角色', +Hoderatio VARCHAR(20)COMMENT'持有率', +Useratio VARCHAR(20) COMMENT'使用率', +ZDratio VARCHAR(20) COMMENT'涨跌率' +); +INSERT INTO roleinfo VALUES +(1,'钟离','辅助','长枪','开盾减抗','输出控制','璃月'), +(2,'胡桃','主c','长枪','为武器火附魔提升攻击力','造成大范围火伤','璃月'), +(3,'神里凌华','主c','单手剑','造成小范围冰伤并产生能量球','生成持续7秒冰风暴','稻妻'), +(4,'雷神','辅助','长枪','造成持续30秒的跟随伤害','兄口拔刀斩断一切并提供全队充能','稻妻'), +(5,'夜兰','副c','弓','长达3秒奔跑产生能量球','造成持续15秒的跟随伤害并增伤','璃月'), +(6,'温迪','辅助','弓','起飞并产生能量球','发射风龙卷聚怪并造成伤害','蒙德'), +(7,'纳西妲','副c','法器','扫描后有条件提供30秒的跟随伤害','去她家做客提升e技能伤害','枫丹'), +(8,'心海','辅助','法器','放帮帮进行回血','重置帮帮忙提升平a伤害','稻妻'); +INSERT INTO syexam VALUES +(1,'钟离','87.8%','81.1%','+6.1%'), +(2,'胡桃','53.8%','38.4%','+9.9%'), +(3,'神里凌华','56.6%','18.2%','-5.8%'), +(4,'雷神','85.7%','70.3%','-3.9%'), +(5,'夜兰','79.9%','69.8%','+6.9%'), +(6,'温迪','55.6%','8.1% ','-1.5%'), +(7,'纳西妲','81.3%','85.6%','-2.7%'), +(8,'心海','45.4%','56.5%','-6,5%'); + + +-- 1 在‘’角色信息‘’表格中添加一个新的角色序号‘’9‘’ 角色名‘丘丘人’主要定位‘前台主c’,武器类型‘武器大师‘, e技能介绍‘射弓箭’,q技能介绍‘火把冲锋’,角色所属地‘坎瑞亚’ +INSERT INTO roleinfo VALUES(9,'丘丘人','前台主c','武器大師','射弓箭','火把冲锋','凯瑞亚'); +-- 2 将角色纳西达的角色所属地改为‘须弥 +UPDATE roleinfo SET address = '须弥' WHERE name = '纳西妲'; +-- 3 查询所有角色信息表(roleinfo)中所有列信息,给每列取上中文名称 +SELECT * FROM roleinfo; +-- 4 查询使用长枪为武器的角色 +SELECT * FROM roleinfo WHERE wqtype = '长枪' +-- 5 查询主要定位为辅助的角色 +SELECT * FROM roleinfo WHERE location = '辅助' +-- 6 查询持有率最高的角色 +SELECT * FROM syexam; +SELECT `name`,MAX(Hoderatio) FROM syexam; +-- 7 查询3.4深渊使用率排行前三的角色 +SELECT *FROM syexam ORDER BY useratio DESC LIMIT 3; +-- 8 找出角色持有率大于50%的所有角色中使用率不到40%的角色信息 +SELECT * FROM(SELECT *FROM syexam WHERE hoderatio>'50%')a WHERE useratio <'40%'; +-- 9 查询3.4使用率在50%及以上的角色 +SELECT * FROM syexam WHERE useratio>='50%' +-- 10 查询3.4使用率在50%及以上的角色和角色主要定位 +SELECT syexam.`name`,roleinfo.location FROM syexam LEFT JOIN roleinfo ON syexam.id=roleinfo.id WHERE useratio>='50%' +-- 11 查询辅助角色在3.4深渊的使用率 +SELECT s.name,Useratio FROM syexam s LEFT JOIN roleinfo r ON s.id = r.id WHERE location = '辅助'; +-- 12 查询上一期钟离使用率 +SELECT NAME,useratio FROM syexam; +-- 13 按角色的持有率降序和使用率升序来显示所有(syexam) +SELECT * FROM syexam ORDER BY hoderatio DESC,useratio; +-- 14 查询不同所属地的所有角色平均持有率 +SELECT roleinfo.`name`,AVG(hoderatio) FROM syexam LEFT JOIN roleinfo ON syexam.id = roleinfo.id GROUP BY roleinfo.address; +-- 15 查询使用率比夜兰高的角色e技能介绍和q技能介绍 +SELECT * FROM syexam LEFT JOIN roleinfo ON syexam.id = roleinfo.id WHERE useratio>(SELECT useratio FROM syexam WHERE NAME = '夜兰'); +-- 16 查询3.4涨幅和跌幅最高的角色 +SELECT * FROM syexam ORDER BY zdratio DESC; +SELECT MAX(zdratio),`name` a,MIN(zdratio),`name` b FROM syexam GROUP BY; + +``` + -- Gitee From 150054935129647aadbf5cbd1f86418a3eb77709 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=B0=91=E6=B5=B7?= <3087930763@qq.com> Date: Sun, 19 Mar 2023 23:53:02 +0800 Subject: [PATCH 2/2] =?UTF-8?q?2023318=20MySQL=E6=A8=A1=E6=8B=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20230318 MySQL\346\250\241\346\213\237.md" | 278 ++++++++++++++++++ 1 file changed, 278 insertions(+) create mode 100644 "21 \345\210\230\345\260\221\346\265\267/20230318 MySQL\346\250\241\346\213\237.md" diff --git "a/21 \345\210\230\345\260\221\346\265\267/20230318 MySQL\346\250\241\346\213\237.md" "b/21 \345\210\230\345\260\221\346\265\267/20230318 MySQL\346\250\241\346\213\237.md" new file mode 100644 index 0000000..1e70008 --- /dev/null +++ "b/21 \345\210\230\345\260\221\346\265\267/20230318 MySQL\346\250\241\346\213\237.md" @@ -0,0 +1,278 @@ +某某学校为了让学生学习mysql,安排你建立一个用于统计成绩和课程的数据库,数据库要求如下: + +数据库库名: mtyk + +创建四个表: + +教师表 (J_TEACHER) + +Tno 主键 自增 备注为教师编号 + +Tname 不可重复 备注为教师姓名 + +学生表(J_STUDENT) + +Sno 主键 自增 备注为学生编号 + +Sname 不可重复 备注为学生姓名 + +Sage 备注为学生年龄 + +Ssex 男or女 备注为性别 + +课程表(J_COURSE) + +Cno 主键 自增 备注为课程编号 + +Cname 不可重复 备注为课程名称 + +Tno 外键 备注为授课教师编号 关联J_TEACHER表主键 + +成绩表(J_SCORE) + +Sno 外键 备注为学生编号 关联J_STUDENT表主键 + +Cno 外键 备注为课程编号 关联J_COURSE 表主键 + +Score 备注为成绩 + + + +![img](file:///C:\Users\刘少海\AppData\Local\Temp\ksohtml15780\wps1.jpg) + +1、 修改刘香的美团盈开课程成绩为100分 + +2、 将学生表中的sage段放在ssex段后面 + +3、 教师表添加一个用于统计状态的列 名字为now 默认值为有课 + +4、 将没有上课的老师的now列值设置为无课 + +5、 修改课程表中的企业管理为比遛旺 + +6、 查询课程1的成绩比课程2的成绩 高 的所有学生的学号。 + +7、 查询平均成绩大于60分的同学的学号和平均成绩。 + +8、 查询所有同学的学号、姓名、选课数、总成绩。 + +9、 查询姓“李”的学生的个数。 + +10、 查询没学过“叶平”老师课的同学的学号、姓名。 + +11、 查询同时学过课程1和课程2的同学的学号、姓名。 + +12、 查询学过“叶平”老师所教所有课程的所有同学的学号、姓名。 + +13、 查询 课程编号1的成绩 比 课程编号2的成绩 高的所有同学的学号、姓名。 + +14、 查询所有课程成绩小于60分的同学的学号、姓名。 + +15、 查询所有课程成绩大于60分的同学的学号、姓名。 + +16、 查询没有学全所有课的同学的学号、姓名 + +17、 查询至少有一门课程 与 学号为1的同学所学课程 相同的同学的学号和姓名 + +18、 查询和2号同学学习的课程完全相同的其他同学学号和姓名。 + +19、 查询各科成绩最高分和最低分。 + +20、 查询每门课程被选修的学生数。 + +21、 查询出只选修了一门课程的全部学生的学号和姓名。 + +22、 查询同名同性学生名单,并统计同名人数。 + +23、 查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩。 + +24、 查询不同课程成绩相同的学生的学号、课程号、学生成绩。 + +25、 查询每门课程成绩最好的前两名的学生ID + +26、 检索至少选修了5门课程的学生学号。 + +27、 查询没学过“叶平”老师讲授的任一门课程的学生姓名。 + +28、 查询两门以上不及格课程的同学的学号及其平均成绩。 + +29、 查询最受欢迎的老师(选修学生最多的老师)。 + +30、 修改课程表名为给乱给要酒要 + +```MySQL +CREATE DATABASE mtyk CHARSET utf8; +USE mtyk; +CREATE TABLE j_teacher ( + tno INT PRIMARY KEY auto_increment COMMENT'教师编号', + tname VARCHAR(10) UNIQUE KEY COMMENT '教师名字' +); +CREATE TABLE j_student ( + sno INT PRIMARY KEY auto_increment COMMENT '学生编号', + sname VARCHAR(10) UNIQUE KEY COMMENT'学生姓名', + sage datetime COMMENT '学生年龄', + ssex enum('男','女') COMMENT '性别' +); +CREATE TABLE j_course( + cno INT PRIMARY KEY auto_increment COMMENT'课程编号', + cname VARCHAR(10) UNIQUE KEY COMMENT'课程名称', + tno INT COMMENT'教师编号', + FOREIGN KEY (tno) REFERENCES j_teacher(tno) +); +CREATE TABLE j_score( + sno INT COMMENT'学生编号', + cno INT COMMENT'课程编号', + score INT COMMENT'成绩', + FOREIGN KEY (sno)REFERENCES j_student(sno), + FOREIGN KEY (cno)REFERENCES j_course(cno) +); +INSERT INTO j_teacher VALUES +(1,'张老师'), +(2,'王老师'), +(3,'李老师'), +(4,'赵老师'), +(5,'刘老师'), +(6,'向老师'), +(7,'李文静'), +(8,'叶平'); +DESC j_student; +INSERT INTO j_student VALUES +(1,'张三','1980-1-23 00:00:00','男'), +(2,'李四','1982-12-12 00:00:00','男'), +(3,'张飒','1981-9-9 00:00:00','男'), +(4,'莉莉','1983-3-23 00:00:00','女'), +(5,'王弼','1982-6-21 00:00:00','男'), +(6,'王丽','1984-10-10 00:00:00','女'), +(7,'刘香','1980-12-22 00:00:00','女'); +INSERT INTO j_course VALUES +(1,'企业管理',3), +(2,'马克思',1), +(3,'美团盈开',2), +(4,'数据库',5), +(5,'物理',8); +INSERT INTO j_score VALUES +(1,1,'80'), +(1,2,'86'), +(1,3,'83'), +(1,4,'89'), +(2,1,'50'), +(2,2,'36'), +(2,3,'43'), +(2,4,'59'), +(3,1,'50'), +(3,2,'96'), +(3,3,'73'), +(3,4,'69'), +(4,1,'90'), +(4,2,'36'), +(4,3,'88'), +(4,4,'99'), +(5,1,'90'), +(5,2,'96'), +(5,3,'98'), +(5,4,'99'), +(6,1,'70'), +(6,2,'66'), +(6,3,'58'), +(6,4,'79'), +(7,1,'80'), +(7,2,'76'), +(7,3,'68'), +(7,4,'59'), +(7,5,'89'); +-- 1、 修改刘香的美团盈开课程成绩为100分 +UPDATE j_score SET score = 100 WHERE sno = (SELECT sno FROM j_student WHERE sname = '刘香')AND cno =(SELECT cno FROM j_course WHERE cname = '美团盈开') +-- 2、 将学生表中的sage段放在ssex段后面 +ALTER TABLE j_student MODIFY sage datetime AFTER ssex +-- 3、 教师表添加一个用于统计状态的列 名字为now 默认值为有课 +ALTER TABLE j_teacher ADD now enum('有课','无课') DEFAULT'有课' +-- 4、 将没有上课的老师的now列值设置为无课?? +UPDATE j_teacher SET now = '无课' +WHERE tno in (SELECT te.tno FROM j_teacher te LEFT JOIN j_course co ON te.tno = co.tno) +-- 5、 修改课程表中的企业管理为比遛旺 +SELECT * FROM j_course; +UPDATE j_course set cname = '比遛旺' WHERE cno = 1 +-- 6、 查询课程1的成绩比课程2的成绩 高 的所有学生的学号。??? +SELECT j_score.sno FROM j_score AS cj LEFT JOIN j_score ON cj.sno =j_score.sno +WHERE cj.cno = 1 AND j_score.cno =2 AND cj.score>j_score.score; +-- 7、 查询平均成绩大于60分的同学的学号和平均成绩。 +SELECT AVG(SELECT SUM(score) FROM j_score) a FROM j_score; +SELECT sno,AVG(score) FROM j_score GROUP BY sno HAVING AVG(score)>60; +-- 8、 查询所有同学的学号、姓名、选课数、总成绩。 +SELECT st.sno,st.sname,COUNT(sc.cno),SUM(score) FROM j_student st LEFT JOIN j_score sc ON st.sno = sc.sno GROUP BY st.sno +-- 9、 查询姓“李”的学生的个数。 +SELECT COUNT(*) FROM j_student WHERE sname LIKE '李%' +-- 10、 查询没学过“叶平”老师课的同学的学号、姓名。 +SELECT * FROM j_student +WHERE sno!= +(SELECT st.sno FROM j_student st LEFT JOIN j_score sc ON st.sno =sc.sno +WHERE cno =(SELECT cno FROM j_teacher te LEFT JOIN j_course co ON te.tno =co.tno WHERE tname = '叶平')) +-- 11、 查询同时学过课程1和课程2的同学的学号、姓名。 +SELECT * FROM j_student st LEFT JOIN j_score sc ON st.sno = sc.sno +WHERE cno BETWEEN 1 and 2 GROUP BY st.sno +-- 12、 查询学过“叶平”老师所教所有课程的所有同学的学号、姓名。 +SELECT st.sno,st.sname FROM j_student st +LEFT JOIN j_score sc on st.sno = sc.sno +WHERE cno=(SELECT cno FROM j_teacher te LEFT JOIN j_course co ON te.tno = co.tno WHERE tname = '叶平') +-- 13、 查询 课程编号1的成绩 比 课程编号2的成绩 高的所有同学的学号、姓名。 +SELECT cj.sno,j_student.sname FROM j_score cj +LEFT JOIN j_score ON cj.sno = j_score.sno +LEFT JOIN j_student ON j_score.sno = j_student.sno +WHERE cj.cno = 1 and j_score.cno = 2 AND cj.score>j_score.score +-- 14、 查询所有课程成绩小于60分的同学的学号、姓名。 +SELECT he/sl,sno FROM (SELECT SUM(score) he,COUNT(cno) sl,sno FROM j_score sc GROUP BY sno) cj WHERE he/sl<60; +-- 15、 查询所有课程成绩大于60分的同学的学号、姓名。 +SELECT st.sno,st.sname FROM j_student st LEFT JOIN j_score sc ON st.sno = sc.sno WHERE score>60 GROUP BY st.sno +-- 16、 查询没有学全所有课的同学的学号、姓名? +SELECT COUNT(cno) sl +FROM j_student st +LEFT JOIN j_score sc ON st.sno = sc.sno +WHERE sl<(SELECT COUNT(cno)FROM j_course) +GROUP BY st.sno +-- 17、 查询至少有一门课程 与 学号为1的同学所学课程 相同的同学的学号和姓名 +SELECT * FROM j_student st LEFT JOIN j_score sc on st.sno = sc.sno WHERE sc.cno in(SELECT cno FROM j_score WHERE sno =1 )GROUP BY st.sno +-- 18、 查询和2号同学学习的课程完全相同的其他同学学号和姓名。? +SELECT st.sno,st.sname FROM j_score sc RIGHT JOIN j_student st ON sc.sno=st.sno WHERE cno = ALL(SELECT cno j_score WHERE sc.sno =2)GROUP BY st.sno +-- 19、 查询各科成绩最高分和最低分。 +SELECT MAX(score),MIN(score) FROM j_course co +LEFT JOIN j_score sc ON co.cno = sc.cno +GROUP BY co.cno +-- 20、 查询每门课程被选修的学生数。 +SELECT co.cname,COUNT(sc.cno) FROM j_score sc +RIGHT JOIN j_student st on sc.sno =st.sno +RIGHT JOIN j_course co on sc.cno = co.cno +GROUP BY sc.cno +-- 21、 查询出只选修了一门课程的全部学生的学号和姓名。? +SELECT * FROM j_student st +LEFT JOIN j_score sc on st.sno = sc.sno +LEFT JOIN j_course co on sc.cno = co.cno +sc.cno = () +-- 22、 查询同名同性学生名单,并统计同名人数。? +SELECT * FROM j_student st +LEFT JOIN j_student ON st.sno = j_student.sno +WHERE st.sname LIKE'%%' = j_student.sname LIKE'张三' +-- 23、 查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩。 +SELECT st.sname,MAX(score) FROM j_student st +LEFT JOIN j_score sc on st.sno = sc.sno +WHERE sc.cno = (SELECT cno FROM j_teacher te LEFT JOIN j_course co ON te.tno = co.tno WHERE te.tname= '叶平') +-- 24、 查询不同课程成绩相同的学生的学号、课程号、学生成绩。? +SELECT * FROM j_score a +LEFT JOIN j_score on a.sno = j_score.sno +WHERE a.score = j_score.score GROUP BY a.cno +-- 25、 查询每门课程成绩最好的前两名的学生ID +-- 26、 检索至少选修了5门课程的学生学号。 +SELECT sno,COUNT(cno) FROM j_score GROUP BY sno HAVING COUNT(cno)>=5 +-- 27、 查询没学过“叶平”老师讲授的任一门课程的学生姓名。 +-- 28、 查询两门以上不及格课程的同学的学号及其平均成绩。 +-- 29、 查询最受欢迎的老师(选修学生最多的老师)。 +SELECT s.sno,COUNT(s.cno) cs FROM j_score s +LEFT JOIN j_course c on s.cno = c.cno +LEFT JOIN j_teacher t ON c.tno = t.tno +GROUP BY s.sno ORDER BY cs DESC LIMIT 1 +-- 30、 修改课程表名为给乱给要酒要 + + + +-- +``` + -- Gitee