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

news2024/11/20 13:35:14

数据更新

数据库中的数据更新操作有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 S
     SET SAGE = 23
     WHERE SNO = '21670166';
#显示修改后的表
SELECT *FROM S;

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

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

运行结果如下;

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

UPDATE SC 
     SET GRADE=0
     WHERE SNO IN (
     		     SELECT SNO FROM S
     			 WHERE 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 S
			  WHERE 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)
     AS
     SELECT DISTINCT S.SNO,SNAME,SAGE
     FROM S,SC
     WHERE SDEPT = 'CS' AND CNO = '2';
#省略组成视图的所有列名

在这里插入图片描述

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

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

相关文章

提升项目沟通效果的核心方法

项目沟通是项目管理中的核心之一&#xff0c;项目成败的关键因素之一就是项目团队之间的沟通效果。良好的项目沟通可以增强团队的合作力和凝聚力&#xff0c;确保项目按时完成&#xff0c;达成项目目标。那么提升项目沟通效果的方法有哪些呢&#xff1f;。1、制定沟通计划 在项…

JAVAWeb06-动态WEB开发核心Servlet-01

1. 概述 1.1 官方文档 地址: https://tomcat.apache.org/tomcat-8.0-doc/servletapi/index.html 1.2 Servlet 和 Tomcat 的关系 一句话, Tomcat 支持 Servlet&#xff08;谁也不能离开谁&#xff09; 1.3 为什么会出现 Servlet 提出需求: 请用你现有的html css javascrip…

PS封装格式:GB28181协议RTP传输

在安防行业&#xff0c;有个协议是无论如何都要适配的&#xff0c;因为公安监控网络用的就是它&#xff0c;它就是&#xff1a;GB28181。而这份协议主要由海康制定&#xff0c;所以除了海康其他厂商想要适配都会少许有点儿麻烦。 1. GB28181要求的RTP流格式     首先&…

Ansible 进阶

模块应用 firewalld模块 可以配置防火墙策略 [rootcontrol ~]# vim ~/ansible/firewall.yml --- - hosts: test #hosts定义需要远程的主机tasks: #tasks定义需要执行哪些任务- name: install firewalld. …

ChatGPT已过时?Auto-GPT迅速走红,无需人类插手自主解决复杂任务,GitHub标星5万

来源: AI前线 微信号&#xff1a;ai-front 作者 | Luke Larsen ChatGPT 之所以能风靡全球&#xff0c;很大程度上要归功于其简单的功能框架。作为一款 AI 聊天机器人&#xff0c;它唯一的作用就是生成令人信服的自然语言文本、顺畅回应用户的提问。 但 AI 聊天机器人的使用体…

大数据分析案例-基于XGBoost算法预测航空机票价格

🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 喜欢大数据分析项目的小伙伴,希望可以多多支持该系列的其他文章 大数据分析案例合集…

实在智能获评十大数字经济风云企业,2022余杭数字经济“群英榜”发布

4月17日&#xff0c;经专家评审、公开投票&#xff0c;由中共杭州市余杭区委组织部&#xff08;区委两新工委&#xff09;、中共杭州市余杭区经济和信息化局委员会主办评选的2022年度余杭区数字经济“群英榜”正式公示。其中&#xff0c;实在智能成功获评十大数字经济风云企业之…

cocoscreator性能优化4-Sprite颜色数据去除

前言 Sprite是游戏内容的一个基本组成元素&#xff0c;包括ui、道具、立绘等各种地方都会用到。大部分情况下美术会帮我们调好图片颜色&#xff0c;我们只要把图片直接放到游戏里就行了。Sprite默认的渲染顶点数据中包含了颜色数据&#xff0c;由于我们并不需要去修改颜色&…

【Python】AttributeError: ‘list‘ object has no attribute ‘corr‘

一、问题描述 在绘制相关分析热力图的时候&#xff1a; import seaborn as sns to_corr [Age, Income, Kidhome, Teenhome, Recency, Complain, MntWines, MntFruits, MntMeatProducts, MntFishProducts, MntSweetProducts, MntGoldProds, NumDealsPurchases, AcceptedCmp1,…

