IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 数据库原理及安全技术教学实验报告SQL实践(七) -> 正文阅读

[大数据]数据库原理及安全技术教学实验报告SQL实践(七)

目录

一、实验目的

二、实验软硬件要求

三、实验预习

四、实验内容(实验步骤、测试数据等)

简单的数据查询

复杂数据查询

运行结果:

简单的数据查询

(1)查询所有同学的基本信息,包括:学号s_no、班级号class_no、姓名s_name、性别

????(2)查询所有同学,要求显示其学号s_no、姓名s_name。

????(3)查询所有男同学,要求显示其学号s_no、姓名s_name、出生日期s_birthday。

????(4)查询所有出生日期在“1980一01一01”前的女同学,要求显示其学号s no、姓名

????(5)查询所有姓“李”的男同学,要求显示其学号s _no、姓名s _name、性别s _sex、出

????(6)查询所有姓名中含有“一”字的同学,要求显示其学号s _no、姓名s_ name。

????(7)查询所有职称不是“讲师”的教师,要求显示其教师号t _no、姓名t _name、职称t _title。

????(8)查询虽选修了课程,但未参加考试的所有同学,要求显示出这些同学的学号s _no。

????(9)查询所有考试不及格的同学,要求显示出这些同学的学号s _no、成绩score,并按成绩降序排列。

????(10)查询出课程号为01001,02001,02003的所有课程,要求显示出课程号course_no、

(11)查询所有在1970年出生的教师,要求显示其教师号t_no、姓名t_name、出生日期t_birthday。

(12)查询出各个课程号course_no及相应的选课人数。

(13)查询出教授2门以上课程的教师号t_no。

(14)查询出选修了01001课程的学生平均分数、最低分数及最高分数。

(15)查询1960年以后出生的,职称为讲师的教师的姓名t_name,出生日期t_birthday,并按出生日期升序排列。

复杂数据查询

(1)查询所有同学的选课及成绩情况,要求显示学生的学号s _no、姓名s_name、课程号

(2)查询所有同学的选课及成绩情况,要求显示学生的姓名s _name、课程名称course_

name、课程的成绩score,并将查询结果存放到一个新的数据表new_table中。

(3)查询“计算机99-1”班的同学的选课及成绩情况,要求显示学生的学号s_ no、姓名

s _name、课程号course _no、课程名称course_name、课程的成绩score。

(4)查询所有同学的学分情况(假设课程成绩>=60时可获得该门课程的学分),要求显

示学生的学号s _no、姓名s_ name、总学分(将该列定名为:total_score)。(用JOIN)

(5)查询所有同学的平均成绩及选课门数,要求显示学生的学号s_ no、姓名s_ name、平均成绩(将该列定名为:average_score)、选课的门数(将该列定名为:choice_num)。

(6)查询所有选修了课程但未参加考试的所有同学及相应的课程,要求显示学生的学号S_ no、姓名s_ name、课程号course_no、课程名称course_name。

(7)查询所有选修了课程但考试不及格(假设<60分为不及格)的所有同学及相应的课程,要求显示学生的学号s_no、姓名s_name、课程号course_no、课程名称course _name、课程成绩course_score。

(8)查询选修了课程名为“程序设计语言”的所有同学及成绩情况,要求显示学生的姓名s_?name、课程的成绩score。(使用ANY)

(9)查询“计算机系”的所有同学及成绩情况,要求显示学生的学号s_ no、姓名s _name、班级名称class _name、课程号course _no、课程名称course_name、课程的成绩score。3

(10)查询所有教师的任课情况,要求显示教师姓名t _name、担任课程的名称course _name。

(11)查询所有教师的任课门数,要求显示教师姓名t_name、担任课程的门数(将该列定名为:course_number)。

(12)查询和“李建国”是同一班级的同学的姓名。(使用子查询)

(13)查询没有选修“计算机基础”课程的学生姓名。(用NOT EXISTS)

(14)查询主讲“数据库原理与应用”和主讲“数据结构”的教师姓名。(用UNION)

(15)查询讲授了所有课程的教师的姓名。

先查课程没有被教的,再反下。(或者查老师没有课程是没有被教授的)


一、实验目的

1、掌握各种简单查询、复杂查询。

二、实验软硬件要求

1、SQL Server 2008

三、实验预习

1、单表查询、表连接等SQL语句。

四、实验内容(实验步骤、测试数据等)

书本P294综合练习:

在综合实验(一)的基础上,作如下查询:

  1. 简单的数据查询

(1)查询所有同学的基本信息,包括:学号s_no、班级号class_no、姓名s_name、性别

S_sex、出生日期s_birthday。

????(2)查询所有同学,要求显示其学号s_no、姓名s_name。

