《SQL基础教程》+ 《SQL进阶教程》 学习笔记 (3)

PostgreSQL 是 ASC 在末尾,DESC 在开头。

第 4 章 数据更新 1、数据的插入 —— INSERT 方法1:使用 VALUES 子句指定具体的数据 INSERT INTO ProductIns (product_id, product_name, product_type, sale_price, purchase_price, regist_date) VALUES ('0001', 'T恤衫', '衣服', 1000, 500, '2009-09-20');

列清单→ (product_id, product_name, product_type, sale_price, purchase_price, regist_date)

值清单→ ('0001', 'T恤衫', '衣服', 1000, 500, '2009-09-20')

注意:

1、对表进行全列 INSERT 时,可以省略表名后的列清单。

2、对于指定了默认值的列,可以在列清单和值清单中都省略它,或者仅在值清单里键入 DEFAULT。


拓展:多行插入

原则上,执行一次 INSERT 语句仅会插入一行数据。

但有的 RDBMS 支持 多行 INSERT。

语法即:多行的值清单,用逗号隔开。如下例:

INSERT INTO ProductIns VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11'), ('0003', '运动T恤', '衣服', 4000, 2800, NULL), ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');

该语法适用于 DB2 SQL、SOL Server、Postgresql 和 MYSQL,但不适用于 Oracle。

好处:减少了书写语句的数量,且直观方便理解。

坏处:排错困难。若发生 INSERT 错误,和单一行插入相比,找出到底是哪行哪个地方出错了,变得更加困难。

方法2:从其他表中复制数据 —— INSERT.. SELECT

例如,创建了一个 ProductCopy 表,结构与之前使用的 Product 表完全一样,只是更改了一下表名而己。然后:

-- 将 Product 中的数据复制到 ProductCopy 中 INSERT INTO ProductCopy (product_id, product_name, product_type, sale_price, purchase_price, regist_date) SELECT product_id, product_name, product_type, sale_price, purchase_price, regist_date FROM Product;

INSERT.. SELECT 中的 SELECT 语句,可以使用 WHERE 子句或者 GROUP BY 子句等任何 SQL 语法(但使用 ORDER BY 子句并不会产生任何效果)。

2、数据的删除 —— DELETE / TRUNCATE -- 删除表中数据 DELETE FROM Product WHERE sale_price >= 4000; -- 删除表中所有数据 TRUNCATE Product; 3、数据的更新 —— UPDATE (1)更新 单列 UPDATE Product SET sale_price = sale_price * 10 WHERE product_type = '厨房用具'; (2)更新 多列 -- 使用逗号对列进行分隔排列 UPDATE Product SET sale_price = sale_price * 10, purchase_price = purchase_price / 2 WHERE product_type = '厨房用具'; -- 将列用()括起来的清单形式 (只能在 Postgresql 和 DB2 中使用) UPDATE Product SET (sale_price, purchase_price) = (sale_price * 10, purchase_price / 2) WHERE product_type = '厨房用具'; 4、事务

简单来讲,事务就是需要在同一个处理单元中执行的一系列更新处理的集合。

(1)写法

1、事务开始语句

标准 SQL —— 无

SQL Server、PostgreSQL —— BEGIN TRANSACTION

MySQL —— START TRANSACTION

Oracle、DB2 —— 无


2、DML 语句


3、事务结束语句

COMMIT —— 提交处理

一旦提交,就无法恢复到事务开始前的状态了。

请在执行 DELETE 语句时尤其小心。

ROLLBACK —— 取消处理


4、自动提交模式

自动提交模式 —— 每条 SQL 语句就是一个事务。

几乎所有的数据库产品的事务都默认开启了自动提交模式。

(2)事务的 ACID 特性

DBMS 的事务都遵循四种特性,将这四种特性的首字母结合起来统称为 ACID 特性。这是所有 DBMS 都必须遵守的规则。

1、原子性(Atomicity)

原子性是指在事务结東时,其中所包含的更新处理要么全部执行,要么完全不执行,也就是要么占有一切要么一无所有。

2、一致性(Consistency)

一致性指的是事务中包含的处理要满足数据库提前设置的约束,如主键约束或者 NOT NULL 约束等。

一致性也称为完整性

3、隔离性(Isolation)

隔离性指的是保证不同事务之间互不干扰的特性。

4、持久性(Durability)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zygdwg.html