SQL查询 练习题

本文详细介绍了SQL中的数据查询,包括无条件、条件、排序、聚集函数、连接查询、嵌套查询、集合查询以及数据更新(插入、修改、删除)等技术,涵盖了数据库操作的基础知识。
摘要由CSDN通过智能技术生成

一、数据查询

1.无条件查询

[题01] 查询全体学生的详细记录。(注:无条件的选择查询)

[题02] 查询全体学生的姓名(Sname)、学号(Sno)、所在系(Sdept)。(注:无条件的投影查询)

[题03] 查询全体学生的学号(Sno)、姓名(Sname)及出生年份。(注:由于 SELECT 子句的<目标列表达式>不仅可以是表中的属性列,也可以是表达式,故可以查询经过计算的值。)

[题04] 查询全体学生的学号、姓名、出生年份和所在系,要求用小写字母表示所有系名。

[题05] 查询选修了课程的学生学号。

2.条件查询

[题06] 查询数学系(MA)全体学生的学号(Sno)和姓名(Sname)。。

[题07] 查询考试成绩有不及格的学生的学号。

[题08] 查询所有年龄在 20 岁以下的学生姓名(Sname)及年龄(Sage)。

 [题09] 查询所有年在 18-20 岁(包括 18 岁和 20 岁)之间的学生姓名(Sname)及年龄(Sage)。

[题10] 查询年龄不在 18-20 岁之间的学生姓名(Sname)及年龄(Sage)。

[题11] 查询计算机系、数学系和信息系学生的学号(Sno)、姓名(Sname)和性别(Ssex)。其语句为:

[题12] 查询既不是信息系 (IS)、数学系 (MA)、也不是计算机系 (CS)的学生的姓名(Sname)和性别(Ssex)。

[题13] 查询所有姓刘的学生的姓名(Sname)、学号(Sno)和性别(Ssex)。

[题14] 查询姓“刘”且全名为4 个汉字的学生的姓名(Sname)和所在系(Sdept)。

[题15] 查询课程名为“DB 设计”的课程号(Cno)和学分(Ccredit)。

[题16] 假设某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。试查询缺少成绩的学生的学号(Sno)和相应的课程号(Cno)。

3.查询结果排序

[题17] 查询选修了3 号课程的学生的学号(Sno)和成绩(Grade),并按成绩降序排列。

[题18] 查询全体学生情况,查询结果按所在系的系名(Sdpet)升序排列,同一系中的学生按年龄(Sage)降序排列。

4.聚集函数的使用

[题19] 查询学生总人数。

[题20] 查询选修了课程的学生人数。

[题21] 查询学生 200215122 选修课程的总学分数。

4.查询结果分组

[题22] 求各个课程号(Cno)及相应的选课人数。

[题23] 查询选修了 3 门或3 门以上课程的学生学号(Sno)。

二、连接查询

1.不同表之间的连接查询

[题01] 查询每个学生及其选修课程的情况。(注:本查询实际上是涉及 Student 与 SC 两个表的连接操作。这两个表之间的联系是通过公共属性Sno实现)

2.自身连接

[题02] 查询每一门课的间接先修课(即先修课的先修课)。(注:在 Course 表关系中,只有每门课的直接先修课信息,而没有先修课的先修课。要得到这个信息,必须先对一门课找到其先修课,再按此先修课的课程号,查找它的先修课程。这就需要要将 Course 表与其自身连接。为方便连接运算,这里为 Course 表取两个别名分别为 A,B)

3.复合条件查询

[题03] 查询每个学生的学号(Sno)、姓名(Sname)、选修的课程名(Cname)及成绩(Grade)。

嵌套查询

1.带谓词IN的嵌套查询

[题04] 查询与“李伟”在同一个系学习的学生学号(Sno)、姓名(Sname)和系名(Sdept)。

[题05] 查询选修了课程名为“数据结构”的学生学号(Sno)和姓名(Sname)。(注:本查询涉及学号、姓名和课程名(Cname)三个属性。学号和姓名存放在 Student 表中,课程名的存放在Course 表中,但 Student 与 Course 两个表之间没有公共属性,必须通过 SC 表建立它们之间的联系。所以本查询实际上涉及三个关系的连接操作。)

2.带比较运算符的嵌套查询

[题06] 用带有比较运算符的嵌套查询实现:查询与“李伟”在同一个系学习的学生学号(Sno)、姓名(Sname)和系名(Sdept)。(注:由于一个学生只可能在一个系学习,因此子查询的结果是一个值,因此可以用=代替IN)

3.带调词 ANY或ALL 的套查询

[题07] 查询计算机系(CS)的不超过自动化系所有学生的年的学生姓名(Sname)和年龄(Sage)。

4.带谓词 EXISTS 的套查询

[题08] 查询所有选修了编号为“1”课程的学生姓名(Sname)和所在系(Sdept)。

集合查询

 [题09] 查询计算机系(CS)的学生或年龄不大于 20 岁的学生信息。

五、数据更新

1.插入数据

[题10] 将学生陈冬的信息(学号:200215128: 姓名:陈冬:性别:男;所在系:IS:年龄:18 岁)插入到 Student 表中。

[题11] 插入一条选课记录 (200215128’,1)。

[题12] 对每一个系,求学生的平均年龄,并把结果存入表文件 Dept_age 中。Dept_age 表文件属性为: Sdept (系名)、Avg_age (平均年龄)。

2.修改数据

[题13] 将学号为“200215121”的学生年龄改为 22 岁。即要修改满足条件的一个元组的属性值。

[题14] 将所有学生的年龄增加1岁。即要修改多个元组的值。

3.删除数据

[题15] 删除学号为 200215128 的学生记录。

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
SQL是高级的非过程化编程语言,是沟通数据库服务器和客户端的重要工具,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以,具有完全不同底层结构的不同数据库系统,可以使用相同的SQL语言作为数据输入与管理的SQL接口。 它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使它具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。    结构化查询语言(Structured Query Language)最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。如今无论是像Oracle、Sybase、DB2、Informix、SQL Server这些大型的数据库管理系统,还是像Visual Foxpro、PowerBuilder这些PC上常用的数据库开发系统,都支持SQL语言作为查询语言。    美国国家标准局(ANSI)与国际标准化组织(ISO)已经制定了SQL标准。ANSI是一个美国工业和商业集团组织,负责开发美国的商务和通讯标准。ANSI同时也是ISO和International Electrotechnical Commission(IEC)的成员之一。ANSI 发布与国际标准组织相应的美国标准。1992年,ISO和IEC发布了SQL国际标准,称为SQL-92。ANSI随之发布的相应标准是ANSI SQL-92。ANSI SQL-92有时被称为ANSI SQL。尽管不同的关系数据库使用的SQL版本有一些差异,但大多数都遵循 ANSI SQL 标准。SQL Server使用ANSI SQL-92的扩展集,称为T-SQL,其遵循ANSI制定的 SQL-92标准。    SQL语言包含4个部分:    数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。    数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。    数据查询语言(DQL),例如:SELECT语句。    数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。    SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

*张小杨*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值