diff --git "a/29 \346\262\210\346\231\223\347\220\263/20230315 \351\242\23037\344\275\234\344\270\232.md" "b/29 \346\262\210\346\231\223\347\220\263/20230315 \351\242\23037\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..a8cc28db12ab2e55af393acea3d5755bd632e95e --- /dev/null +++ "b/29 \346\262\210\346\231\223\347\220\263/20230315 \351\242\23037\344\275\234\344\270\232.md" @@ -0,0 +1,169 @@ +```sql +CREATE DATABASE game charset utf8; +use game; +-- 1.比赛日程安排表 +-- +-- | 字段名称 | 数据类型 | 说明及要求 | +-- | -------- | ------------- | ---------------------------- | +-- | dates | data | 日期 | +-- | course | varchar(20) | 比赛队伍 | +-- | team | varchar(20) | 获胜队伍,关联比赛选手信息表 | +-- +CREATE table date( +dates date, +course VARCHAR(20), +team VARCHAR(20)); +-- 2.比赛选手信息表 +-- +-- | 字段名称 | 数据 类型 | 说明及要求 | +-- | ----------- | ------------- | ---------- | +-- | id | int | 编号,自增 | +-- | name | varchar(10) | 姓名,非空 | +-- | team | varchar (10) | 队伍,主键 | +-- | competition | varchar(20) | 赛区 | +-- | honor | text | 荣誉 | +-- +CREATE table player( +id int PRIMARY key auto_increment, +name VARCHAR(10) not null, +team VARCHAR(10), +competition VARCHAR(20), +honor text); +-- 3.队伍积分状况表 +-- +-- | 字段名称 | 数据类型 | 说明及要求 | +-- | -------- | ------------- | ------------------------------ | +-- | team | varchar(10) | 队伍,非空,关联比赛选手信息表 | +-- | integral | int | 积分 | +-- +CREATE table credits( +team VARCHAR(10)not null, +integral int); +-- ### 2.对应的表数据 +-- +-- 1.比赛日程安排表 +-- +-- | dates | course | team | +-- | ---------- | -------- | ---- | +-- | 2023.12.10 | RNGvsG2 | RNG | +-- | 2023.12.20 | LGDvsG2 | LGD | +-- | 2023.12.13 | RNGvsSKT | SKT | +-- | 2023.12.15 | SKTvsG2 | G2 | +-- | 2023.12.21 | LGDvsAG | AG | +-- +INSERT into date VALUES +('2023.12.10','RNGvsG2','RNG'), +('2023.12.20','LGDvsG2','LGD'), +('2023.12.13','RNGvsSKT','SKT'), +('2023.12.15','SKTvsG2','G2'), +('2023.12.21','LGDvsAG','AG'); +-- 2.比赛选手信息表 +-- +-- | ID | NAME | TEAM | COMPETITION | HONOR | +-- | ---- | ------ | ---- | ----------- | ---------- | +-- | 1 | 乌兹 | skt | lck | 十冠 | +-- | 2 | 大飞 | rng | lpl | 三冠 | +-- | 3 | 诺言 | ag | kpl | kplfmvp | +-- | 4 | 梦泪 | ag | kpl | 单人偷家 | +-- | 5 | pyl | lgd | lpl | 十六强 | +-- | 6 | zitai | skt | lcs | 三十二强 | +-- | 7 | jamkos | g2 | lec | 四强 | +-- | 8 | perkz | g2 | lec | 亚军 | +-- | 9 | imp | lgd | lpl | s6第一老鼠 | +-- | 10 | bang | rng | | 推推棒 | +-- +INSERT into player VALUES +(1,'乌兹','skt','lck','十冠'), +(2,'大飞','rng','lpl','三冠'), +(3,'诺言','ag','kpl','kplfmvp'), +(4,'梦泪','ag','kpl','单人偷家'), +(5,'pyl','lgd','lpl','十六强'), +(6,'zitai','skt','lcs','三十二强'), +(7,'jamkos','g2','lec','四强'), +(8,'perkz','g2','lec','亚军'), +(9,'imp','lgd','lpl','s6第一老鼠'), +(10,'bang','rng',null,'推推棒'); + +-- 3.队伍积分状况表 +-- +-- | team | integral | +-- | ---- | -------- | +-- | rng | 9 | +-- | ag | 5 | +-- | skt | 12 | +-- | g2 | 7 | +-- | lgd | 10 | +insert into credits VALUES +('rng',9), +('ag',5), +('skt',12), +('g2',7), +('lgd',10); +-- +-- ### 3.题目 +-- +-- 所有题目要求使用SQL语句完成 +-- +-- 1.查询选手所在队伍的积分状况 +-- +SELECT team,integral from credits group by team; +-- 2.查询选手所在队伍的积分状况 按积分进行降序排列 +-- +SELECT team,integral from credits group by team ORDER BY integral desc; +-- 3.查询每个赛区的选手各有多少 +-- +SELECT competition,count(*) from player GROUP BY competition; +-- 4.乌兹选手的最高荣誉有误请改回亚军 +-- +UPDATE player set honor='亚军' where name='乌兹'; +SELECT * from player; +-- 5.2023.12:21的比赛推迟一个月 +-- +UPDATE date set dates='2023.1:21' where dates='2023.12:21'; +SELECT * from date; +-- 6.查询积分在10到6队伍成员的最高荣誉 +-- +SELECT honor from player INNER JOIN credits on player.team=credits.team where integral BETWEEN 6 AND 10; +-- 7.查询赛区人数最多的赛区的选手的队伍积分 +-- + +SELECT b.integral,max(a) FROM (SELECT name,COUNT(competition) a,credits.integral FROM player INNER JOIN credits on player.team=credits.team GROUP BY competition) b; +-- SELECT name,COUNT(competition) a,credits.integral FROM player INNER JOIN credits on player.team=credits.team GROUP BY competition + +-- SELECT max(a) FROM (SELECT name,COUNT(competition) a FROM player GROUP BY competition) b +-- SELECT name,COUNT(competition) a FROM player GROUP BY competition +-- SELECT integral from credits INNER JOIN player on credits.team=player.team where competition=(SELECT from player); 晕了 +-- 8.查询12月10号获胜队伍选手信息及积分状况 +-- +SELECT *,integral from player INNER JOIN credits on player.team=credits.team INNER JOIN date on credits.team=date.team where dates='2023.12.10'; +-- 9.将'乌兹'的所在队伍赛区改为lpl +-- +UPDATE player set competition='lpl' where name='乌兹'; +SELECT * from player; +-- 10.查询没有队伍的选手的名字并在赛区改成lpl +SELECT name from player where competition is null; +UPDATE player set competition='lpl' where competition is null; +-- 11.查询积分倒一队伍的选手信息及比赛获胜日期 +-- +SELECT *,dates from player INNER JOIN date on player.team=date.team INNER JOIN credits on date.team=credits.team where integral=(SELECT min(integral) from credits); +-- 12.添加一场 2024年1月1日 RNGvsSKT 的比赛日程 +-- +INSERT into date VALUES('2024.1.1','RNGvsSKT',null); +-- 13.添加一名选手 theshy 所属队伍rng +-- +insert into player VALUES(null,'theshy','rng',null,null); +SELECT *from player; +-- 14.imp选手退役 请删除该选手所以信息 +-- +DELETE from player where name='imp'; +-- 15.查询前五位选手的最高荣誉 +-- +SELECT honor from player limit 0,5; +-- 16.将比赛获胜队伍的积分加3分 +-- +update credits set integral = integral + 3 ; + +-- 17.查询选手队伍的积分及队伍赢比赛在日期 +SELECT integral,dates from credits INNER JOIN date on credits.team=date.team; +``` +