【数据库原理】(12)SQL数据操纵功能

SQL 中,对基本表的数据操纵功能是指对基本表中数据的插入、修改和删除。

一.插入数据

SQL 的数据插人语句INSERT 有两种形式:一种是插入一个元组,另一种是插人子查询结果。

1.插入单个元组

插入单个元组(或记录)的 INSERT 语句用于向表中添加一行数据。可以指定要插入数据的列,如果某些列在语句中未指定,则这些列将采用默认值(如果有设置)或空值(如果列允许空值)。

INSERT 语句的格式为:

INSERT
INTO <表名>[(<列名>,[<列名>... ])]
VALUES (<常量>[,<常量>]... );

示例:向课程表 C 中插入一个新的课程记录。

INSERT
INTO C
VALUES ('09','计算机图形学',3);

示例: 只向选课表 SC 的特定列插入数据。

INSERT
INTO SC(Sno,Cno)
VALUES ('2007111001','09');

2.插入子查询结果

子查询不仅可以嵌套在 SELECT 语句中,用以构造父查询的条件,也可以嵌套在INSERT 语句中,用以生成要插入的批量数据。

插入子查询结果的INSERT 语句的格式为:

INSERT
INTO <表名>[(<列名>,[<列名>...])]
子查询;

示例:计算每个班级的平均年龄,并将结果存储到一个新表 Classage

先建立一新表 Classage;

CREATE TABLE Classage(
Sclass CHAR(15),
Avgage SMALLINT
);

然后,使用子查询将每个班级的平均年龄计算出来并插入到 Classage 表中。

INSERT INTO Classage (Sclass,Avgage)
SELECT Sclass,AVG(Sage) FROM S
GROUP BY Sclass;

这将计算每个班级的平均年龄,并将班级名和相应的平均年龄插入到 Classage 表中。

在插入数据时,重要的是确保数据的类型和格式与表中定义的列兼容,以及遵守任何完整性约束(例如,不插入 NULL 到不允许 NULL 值的列中)。

二.修改数据

SQL 的 UPDATE 语句用于修改表中已存在的数据。

修改数据语句的一般格式为:

UPDATE 表名
SET <列名>=<表达式>[,<列名>= <表达式>] ...
[WHERE 条件];

其功能为修改指定表中满足 WHERE 子句条件的元组。其中 SET 子句给出<表达式>的值用于取代相应的属性列值。如果省略 WHERE 子句,则表示要修改表中的所有元组。

1.修改某一个元组的值

示例: 将学生 2007111001 的年龄改为 21 岁

UPDATE S
SET Sage = 21
WHERE Sno='2007111001';

2.修改多个元组的值

当需要对表中的多个行进行同样的修改时,可以省略 WHERE 子句,从而对整个表中的所有行进行更新。

示例:将所有学生的年龄增加 1 岁。

UPDATE S
SET Sage = Sage + 1;

3.带子查询的修改语句

在更复杂的情况下,更新操作的条件可能需要基于另一个查询的结果。这时,可以在 UPDATE 语句中嵌套一个子查询。

示例:将计算机科学专业(CS0701)班级的所有学生的成绩置为 0。

UPDATE SC
SET Grade = 0
WHERE Sno in (Select SC.Sno from SC,S WHERE SC.Sno = S.Sno AND Sclass = 'CS0701');

在使用 UPDATE 语句时,特别需要注意的是,没有正确使用 WHERE 子句可能会导致更多行被更新,甚至是整个表的数据被意外地修改。因此,在对生产数据库执行更新操作之前进行彻底的测试是非常重要的。

三.删除数据

SQL 的 DELETE 语句用于从数据库表中删除行。

删除数据语句的一般格式为:

DELETE
FROM <表名>
[WHERE <条件>];

其功能为从指定表中删除满足 WHERE 子句条件的所有元组。如果省略 WHERE 子句,则表示删除表中全部元组。

1.删除某个元组的值

这种类型的删除用于移除表中特定行的数据。通常通过 WHERE 子句指定特定的条件来定位要删除的行。

示例: 删除课程号为’02’的课程记录。

DELETE
FROM C
WHERE Cno ='02'

2.删除多个元组的值

当需要从表中删除多个行时,可以省略 WHERE 子句,从而删除表中的所有行。

示例:删除所有选课记录。

DELETE
FROM SC;

3.带子查询的删除语句

