注:此内容仅仅只是记录成长与分享学习,不能保证绝对正确

实验三 数据查询

实验日期:2022410 日  星期  实验地点:宿舍

一 实验目的

1. 熟练掌握SQL的SELECT简单查询语句。

2. 熟练使用SQL语句进行多表连接查询、嵌套查询、集合查询等复杂查询。

二 实验要求

1. 请大家务必动手完成实验,实验过程中,会随机抽查提问,作为实验成绩重要参考。

2. 请将数据库studb的两个基本文件自行保留,下次实验在此基础上进行。

3. 请在本实验报告指定方框认真填写对应的实验代码或实验结果。

三 实验内容

1. 通过执行SQL的SELECT语句,对数据表S进行投影、选择等单表简单查询。

2. 通过执行SQL语句,对数据表S、C、SC中的数据进行多表连接查询。

3. 通过执行SQL语句,对数据表S、C、SC中的数据进行集合查询。

4. 通过执行SQL语句,对数据表S、C、SC中的数据进行嵌套查询。

四 实验步骤

附加前述数据库,按下述要求完成实验:

1. 投影查询

1)在S表中查询计算机系学生的学号和姓名。

SQL命令为:

SELECT SNO,SNAME

FROM S;

2)在S表中查询学生的学号、年龄和出生年份(当前年份减去年龄),要求查询结果的列名显示为“学号”,“年龄”,“出生年份”。

SQL命令为:

SELECT SNO AS 学号,AGE AS 年龄,2022-AGE AS 出生年份

FROM S;

2. 选择查询

1)在S表中查询计算机系年龄小于20岁的学生信息。

SQL命令为:

SELECT *

FROM S

WHERE DNAME LIKE '计算机' AND  AGE<20;

2)利用字符串匹配进行模糊查询,在S表中找出其姓名中含有某个指定字的学生信息。

SQL命令为:

SELECT *

FROM S

WHERE SNAME LIKE '%X%' ;

3. 多表连接查询

1)查询所有学生信息以及他们选修课程的课程号和得分(S表与SC表连接查询)。

SQL命令为:

SELECT S.SNO,SNAME,AGE,GENDER,DNAME,CNO,SCORE

FROM S,SC

WHERE S.SNO=SC.SNO;

2)通过取别名将C表与其自身进行连接查询,查询每一门课程的间接先选课,查询结果的第一列为课程号,第二列为间接先选课的课程号,比如课程C4的先选课为C2,C2的先选课为C1,所以C4的间接先选课为C1。

SQL命令为:

SELECT first.CNO,second.PRE_CNO

FROM C first ,C second

WHERE first.PRE_CNO=second.CNO

4. 集合查询  运用UNION运算符查询选修了课程C2C4的学生的学号和姓名。

SQL命令为:

SELECT SC.SNO,S.SNAME

FROM SC,S

WHERE SC.SNO=S.SNO AND CNO='C2'

GROUP BY CNO

UNION

SELECT SC.SNO,S.SNAME

FROM SC,S

WHERE SC.SNO=S.SNO AND CNO='C4'

GROUP BY CNO

5. 嵌套查询

1)使用运算符IN查询选修了“数据结构”课程(或其他课程)的学生的学号和姓名,完善并执行下列SQL语句。

SELECT SNO,SNAME FROM S

WHERE SNO  IN

(   SELECT SNO  FROM SC

    WHERE CNO IN

    (   SELECT CNO FROM C

       WHERE CNAME='数据结构'

    )

);

2)使用存在量词EXISTS查询选修了C2课程的学生的姓名,完善并执行下列SQL语句。

SELECT SNAME

FROM S

WHERE EXISTS

(

    SELECT *

    FROM SC

    WHERE SC.SNO=S.SNO  AND CNO='C2'

)

3)检索选修了所有课程的学生学号和姓名,完善并执行下列SQL语句(可通俗理解为:查询这样的学生,不存在(NOT EXISTS)这样的课程,该学生没选(NOT EXISTS))。

SELECT SNO,SNAME FROM S

WHERE NOT  EXISTS

(

    SELECT * FROM C

    WHERE NOT  EXISTS

    (

       SELECT * FROM SC

       WHERE SC.SNO=S.SNO ANDSC.CNO=C.CNO

    )

);

五 自选动作

请在下框填写除了上述实验内容之外自选的实验内容:

使用内联函数求学生总人数,总分,最高最低分,平均分等等

SELECT COUNT(*)人数

FROM S

SELECT SUM(SCORE)总分,MAX(SCORE)最高分,MIN(SCORE)最低分,AVG(SCORE)及格

FROM SC

SELECT SNO,AVG(SCORE)及格

FROM SC

group by SNO having AVG(SCORE)>=60

六 实验总结

一开始实验的时候不知道切换数据库,导致一直显示的都是无效列名和无效对象名,上网查阅了资料才知道,打开SQL默认的是系统数据库master,所以一直都显示无效,后来在“新建查询”下面的可用数据库里把其改为“studb”后才行的。之后的实验基本都还顺畅,没什么大困难。

