【SQL笔记】sql 练习题

1.用一条SQL 语句 查询出每门课都大于80 分的学生姓名

name kecheng fenshu
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90

 select distinct name from table where name not in (select distinct name from table where fenshu<=80)
select name from table group by name having min(fenshu)>80
2. 学生表 如下:

自动编号 学号 姓名 课程编号 课程名称 分数
1 2005001 张三 0001 数学 69
2 2005002 李四 0001 数学 89
3 2005001 张三 0001 数学 69
删除除了自动编号不同, 其他都相同的学生冗余信息

delete tablename where 自动编号 not in(select min( 自动编号) from tablename group by学号, 姓名, 课程编号, 课程名称, 分数)
3.一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球对,现在四个球对进行比赛,用一条sql 语句显示所有可能的比赛组合.

你先按你自己的想法做一下,看结果有我的这个简单吗?

SELECT * FROM group_table g1 JOIN group_table g2 WHERE g1.name < g2.name
4 使用sql语句改变下表结构

原始数据结构
+------+-------+-------+
| name | stage | score |
+------+-------+-------+
| A | 基 | 1 |
| B | 基 | 2 |
| C | 基 | 3 |
| A | 爬 | 1 |
| B | 爬 | 3 |
| C | 爬 | 2 |
| A | SQL | 1 |
| B | SQL | 1 |
| C | SQL | 1 |
+------+-------+-------+

目标数据结构
+------+------+------+------+
| name | 基 | 爬 | SQL |
+------+------+------+------+
| A | 1 | 1 | 1 |
| B | 2 | 3 | 1 |
| C | 3 | 2 | 1 |
+------+------+------+------+

SELECT name, 
    MAX(CASE WHEN stage='基' THEN score ELSE null END) AS '基',
    MAX(CASE WHEN stage='爬' THEN score ELSE null END) AS '爬',
    MAX(CASE WHEN stage='SQL' THEN score ELSE null END) AS 'SQL'
 FROM scores GROUP BY name
5.建表

创建学生表 Student
字段包括 学号,姓名, 性别,出生年月日, 班级

create table Student(
  sno varchar(20) primary key,
  sname varchar(20) not null,
  ssex varchar(10) not null,
  sbirthday datetime,
  calss varchar(20)
)

创建教师表 teacher
字段包括 教师编号,教师姓名, 教师性别,出生年月日, 职称, 所在部门

create table teacher(
  tno varchar(20) primary key,
  tname varchar(20) not null,
  tsex varchar(10) not null,
  tbirthday datetime,
  prof varchar(20) not null,
  depart varchar(20) not null
)

创建课程表 Course
字段包括 课程编号,课程名称, 教师编号

create table Course(
  cno varchar(20) primary key,
  cname varchar(20) not null,
  tno varchar(10) not null,
  foreign key(tno) references teacher(tno)
)

创建成绩表 Score
字段包括 学号,课程号,成绩

create table Score(
  sno varchar(20) primary key,
  cno varchar(10) not null,
  degree decimal,
  foreign key(sno) references Student(sno),
  foreign key(cno) references Course(cno)
);

练习题:
1 查询score表中的最高分的学生号码,课程号码

select sno,cno
from Score 
where degree = (
select max(degree) from Score
);

2 查询score表中至少有两名学生选修的并以3为开头的课程的平均成绩

select cno, avg(degree) 
from Score 
where con like '3%' 
group by con 
having count(1) >= 2;

3 查询分数大于70 小于90 的学生号码

// ' between 70 and 90 介于之间
select sno
from Score 
where degree between 70 and 90 / where degree>70 and degree<90;

4 查询所有学生的 sname, cno 和 degree 列数据

select sname, cno, degree
from Student, Score
on Student.sno = Score.sno;

5 查询 “95031” 班学生每门课平均分

select cno, avg(degree) 
from Score 
where sno in(
  select sno
  from Student 
  where class="95031"
) group by cno;

6 查询和学号 108, 101 学生同年出生的学生信息

// year() : 获取年份函数
select *
from Student 
where year(sbirthday) in (
  select year(sbirthday)
  from Student 
  where sno in(108, 101)
);

7 查询“张旭” 老师任课的学生成绩

select * 
from Score where cno (
  select cno 
  from Course where tno = (
    select tno
    from teacher 
    where tname = "张旭"
  ) 
)

8 查询选修某课程的同学人数大于5的教师姓名

select tname
from teacher where tno in(
select tno
from Course where cno in (
  select cno 
  from Score group by cno having count(1) > 5
)
)

9 查询编号为 ‘3-105’ 课程 且成绩至少高于选修编号‘3-245’ 同学的 Cno,Sno, Degree 再以Degree降序排序

// any:至少一个 desc:降序
select Cno, Sno, Degree 
from Score 
where cno='3-105' and degree > any(
  select degree from Score where cno = '3-245'
) order by degree desc;

10 查询所有老师和学生的 name sex birthday

//求并集
select tname tsex tbirthday from teacher
union
select sname ssex sbirthday from Student

11


image.png
select sno, cno, grade 
from Score, grade 
where degree between low and upp
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容