数据库实验4 SQL语言-SELECT查询操作

2023-05-16

数据库实验4 SQL语言-SELECT查询操作

1.首先按照第三章的jxgl数据库的模板创建jxgl数据库并插入数据:

创建数据库jxgl:

create database jxgl;

创建相应的表:

创建student表,student(sno,sname,ssex,sage,sdept):以sno为主键primary key:

create table student  
( sno CHAR(7) primary key,  
  sname varchar(20),  
  sage INT,  
  ssex varchar(2),  
  sdept varchar(2)
);  

创建course表,course(cno,cname,cpno,ccredit): 以cno为主键primary key,cpno默认为NULL:

create table course  
( cno CHAR(2) primary key,  
  cname varchar(20),  
  cpno char(2) default NULL,  
  ccredit INT
);  

创建sc表,sc(sno,cno,grade):

以(sno,cno)为主键,sno为外码参照student表中的sno,cno为外码参照course表中的cno :

create table sc  
( sno CHAR(7)  ,  
  cno CHAR(2),  
  grade INT,  
  primary key(sno,cno),  
  foreign key(sno) references student,  
  foreign key(cno) references course  
)  

插入数据:

插入student的数据:

insert into student  
values('2005001','钱横',18,'男','Cs'),  
      ('2005002','王林',19,'女','Cs'),  
      ('2005003','李民',20,'男','Is'),  
      ('2005004','赵欣然',16,'女','Ma');  

插入course的数据:

insert into course  
values('1','数据库系统','5',4),  
      ('2','数学分析',null,2),  
      ('3','信息系统导论','1',3),  
      ('4','操作系统原理','6',3),  
      ('5','数据结构','7',4),  
      ('6','数据处理基础',null,4),  
      ('7','C语言','6',3);  

插入表sc的数据:

insert into sc  
values('2005001','1',87),  
      ('2005001','2',67),  
      ('2005001','3',90),  
      ('2005002','2',95),  
      ('2005003','3',88);  
1.检索年龄大于23岁的男学生的学号和姓名
select sno,sname  
from student  
where ssex='男' and sage>23;   
2.检索至少选修一门课的女学生姓名
#在选课数据库中存在的且性别为女即为所求  
select sname  
from student natural join sc  
where ssex='女';  
3.检索王林不学的课程的课程号
#求出王林选的课程号,不在这个课程号集合中的课程即为没选
select cno  
from course  
where cno not in    
(select cno                     
from student natural join sc  
where sname='王林');  
4.检索至少选修两门课的学生学号
select distinct sno  
from sc  
group by sno  #通过学号进行分类  
having count(sno)>1;  #筛选出每个类别中数量大于1的组的学号  
5.检索全部学生都选修的课程的课程号和课程名
select  cno,cname  
from sc natural join course     #将sc和course进行自然连接  
group by cno                      #用cno分组  
having count(cno)=(select count(*)from student);  #组内元组数量等于 学生总数的才保留  

6.检索选修了所有3学分课程的学生平均成绩

