测试-子查询及数据更新

news2024/10/5 21:17:53

测试-子查询及数据更新

目录

  • 测试-子查询及数据更新
  • 1、修改borrow表增加一列;修改日期数据(两条语句完成)
    • 题目
    • 代码
    • 题解
  • 2、 SQL更新:删除-删除“吴宾”的所有成绩记录
    • 题目
    • 代码
  • 3、SQL查询:查询没有被订购的商品
    • 题目
    • 代码
  • 4、插入图书信息
    • 题目
    • 代码
  • 5、 查询现有图书中价格最高的图书信息
    • 题目
    • 代码
  • 6、向student表中一次插入多行数据
  • 题目
    • 代码
  • 7、插入计算机系学生C01课程的选课记录
    • 题目
    • 代码
  • 8、查询所有人都借阅过的图书信息
    • 题目
    • 代码
    • 题解
  • 9、SQL更新:修改-“张海”的“计算机导论”课程成绩为70。
    • 题目
    • 代码
  • 10、借了"计算方法",但没有借"计算方法习题集"的读者,输出其借书卡号
    • 题目
    • 代码
    • 题解
  • 11、 SQL查询:查询每个学生高于他自己选修平均分的那门课程的成绩,输出学号,课程号,课程成绩,他所有课程的平均分,并按学号升序排列
    • 题目
    • 代码
    • 题解
  • 12、插入新的部门记录
    • 题目
    • 代码
  • 13、修改编号33的“安志杰”的部门编号为1005,职位为“业务员”。
    • 题目
    • 代码
  • 14、查询计算机系平均成绩前三名的学号,姓名、平均成绩
    • 题目
    • 代码
    • 题解
  • 15、SQL查询:查询人员信息:包括员工和客户
    • 题目
    • 代码

在这里插入图片描述

1、修改borrow表增加一列;修改日期数据(两条语句完成)

题目

修改borrow表增加借书日期bdate列,列类型为datetime;

将机械系的同学的借书日期值修改为还书日期的前两个月的时间。

用两条语句完成,日期的修改可以用date_add( )或adddate( )。

原表结构如下:

card(借书卡) 表:cno 卡号,name 姓名,class 班级

在这里插入图片描述

borrow(借书记录)表 :cno 借书卡号,bno 书号,rdate 还书日期

在这里插入图片描述

代码

alter table borrow
add column bdate datetime;
update borrow
set bdate = date_add(rdate, interval - 2 month)
where cno in
(select cno
from card
where deptName ='机械系');

题解

  • ALTER TABLE borrow ADD COLUMN bdate DATETIME;:这个语句用于在borrow表中添加一个名为bdate的DATETIME类型的列。
  • UPDATE borrow SET bdate = DATE_ADD(rdate, INTERVAL -2 MONTH):这个语句用于更新borrow表中的所有记录,将bdate列的值设置为对应记录的rdate值减去2个月。DATE_ADD()函数用于将时间值加上指定的时间间隔。在这个语句中,使用了负数的时间间隔来表示减去2个月。
  • WHERE cno IN (SELECT cno FROM card WHERE deptName = '机械系'):这个语句用于筛选出card表中所在系别为“机械系”的所有借阅卡号,并将对应的borrow表中的借阅记录的bdate列值设置为对应记录的rdate减去2个月。这个语句中使用了子查询来获取符合条件的卡号。

2、 SQL更新:删除-删除“吴宾”的所有成绩记录

题目

有student、course、sc表;删除“吴宾”的所有成绩记录。

student:

在这里插入图片描述

sc:

在这里插入图片描述

course:

在这里插入图片描述

代码

delete from sc where sno in (select sno from student where sname= '吴宾');

3、SQL查询:查询没有被订购的商品

题目

相关表结构:

1、商品表:product

在这里插入图片描述

2、类别表:category

在这里插入图片描述

3、订单表:order

在这里插入图片描述

4、订单明细:order_detail

在这里插入图片描述

代码

select product_id,product_name,category_id
from product
where product.product_id not in (select order_detail.product_id from order_detail);

4、插入图书信息

题目

将图书信息插入到book表中,其中书号 7, 书名 组合数学, 作者 刘迪, 价格 36.70, 数量 37。

表结构如下:

book(图书) 表:bno 书号,bname 书名,author 作者,price 单价,quantity 库存数

在这里插入图片描述

代码

insert
into book(bno,bname,author,price,quantity)
values('7','组合数学','刘迪','36.70',37);

