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会保证该点的数据状态得以保存的特性。

最新文章

  1. Android动画效果之初识Property Animation(属性动画)
  2. PSD文件在MAC上和在WINDOWS上的大小有本质区别
  3. hdu4831 Scenic Popularity(线段树)
  4. SQL Server SQL性能优化之--数据库在“简单”参数化模式下,自动参数化SQL带来的问题
  5. SVM(支持向量机)的一点理解
  6. Magento1.9批量修改产品 Attribute Set
  7. Handlebars.js循环中索引(@index)使用技巧(访问父级索引)
  8. How to use PEM of PPAS
  9. ActiveReports 9 新功能:可视化查询设计器(VQD)介绍
  10. js中字符串的截取
  11. springboot学习(三)————使用HttpMessageConverter进行http序列化和反序列化
  12. UML第三次作业
  13. 羊车门问题(Python)
  14. 如何在SpringBoot项目中使用拦截器
  15. Codeforces Round #511 (Div. 1) C. Region Separation(dp + 数论)
  16. Emgucv - 下载、安装、配置
  17. vector容器用法详解
  18. numpy函数
  19. 启动spark集群
  20. Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem F. Turning Grille 暴力

热门文章

  1. web前端优化--DOM性能优化
  2. 【Kafka源码】ReplicaManager启动过程
  3. struts2 中文乱码问题,自定义过滤器通用解决方法
  4. Tinyhttpd精读解析
  5. JSP技术介绍
  6. Mybatis框架的搭建和基本使用方法
  7. Do you kown Asp.Net Core -- 配置Kestrel端口
  8. C#的Main(String[] args)参数输入问题
  9. [转载] Thrift-client与spring集成
  10. linux操作系统基础篇(八)