数据库实验 实验三 数据查询相关推荐

  1. 《数据库原理》实验六 SQL数据查询实验

    本系列传送门: 实验二 SQL Server SSMS工具创建和管理数据库及数据表 实验三 SQL Server SSMS工具添加数据 实验四 SQL的数据定义语句 实验五 数据库完整性约束的实现与验 ...

  2. 数据库原理与应用实验指导书 实验四:数据查询

    数据库原理与应用 实验指导书 实验四:数据查询 一.实验目的 掌握SELECT语句的基本语法: 熟练掌握模糊查询的用法: 熟练掌握连接查询的用法: 熟练掌握子查询的用法. 二.实验内容 表数据的查询 ...

  3. mysql实验训练2 数据查询操作_实验训练2:数据查询操作.doc

    实验训练2:数据查询操作.doc 实验训练2数据查询操作请到电脑端查看实验目的基于实验1创建的汽车用品网上商城数据库Shopping,理解MySQL运算符.函数.谓词,练习Select语句的操作方法. ...

  4. 数据库SQL语言学习--数据查询(持续更新中)

    数据库SQL语言学习--数据查询(持续更新中) 上机练习1 1.              启动SQL Server 2008中的 SQL Server Management Studio. 2.   ...

  5. 【高级数据库】第三章 查询执行

    [高级数据库]第三章 查询执行   第二章主要讲解如何在文件上添加索引来提高操作效率.第三章和第四章将主要讲解查询的实现细节. 第01讲 查询计划 1.查询编译预览   查询编译执行可分为三个步骤: ...

  6. MySQL数据库C接口的数据查询操作示例

    MySQL数据库C接口的数据查询操作示例 命令行操作 (1)建库建表(已有则不用) 连接MySQL服务器,并登录之.选择某个数据库.假设用户在这个数据库下已有一个表了. (2)查询所有数据的方法 SE ...

  7. 数据库实验三 数据查询一

    第1关:按条件查询单表的所有字段 任务描述 本关任务:按条件查询数据表的所有字段 为了完成本关任务,你需要掌握: 如何查询数据表的所有字段 相关知识 查询数据表 命令格式: select * from ...

  8. 数据库实验二之数据查询

    实验二 数据查询 一.实验目的 1.理解数据库中数据的其他查询方法和应用: 2.学会各种查询要求的实现: 3.学会各种查询的异同及相互之间的转换方法. 二. 实验内容 在实验1的基础上,练习其它查询语 ...

  9. 合肥工业大学—SQL Server数据库实验七:数据查询

    数据查询 1. 单表查询 2. 多表连接查询 1. 单表查询 1. 查询全体学生的信息: -- 查询全体学生的信息 select * from student 2. 根据专业编号(21)查询学生的学号 ...

  10. mysql实验训练2 数据查询操作_实验训练2:数据查询操作

    <实验训练2:数据查询操作>由会员分享,可在线阅读,更多相关<实验训练2:数据查询操作(6页珍藏版)>请在人人文库网上搜索. 1.实验训练2:数据查询操作请到电脑端查看实验目的 ...

最新文章

  1. htc820+android+l,首款高通64位八核 HTC Desire 820评测
  2. java椭圆写字距离_保持轨道椭圆的距离
  3. c++学习笔记(3)
  4. 顺序查找(c/c++)
  5. 信息熵和交叉熵的细节理解
  6. [html] 你有使用过html5的rt标签吗?它有什么应用场景?
  7. 怎样用计算机算屋面的坡度,屋顶坡度要怎么算,一般是多少?
  8. java如何快速抛出异常,异常 - 如何抛出异常 - 《Java 编程要点(Essential Java)》 - 书栈网 · BookStack...
  9. EMC之对象参考1 -- 对象基本知识
  10. ATM机为什么不能存100张?
  11. linux如何打开url,用于打开URL的命令?
  12. python程序停止运行、重新开始_求教,程序执行到末尾如何重新开始的问题。
  13. 对抗生成网络(Generative Adversarial Network, GAN)
  14. python网络编程(进程与多线程)
  15. 最适合数据分析师的数据库为什么不是MySQL?
  16. OPPO R9s成为情侣最喜欢礼物,今年情人节就送它了!
  17. 天王表的网络营销战略
  18. 惊艳爆了,这是我见过的最美Redis客户端
  19. 凑个热闹,分析下Padavan的代码,一
  20. Android 动画基础知识学习(下)

热门文章

  1. 回答cad转pdf格式的简易方法
  2. 和利时 浙大中控DCS组态软件,操作员在线模拟软件
  3. Redis入门到精通(2021版本)视频教程
  4. 微信小程序登录注册界面
  5. 微信小程序--萌系登陆界面
  6. Cesium 获取经纬度的几种方法
  7. journalctl日志工具使用方法
  8. 园区网络的IP地址资源规划 使用VLSM(变长子网掩码)主机数量、子网段数量、主机总数如何计算
  9. uni-app开发APP上架应用市场遇到的坑
  10. JAVA注释 关键字 标识符 常量 变量 数据类型 大小 类型转换 字符类型 (算术 赋值 自增自减 比较 逻辑短路现象 位移 三元) 运算符