5、 查询现有图书中价格最高的图书信息

题目

查询现有图书中价格最高的图书(可能不止一种书),输出书名及作者。

表结构如下:

book(图书) 表:bno 书号,bname 书名,author 作者,price 单价,quantity 库存数

在这里插入图片描述

代码

select bname,author
from book
where price = (select max(price) from book);

6、向student表中一次插入多行数据

题目

一次向student表中插入两条记录,其中王大力的系别用缺省值赋值。
两行数据的学号,姓名,性别,年龄和系别分别如下:
9520103,王敏,女,20,信息系;
9520104,王大力,男,19。

student表结构:

在这里插入图片描述

代码

insert into student
values ('9520103','王敏','女',20,'信息系'),
('9520104','王大力','男',19,'计算机系');

7、插入计算机系学生C01课程的选课记录

题目

在sc表中插入计算机系所有学生C01课程的选课记录。

student表结构:

在这里插入图片描述

sc表结构:

在这里插入图片描述

代码

INSERT INTO sc (sno, cno, grade)
SELECT sno, 'C01', NULL
FROM student
WHERE sdept = '计算机系';

8、查询所有人都借阅过的图书信息

题目

查询所有人都借阅过的图书信息,列出书号,书名,作者。

表结构如下:

card(借书卡) 表:cno 卡号,name 姓名,class 班级

在这里插入图片描述

book(图书) 表:bno 书号,bname 书名,author 作者,price 单价,quantity 库存数
在这里插入图片描述

borrow(借书记录)表 :cno 借书卡号,bno 书号,rdate 还书日期

在这里插入图片描述

代码

select b.bno, b.bname, b.author
from book b
where not exists (
  SELECT c.cno
  from card c
  where not exists (
    select *
    from borrow bo
    where bo.cno = c.cno and bo.bno = b.bno
  )
);

题解

  • SELECT b.bno, b.bname, b.author FROM book b:这个语句用于从book表中选取图书编号(bno)、书名(bname)和作者(author)这三个列。
  • WHERE NOT EXISTS (SELECT c.cno FROM card c WHERE NOT EXISTS (SELECT * FROM borrow bo WHERE bo.cno = c.cno AND bo.bno = b.bno)):这个语句是一个嵌套的子查询,用于筛选出所有没有被借阅的图书。具体解释如下:
  • SELECT c.cno FROM card c:这个子查询用于从card表中选取所有的借阅卡号(cno)。
  • WHERE NOT EXISTS (SELECT * FROM borrow bo WHERE bo.cno = c.cno AND bo.bno = b.bno):这个子查询用于判断某个卡号是否借阅了某本图书。如果这个卡号没有借阅某本图书,则返回TRUE,否则返回FALSE。这个子查询中使用了borrow表,通过bo.cno = c.cno和bo.bno = b.bno两个条件将borrow表和card表关联起来。如果这个子查询的结果集为空,则说明某本图书没有被某个借阅卡号借阅,因此这本图书符合条件。
  • WHERE NOT EXISTS:这个语句用于判断是否存在一个记录使得子查询的结果集为空。如果子查询的结果集为空,则NOT EXISTS返回TRUE,否则返回FALSE。因此,这个WHERE子句的作用是筛选出card表中所有没有借阅某本图书的卡号。
  • 最终这个WHERE子句的作用是筛选出不存在没有借阅某本图书的借阅卡号的所有图书记录。也就是说,这个WHERE子句返回的图书记录都是已被所有借阅卡号借出的图书。

9、SQL更新:修改-“张海”的“计算机导论”课程成绩为70。

题目

有student、course、sc表;修改“张海”的“计算机导论”课程成绩为70。

student:

在这里插入图片描述

sc:

在这里插入图片描述

course:

在这里插入图片描述

代码

UPDATE sc
SET grade=70
WHERE sno IN (SELECT sno FROM student WHERE sname='张海')
AND cno IN (SELECT cno FROM course WHERE cname='计算机导论');

10、借了"计算方法",但没有借"计算方法习题集"的读者,输出其借书卡号

题目

查询当前借了"计算方法",但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出。

表结构如下:

book(图书) 表:bno 书号,bname 书名,author 作者,price 单价,quantity 库存数

在这里插入图片描述

borrow(借书记录)表 :cno 借书卡号,bno 书号,rdate 还书日期

在这里插入图片描述

代码

