用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 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';
#省略组成视图的所有列名

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

seleniumUI自动化登录失败案例重新尝试WhileTrue

一个用户每次登录失败&#xff0c;失败N次&#xff0c;无法进入下一url时&#xff0c;怎样会重新尝试N次重新登录呢 &#xff1f; 我们可以使用wihile true判断&#xff0c;并使用currenturl判断&#xff0c;下面就介绍以下个人的方法 currenturlEGTconfigFile.driver.curren…

学系统集成项目管理工程师(中项)系列11b_沟通管理(下)

1. 沟通过程的有效性 1.1. 效果 1.1.1. 在适当的时间、适当的方式、信息被准确的发送给适当的沟通参与方&#xff08;信息的接收方&#xff09;&#xff0c;并且能够被正确的理解&#xff0c;最终参与方能够正确的采取行动 1.2. 效率 1.2.1. 强调的是及时提供所需的信息 2…

深度学习 - 43.SeNET、Bilinear Interaction 实现特征交叉 By Keras

目录 一.引言 二.SENET Layer 1.简介 2.Keras 实现 2.1 Init Function 2.2 Build Function 2.3 Call Function 2.4 Test Main Function 2.5 完整代码 三.BiLinear Intercation Layer 1.简介 2.Keras 实现 2.1 Init Function 2.2 Build Function 2.3 Call Functi…

使用AI优化慢SQL,开发秒变DBA

“AI不会替代他们&#xff0c;但善用AI的人会” 慢 SQL 经常会让应用程序响应变慢&#xff0c;轻者影响用户体验&#xff0c;严重的时候可能会导致服务不可用。如果&#xff0c;每次遇到慢 SQL 都求助于 DBA&#xff0c;一方面效率很低&#xff0c;另一方面也会很没面子。所以…

聊聊如何通过APT+AST来实现AOP功能

前言 如果有使用过spring aop功能的小伙伴&#xff0c;应该都会知道spring aop主要是通过动态代理在运行时&#xff0c;对业务进行切面拦截操作。今天我们就来实现一下如何通过APTAST在编译期时实现AOP功能。不过在此之前先科普一下APT和AST相关内容 APT&#xff08;注解处理…

openEuler-linux下部署zabbix-超级详细

一、准备工作 下载&#xff1a;zabbix包 地址&#xff1a;下载Zabbix 准备2台openEuler-linux虚拟机&#xff1a; linux-1&#xff1a;当服务器端 IP地址&#xff1a;192.168.100.100 修改hosts文件 [rootzbx ~]# vim /etc/hosts 192.168.100.100 zbx.xx.cn linux-2&…

[Java]JavaWeb开发中的MVC设计模式

一、有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet&#xff0c;如何编写jsp及如何更新浏览器中显示的内容。但是我们之前自己编写的应用一般存在无条理性&#xff0c;对于一个小型的网站这样的编写没有任何问题&#xff0c;但是一但…

ETL工具-pentaho企业实战部署

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

TinyOS 配置教程

系列文章目录 TinyOS 系列文章【一】&#xff1a;TinyOS 配置教程 TinyOS 系列文章【二】&#xff1a;Tossim 教程 文章目录 系列文章目录前言1. 安装1.1. 实验环境1.2. TinyOS基础工作1.3. TinyOS 的配置1.4. 安装 java1.5. 安装编译器 2. 测试仿真程序总结 前言 本文主要用…

kafka集群搭建

1.本次搭建涉及3台centos7主机&#xff0c;防火墙与selinux服务均关闭 2.主机参数如下表所示 nameIPportserviceA10.1.60.1122128、2888、3888、9092kafka、zookeeperB10.1.60.1142128、2888、3888、9092kafka、zookeeperC10.1.60.1152128、2888、3888、9092kafka、zookeeper…

让人悲观的国内ChatGPT的未来

