面试常见查询语句(能掌握以下几个例子就基本可以了)

简介: 表结构: student(s#,sname,sage,ssex)学生表 course(c#,cname,T#)课程表 sc(s#,c#,score)成绩表 Teacher(T#,tname)教师表1.查询001课程比002课程成绩高的所有学生的学号: select sc1.s# from sc sc1 join sc sc2 on sc1.s# = sc2.s

表结构:
student(s#,sname,sage,ssex)学生表
course(c#,cname,T#)课程表
sc(s#,c#,score)成绩表
Teacher(T#,tname)教师表

1.查询001课程比002课程成绩高的所有学生的学号:
select sc1.s#
from sc sc1 join sc sc2 on sc1.s# = sc2.s#
where sc1.c# = ‘001’ and sc2.c# = ‘002’ and sc1.score > sc2.score

2.查询平均成绩大于60分的同学的学号和平均成绩:
select s#, avg(score) from sc group by s# having avg(score)>60;

3.查询所有同学的学号,姓名,选课数,总成绩:
select student.s#,student.name ,count(sc.c#) ,sum(sc.score)
from student left join sc on student.s# = sc.s# 注:内连接要计算笛卡尔积,这里使用左外连接效率更高

4.查询姓李的老师个数:
select count(T#) from Teacher where tname like “李%”
注:模糊查询, %代表任意字符,_代表任一单个字符,[……]代表是括号中字符中的单个字符, [^……]代表不是括号中字符中的单个字符

5.查询没有学过叶萍老师课的同学学号,姓名:
select studet.s# student.sname
from student
where s# not in (select distinct(sc.s#) from sc, course, teacher where sc.c# = course.c# and teacher.t# = course.t# and teacher.tname = “叶萍”);
三表联合 + 子查询

6.查询学过001和002课程的同学的姓名学号:
select student.s3 student .sname
from student join course on student.s# = course.s#
where(course.c# = ‘001’ union course.c# = ‘002’);

7.查询学过叶萍老师课的同学的学号,姓名:
select student.s# student.sname
from student
where s# in(select distinct(sc.s#) from sc course teacher where sc.c# = course.c# and teacher.t# = course.t# and teacher.tnmae = “叶萍”) 注:distinct为去重函数

8.查询002成绩比001低的同学的学号,姓名:
select student.s# student .name
from student where student.s# in(select sc1.s# from sc sc1 join sc sc2 on sc1.s# = sc2.s# where s1.c# = 001 and s2.c# = 002 and sc1.score> sc2.score);

9.查询所有课程成绩小于60分的同学的学号,姓名:
select student.s# student.sname from student join sc on student.s# = sc.s#
where sc.score > 60;

10.查询没有学全 所有课的同学的学号和姓名:
select student.s# student.sname from student,sc
where student.s# = sc.s# group by student.s#,student.sname having count(c#) < (select count(c#)from course);

11.查询至少有一门课程与学号1001的同学所学相同的同学的学号和姓名:
select student.s# ,student.sname from student join sc
where student.s# = sc.s# and c# in select c# from sc where s# = ‘1001’

12.查询至少学过学号为001同学所有一门课的其他同学的学号和姓名:
select distinct student.s#,student,sname from
SC join student on SC.s# = student.s#
where c# in(select c# from sc where s#=’001’);

目录
相关文章
|
7月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
160 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
7月前
|
SQL 存储 数据库
面试题19: 如何优化SQL查询?
面试题19: 如何优化SQL查询?
113 1
面试题19: 如何优化SQL查询?
|
7月前
|
NoSQL Java Redis
面试01-Redis 如何从海量数据中查询出某一个 Key
面试01-Redis 如何从海量数据中查询出某一个 Key
132 0
|
存储 缓存 监控
【面试题精讲】MySQL-查询缓存
【面试题精讲】MySQL-查询缓存
|
7月前
|
数据采集 JSON 数据挖掘
2024年利用Python查询IP地址_怎么查python文件中ip地址,2024年最新15个经典面试问题及答案英语
2024年利用Python查询IP地址_怎么查python文件中ip地址,2024年最新15个经典面试问题及答案英语
|
5月前
|
JSON NoSQL MongoDB
面试题MySQL问题之想使用Neo4j查询可变数量的关系节点如何解决
面试题MySQL问题之想使用Neo4j查询可变数量的关系节点如何解决
52 1
|
Java 关系型数据库 MySQL
|
7月前
|
监控 数据库 索引
面试题21:如何优化查询命令?
面试题21:如何优化查询命令?
|
7月前
|
SQL
面试必备杀技:SQL查询专项训练(二)
面试必备杀技:SQL查询专项训练
|
7月前
|
SQL
面试必备杀技:SQL查询专项训练(一)
面试必备杀技:SQL查询专项训练