????(3)查询所有男同学,要求显示其学号s_no、姓名s_name、出生日期s_birthday。

????(4)查询所有出生日期在“1980一01一01”前的女同学,要求显示其学号s no、姓名

s_name、性别s_sex、出生日期s_birthday。

????(5)查询所有姓“李”的男同学,要求显示其学号s _no、姓名s _name、性别s _sex、出

生日期s _birthday。

????(6)查询所有姓名中含有“一”字的同学,要求显示其学号s _no、姓名s_ name。

????(7)查询所有职称不是“讲师”的教师,要求显示其教师号t _no、姓名t _name、职称t _title。

????(8)查询虽选修了课程,但未参加考试的所有同学,要求显示出这些同学的学号s _no。

????(9)查询所有考试不及格的同学,要求显示出这些同学的学号s _no、成绩score,并按

成绩降序排列。

????(10)查询出课程号为01001,02001,02003的所有课程,要求显示出课程号course_no、

course_name。(要求用in运算符)。

(11)查询所有在1970年出生的教师,要求显示其教师号t_no、姓名t_name、出生日期t_birthday。

(12)查询出各个课程号course_no及相应的选课人数。

(13)查询出教授2门以上课程的教师号t_no。

(14)查询出选修了01001课程的学生平均分数、最低分数及最高分数。

(15)查询1960年以后出生的,职称为讲师的教师的姓名t_name,出生日期t_birthday,并按出生日期升序排列。

  1. 复杂数据查询

(1)查询所有同学的选课及成绩情况,要求显示学生的学号s _no、姓名s_name、课程号

Course_no和课程的成绩score。

(2)查询所有同学的选课及成绩情况,要求显示学生的姓名s _name、课程名称course_

name、课程的成绩score,并将查询结果存放到一个新的数据表new_table中。

(3)查询“计算机99-1”班的同学的选课及成绩情况,要求显示学生的学号s_ no、姓名

s _name、课程号course _no、课程名称course_name、课程的成绩score。

(4)查询所有同学的学分情况(假设课程成绩>=60时可获得该门课程的学分),要求显

示学生的学号s _no、姓名s_ name、总学分(将该列定名为:total_score)。(用JOIN)

(5)查询所有同学的平均成绩及选课门数,要求显示学生的学号s_ no、姓名s_ name、平

均成绩(将该列定名为:average_score)、选课的门数(将该列定名为:choice_num)。

(6)查询所有选修了课程但未参加考试的所有同学及相应的课程,要求显示学生的学号

S_ no、姓名s_ name、课程号course_no、课程名称course_name。.

(7)查询所有选修了课程但考试不及格(假设<60分为不及格)的所有同学及相应的课

程,要求显示学生的学号s_no、姓名s_name、课程号course_no、课程名称course _name、课程成绩course_score。

(8)查询选修了课程名为“程序设计语言”的所有同学及成绩情况,要求显示学生的姓名s_?name、课程的成绩score。(使用ANY)

(9)查询“计算机系”的所有同学及成绩情况,要求显示学生的学号s_ no、姓名s _name、

班级名称class _name、课程号course _no、课程名称course_name、课程的成绩score。3

(10)查询所有教师的任课情况,要求显示教师姓名t _name、担任课程的名称course _name。

(11)查询所有教师的任课门数,要求显示教师姓名t_name、担任课程的门数(将该列定名为:course_number)。

(12)查询和“李建国”是同一班级的同学的姓名。(使用子查询)

(13)查询没有选修“计算机基础”课程的学生姓名。(用NOT EXISTS)

(14)查询主讲“数据库原理与应用”和主讲“数据结构”的教师姓名。(用UNION)

(15)查询讲授了所有课程的教师的姓名。

运行结果:

简单的数据查询

(1)查询所有同学的基本信息,包括:学号s_no、班级号class_no、姓名s_name、性别

S_sex、出生日期s_birthday。

use?Study

select?s_no,class_name,s_name,s_sex,s_birthday

from?Student,Class

正在上传…重新上传取消

????(2)查询所有同学,要求显示其学号s_no、姓名s_name。

use?Study

select?s_no,s_name

from?Student

正在上传…重新上传取消

????(3)查询所有男同学,要求显示其学号s_no、姓名s_name、出生日期s_birthday。

use?Study

select?s_no,s_name,s_birthday

from?Student

where?s_sex='男'

正在上传…重新上传取消

????(4)查询所有出生日期在“1980一01一01”前的女同学,要求显示其学号s no、姓名

s_name、性别s_sex、出生日期s_birthday。

use?Study

select?s_no,s_name,s_sex,s_birthday

from?Student

where?s_birthday <?'1980-01-01'

and?s_sex='女'

正在上传…重新上传取消