#找到所有筛选了3学分课程的学生,然后求所有符合题意的学生的平均成绩
with tgc(cno,nums) as  
(select cno,count(cno)  
from course  
where ccredit=3)     #用with语句筛选出所有三学分课程  
select avg(grade)  
from sc             #从sc中选出所有选修了三门课的学生的成绩   
where sno in     #下面的select语句筛选出选择所有三学分课程的学生  
(select sno   
from sc natural join tgc    #自然连接,只保留三学分课程  
group by sno  #通过学号分组,如果分组后元组数目等于三学分课程数目则说明全修  
having count(cno)=(select count(*) from course where ccredit=3))
group by sno;     #再用学号分组;  
1.统计有学生选修的课程门数
select count(distinct cno) #sc里的cno都是有人选取的课程,故去重算count即可  
from sc;   
2.求选修4号课程的学生的平均年龄
select avg(sage)    
from student  natural join sc #将student和sc进行自然连接  
where cno='4' ;    #选出选择4号课的学生  
3.求学分为3的每门课程的学生平均成绩
select avg(grade)  
from sc natural join course #使sc和course自然连接  
where ccredit=3   #筛选出学分为3的课程  
group by cno;    #通过课程号进行分组并求avg(grade)  
4.统计每门课程的学生选修人数,要求超过三人的课程才统计,要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列
select cno,count(cno)  
from sc  
group by cno   #通过cno课程号进行分组  
having count(cno)>3  #筛选掉选课人数少于3的课程  
order by count(cno) desc ,cno asc;  #以选修人数降序排序,相同时则cno升序排序  
5.检索学号比王林同学大而年龄比王林同学小的学生姓名
#先用with语句筛选出王林的学号和年龄  
with wanglin(age,no) as  
(select sage,sno from student where sname="王林")  
select sname  
from student,wanglin   #筛选出学号大于王林且年龄小于王林的同学名字  
where sno>no and sage<age;  
6.检索姓名以’王’开头的所有学生的姓名和年龄
select sname,sage  
from student  
where sname like '王%';  # %匹配任意字符串,故表示以王开头  
7.在sc表中检索成绩为空值的学生的学号和课程号
select sno,cno  
from sc  
where grade is null;  
8.求年龄大于女学生平均年龄的男同学的姓名和年龄
with girl_age(age) as  #用with语句求出女同学平均年龄并存到girl_age中  
(select avg(sage)  
from student  
where ssex="女")  
select sname,sage  
from student,girl_age    #筛选出男性且年龄大于girl_age  
where ssex='男' and sage>age;  
9.求年龄大于所有女学生年龄的男学生的姓名和年龄
with girl_max_age(age) as  #用with语句求出女同学最大年龄并存到girl_max_age中  
(select max(sage)  
from student  
where ssex="女")  
select sname,sage          #大于所有女性年龄等价于大于最大的女性年龄  
from student,girl_max_age    #筛选出男性且年龄大于girl_max_age  
where ssex='男' and sage>age;  
10.检索选修了4门以上课程的学生总成绩(不统计不及格课程),并要求按总成绩的降序排列出来。
select sum(grade)  
from sc  
group by sno     #通过sno进行分组,将同一学生的课程汇集到一起  
having count(cno)>4   #筛选出课数大于4的学生  
ORDER BY sum(grade) DESC;  #按照总成绩的降序排列  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库实验4 SQL语言-SELECT查询操作 的相关文章

  • 现场总线网络一般只实现了第1层(物理层)、第2层(数据链路层)、第7层(应用层)。

    现场总线网络一般只实现了第1层 物理层 第2层 数据链路层 第7层 应用层 因为现场总线通常只包括一个网段 xff0c 因此不需要第3层 传输层 和第4层 网络层 xff0c 也不需要第5层 会话层 第6层 描述层 的作用
  • 函数指针应用场景

    原文链接 xff1a https blog csdn net u011116085 article details 108106052 一个人C语言功底强不强 xff0c 不是看他写的代码注释够不够全 xff0c 代码逻辑够不够清晰 xff
  • STM32的Flash 具体是哪种flash?

    单片机内部的Flash应该是nor flash xff0c 因为 xff0c 在使用程序对Flash进行读写与擦除时 xff0c 都是要按一个页一个页的进行操作的 这与nor的特性是一样的 单片机中的程序是在Flash中运行的 xff0c
  • keil 无法直接生成bin文件 fromelf:格式转换工具

    fromelf exe转换工具的语法格式如下 xff1a fromelf span class token punctuation span options span class token punctuation span input f
  • jlink支持 国民MCU

    https www bilibili com read cv19376308 文件已保存到自己网盘
  • OSC_in 和 OSC_out 引脚 OSC32_IN和OSC32_OUT

    一般在单片机上都有 OSCin 和 OSCout 两个晶振接入端口 xff0c 我们可以用无源的晶振加上起震电容可以配合单片机是晶振起震 xff0c 为系统提供时钟源 顾名思义在OSCout端可以输出正弦波 xff0c 给别的器件提供振荡源
  • MDK 的jlink版本和jlink的驱动版本导致的问题 keil进入调试后只打了一个断点就提示断点太多

    查看MDK jlink版本 查看 jlink下载器的驱动版本 降低MDK jlink版本 调试起来很顺畅 降低版本方法 xff1a 重装keil 后 MDK jlink版本自动回到低版本 或者找到低版本的文件 直接替换segger文件夹
  • git 和 SVN 的区别 SVN搭建 分布式和非分布式

    https blog csdn net bruce 6 article details 38299677 ops request misc 61 257B 2522request 255Fid 2522 253A 2522168051782
  • 串口不仅要数据处理 还要对数据做容错处理

    如果接受到的数据不正确怎么办 排除硬件损坏的情况
  • Linux面试题总结(2022最新版)

    关于作者 x1f436 程序猿周周 短视频小厂BUG攻城狮 x1f93a 如果文章对你有帮助 xff0c 记得关注 点赞 收藏 xff0c 一键三连哦 xff0c 你的支持将成为我最大的动力 本文是 后端面试小册子 系列的第 5 篇文章 x
  • 10.dockerfile之WORKDIR指令

    一 WORKDIR指令说明 用来指定当前工作目录 xff08 或者称为当前目录 xff09 当使用相对目录的情况下 xff0c 采用上一个WORKDIR指定的目录作为基准 相当与cd 命令 xff0c 但不同的是指定了WORKDIR后 xf
  • 计算机系统层次存储结构

    问 xff1a 当前计算机系统一般会采用层次结构存储数据 xff0c 请介绍下典型计算机存储系统一般分为哪几个层次 xff0c 为什么采用分层存储数据能有效提高程序的执行效率 xff1f 所谓存储系统的层次结构 xff0c 就是把各种不同存
  • "R6002 floating point support not loaded"错误

    R6002 floating point support not loaded 错误 xff0c 在Debug模式下会弹出如下错误 xff1a floating point support not loaded 翻译为中文是 浮点指针支持未
  • docker 安装mysql:latest 问题

    背景 周末闲着没事 xff0c 然后想着在虚拟机用docker装个mysql吧 然后就开始安装了 正文 打开dockerhub com 在输入框输入mysql xff0c 选择mysql第一个 xff0c 进入后找到How to use t
  • TX2-刷机完成后安装程序ubuntu_linux命令&TX2学习总结

    Linux教程 菜鸟教程 xff1a http www runoob com linux linux tutorial html 认识linux ping命令 xff1a ping命令是常用的网络命令 ping网关 xff1a ping 1
  • 浅谈操作系统与内存

    浅谈操作系统与内存 对于计算机的发明 xff0c 相信大家都有耳闻那个占地面积按平米算的第一台计算机 在那个时候 xff0c CPU的资源是极其珍贵的 xff0c 随着这些年突飞猛进的发展 xff0c 一片指甲盖大小的民用级CPU一秒钟能执
  • linux系统编程之进程(八):守护进程详解及创建,daemon()使用

    一 xff0c 守护进程概述 Linux Daemon xff08 守护进程 xff09 是运行在后台的一种特殊进程 它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件 它不需要用户输入就能运行而且提供某种服务 xff0c 不
  • IMU&GPS融合定位::加速度计基本原理

    加速度计基本原理 核心 xff1a 牛顿第二定律 一 mems加速度计基本原理 加速度计基本结构如上图 xff0c 由上电容 中电容板 可移动 下电容板等组成 xff1b 当加速度达到一定值后 xff0c 中电容板会移动 xff0c 与上
  • 深入理解事件(Event)

    前言 在前一篇文章中讲到了Event 发布与订阅 一 里面用到了事件来实现一些发布与订阅 xff0c 当时对事件及其委托理解的还不是太深入 xff0c 可能在使用上有点捉急 这篇来好好讲讲事件 xff0c 以及通过一些小DEMO来加深理解
  • 数据结构知识体系框图

    数据结构知识体系框图 xff1a 静态顺序表 xff1a https blog csdn net adorable article details 78720919 静态顺序表之二 xff1a https blog csdn net ado