SELECT cno FROM borrow
WHERE bno = (SELECT bno FROM book WHERE bname = '计算方法')
AND cno NOT IN
(SELECT cno FROM borrow WHERE bno = (SELECT bno FROM book WHERE bname = '计算方法习题集'))
ORDER BY cno DESC;

题解

  1. SELECT cno FROM borrow:这个语句用于从borrow表中选取借阅卡号(cno)这一列。
  2. WHERE bno = (SELECT bno FROM book WHERE bname = '计算方法'):这个子查询用于从book表中选取书名为“计算方法”的图书编号(bno),并将borrow表中的bno列值与之进行比较。这个条件筛选出了所有借阅了《计算方法》的借阅记录。
  3. AND cno NOT IN (SELECT cno FROM borrow WHERE bno = (SELECT bno FROM book WHERE bname = '计算方法习题集')):这个子查询用于从book表中选取书名为“计算方法习题集”的图书编号(bno),并从borrow表中筛选出所有借阅了《计算方法习题集》的借阅记录,并将它们的借阅卡号(cno)放入一个子查询中。这个条件使用了NOT IN操作符,将借阅了《计算方法习题集》的借阅卡号从所有借阅了《计算方法》的借阅卡号中排除,从而得到借阅了《计算方法》但是没有借阅《计算方法习题集》的读者卡号。
  4. ORDER BY cno DESC:这个语句用于按照借阅卡号倒序排列查询结果。

11、 SQL查询:查询每个学生高于他自己选修平均分的那门课程的成绩,输出学号,课程号,课程成绩,他所有课程的平均分,并按学号升序排列

题目

学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:

1、student(学生表):

SNO学号CHAR(7)

SNAME姓名CHAR(10)

SSEX性别CHAR(2)

SAGE年龄SMALLINT

SDEPT所在系 VARCHAR(20)

2、course(课程表)

CNO课程号CHAR(10)

CNAME课程名VARCHAR(20)

CCREDIT学分SMALLINT

SEMSTER学期SMALLINT

PERIOD学时SMALLINT

3、sc(选课表)

SNO 学号CHAR(7)

CNO 课程号CHAR(10)

GRADE 成绩 SMALLINT

代码

SELECT sc.sno,cno,grade,avggrade 
FROM sc,(SELECT sno,ROUND(AVG(grade)) AS avggrade FROM sc GROUP BY sno) AS avg_sc
WHERE sc.sno=avg_sc.sno AND sc.grade>avg_sc.avggrade
ORDER BY sc.sno;

题解

  1. SELECT sc.sno, cno, grade, avggrade:这个语句用于从sc表中选择学号(sno)、课程号(cno)、成绩(grade)以及该学生的平均成绩(avggrade)这四个列。
  2. (SELECT sno,ROUND(AVG(grade)) AS avggrade FROM sc GROUP BY sno) AS avg_sc:这个子查询用于计算每个学生的平均成绩。首先,使用AVG函数计算出每个学生的平均成绩,并使用ROUND函数将结果四舍五入为整数。然后,使用GROUP BY子句将结果按照学号分组,并将结果作为一个子查询命名为avg_sc。
  3. WHERE sc.sno=avg_sc.sno AND sc.grade>avg_sc.avggrade:这个WHERE子句用于将sc表和avg_sc子查询连接起来,并筛选出那些成绩高于该学生平均成绩的记录。具体来说,将avg_sc子查询的结果集中的每个记录与sc表中的记录进行比较,如果学号相同且成绩高于平均成绩,则将该记录包含在查询结果中。
  4. ORDER BY sc.sno:这个语句用于按照学号升序排列查询结果。

12、插入新的部门记录

题目

插入一个新的部门记录:部门编号-1009;部门名称-“培训部”

在这里插入图片描述

代码

insert into department(dept_id,dept_name)
value ("1009","培训部");

13、修改编号33的“安志杰”的部门编号为1005,职位为“业务员”。

题目

在这里插入图片描述

代码

update employee
set dept_id = 1005,job_title = "业务员"
where employee_id = 33;

14、查询计算机系平均成绩前三名的学号,姓名、平均成绩

题目

有课程表,学生表,成绩表如下,查询计算机系平均成绩前三名的学号,姓名、平均成绩。

course

列名数据类型约束说明
cnochar(4)主键非空课程号
cnamevarchar(40)非空课程名
cpnochar(4)参照course(cno)先修课
ccredittinyint学分

student

列名数据类型约束说明
snochar(7)主键非空学号
snamechar(10)非空学生姓名
ssexenum(‘男’,‘女’)默认‘男’性别
sagetinyint年龄
sdeptchar(20)默认’计算机系’系别