如何将 Spire.Doc for C++ 集成到 C++ 程序中

Spire.Doc for C 是一个专业的 Word 库&#xff0c;供开发人员在任何类型的 C 应用程序中阅读、创建、编辑、比较和转换 Word 文档。 本文演示了如何以两种不同的方式将 Spire.Doc for C 集成到您的 C 应用程序中。 通过 NuGet 安装 Spire.Doc for C通过手动导入库安装 Spire.…

tomcat配置虚拟主机

文章目录 tomcat配置虚拟主机环境修改tomcat主配置文件server.xml配置配置虚拟主机目录以及文件重新启动tomcat修改windows的hosts文件浏览器测试 tomcat配置虚拟主机 环境 java version “1.8.0_261”Server version: Apache Tomcat/8.5.20 修改tomcat主配置文件server.xml…

缺省参数-函数重载

缺省参数 缺省参数是声明或定义函数时为函数的参数指定一个默认值 有什么用&#xff1f; 更加灵活的增加默认值&#xff0c;或者手动给一个初始值&#xff0c;解决了C语言#define给死一个值的缺陷&#xff0c;C语言无法做到缺省参数这么灵活 struct Stack {int* a;int top;in…

北邮22信通:(13)第三章 3.4 串的实现 KMP算法

北邮22信通一枚~ 跟随课程进度每周更新数据结构与算法的代码和文章 持续关注作者 解锁更多邮苑信通专属代码~ 上一篇文章&#xff1a; 下一篇文章&#xff1a; ***说明*** 1.本代码结合书上第二章线性表和4.3.3KMP算法结合书写。 2.加快匹配速度的根本原因&#xff1…

行业分析| 新的学习方式——在线自习室

互联网技术在快速革新中不断推动新应用、新场景、新模式和新业态的发展融通&#xff0c;如近年来不断催生的游戏直播、直播带货、户外直播等网络生态。随着互联网用户逐年增多&#xff0c;年轻化趋势明显&#xff0c;互联网直播内容逐渐向生活化、日常化拓展&#xff0c;加之“…

Linux 防火墙常用命令

目录 前文叙述 Linux 找不到 firewall 命令 firewalld 常用管理命令 firewall-cmd 常用命令参数说明 前文叙述 Linux 防火墙默认为开启状态&#xff0c;生产环境下 Linux 防火墙也肯定是开启状态。因此在生产环境下往往是开放特定端口让外部进行连接使用。 Linux 找不到 fir…

数字化时代,企业为什么越来越重视数据分析

自数据成为第五大生产要素后&#xff0c;其价值得到了越来越多企业的认可&#xff0c;也成为了各行各业企业的重要的资产。而信息化建设在企业中的发展更是给了数据增长的机会&#xff0c;随着业务信息系统在企业中成为基础建设&#xff0c;众多企业都通过业务系统沉淀了大量业…

JSP的基本使用总结

JSP的基本使用总结 &#x1f3e0;个人主页&#xff1a;shark-Gao &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是shark-Gao&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f389;目前状况&#xff1a;23届毕业生&#xff0c;目前在…

海睿思分享 | 风控监管,守住企业生命线

1 企业如何应对市场风险 随着市场形势日益严峻&#xff0c;企业风险系数也在同步增加&#xff0c;一旦风险管理出现重大问题&#xff0c;将是致命的、灾难性的&#xff0c;可能导致企业出现生存危机。 风控监管的主要目的在于通过对各类风险进行识别、分析、监控&#xff0c…

【java web篇】MyBatis之Mapper代理

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…

MacOS版本RedisDesktopManager源码编译

1. 克隆 : git clone --recursive https://github.com/RedisInsight/RedisDesktopManager.git 查看依赖模块: git submodule 编译注意事件,部分源码的子仓库依赖没有下载完整的,要手动下载 brotli子模块 编译brotli子模块 $ mkdir out && cd out $ ../configure-c…