随机推荐

  • 想做嵌入式却没经验找不到工作!!!

    从大学三年级就想做嵌入式 xff0c 但是却到处打酱油 先是帮老师做Java项目 xff0c 后来又去外包公司做了一年的通信系统OAM代码维护 xff0c 啥技术也没有学到 现在年底裸辞出来又找不到合适的嵌入式工作 基础知识不够 xff0c
  • 学习一个陌生的开源库的方法建议

    转载 xff0c 初看这句话 xff0c 感觉没什么意义 xff0c 但当你在看开源库的例子的时候 xff0c 不妨多想想这句话 对于一个不熟悉的开源库和模块 xff0c 我觉的最好的学习方法莫过于 xff1a 1 使用库 xff0c 看库
  • 将函数实现放在头文件中

    研究一个开源算法库 xff0c 采用C 43 43 模板编程 xff0c 所有函数实现都放在了头文件中 xff0c 现在把模板去掉 xff0c 链接时发生冲突 xff0c 具体原因如下 xff1a 因为多个源文件包含了含有函数定义的头文件
  • 编译器错误消息: CS1617: 选项“6”对 /langversion 无效

    编译错误 说明 在编译向该请求提供服务所需资源的过程中出现错误 请检查下列特定错误详细信息并适当地修改源代码 编译器错误消息 CS1617 选项 6 对 langversion 无效 xff1b 必须是 ISO 1 ISO 2 3 4 5
  • 无法序列化会话状态

    添加购物车功能遇到返回错误500 xff0c 解决办法 xff1a 因为ajax post请求后 xff0c 只返回错误500的信息 xff0c 并不能清楚的知道具体问题 xff0c 所以要在js处理返回错误500的方法中添加上xhr re
  • C#获取网络图片

    简单获取图片 string url 61 zhi txt Text 图片地址 string dizhi 61 lujing Text 图片下载后保存路径及图片名称要写在一块 WebClient wc 61 new WebClient wc
  • 在vscode中使用Git

    用了git最方便的就是比如在公司写了很多代码后回到家打开vscode只需要点击一下pull就能全部同步过来 是不是很方便 毕竟之前我都是拿u盘拷贝回家或者存到云盘再下载下来 我这里用的是国内的码云托管的代码 xff0c xff0c gith
  • vscode同步设置&扩展插件

    首先安装同步插件 xff1a Settings Sync 第二步 xff1a 进入你的github如图 xff1a 打开设置选项 xff1a 新建一个token xff1a 如图 xff1a 记住这个token值 转到vscode 按shi
  • mysql 常用语句使用

    1 查询语句 SELECT FROM table 2 更改语句 UPDATE table SET name 61 39 123456 39 WHERE id 61 100 3 插入语句 INSERT INTO table VALUES 1
  • STM32学习第七天--串口调试助手没弄懂

    啊啊 啊 今天真的好沮丧 调代码足足调了一晚上 xff0c 不知道什么原因工程就是错 xff0c 最后好不容易啊 xff0c 在主函数加了个 include 34 stm32f10x lib h 34 就好使了 xff0c 真不知道为什么
  • swoole 相关

    安装虚拟机 VMware Workstation Pro 安装CentOS CentOS 7 x86 64 Minimal 1708 iso 安装FinalShell 教程地址 安装lnmp 教程地址 服务状态管理命令 1 安装lnmp 2
  • ffmpeg编程:读取摄像头信息,保存为裸yuv420p、yuyv422视频流

    1 源码下载 xff1a https download csdn net download dijkstar 10898462 2 编程环境使用Windows下的QT5 11 minGW32 xff0c 源码中已经放好了fmpeg的bin
  • C中__FILE__ __LINE__的用法

    include lt stdio h gt void main void printf 34 File s Successfully reached line d n 34 FILE LINE Other statements here l
  • ubuntu中添加和删除源

    添加PPA源的命令为 xff1a br sudo add apt repository ppa user ppa name 添加好更新一下 xff1a sudo apt get update 删除命令格式则为 xff1a br sudo a
  • jetson nano 部署yoloV3,yoloV4,yoloV3-tiny,yoloV4-tiny

    系统 ubuntu nbsp nbsp 自带cuda10 0 nbsp 1 下载与安装darknet git clone https github com AlexeyAB darknet cd darknet 2 以下步骤我都在直接进入c
  • 对比first-fit/best-fit/worst-fit/slab以及buddy这几种算法的特点

    以下均为自己对这些算法的理解 xff1a fitst fit算法 First fit算法 xff1a 连续物理内存分配算法的一种 xff0c 将空闲内存块按照地址从小到大的方式连起来 xff0c 具体实现时使用了双向链表的方式 当分配内存时
  • MIT6_0001F16_Pset2

    MIT6 0001F16 Pset2 完成Hangman Game的编写 xff0c 就是一个猜词游戏 span class token comment Problem Set 2 hangman py span span class to
  • 利用python进行数据分析 pdf

    利用python进行数据分析 链接 xff1a https pan baidu com s 1mFg7kB0WG6edKnhumMbbJg 提取码 xff1a 6kos 如果带来帮助 xff0c 可点赞或关注博主 xff01
  • 数据库系统概念第六版 第六章练习题6.11

    6 11 考虑下图所示的关系数据库 xff0c 主码加了下划线 给出关系代数表达式来表达下列的每一个查询 xff1a a 找出First Bank Corporation的所有员工姓名 b 找出First Bank Corporation所
  • 数据库实验4 SQL语言-SELECT查询操作

    数据库实验4 SQL语言 SELECT查询操作 1 首先按照第三章的jxgl数据库的模板创建jxgl数据库并插入数据 xff1a 创建数据库jxgl create database jxgl 创建相应的表 xff1a 创建student表