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

用SQL语句操作Oracle数据库——数据更新

数据更新

数据库中的数据更新操作有3种:1)向表中添加若干行数据(增);2)删除表中的若干行数据(删);3)修改表中的数据(改)。对于这3种操作,SQL语言中有3种相应的语句与之对应。接下来让我们逐一详细地了解一下。


本文我们依然使用以下三个表来进行数据更新操作:

TABLE1:
S(学生基本信息表)

在这里插入图片描述
TABLE2:
C(课程表)
在这里插入图片描述
TABLE3:
SC(学生选修课程信息表)
在这里插入图片描述


①插入数据:

***SQL的数据插入语句INSERT通常有两种形式:一种是插入一个元组;另一种是插入子查询结果(即一次插入多个元组)。两种形式在语法格式上稍有有差别: ***

1)插入元组:

INSERT INTO 表名 (你所指定的属性列名) VALUES(写入属性列中的值)

<注意:>如果在INTO子句后没有显式地指定属性列名,那么在VALUES后写入属性列中的值时,必须依据你正在操作的表的所有属性列的排列顺序及数据类型,依次写入。特别地,如果在某一属性列中没有写入任何值,那也必须显式的写入NULL 。如果在INTO子句后显式地指定属性列名,那么在VALUES后写入属性列中的值时 ,则只需依据你指定的列名顺序,依次写入值即可。此时,如果在某一属性列中没有写入任何值,则无需显式的写入NULL,系统会自动填写。

例1:

将一个新学生元组(学号:21670166,姓名:小米,性别:女,系别:CS, 年龄:23)插入到S表中。

INSERT INTO S (SNO,SNAME,SSEX,SDEPT,SAGE)
VAALUES('21670166','小米','女','CS',23);#等价写法(省略列名):
INSERT INTO S
VALUES('21670166','小米','女','CS',23);
#注意,VALUES 子句对新元组的各属性赋值,字符串常数要用单引号括起来。

插入数据前后对比:
在这里插入图片描述


2)插入子查询结果:
子查询不仅可以嵌套在SELECT语句中用于构建父查询条件,也可以嵌套在INSERT语句中用以生成要插入的批量数据。
插入子查询的语法格式:
INSERT INTO 表名(属性列)
子查询;
说明:与一次插入一个元组的格式相比,没有了VALUES子句。
例1:
对于每一个系,求学生的平均年龄,并把结果存入数据库。

#建立一个新表,存放系名和平均年龄
CREATE TABLE DEPT_AGE(
SDEPT CHAR(10),
AVG_AGE NUMBER(3,1));
#往新表中批量插入子查询结果
INSERT 
INTO DEPT_AGE
SELECT SDEPT,AVG(SAGE)
FROM S
GROUP BY SDEPT;

运行结果如下:
在这里插入图片描述


②修改数据:

修改操作又称为更新操作,其语句的一般格式如下为:
UPDATE 表名
SET 列名1 = 表达式1,列名2 = 表达式2···
WHERE (条件);
说明:UPDATE语句的功能是修改,指定表中满足 WHERE子句条件的元组,其中SET子句用列名后的表达式的值取代相应的属性列的原有值,如果缺省WHERE子句条件约束,则会修改表中的所有元组。
1)修改一个元组的值:
例1:
将学号为21670166的学生的年龄改为23岁。

UPDATE SSET SAGE = 23WHERE SNO = '21670166';
#显示修改后的表
SELECT *FROM S;

运行结果如下;
在这里插入图片描述
2)修改多个元组的值:
例2:
所有男生的年龄增加一岁。

UPDATE S
SET SAGE = SAGE =1
WHERE SSEX = '男';

运行结果如下;

在这里插入图片描述
3)带子查询的修改语句:
子查询也可以嵌套在UPDATE语句中,用以构造修改的条件。
例1:
将计算机系的学生的成绩置为0。

UPDATE SC SET GRADE=0WHERE SNO IN (SELECT SNO FROM SWHERE SDEPT = 'CS');

运行结果如下:
在这里插入图片描述