sc

列名数据类型约束说明
snochar(7)主键非空,参照student(sno)学号
cnochar(4)主键非空,参照course(cno)课程号
gradedecimal(5,1)成绩
ccredittinyint

代码

select student.sno,sname,avg(grade)
from student,sc
where student.sno=sc.sno and sdept = "计算机系"
group by student.sno
order by avg(grade) desc
limit 3;

题解

  1. 使用 SELECT 子句选择要查询的字段,包括学生表的学生编号(sno)和学生姓名(sname),以及选课表的成绩(grade)的平均值(avg(grade))。
  2. 使用 FROM 子句指定要查询的表格,即学生表和选课表。
  3. 使用 WHERE 子句指定查询条件,即学生表的专业是计算机系(sdept = “计算机系”)并且学生表和选课表之间的学生编号相同(student.sno=sc.sno)。
  4. 使用 GROUP BY 子句按照学生编号对结果进行分组,以便计算每个学生的平均成绩。
  5. 使用 ORDER BY 子句按照平均成绩降序排序,以便找到平均成绩排名前三的学生。
  6. 使用 LIMIT 子句限制结果集大小为三,以便只返回平均成绩排名前三的学生记录。

15、SQL查询:查询人员信息:包括员工和客户

题目

查询人员信息:包括员工和客户。(员工数据在前)

输出“id”、“name”、“type”,若为员工,type为“员工”,若为客户,type为“客户”。

员工表:employee

在这里插入图片描述

客户表:customer

在这里插入图片描述

查询输出形式如下:

在这里插入图片描述

代码

select employee_id,employee_name,"员工" as "type" from employee
union 
select customer_id,customer_name,"客户" as "type" from customer;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/411192.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CMake GUI工具使用 MinGW 64构建工程

系列文章目录 文章目录系列文章目录前言一、open Project是灰色?前言 CMake GUI 打开 CMake GUI。 在 “Where is the source code” 字段中,选择 Krita 源代码目录:E:/krita-dev/krita。 在 “Where to build the binaries” 字段中&#x…

9.Java面向对象----封装

Java面向对象—封装 面向对象简称 OO(Object Oriented),20 世纪 80 年代以后,有了面向对象分析(OOA)、 面向对象设计(OOD)、面向对象程序设计(OOP)等新的系统…

Python 小型项目大全 26~30

二十六、斐波那契 原文:http://inventwithpython.com/bigbookpython/project26.html 斐波那契数列是一个著名的数学模式,被认为是 13 世纪意大利数学家斐波那契的杰作(尽管其他人发现它的时间更早)。序列从 0 和 1 开始&#xff0…

SAR ADC系列16:CDAC上机实践+作业

目录 作业和上机实践: 通过仿真确定桥接电容Ca的尺寸 采样技术和CDAC相结合 电容校正 为什么在100...0和011...1之间最差:电容的瓶颈在MSB上面 为什么INL最差也发生在中间Code 其他问题 频谱混叠 上级板采样网络时序问题 共模相关问题 关于V…

数据库----------约束、主键约束

目录 1.简介 1.概念 2.作用 3.分类 2.主键约束 1.概念 2.操作 1.添加单列主键 2.添加多列联合主键 3. 通过修改表结构添加主键 4.删除主键 1.简介 1.概念 约束英文: constraint 约束实际上就是表中数据的限制条件 2.作用 表在设计的时候加入约束的目的就是为了…

系统无损迁移、硬盘系统复制完整教程(常用于升级更大硬盘的场景)

阿酷TONY / 2023-4-15 / 长沙 这个教程的应用背景或场景是这样的: 原本使用的ThinkPad笔记本电脑是250G的SSD固态硬盘,使用了一两年后,空间不足了,这个时候需要换一块500G或更大的SSD硬盘,那么问题来了,通…

人员跌倒识别检测系统 yolov7

人员跌倒识别检测系统通过PythonYOLO7网络模型算法,人员跌倒识别检测算法模型对现场画面中有人员倒地摔倒行为实时分析预警,发现则立即抓拍存档告警同步提醒后台值班人员及时处理。YOLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队…

(十二)排序算法-插入排序

1 基本介绍 1.1 概述 插入排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。 插入排序的工作方式非常像人们排序一手扑克牌一样。开始时,我们的左手为空并且桌子上的牌面朝下。然后,…

Flink处理大型离线任务稳定性与性能调优探索

