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)