在更复杂的情况下,删除操作的条件可能需要基于另一个查询的结果。这时,可以在 DELETE 语句中嵌套一个子查询。

示例:删除所有课程名称为“计算机图形学”的选课记录。

DELETE FROM SC
WHERE Cno IN (SELECT CnoFROM CWHERE Cname = '计算机图形学'
);

4.更新操作与数据库的一致性

在实际应用中,数据库的一致性非常重要。这意味着当您在一个表中进行删除操作时,可能需要在相关联的表中进行相应的删除,以保持数据的完整性。

示例:删除学生 2007111001 及其所有选课记录。

删除学生 2007111001:

DELETE
FROM S
WHERE Sno ='2007111001';

删除学生 2007111001 的选课记录:

DELETE
FROM SC
WHERE Sno ='2007111001';

在实际的数据库设计中,通常会利用外键约束和级联删除来自动管理这种一致性,以减少手动维护的负担。

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

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

相关文章

Qt 的流式布局 FlowLayout

一直苦寻于一个比较智能的布局方式&#xff0c;能够满足软件界面进行resize的时候&#xff0c;对已经存在的布局进行重新布局。能够合理的判断界面的size,在界面放大的时候&#xff0c;显示的item的行数减少&#xff0c;相反&#xff0c;界面缩小的时候&#xff0c;显示的 item…

软件测试|测试平台开发-Flask 入门:编写第一个简单 Web 应用

简介 Flask 是一个轻量级的 Python Web 框架&#xff0c;它使得创建 Web 应用变得简单快捷。相比于Django框架&#xff0c;它具有以下的优点&#xff1a; 轻&#xff1a;Flask 是一个轻量级的 Web 框架&#xff0c;使用 Python 语言编写易&#xff1a;较其他同类型框架更为灵…

Golang-strconv库学习笔记

前言&#xff1a; strconv库是go官方提供的一个标准包&#xff0c;主要用于字符串相关的处理。通过参考官方文档、中文文档和其他工具&#xff0c;进行学习记录。学习重点是其中的内置方法。 本文分为Atoi&#xff0c;Format系列&#xff0c;Parse系列&#xff0c;Append系列,…

obs推流失败问题解决

点击开始直播&#xff0c;出现上图的问题 【解决办法】需要升级显卡驱动 使用360驱动大师升级 点击升级 他会先备份再升级 安装完成需要重启

【LMM 014】NExT-GPT:能够输入和生成任意模态的多模态大模型

论文标题&#xff1a;NExT-GPT:Any-to-Any Multimodal Large Language Model 论文作者&#xff1a;Shengqiong Wu, Hao Fei*, Leigang Qu, Wei Ji, Tat-Seng Chua 作者单位&#xff1a; NExT Lab, National University of Singapore 论文原文&#xff1a;https://arxiv.org/abs…

Veeam Backup Replication介绍

新钛云服已累计为您分享781篇技术干货 veeam 提供了一种全面、灵活和高效的数据保护解决方案&#xff0c;可以使用 VeeamBackup & Replication 执行以下数据保护和灾难恢复任务&#xff1a; 创建 VM 和物理机备份 还原物理机、VM、 磁盘和文件 验证备份并准备恢复 创建…

Hive SQL / SQL

1. 建表 & 拉取表2. 插入数据 insert select3. 查询3.1 查询语句语法/顺序3.2 关系操作符3.3 聚合函数3.4 where3.5 分组聚合3.6 having 筛选分组后结果3.7 显式类型转换 & select产生指定值的列 4. join 横向拼接4.1 等值连接 & 不等值连接4.2 两表连接4.2.1 内连…

synchronized、volatile关键字

Java中的synchronized关键字 synchronized关键字介绍 synchronized块是Java提供的一种原子性内置锁&#xff0c;Java中的每个对象都可以把它当作一个同步锁来使用&#xff0c;这些Java内置的使用者看不到的锁被称为内部锁&#xff0c;也叫作监视器锁。 线程的执行代码在进入…

Linux之Ubuntu环境Jenkins部署前端项目

今天分享Ubuntu环境Jenkins部署前端vue项目 一、插件安装 1、前端项目依赖nodejs&#xff0c;需要安装相关插件 点击插件管理&#xff0c;输入node模糊查询 选择NodeJS安装 安装成功 2、配置nodejs 点击后进入 点击新增 NodeJS 配置脚手架类型&#xff1a;如果不填 默认npm …

