新建学生-课程数据库的三个表:

学生表:Student(Sno,Sname,Ssex,Sage,Sdept) Sno为主码;

课程表:Course(Cno,Cname,Cpno,Credeit) Cno为主码;

学生选修表:SC(Sno,Cno,Grade) Sno,Cno,为主码;

Student

学号

Sno姓名

Sname性别

Ssex年龄

Sage所在系

Sdept

95001李勇男20CS

95002刘晨女19IS

95003王敏女18MA

95004张立男19IS

课程号

Sno课程名

Cname先行课

Cpno学分

Credit

1数据库54

2数学2

3信息系统14

4操作系统63

5数据结构74

6数据处理2

7Pascal语言64

Course:

SC:

学号

Sno课程号

Cno成绩

Grade

95001192

95001285

95001388

95002290

95002380

一:查询表中的列和行

1:查询全体学生的学与姓名

sele sno,sname from student

2:查询全体学生的姓名、学号、所在系。

sele sno,sname,sdept from student

3:查询全体学生的详细记录

sele * from student

4:查询全体学生的姓名及出生年份

sele sno,sage from student

5:查询全体学生的姓名,出生年份及所在系,要用小写字母表示系名

6:查询选修了课程的学生学号

sele sno,cno from sc

7:查询选修了课程的学生姓名

sele distinct sname from student,sc where student.sno=sc.sno

二:条件查询:

常用的查询条件

查询条件谓词

比较=,<,>,>=,<=,!=,<>,!>,!<;

not+上述比较运算符

确定范围Between and,Not between And,

确定集合IN,not IN

字符匹配Like,Not Like

空值IsNull,ISNOTNULL

多重条件AND,OR

1:查询计算机系全体学生的姓名

sele sname from student where sdept=”CS”

2:查询所有年龄在20岁以下的学生姓名及其年龄

sele sname,sage from student where sage<20

3:查询考试成绩有不及格的学生的学号

sele student.sno from student,sc where student.sno=sc.sno and grade<60

4:查询年龄在20到23间的学生的姓名,系别及年龄

sele sname,sdept,sage from student where sage between 20 and 23

5: 查询年龄不在20到23间的学生的姓名,系别及年龄

sele sname,sdept,sage from student where sage not between 20 and 23

6:查询信息系(IS),数学系(MA)和计算机系(CS)学生的姓名和性别

sele sname,ssex from student where sdept in("IS","MA","CS")

7:查询不是信息系(IS),数学系(MA)和计算机系(CS)学生的姓名和性别

sele sname,ssex from student where sdept not in("IS","MA","CS")

8:查询学号为”95001”的学生详细情况

sele * from student where sno=95001

9:查询所有姓刘的学生的姓名,学号和性别(where name like ‘刘%’)

sele sname,sno,ssex from student where sname like '刘%'

10:查询姓”欧阳”且命名为三个汉字的学生的姓名

sele sname from student where sname like '欧阳_'

11:查询名字中第2个字为”阳”字的学生姓名和学号(where sname like ‘_ _阳%’)

sele sname,sno from student where sname like '_ _阳%'

12:查询所有不姓刘的学生姓名

sele sname from student where sname not like '刘%'

13:查询DB_Design课程的课程号和学分(where cname like ‘Db_Design’Escape’’)

sele cno,gredit from course where cname like ‘Db_Design’Escape’’

14:查询以”DB_”开头,且倒数第3个字符为i的课程的详细情况(where cname like ‘DB_%i__’escape’’)

‘DB_%i__’escape’’) sele cno,gredit from course where cname like ‘Db_%i__’escape’’

15:查询缺少成绩的学生的学号和相应的课程号

sele student.sno,cno from student,sc where grade is null

16:查询所有成绩的学生学号和课程号(where grade is not null)

sele student.sno,cno from student,sc where grade is not null

17:查询计算机系年龄在20岁以下的学生姓名
sele sname from student where sdept=”CS” and sage<20
18:查询选修了3号课程的学生的学号及其成绩,分数降序排列
sele student.sno,grade from student,sc where student.sno=sc.sno and sc.cno=3 order by grade desc

19:查询全体学生情况,结果按所在系的号升序排列,同一系中的学生按年龄降序
sele * from student order by sdept,sage desc