最近关于ChatGPT的火爆已经不是简单的AI圈的事了&#xff0c;它已经席卷了所有的IT、媒体圈子&#xff0c;甚至是不同领域不同行业的人&#xff0c;只要你还对于变化与AI有一定的了解&#xff0c;那我相信你一定能知道ChatGPT是什么了。ChatGPT在某种程度上已经是相当于AGI通用…

图论-匈牙利算法学习

本文讲述的是匈牙利算法&#xff0c;即图论中寻找最大匹配的算法。解决的问题是从二分图中找到尽量多的匹配。 原题-华为-HJ28 素数伴侣 描述 题目描述 若两个正整数的和为素数&#xff0c;则这两个正整数称之为“素数伴侣”&#xff0c;如2和5、6和13&#xff0c;它们能应用…

【已解决】SpringBoot 工程 war包服务部署与调用测试

1.开发环境&#xff1a;IDEA&#xff0c;JDK1.8 2.服务打包类型&#xff1a; war包 3.war包部署环境&#xff1a;Linux系统&#xff0c;tomcat服务器&#xff0c;端口号&#xff1a;8081 4.war包部署位置&#xff1a;tomcat-8081/webapps/temp.war 5.服务名为&#xff1a;t…

瑞吉外卖项目——瑞吉外卖

软件开发整体介绍 软件开发流程 需求分析&#xff1a;产品原型、需求规格说明书 设计&#xff1a;产品文档、UI界面设计、概要设计、详细设计、数据库设计 编码&#xff1a;项目代码、单元测试 测试&#xff1a;测试用例、测试报告 上线运维&#xff1a;软件环境安装、配置…

python-day6(补充四:私有属性与函数)

私有属性与函数 私有属性与函数的用途如何定义私有属性与函数如何访问私有属性与函数 私有属性与函数的用途 在面向对象的封装中&#xff0c;私有的属性与函数其根本目的是防止它们在类的外部被使用&#xff0c;python中主要通过命名来进行区分。 把可能使用到的东西封装起来…

从零基础到条码高手:傻瓜式操作,告别excel、AI和PS的烦恼

条形码是一种用于商品识别、库存管理等方面的编码标识系统&#xff0c;它是通过将数字和字符以特定的图案排列组合起来&#xff0c;从而形成一组能被机器扫描和识别的条纹图案。 通常情况下&#xff0c;条形码的生成可以分为如下几个步骤&#xff1a; 1、编号&#xff1a;首先…

数据可视化工具汇总:数字孪生产品的得力助手

数字孪生技术是一项快速发展的新兴技术&#xff0c;已经在许多领域得到广泛应用。数字孪生技术不仅可以提供完整的虚拟模型&#xff0c;还可以模拟物理系统的行为。在数字孪生技术的推动下&#xff0c;越来越多的数字孪生产品开始涌现出来&#xff0c;为不同的领域提供支持和解…

如何通过FAQ页面减轻客户支持压力,提高工作效率?

作为现代企业不可或缺的一部分&#xff0c;客户支持服务是为客户提供解决方案、回答问题和解决技术难题的关键部分。无论是产品管理还是销售环节&#xff0c;客户支持都是重要的一环。然而&#xff0c;有效地处理技术支持问题和客户请求并不容易。卓越的客户支持需要组织结构&a…

excle表格打印相关问题

ps&#xff1a;无论是打印word,还是打印excel, 最后最好都保存成pdf&#xff0c;再打印。 ps&#xff1a;无论是打印word,还是打印excel, 最后最好都保存成pdf&#xff0c;再打印。 ps&#xff1a;无论是打印word,还是打印excel, 最后最好都保存成pdf&#xff0c;再打印。 …

ThreadLocal InheritableThreadLocal TransmittableThreadLocal的使用以及原理

ThreadLocal 每个线程向ThreadLocal设置值&#xff0c;再取值&#xff0c;实现线程之间的隔离 public class ThreadLocalCase1 {private static ThreadLocal<Integer> threadLocal new ThreadLocal<>();public static void main(String[] args) {Random random …