③删除数据

***删除数据可以用DELETEDROP语句,但二者具有本质上的区别,DELETE语句的功能是删除指定表中的满足WHERE子句条件的元组(如果WHRER缺省,则删除表中的所有元组,但表的定义任然存在于字典中。换句话说,就是将表中的内容清空);而DROP语句则会将表中的内容和表的定义一并删除,(换句话说,就是彻底地删除,表不复存在)。
删除语句的一般格式:
DELETE
FROM 表名
WHERE 条件;
1)删除一个元组:

#删除学号为21670166的学生元组
DELETE 
FROM S
WHERE SNO LIKE '21670166';

2)删除多个元组:

#删除女学生元组
DELETE 
FROM S
WHERE SSEX = '女';

3)带子查询的删除语句:

#删除计算机系所有男学生的选课记录
DELETE
FROM SC
WHERE SNO IN (SELECT SNO FROM SWHERE SDEPT = 'CS' AND SSEX = '男');

提示:
在命令行界面使用SQL语句更新数据库中的表的相关数据时,一定不要忘记在修改操作做完后,时常添加COMMIT语句,该语句会将你的修改操作提交,这样才会达到真正对数据进行修改的目的。


接下来我们来介绍一个从基本表中衍生出来的新概念———

视图(view)

视图是从一个或几个基本表(或视图)导出的表,它与基本表不同,是一个<虚表>。
数据库中只存放视图的定义,而不存放视图的数据,这些数据仍存放在原来的基本表中。一旦基本表中的数据发生改变,从视图中查询出的数据也会随之改变。从这个意义上讲,视图就像是一个窗口,透过它可以选择性的看到数据库中自己感兴趣的数据及其变化。
视图一经定义,就可以和基本表一样被查询、删除。也可已在一个视图上再定义一个新的视图,但对视图的(增、删、改)有一定限制,本文不做过多讲解,重点讨论视图的建立与查询。
①定义视图
1)建立视图:
SQL语言使用CREATE VIEW命令创建视图,一般格式如下:
CREATE VIEW 视图名(列名1,列名2,···)
AS 子查询
WITH CHECK OPTION;
说明:AS后的子查询可以是任意的 SELECT语句,是否可以含有ORDER BY 子句和DISTINCT短语,则取决于具体的系统实现。WITH CHCK OPTION表示对视图进行UPDATEINSERTDELETE操作时要满足视图定义中的谓词条件(即子查询中WHERE子句后的条件表达式)。
例1:
建立计算机系学生的视图.

CREATE VIEW CS_SUTDENT
AS
SELECT SNO,SNAME,SAGE
FROM S
WHERE SDEPT = 'CS';

运行结果如下:
在这里插入图片描述

上例中省略了视图CS_STUDENT的列名,隐含了由子查询SELECT语句中的三个列名组成。值得高度注意的是,在以下三种情况下,需明确指定组成视图的所有列名:
1.某个目标列不是单纯的属性名,而是聚集函数或列表达式;(注意:此种情况仍可省略视图的列名,只需在子查询中对该聚集函数表达式取别名即可)
2.多表连接时出现了几个同名的列作为视图的字段;
3.明确规定需要在视图中为某个列取指定的名字;
举个栗子:
建立计算机系选修了2号课程的学生的视图,包括(学号、姓名、年龄、成绩)。

#明确指定组成视图的所有列名
CREATE VIEW CS_S2(SNO,SNAME,SAGE)ASSELECT DISTINCT S.SNO,SNAME,SAGEFROM S,SCWHERE SDEPT = 'CS' AND CNO = '2';
#省略组成视图的所有列名

在这里插入图片描述

相关文章:

用SQL语句操作Oracle数据库——数据更新

数据更新 数据库中的数据更新操作有3种&#xff1a;1)向表中添加若干行数据&#xff08;增&#xff09;&#xff1b;2&#xff09;删除表中的若干行数据&#xff08;删&#xff09;&#xff1b;3&#xff09;修改表中的数据&#xff08;改&#xff09;。对于这3种操作&#xf…...