三:使用集函数
count,sum,avg,max,min
1:查询学生的总人数
2:查询选修了课程的学生人数(select count(distinct sno))
3:计算1号课程的学生平均成绩
4:查询选修1号课程的学生最高分数
5:求各个课程号及相应的选课人数( selsect cno,count (sno); from sc; group by cno)
6:查询选修了3门以上的课程的学生学号
select sno
from sc
group by sno
having count(*)>3
四:连接查询:
<1>等值与非等值的连接查询
在连接查询中用来连接两个有的条件称为连接条件或连接谓词,,当连接运算符号为”=”时,称为等值连接,使用如,=,<,>,<=,>=,!=连接时称非等值连接
1:查询每个学生及其选修课程的情况
select student.*,sc.*
from student,sc
where student.sno=sc.sno
<2>自身连接
连接操作在同一个表中进行连接查询
2:查询每一门课的间接先修课(即先修课的先修课)
select first .cno,second.cno
from course first ,course second
where first.cno=second.cno
五:复合条件连接
1:查询选修2号课程且成绩在90分以上的所有学生。
Select student,sname
form student, sc
Where student.sno=sc.sno And
Sc.cno=’2’ and sc.grade>90
六:嵌套查询
1:带有谓词in的子查询
<1>查询与“刘晨”在同一个系学习的学生
select sno,sname,sdept
from student
where sdept in(
select sdept
from student
where sname=”刘晨”)
或:select s1.sname,s1.sdept
from student s1,student s2
where s1.dept=s2.dept and s2.name=”刘晨”
<2>查询选修了课程名为“信息系统”的学生学号和姓名
select sno,sname
from student
where sno in
( select sno
from sc
where cno in
(select cno
from course
where cname-“信息系统”)
或:select sno,sname
from student,sc,course
where student.sno=sc.sno and
sc.cno=course.cno and
course.cname=’信息系统’)
2:带有Any 或all谓词的子查询
<1>查询其他系中比信息系中某一学生年龄小的学生姓名和年龄
select sname, sage
from student
where sage <any(select sage
from student
where sdept=’is’
and sdept<>’is’
或用集函数:select sname, sage
from student
where sage<
(select max(sage)
from student
where sdept=’is’)
and sdept<>’is’
<2> 查询其他系中比信息系所有学生年龄都小的学生姓名及年龄
select sname, sage
from student
where sage<all
(select sage
from student
where sdept=’is’)
and sdept<>’is’
3 带有Exitst谓词的子查询
<1>查询所有选修了1号课程的学生姓名
select sname
from student
where exists
(select *
from sc
where sno=student.sno and cno=’1’)
<2>查询没有选修1号课程的学生姓名
select sname
form student
where not exists
(select *
form sc
where sno=stuedent.sno and cno=’1’)
<2>查询选修所有全部课程的学生姓名
select sname
from student
where not exists
(select *
from course
where not exists
(select *
from sc
where sno=student.sno
and cno=course.cno)
<3>查询到少选修了学生95002选修的全部课程的学生号码
select distinct sno
from sc scx
where not exists
( select *
from sc scy
where scy.sno=’95002’ and
not exists
( select *
from sc scz
where scz.sno=scx.sno and
scz.cno=scy.cno)

SQL查询语句复习题相关推荐

  1. SQL查询语句 select 详解

    查询select: 1.单表查询 2.多表查询 3.嵌套查询分类 1)单表查询 2)多表查询 A.连接查询 B.子查询 ①一般子查询 ②相关子查询*************************** ...

  2. MySQL番外篇:一条SQL查询语句是如何执行的?

    在面试的过程中,有的面试官会给出一条简单的SQL查询语句,让简单说一下执行的过程. SELECT * FROM emp where age=30; 以下问MySQL的基本架构图,从中可以看出SQL语句 ...

  3. SQL查询语句总是先执行SELECT?你们都错了。。。

    来源 | infoq.cn/article/Oke8hgilga3PTZ3gWvbg 很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟别人解释什么是窗口函数,我在网上搜索"是否 ...

  4. R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库、将dplyr语法查询语句翻译为SQL查询语句

    R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库.将dplyr语法查询语句翻译为SQL查询语句 目录

  5. SQL 查询语句总是先执行 SELECT?你们都错了

    很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟别人解释什么是窗口函数,我在网上搜索"是否可以对窗口函数返回的结果进行过滤"这个问题,得出的结论是"窗口函数 ...

  6. SQL 查询语句总是先执行 SELECT?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"1024"领取惊喜资料 很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟 ...

  7. SQL查询语句基础构成

    本文是基本的SQL查询语句用法,内容主要来自Alan Learning SQL这本书第3章,包括select,from,where,group by,having,order by六个查询子句,后续会 ...

  8. 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  9. 怎么做mysql查询系统_mysql数据库系统学习(一)---一条SQL查询语句是如何执行的?...

    一.第一节:一条sql查询语句是怎样执行的 5.5.5版本以后,默认使用存储引擎为InnoDB 不使用查询缓存,MySQL8.0没有查询缓存这个功能 总体来说:MySQL分为service层和存储引擎 ...

最新文章

  1. Ubuntu11.10下载android4.0.1源码
  2. week06 codelab02
  3. Homework 8 测试计划
  4. 注册机patch起什么作用_单相电机的运行电容起什么作用
  5. 虚拟机安装python3_python3pip在虚拟机中全局安装
  6. 日历的java包_java11教程--包java.time.chrono介绍
  7. MySQL索引详细介绍
  8. STM32学习心得二十五:光敏传感器原理及实验
  9. 局域网共享文件的方法,传输大文件比较快
  10. 关于LinkList和LNode*
  11. 使用python合并多个pdf文件
  12. Java--JSON嵌套JSON中带‘\‘字符的解决方式
  13. 无限复活服务器,绝地求生刺激战场无限复活模式怎么玩 无限复活玩法攻略分享...
  14. cocos 安卓打包相关
  15. 数字图像和数字图像处理
  16. 骁龙780G和骁龙888哪个好 骁龙780G和骁龙888对比,哪个更强
  17. zookeeper(五)集群角色epoch的选取
  18. 走到最后,摩拜连姓名都不能拥有?
  19. 阿里云视频点播指定清晰度
  20. css 高度随宽度比例变化

热门文章

  1. 网站优化推广怎么做?
  2. 前台、中台、后台,业务中台、技术中台、数据中台、算法中台分别是什么?
  3. JAVA基础(JAVA移位运算符)
  4. Javaweb的服务器有哪些
  5. 装饰模式 - Unity
  6. 蓝桥杯第十届省赛试题
  7. 智慧CAD手机看图隐私政策
  8. UI设计 调色板的应用
  9. 李宏毅作业十二 Transfer Learning(迁移学习)
  10. checkedListBoxControl的用法