Apache Flink作为分布式处理引擎,用于对无界和有界数据流进行状态计算。其中实时任务用于处理无界数据流,离线任务用于处理有界数据。通过本文你将掌握让大型离线任务运行稳定的能力,同时能够通过分析离线任务运行特点,降低任务运…

150.网络安全渗透测试—[Cobalt Strike系列]—[DNS Beacon原理/实战测试]

我认为,无论是学习安全还是从事安全的人多多少少都会有些许的情怀和使命感!!! 文章目录一、DNS Beacon原理1、DNS Beacon简介2、DSN Beacon工作原理二、DNS Beacon实战测试1、实战测试前提2、实战测试过程一、DNS Beacon原理 1、…

大数据分析工具Power BI(三):导入数据操作介绍

导入数据操作介绍进入PowBI,弹出的如下页面也可以直接关闭,在Power BI中想要导入数据需要通过Power Query 编辑器,Power Query 主要用来清洗和整理数据。文件资料下载:https://download.csdn.net/download/xiaoweite1/87587711一、…

Wijmo JavaScript UI 5.20222.877 Crack

Wijmo使用更快、更灵活的 JavaScript UI 组件构建更好的应用程序 使用 Wijmo,利用我们引人注目的 UI 组件库,将更多时间花在应用程序的核心功能上。要求零依赖,Wijmo sports弹性网格,业内最好的 JavaScript 数据网格,提…

JVM性能调优方法和模板

每天 100 万次登陆请求,8G 内存该如何设置 JVM 参数,大概可以分为以下 8 个步骤 。 第一步、新系统上线如何规划容量? 1. 套路总结 任何新的业务系统在上线以前都需要去估算服务器配置和 JVM 的内存参数,这个容量与资源规划并不…

关于 AI ,大家关心的问题

阅读本文大概需要 1.46 分钟。兄弟们,自从我跟曹老师准备合伙做一个 AI 生态的新社群之后,很多人问我最多的问题就是:AI 时代对我们普通人来说意味着什么?普通人又该如何去把握 AI 时代的机会?那么,今天&am…

nodejs+vue家庭菜谱食谱管理系统

目 录 摘 要 I ABSTRACT I 目 录 III 第1章 绪论 1 1.1开发背景 1 1.2开发意义 1 1.3研究内容 1 第2章 主要技术和工具介绍 5 第3章 系统分析 4 3.1可行性分析 4 3.1.1经济可行性 4 3.1.2技术可行性 4 3.1.3操作可行性 4 3.2需求分…

【云原生】k8s Ingress 实现流量路由规则控制

文章目录前言什么是 IngressIngress 的定义格式Ingress 的类型有哪几种?1. Simple fanout2. Name-based virtual hosting3. Path-based routing该如何实现更新 IngressIngress ControllerIngress Class总结前言 在 Kubernetes 中,Ingress 是一个非常重要…

【数据结构与算法分析inC-MarkAllen】1-数学基础

文章目录1. 第一章1.1 进行算法分析目的1.1.1 适应大量数据情况从 NNN 个数中选择第 kkk 大的数递减排序,取第K大的数插入排序思想1.1.2 边界条件正确1.2 数学知识复习1.2.1 指数1.2.2 对数1.2.3 级数几何级数算术级数1.2.4 模运算性质1.2.5 证明方法归纳法斐波那契…

CRM系统和ERP管理系统二者有何区别?

我们常提到的企业管理系统有CRM系统和ERP管理系统,那么二者有何区别呢? 一、目的。 CRM客户关系管理系统主要的目的是已客户关系的建立、发展以及维护。ERP系统主要强调的业务目的是未来提高整个业务的生产力。 二、重点。 …

回顾|伍鸣博士出席《华人之光-世界瞩目的华人 Web3 项目》圆桌论坛

*本文节选自Foresight News《华人之光——世界瞩目的华人 Web3 项目》的圆桌论坛由 Foresight Ventures 与 Foresight News 联合主办的「FORESIGHT 2023 」年度峰会上,在《华人之光——世界瞩目的华人 Web3 项目》的圆桌论坛中,Conflux Co-Founder 伍鸣、…

LiveData数据倒灌?你真的用对了吗?源码解析

文章目录livedata/lifecycleandroidx-lifecycle基本使用uml-关键角色关系观察者模式关键源码分析livedata基本使用源码分析还是从observe开始livedata变化通知观察者viewmodel源码分析FAQlifecycle用到的设计模式lifecycle是如何监听aty生命周期的一些废弃和原因为什么废弃注解…