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

SQL(Database Modifications)

目录

Insertion

Specifying Attributes in INSERT

Adding Default Values(缺省值)

Inserting Many Tuples

Creating a Table Using the SELECT INTO Statement

Deletion

Example: Deletion

Semantics of Deletion

Updates

Example: Update Several Tuples


A modification command does not return a result (as a query does), but changes the database in some way.

Three kinds of modifications:

  • Insert a tuple or tuples.

  • Delete a tuple or tuples.

  • Update the value(s) of an existing tuple or tuples.

Insertion

To insert a single tuple:

INSERT INTO <relation>
VALUES ( <list of values> );

Example: add to Likes(drinker, beer) the fact that Sally likes Bud.

INSERT INTO Likes

VALUES(’Sally’ , ’Bud’);

Specifying Attributes in INSERT

  • We may add to the relation name a list of attributes.

  • Two reasons to do so:

  1. We forget the standard order of attributes for the relation.

  2. We don’t have values for all attributes, and we want the system to fill in missing components with NULL or a default value.

  • Example:

-- Another way to add the fact that Sally
-- likes Bud to Likes(drinker, beer):
INSERT INTO Likes(beer, drinker)
VALUES(’Bud’,‘Sally’);

Adding Default Values(缺省值)

  • In a CREATE TABLE statement, we can follow an attribute by DEFAULT and a value.

  • When an inserted tuple has no value for that attribute, the default will be used.

Example:

CREATE TABLE Drinkers (name CHAR(30) PRIMARY KEY,addr CHAR(50) DEFAULT ’123 Sesame St.’,phone CHAR(16)
);

Inserting Many Tuples

We may insert the entire result of a query into a relation, using the form:

INSERT INTO <relation>
( <subquery> );
INSERT INTO PotBuddies(SELECT d2.drinkerFROM Frequents d1, Frequents d2WHERE d1.drinker = ’Sally’ ANDd2.drinker <> ’Sally’ ANDd1.bar = d2.bar
);

Creating a Table Using the SELECT INTO Statement

  • Use to Create a Table and Insert Rows into the Table in a Single Operation(在一次操作中完成创建表和插入数据的操作)

  • Create a Local or Global Temporary Table(创建本地或全局临时表)

  • Set the select into/bulkcopy Database Option ON in Order to Create a Permanent Table

  • Create Column Alias or Specify Column Names in the Select List for New Table

Deletion

To delete tuples satisfying a condition from some relation:

DELETE FROM <relation>
WHERE <condition>;

Example: Deletion

DELETE FROM Likes
WHERE drinker = ’Sally’ AND
beer = ’Bud’;
-- Delete all Tuples
DELETE FROM Likes;

Semantics of Deletion

DELETE FROM Beers b
WHERE EXISTS (SELECT name FROM BeersWHERE manf = b.manf ANDname <> b.name);
  • Suppose Anheuser-Busch makes only Bud and Bud Lite.

  • Suppose we come to the tuple b for Bud first.

  • The subquery is nonempty, because of the Bud Lite tuple, so we delete Bud.

Now, when b is the tuple for Bud Lite, do we delete that tuple too?

Answer: we do delete Bud Lite as well.

The reason is that deletion proceeds in two stages:

  • Mark all tuples for which the WHERE condition is satisfied.

  • Delete the marked tuples.

  1. 我们可以将涉及子查询的语句拆成两个部分:标记满足条件的部分,然后是执行删除部分
  2. 在标记时,进行所有原始数据的扫描,然后标记满足条件的数据
  3. 然后在删除阶段将所有被标记的数据全部删除

Updates

To change certain attributes in certain tuples of a relation:

UPDATE <relation>
SET <list of attribute assignments>
WHERE <condition on tuples>;
UPDATE Drinkers
SET phone = ‘555-1212’
WHERE name = ‘Fred’;

Example: Update Several Tuples

UPDATE Sells
SET price = 4.00
WHERE price > 4.00;

http://www.xdnf.cn/news/9986.html

相关文章:

  • 【达梦】达梦数据库使用TypeHandler读取数据库时,将字段中的数据读取为数组
  • UIAbility组件基础
  • Cadence Allegro中设置主画面最小显示间距
  • 江科大UART串口通讯hal库实现
  • 【大模型/MCP】MCP简介
  • 哈希之旅:从使用到底层建设
  • CCPC shandong 2025 G
  • 【数据集】中国日尺度1 km全天候地表温度数据集(2000-2022)
  • 尚硅谷redis7 74-85 redis集群分片之集群是什么
  • 【区间dp】-----例题5【田忌赛马】(暂时只会贪心解法)
  • Chuanpai、Nihongo wa Muzukashii Desu、K-skip Permutation
  • 3340. 检查平衡字符串
  • 【2025文博会现场直击】多图预警
  • One Year~
  • WES(三)——变异检测
  • Pix4d航测软件正射影像生产流程(一)项目创建及快速空三
  • Baklib企业知识激活解决方案
  • MySQL 数据库中的主键、超键、候选键、外键是什么?
  • vue3 driverjs
  • 车载摄像头选型相关
  • 初识JAVA:Java异常种类
  • Blaster - Multiplayer P117-PXXX: 匹配状态
  • 项目使用富文本编辑器发送邮件,邮箱无法预览
  • Parasoft C++Test软件单元测试_常见问题及处理
  • MySQL 8.0中的mysql.ibd文件
  • 深度学习目标检测实战——YOLOv8从入门到部署
  • linux 1.0.3
  • 【android bluetooth 协议分析 02】【bluetooth hal 层详解 6】【bt_vendor_opcode_t 介绍】
  • oracle 导入导出 dmp 数据文件实战
  • 树型表查询方法 —— SQL递归