当前位置: 首页 > news >正文

实验三 数据查询(4学时)

[实验目标]

1、掌握单表查询的应用

2、熟练掌握连接查询的应用

3、掌握嵌套查询和集合查询

[实验内容]

一、根据实验二,建立 SC 数据库(实验条件),含有 student course sc 三个表

二、数据查询实验

1 、单表查询

1 )选择指定的列

【例】 查询全体学生的学号和姓名

2 )查询全部列

【例】 查询全体学生的详细信息

3 )对查询后的指定列进行命名

【例】 查询全部学生的 姓名 及其 出生年 两列

4 )消除取值重复的行

【例】 查询选修了课程的学生学号

5 )选择表中若干元组(满足条件的)

( I)大小比较

【例】 查询计算机系( IS )全体学生名单

【例】 查询全体 20 岁以下的学生姓名和年龄

( II)确定范围

【例】 查询所有在 2023 岁(含 2023 )的学生姓名、系别和年龄

( III) innot in 确定集合

【例】 查询 IS 系和 CS 系的全体学生姓名和性别

【例】 查询既不属于 IS 系,也不属于 MA 系的学生姓名和年龄

( IV)字符匹配( like % _

【例】 查询所有姓李的学生姓名和性别

【例】 查询所有 “2002” 年入学的学生学号、姓名和系别

【例】 查询所有不姓 的学生信息

【例】 查询名称含有 数据 的课程号、课程名及学分

( V)涉及空值的查询( is null

【例】 查询没有先修课的课程号和课程名。

【例】 查询所有有成绩的学生学号、课程号及成绩

6 )查询结果排序( order by

【例】 查询选修了 3 号课程的学生学号和成绩,结果按成绩降序排列。

7 )聚集函数

countsumavgmaxmin

【例】 查询学生总数

【例】 查询所有课程的总学分

【例】 查询全体学生平均年龄

【例】 查询 1 号课程的最高分

8 )分组统计( group by

【例】 查询男女学生各有多少人。

【例】 查询每个课程的课程号和平均分。

【例】查询选修了3门课程以上的学生学号。

【例】查询不及格门数2门以上的学生学号。

2 、连接查询

1 )等值与非等值连接查询

【例】 查询每个学生及其的选修课程情况

2 )自身连接

【例】 查询每个学生的间接选修课

3 )外连接

【例】 查询所有学生选修课程情况(含没选修课程的学生)

【例】查询所有学生选修课程情况(含没选修课程的学生,属性有学号,姓名,课程名和成绩)

4 )符合条件连接

【例】 查询选修了 2 号课程且成绩在 90 分以上的所有学生学号和姓名

【例】 查询每个学生的学号、姓名,选修课程名和成绩。

3 、嵌套查询

1)带有IN谓词的子查询( 属性 in (子查询的查询结果) )

【例】查询与王敏同学在同一个系的学生信息。

【例】查询不与王敏同学不在同一个系的学生信息。

【例】查询选修了课程名为“信息系统”的学生学号和姓名。

【例】查询曾与刘晨一同上课的学生学号和姓名。(假设:一个课程只有一个上课班)


2)带有比较运算符的子查询(=,>=,<=,<>或!=)

【例】查询与王敏同学在同一个系的所有学生信息 (=判断)

【例】查询每个学生超过该课程最低分的课程号。(同类课程不是最低分的)

【例】查询每个学生超过他选修课程平均成绩的课程号。

【例】查询每个学生超过该课程平均成绩的课程号。

3)带有ANY或ALL谓词的子查询

【例】查询其他系中比计算机系某一学生年龄小的学生姓名,性别、年龄和所在系。

【例】查询其他系中比计算机系所有年龄都小的学生姓名和年龄。


4 )带有Exists谓词的子查询

【例】查询所有选修了1号课程的学生姓名。

【例】查询选修了全部课程的学生姓名。

【例】查询至少选修了学生200215122选修的全部课程的学生学号。

4、集合查询

1)并UNION

【例】 查询计算机系的学生及年龄不大于19岁的学生详细信息。