二维码+互联网云技术在中建二局施工项目管理中的应用实践

中建二局&#xff08;全称&#xff1a;中国建筑第二工程局有限公司&#xff09;是世界500强企业—中国建筑股份有限公司的全资子公司&#xff0c;是集房建、基建、核电、火电、风电等多种建设和投资相融合的、国内最具综合实力的大型国有企业集团公司。中建二局具有土木建筑、设…...

扩散模型原理记录

1 扩散模型原理记录 参考资料&#xff1a; [1]【54、Probabilistic Diffusion Model概率扩散模型理论与完整PyTorch代码详细解读】 https://www.bilibili.com/video/BV1b541197HX/?share_sourcecopy_web&vd_source7771b17ae75bc5131361e81a50a0c871 [2] https://t.bili…...

Metasploit高级技术【第九章】

预计更新第一章 Metasploit的使用和配置 1.1 安装和配置Metasploit 1.2 Metasploit的基础命令和选项 1.3 高级选项和配置 第二章 渗透测试的漏洞利用和攻击方法 1.1 渗透测试中常见的漏洞类型和利用方法 1.2 Metasploit的漏洞利用模块和选项 1.3 模块编写和自定义 第三章 Met…...

RK3568平台开发系列讲解(调试篇)IS_ERR函数的使用

🚀返回专栏总目录 文章目录 一、IS_ERR函数用法二、IS_ERR函数三、内核错误码沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 IS_ERR 函数的使用。 一、IS_ERR函数用法 先看下用法: 二、IS_ERR函数 对于任何一个指针来说,必然存在三种情况: 一种是合…...

TouchGFX界面开发 | TouchGFX软件安装

TouchGFX软件安装 TouchGFX和STemWin类似&#xff0c;都是一个GUI框架&#xff0c;可以方便的在STM32 Cortex-M4 以及更高级别的STM32芯片上创建GUI应用程序。 本文中的TouchGFX软件安装&#xff0c;是基于已经安装有STM32CubeMX Keil MDK-ARM开发环境的情况下进行的&#x…...

使用 IDEA 远程 Debug 调试

背景 有时候我们需要进行远程的debug&#xff0c;本文研究如何进行远程debug&#xff0c;以及使用 IDEA 远程debug的过程中的细节。看完可以解决你的一些疑惑。 配置 远程debug的服务&#xff0c;以springboot微服务为例。首先&#xff0c;启动springboot需要加上特定的参数。…...

红黑树和平衡二叉树的优缺点及应用场景

红黑树和平衡二叉树都是为了解决二叉搜索树的缺陷而提出的自平衡二叉树结构。它们的优缺点和应用场景如下: 红黑树: 优点: 时间复杂度为O(logN),可以快速查找、插入和删除。 红黑树具有良好的平衡性,树的高度保持较小,因此查找效率较高。 缺点: 实现比较复杂,需要遵守红黑树的…...

软文推广:真实有效提升软文排名与收录的三大方法!

软文是一种具有良好传播效果的文体&#xff0c;可以通过在搜索引擎中排名靠前的方式&#xff0c;为品牌或企业带来更多曝光。但是&#xff0c;如何让软文在搜索引擎中得到更好的收录和排名呢&#xff1f;在本文中&#xff0c;我们将讨论如何提升软文的收录和排名&#xff0c;以…...

SElinux的介绍及配置

SELinux(Security-Enhanced Linux) 是美国国家安全局&#xff08;NSA&#xff09;对于强制访问控制的实现&#xff0c;是 Linux历史上最杰出的新安全子系统 SELinux安全增强型Linux系统&#xff0c;是Linux内核子系统&#xff0c;旨在最大限度的减少服务进程对文件、端口等资源…...

vscode-python环境配置

vscode-python环境配置 1、环境基础 下载vscode找到python插件并安装安装python环境并配置环境变量 2、选择python解释器 尝试执行了一下&#xff0c;直接运行py文件&#xff0c;会使用c的调试工具&#xff0c;需要告诉vscode哪些是python Ctrl Shift P打开命令面板 执行…...