????(5)查询所有姓“李”的男同学,要求显示其学号s _no、姓名s _name、性别s _sex、出

生日期s _birthday。

use?Study

select?s_no,s_name,s_sex,s_birthday

from?Student

where??s_sex ='男'

and?s_name like?'李%'

正在上传…重新上传取消

????(6)查询所有姓名中含有“一”字的同学,要求显示其学号s _no、姓名s_ name。

use?Study

select?s_no,s_name

from?Student

where???s_name like?'%一%'

正在上传…重新上传取消

????(7)查询所有职称不是“讲师”的教师,要求显示其教师号t _no、姓名t _name、职称t _title。

use?Study

select?t_no,t_name,t_title

from?Teacher

where?t_title not?like?'讲师'

正在上传…重新上传取消

????(8)查询虽选修了课程,但未参加考试的所有同学,要求显示出这些同学的学号s _no。

use?Study

select?s_no

from?Choice

where?score is?null

and?course_no is?not?null

正在上传…重新上传取消

????(9)查询所有考试不及格的同学,要求显示出这些同学的学号s _no、成绩score,并按成绩降序排列。

use?Study

select?s_no,score

from?Choice

where?score <60

order?by?score desc

正在上传…重新上传取消

????(10)查询出课程号为01001,02001,02003的所有课程,要求显示出课程号course_no、

course_name。(要求用in运算符)。

use?Study

select?course_no,course_name

from?Course

where?course_no in?(01001,02001,02003)

正在上传…重新上传取消

(11)查询所有在1970年出生的教师,要求显示其教师号t_no、姓名t_name、出生日期t_birthday。

bewteen包含两端极值。

use?Study

select?t_no,t_name,t_birthday

from?Teacher

where?t_birthday between?'1970-1-1'?and?'1970-12-31'

正在上传…重新上传取消

(12)查询出各个课程号course_no及相应的选课人数。

use?Study

select?course_no,count(course_no)?as?选修人数

from?Choice

group?by?course_no

正在上传…重新上传取消

(13)查询出教授2门以上课程的教师号t_no。

use?Study

select?t_no as?教授2门以上课程的教师号

from?Teaching

group?by?t_no

having?count(t_no)>=2

正在上传…重新上传取消

(14)查询出选修了01001课程的学生平均分数、最低分数及最高分数。

use?Study

select??avg(score)?平均分,max(score)?最大分,min(score)?最小分

from?Choice

where?course_no=01001

正在上传…重新上传取消

(15)查询1960年以后出生的,职称为讲师的教师的姓名t_name,出生日期t_birthday,并按出生日期升序排列。

use?Study

select??t_name,t_birthday

from?Teacher

where?t_birthday >?'1959-12-31'

order?by?t_birthday

正在上传…重新上传取消

复杂数据查询

(1)查询所有同学的选课及成绩情况,要求显示学生的学号s _no、姓名s_name、课程号

Course_no和课程的成绩score。

use?Study

select?Student.s_no,Student.s_name,Choice.course_no,Choice.score

from?Choice,Student

where?Student.s_no=Choice.s_no

正在上传…重新上传取消

(2)查询所有同学的选课及成绩情况,要求显示学生的姓名s _name、课程名称course_

name、课程的成绩score,并将查询结果存放到一个新的数据表new_table中。

use?Study

select?s_name,course_name,score

into?new_table

from?Choice,Student,Course

where?Student.s_no =?Choice.s_no and?Choice.course_no=Course.course_no

正在上传…重新上传取消

(3)查询“计算机99-1”班的同学的选课及成绩情况,要求显示学生的学号s_ no、姓名

s _name、课程号course _no、课程名称course_name、课程的成绩score。

use?Study

select?Student.s_no,Student.s_name,Course.course_no,course_name,score

from?Choice,Student,Course,Class

where?Student.s_no =?Choice.s_no

and?Choice.course_no=Course.course_no

and?Student.class_no=Class.class_no

and?Class.class_name=?'计算机99-1'

正在上传…重新上传取消

(4)查询所有同学的学分情况(假设课程成绩>=60时可获得该门课程的学分),要求显

示学生的学号s _no、姓名s_ name、总学分(将该列定名为:total_score)。(用JOIN)

GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组

use?Study

select?Choice.s_no,Student.s_name,sum(Course.course_score)?as?total_score

from?Choice inner?join?Student on?Choice.s_no=Student.s_no

join?Course on?Choice.course_no=Course.course_no

where?Choice.score>=60

group?by?Choice.s_no,Student.s_name

(5)查询所有同学的平均成绩及选课门数,要求显示学生的学号s_ no、姓名s_ name、平均成绩(将该列定名为:average_score)、选课的门数(将该列定名为:choice_num)。

use?Study