【例】查询选修了1号课程的及年龄不大于19岁的学生详细信息。


2)交INTERSECT

【例】查询选修了1号课程的与年龄不大于19岁的 学生 详细信息 的交集。


3)差EXCEPT

【例】查询计算机科学系的学生与年龄不大于19岁的学生详细信息的差集。


[课后作业]

1、通过SPJ数据库完成课后针对SPJ的查询练习。


2、根据SPJ数据库用SQL语句完成以下查询。

1)查询“天津”的供应商详细信息。

2)查询不是“天津”的供应商代码。

3)查询供应 工程 J1零件的供应商代码。

4)查询供应商S1供应过的商品代码。

5)查询供应商S1供应工程J1的零件种类有几种。

6)查询供应商S1供应工程J1的各种零件的零件代码和其数量和。

7)查询J1工程使用的零件种类有几种。

8)查询J1工程使用的各种零件代码和其数量和。

9)查询J1工程使用的零件总数大于300的零件代码和数量。

10)查询J1工程使用的各种零件,其数量至少大于J3使用的S2供应的所有零件数量和的,零件代码和数量。

11)查询J1工程使用的各种零件,其数量至少大于J3使用的同类数量和的,零件代码和数量。

12)查询至少使用了J1工程所用的几类零件的工程的工程号。

13)查询至少使用了所有红色零件的工程号。

14)查询使用了全部红色零件的工程号。

15)查询工程所在地与供应其零件的供应商在同一个城市的工程号和供应商号。

16)查询没有使用天津供应商生产的红色零件的工程号JNO。

17)查询至少使用了供应商S1供应的全部零件的工程号JNO。

18)查询使用了全部上海产的零件的工程号JNO。

19)查询没有使用J2所使用的所有零件的工程号JNO。

3、根据SC数据库用SQL语句完成以下任务。

1)将不及格的每个学生成绩增加5分。

2)将低于该课程平均分的学生成绩,成绩提高10%。

3)把计算机科学系所有学生增加1岁。

4)把学分为3分以内(含3分)的课程成绩提高3分,学分为3分以上的课程成绩提高4分。

5)建立名字为“成绩单”的视图,属性有 学生号,学生姓名、课程号、课程名和成绩

6)删除1号课程。


相关文章:

  • 北京簋街 美食完全攻略 + 簋街好吃的夜宵去处-----店铺介绍大全
  • 随书赠送的台历样式
  • Interview2---3g
  • 整合Bullet物理引擎到Ogre on iPhone
  • CDMA的定位方式
  • Bullet的3D Max插件
  • 判断字符串中字符最多的那一个及个数
  • 两个最容易被人忽略的基本代码优化技术
  • Windows的达尔文进化图
  • 算法面试:精选微软经典的算法面试100题(第1-20题)
  • 讨论PV原语、解答PV疑惑
  • 一个PV操作题引发的思考,如何看待进程间同步、互斥
  • windows中控制台中在同一行打印信息
  • 《Linux内核修炼之道》精华分享与讨论(5)——Kernel地图:Kconfig与Makefile
  • 《Linux内核修炼之道》 之 高效学习Linux驱动开发
  • 网络传输文件的问题
  • [LeetCode] Wiggle Sort
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • css选择器
  • Django 博客开发教程 16 - 统计文章阅读量
  • golang中接口赋值与方法集
  • Promise面试题,控制异步流程
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • vue-router 实现分析
  • Wamp集成环境 添加PHP的新版本
  • Web设计流程优化:网页效果图设计新思路
  • 回顾2016
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 前端技术周刊 2019-01-14:客户端存储
  • 系统认识JavaScript正则表达式
  • 正则表达式
  • Nginx实现动静分离
  • "无招胜有招"nbsp;史上最全的互…
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #FPGA(基础知识)
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (02)vite环境变量配置
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .describe() python_Python-Win32com-Excel
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .net访问oracle数据库性能问题
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • .net实现客户区延伸至至非客户区
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • [2544]最短路 (两种算法)(HDU)
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [BZOJ] 3262: 陌上花开
  • [C语言]——内存函数