SQL基础教程读书笔记-2
4 数据更新
4.1数据的插入
1.清单{①列清单 ②值清单
列清单和值清单的数量必须保持一致。
原则上,执行一次INSERT语句会插入一行数据
对表进行全列INSERT时,可以省略表名后的列清单
2.插入默认值(默认值)
①显式插入:
INSERT INTO ProductIns
(product_id,product_name,product_type,sale_price,purchase_price,regist_date)
VALUES
('0007','擦菜板','厨房用具',DEFAULT,790,'2009-04-28');
②隐式插入:
INSERT INTO ProductIns
(product_id,product_name,product_type,sale_price,regist_date)
VALUES
('0007','擦菜板','厨房用具',790,'2009-04-28');
3.从其他表复制数据
INSERT...SELECT语句
INSERT INTO ProductCopy
(prodcut_id,product_name,product_type,sale_price,purchase_price,regist_date)
SELECT prodcut_id,product_name,product_type,sale_price,purchase_price,regist_date
FROM Product;
INSERT语句的SELECT语句中,可以使用WHERE或者GROUP子句等任何SQL语法(但使用ORDER BY子句并不会产生任何效果)。
4.2 数据的删除
DELETE语句的删除对象并不是表或者列,而是记录(行)
4.3 数据的更新
1.使用NULL进行更新
使用UPDATE语句可以将值清空为NULL(但只限于未设置NOT NULL约束的列)。
2.多列更新
①
UPDATE Product
SET sale_price = sale_price * 10,
purshase_price = purchase_price / 2
WHERE product_type = '厨房用具';
②
UPDATE Product
SET (sale_price,purshase_price) =
(sale_price * 10,purchase_price / 2)
WHERE product_type = '厨房用具';
方法①在所有DBMS中都可以使用,方法②在某些DBMS中是无法使用的。
4.4 事务
1.什么是事务?
事务就是需要在同一个处理单元中执行的一系列更新处理①INSERT ②DELETE ③UPDATE的集合。
2.事务的语法
事务开始语句;
DML语句①;
DML语句②;
DML语句③;
事务结束语句(COMMIT或ROLLBACK)
事务开始:在标准SQL中并没有定义事务的开始语句。
- SQL SERVER ;PostgreSQL
BEGIN TRANSACTION;
- MySQL
START TRANSACTION;
- Oracle DB2
无
事务结束:
COMMIT;
ROLLBACK;
3.事务处理何时开始
几乎所有的数据库产品的事务都无需开始指令。这是因为大部分情况下,事务在数据库连接建立时已经悄悄开始了,并不需要用户再明确发出开始指令。
那应该如何区分各个事务?
① 每条SQL语句就是一个事务(自动提交模式)
② 直到用户执行COMMIT或者ROLLBACK为止算作下一个事务。
4.ACID特性:
原子性(Atomicity):是指在事务结束时,其中所包含的更新处理要么全部执行,要么全部不执行的特性。
一致性(Consistency):指的是事务中包含的处理,要满足数据库提前设置的约束。
隔离性(Isolation):不同事务之间互不干扰的特性。在某个事务进行的更改,在该事务结束之前,对其他事务而言是不可见的。
持久性(Durability):耐久性,指的是事务(不论提交还是回滚)一旦结束,DBMS会保证该点的数据状态得以保存的特性。