select?Choice.s_no,Student.s_name,avg(Choice.score)?asaverage_score,count(Choice.s_no)?as?choice_num

from?Choice inner?join?Student on?Choice.s_no=Student.s_no

group?by?Choice.s_no,Student.s_name

正在上传…重新上传取消

(6)查询所有选修了课程但未参加考试的所有同学及相应的课程,要求显示学生的学号S_ no、姓名s_ name、课程号course_no、课程名称course_name。

use?Study

select?Choice.s_no,Student.s_name,Course.course_no,Course.course_name

from?Choice left?join?Student on?Choice.s_no=Student.s_no

join?Course on?Choice.course_no=Course.course_no

where?Choice.score is?null

正在上传…重新上传取消

(7)查询所有选修了课程但考试不及格(假设<60分为不及格)的所有同学及相应的课程,要求显示学生的学号s_no、姓名s_name、课程号course_no、课程名称course _name、课程成绩course_score。

use?Study

select?Choice.s_no,Student.s_name,Course.course_no,Course.course_name,course_score

from?Choice left?join?Student on?Choice.s_no=Student.s_no

join?Course on?Choice.course_no=Course.course_no

where?Choice.score <?60

正在上传…重新上传取消

(8)查询选修了课程名为“程序设计语言”的所有同学及成绩情况,要求显示学生的姓名s_?name、课程的成绩score。(使用ANY)

use?Study

select?Student.s_name,Choice.score

from?Choice left?join?Student on?Choice.s_no=Student.s_no

join?Course on?Choice.course_no=Course.course_no

where?Course.course_no=?any(?

select?Course.course_no

from?Course

where?Course.course_name='程序设计语言')

正在上传…重新上传取消

(9)查询“计算机系”的所有同学及成绩情况,要求显示学生的学号s_ no、姓名s _name、班级名称class _name、课程号course _no、课程名称course_name、课程的成绩score。3

use?Study

select?Student.s_no,Student.s_name,Class.class_name,Course.course_no,Course.course_name,Choice.score

from?Student,Class,Choice,Course

where?Student.s_no=Choice.s_no

and?Student.class_no=Class.class_no

and?Choice.course_no=Course.course_no

and?Class.class_dept='计算机系'

正在上传…重新上传取消

(10)查询所有教师的任课情况,要求显示教师姓名t _name、担任课程的名称course _name。

use?Study

select?Teacher.t_name,Course.course_name

from?Teacher,Teaching,Course

where?Teacher.t_no=Teaching.t_no

and?Teaching.course_no=Course.course_no

正在上传…重新上传取消

(11)查询所有教师的任课门数,要求显示教师姓名t_name、担任课程的门数(将该列定名为:course_number)。

use?Study

select?Teacher.t_name,count(Teacher.t_no)?ascourse_number

from?Teacher,Teaching

where?Teacher.t_no=Teaching.t_no

group?by?Teacher.t_name

正在上传…重新上传取消

(12)查询和“李建国”是同一班级的同学的姓名。(使用子查询)

use?Study

select?Student.s_name

from?Student

where?Student.class_no=(

select?Student.class_no

from?Student

where?Student.s_name='李建国')

and?Student.s_name!='李建国'

正在上传…重新上传取消

(13)查询没有选修“计算机基础”课程的学生姓名。(用NOT EXISTS)

use?Study

select?s_name

from?Student

where?not?exists?(

select?Student.s_name

from?Course,Choice

where?Choice.course_no =?Course.course_no

and?Student.s_no =Choice.s_no

and?Course.course_name='计算机基础'?)

正在上传…重新上传取消

(14)查询主讲“数据库原理与应用”和主讲“数据结构”的教师姓名。(用UNION)

use?Study

select?t_name

from?Teacher,Teaching,Course

where?Teacher.t_no=?Teaching.?t_no

and??Teaching.course_no =?Course.course_no

and?Course.course_name =?'数据库原理与应用'

union

select?t_name

from?Teacher,Teaching,Course

where?Teacher.t_no=?Teaching.?t_no

and??Teaching.course_no =?Course.course_no

and?Course.course_name =??'数据结构'

正在上传…重新上传取消

(15)查询讲授了所有课程的教师的姓名。

先查课程没有被教的,再反下。(或者查老师没有课程是没有被教授的)

use?Study

select?t_name

from?Teacher

where?not?exists?(

select?*

from?Course

where?not?exists?(

select?*

from?Teaching

where?Course.course_no =?Teaching.course_no

and?Teacher.t_no =?Teaching.t_no)

)

正在上传…重新上传取消

五、实验体会

操作不够熟练,需要加强连续。

由于图片还需要手动复制,就懒得复制了。最近在忙着破解手机密码,见谅。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-18 17:42:19  更:2022-05-18 17:45:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:10:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码