XAgent调研

文章目录 1 简介2 快速测试 Quick Start3 结构分析 1 简介 XAgent&#xff08;链接&#xff09;是一个开源的&#xff0c;基于大语言模型的agent构建框架&#xff1b;其目标是构建出能够辅助人类处理各类任务的自动助手 定位&#xff1a;一个全能的&#xff0c;自动的辅助agen…

Transformer - Attention is all you need 论文阅读

虽然是跑路来NLP&#xff0c;但是还是立flag说要做个project&#xff0c;结果kaggle上的入门project给的例子用的是BERT&#xff0c;还提到这一方法属于transformer&#xff0c;所以大概率读完这一篇之后&#xff0c;会再看BERT的论文这个样子。 在李宏毅的NLP课程中多次提到了…

【LeetCode】1341. 电影评分

表&#xff1a;Movies ------------------------ | Column Name | Type | ------------------------ | movie_id | int | | title | varchar | ------------------------ movie_id 是这个表的主键(具有唯一值的列)。 title 是电影的名字。表&#xff1a…

深入浅出XTTS:Oracle数据库迁移升级利器

演讲大纲&#xff1a; 1. 什么是XTTS 2. 适用场景 3. XTTS的基本操作步骤 4. XTTS案例分享 今天主要跟大家分享一下XTTS,在网上曾看过相关讨论,但发现按网上讲的那些去实际操作的话,还是会遇到一些坑,并不能实际落下来,所以今天想跟大家分享一些实战干货. 一、什么是XTTS …

LeetCode 29. 两数相除

两数相除 给你两个整数&#xff0c;被除数 dividend 和除数 divisor。将两数相除&#xff0c;要求 不使用 乘法、除法和取余运算。 整数除法应该向零截断&#xff0c;也就是截去&#xff08;truncate&#xff09;其小数部分。例如&#xff0c;8.345 将被截断为 8 &#xff0c;-…

linux高级管理——Squid代理

一、squid服务基础&#xff1a; 1.1缓存代理的概述&#xff1a; 代理的工作机制 当客户机通过代理来请求Web页面时&#xff0e;指定的代理服务器会先检查自己的缓存&#xff0c;如果缓存中已经有客户机需要的页面&#xff0c;则直接将缓存中的页面内容反馈给客户机:如果缓存中…

web学习笔记(十一)

目录 1.数据类型 1.1数据类型分类 &#xff08;1&#xff09;简单&#xff08;基本&#xff09;数据类型 &#xff08;2&#xff09;复杂&#xff08;特殊&#xff09;数据类型 1.2判断数据类型的方法 &#xff08;1&#xff09;常规判断方法&#xff1a; &#xff08;2…

x-cmd pkg | trdsql - 能对 CSV、LTSV、JSON 和 TBLN 执行 SQL 查询的工具

目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 trdsql 是一个使用 sql 作为 DSL 的强大工具: 采用 SQL 对 CSV、LTSV、JSON 和 TBLN 文件执行查询与 MySQL&#xff0c;Postgresql&#xff0c;Sqlite 的 Driver 协同&#xff0c;可以实现对应数据库的表与文件的 JO…

Kafka_02_Producer详解

Kafka_02_Producer详解 ProducerProducerRecordSend&Close实现原理ProducerInterceptorSerializerPartitioner 事务 Producer Producer(生产者): 生产并发送消息到Broker(推送) Producer是多线程安全的(建议通过池化以提高性能)Producer实例后可发送多条消息(可对应多个P…

2024--Django平台开发-Django知识点(四)

1.知识回顾 创建项目&#xff1a;新项目、别人项目、新版版、老版本 项目目录&#xff08;v1.0版本&#xff09; 路由系统 常见路由编写加粗样式 /index/ 函数 /index/<str:v1> 函数 re_path(ryy/(\d{4})-(\d{2})-(\d{2})/, views.yy), re_path(ryy/(?…

科研上新 | 第4期:语言-音乐对比预训练;查找表实现的神经网络推理;大模型时代重新定义搜索框架

编者按&#xff1a;欢迎阅读“科研上新”栏目&#xff01;“科研上新”汇聚了微软亚洲研究院最新的创新成果与科研动态。在这里&#xff0c;你可以快速浏览研究院的亮点资讯&#xff0c;保持对前沿领域的敏锐嗅觉&#xff0c;同时也能找到先进实用的开源工具。 本期内容速览 …