问卷调查样本量的确定方法

我们在进行问卷调查的时候&#xff0c;问卷的收集数量是重要的流程之一。问卷数量取决于几个因素&#xff0c;包括研究的目的和研究的类型。接下来&#xff0c;我们就聊一聊怎么确定所需的调查问卷数量。 1、确定研究目标。 确定所需问卷数量的第一步是明确研究目标。这一步是…...

ios客户端学习笔记(三):学习Swift的设计模式

设计模式是指在软件开发中常用的一些解决问题的方法和思想&#xff0c;它可以帮助你更好地组织代码和提高代码的可维护性。你需要学习常见的设计模式&#xff0c;如MVC、MVVM、单例模式、工厂模式等&#xff0c;在开发应用程序时应用它们。 当你学习常见的设计模式时&#xff…...

406. 根据身高重建队列

假设有打乱顺序的一群人站成一个队列&#xff0c;数组 people 表示队列中一些人的属性&#xff08;不一定按顺序&#xff09;。每个 people[i] [hi, ki] 表示第 i 个人的身高为 hi &#xff0c;前面 正好 有 ki 个身高大于或等于 hi 的人。 请你重新构造并返回输入数组 peopl…...

ESP32使用ESP-NOW协议实现一对多通信和MAC地址存储

目录 介绍ESP-NOW 协议概述在 ESP32 上配置 ESP-NOW使用 ESP-NOW 进行一对多通信在 ESP32 上存储发件人的 MAC 地址代码结论 介绍 ESP32 是一款功能强大的 Wi-Fi 和蓝牙双模模块&#xff0c;可用于使用 ESP-NOW 协议实现低功耗、高效率的一对多通信。本文将介绍如何使用ESP-NO…...

Qt 学生信息数据库管理

1 添加样式表 我们采用了样式表 通过添加Qt resources文件 添加前缀 添加文件&#xff0c;将我们的图标进行添加 2 拖动部件 用到的部件 Label 标签Pushbutton 按钮table view 视图LineEdit 输入框 3 程序编写 1 配置sql环境 在 pro文件中 添加 连接数据库跟访问数据…...

相量的加减乘除计算

相量的加减乘除计算 矢量是物理学中的术语&#xff0c;是指具有大小&#xff08;magnitude&#xff09;和方向的量。如速度、加速度、力等等就是这样的量。向量是数学中的术语&#xff0c;也称为欧几里得向量、几何向量、矢量。与向量对应的量叫做数量&#xff0c;在物理学中称…...

JavaScript 代码整洁之道

文章目录 概述篇变量篇函数篇注释篇异常处理篇复杂判断函数篇重构篇代码风格常量大写先声明后调用注释 参考资料 概述篇 书写能让人读懂的代码使用英语编写代码团队协作 制定通用的规则&#xff0c;依靠工具让团队的代码风格保持统一&#xff0c;要让代码看起来是由一个人编写…...

socket 及 字节序转换(嵌入式学习)

socket 及 字节序转换 socket简介Socket为什么需要Socket&#xff1f;socket类型Socket通信模型 字节序主机字节序到网络字节序网络字节序到主机字节序IP地址转换 socket简介 1、1982 - Berkeley Software Distributions 操作系统引入了socket作为本地进程之间通信的接口 2、1…...

Java之~ Aop自定义注解日志

大纲步骤&#xff1a; 一&#xff0c;创建需要记录的日志表&#xff0c;创建基础方法。&#xff08;省略&#xff09; 二&#xff0c;在需要加记录日志的方法上加Aop注解1&#xff0c;创建一个注解类&#xff0c;Aop中定义一个注解import java.lang.annotation.*; /*** http 请…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥&#xff0c;再multisim中选择FWB&#xff0c;就有各种型号的电桥: 电桥是用来干嘛的呢&#xff1f; 它是一个由四个二极管搭成的“桥梁”形状的电路&#xff0c;用来把交流电&#xff08;AC&#xff09;变成直流电&#xff08;DC&#xff09;。…...