数据更新包括了表存在的情况下数据的添加,数据的删除和数据的更新,主要是下面三个语句:

  1. INSERT 语句
  2. DELETE 语句
  3. UPDATE 语句

在本章的最后,讲了关于「事务」的相关知识,用于对作出的更改进行决定——是否上交或者舍弃改动.

INSERT 语句

基本语法

INSERT INTO <tablename> (column1, column2, column3, ....)
VALUES (value1, value2, value3, ...);

术语:

  1. 清单:在 SQL 中,“ () ”称为「清单」,其中包含列名的叫做「列清单」
  2. VALUE 子句
  3. 值清单: VALUE 子句后为值清单

注意:

  1. 可以省略列清单
  2. 添加 NULL 值的时候,在值清单中加入 NULL

DEFAULT 关键字

在创建表格的时候,可以使用 DEFAULT 约束,例如:

CREATE TABLE ProductIns 
(sale_price INTEGER DEFAULT 0,
...);

在 VALUE 子句的清单中可指定 DEFAULT 关键字,例如:

INSERT INTO ProductIns VALUES ('0007', ‘擦菜板’,‘厨房用具’, DEFAULT, 790, '2009-04-28');

INSERT...SELECT — 从其他表中复制数据

格式

(举例为从 Product 复制数据到 ProductCopy 表中)

INSERT INTO ProductCopy
SELECT product_id, product_name. ...
FROM Product;

其中的 SELECT 语句

包含 SELECT 语句的 INSERT 语句, SELECT 语句中可以添加 WHERE 子句和 GROUP BY 子句.

DELETE 语句

定义:

DELETE 语句用于删除表中的记录(行).

清空整张表

有三种方法清空整张表,其中 TRUNCATE 速度最快:

  1. DELETE FROM ;
  2. TRUNCATE  ;
  3. DROP ;

指定条件的 DELETE 语句

DELETE .... WHERE
注意:
由于DELETE 只能删除记录,因此不能使用 GROUP BY 等子句.

UPDATE 语句

格式

UPDATE <tablename>
SET <columnname> = <expression>;

其中更新的值都记录在 SET 子句中.

指定条件的 UPDATE 语句

UPDATE...WHERE...

多列更新

定义:当对于满足同一条件的数据进行多条更新的时候,可以使用多列更新的方法:
有两种方式可以进行多列更新.

方法1:将列分隔排列

UPDATE Product 
SET sale_price = sale_price * 10,
purchase_price = purchase_price / 2
WHERE product_type = '厨房用具‘.

方法2:将列清单化

UPDATE Product 
SET (sale_price ,purchase_price) = (sale_price * 10,
purchase_price = purchase_price / 2)
WHERE product_type = '厨房用具‘.

事务

定义:

需要在统一处理单元中执行的一系列变更处理的集合叫做事务.

使用指令创建事务的语法

  1. 开始事务:BEGIN TRANSACTION;
  2. 提交处理:COMMIT
    取消处理: ROLLBACK

不使用指令时创建事务的模式

DBMS 有两种模式:

  1. 自动提交模式:每条 SQL 语句就是一个事务
  2. 直到用户执行 COMMIT 或者 ROLLBACK 为一个事务

ACID 特性

DBMS 都遵循 ACID 特性.它们分别是:

  1. Atomicity 原子性
  2. Consistency 一致性
  3. Isolation 隔离性
  4. Durability 持久性

《SQL 基础教程》第四章:数据更新的更多相关文章

  1. 《SQL 基础教程》第二章:查询基础

    这一章的结构如下: SELECT 语句基础 算术运算符和比较运算符 逻辑运算符 SELECT 语句可用于查询数据,并且可以设定条件来查询具有特定值的记录.条件的设定就需要算数运算符.比较运算符和逻辑运 ...

  2. 《SQL 基础教程》—第一章:数据库与 SQL

    导言 这一章的内容如下: 数据库简介 SQL 概要 表的创建 表的删除与更新 数据库简介 定义: Database, 是大量数据的集合Database Management System,是用于管理数 ...

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

    写在前面:本文主要注重 SQL 的理论.主流覆盖的功能范围及其基本语法/用法.至于详细的 SQL 语法/用法,因为每家 DBMS 都有些许不同,我会在以后专门介绍某款DBMS(例如 PostgreSQ ...

  4. [SQL基础教程] 4-4 事务

    [SQL基础教程] 4 数据更新 4-4 事务 事务 需要在同一处理单元中执行的一系列更新处理的集合 创建事务 事务开始语句; DML语句1; DML语句2; . . . 事务结束语句; 事务开始语句 ...

  5. [SQL基础教程] 4-3 数据的更新(UPDATE)

    [SQL基础教程] C4 数据更新 4-3 数据的更新(UPDATE) UPDATE UPDATE <表名> SET <列名> = <表达式>; UPDATE &l ...

  6. [SQL基础教程] 4-2 数据删除(DELETE)

    [SQL基础教程] C4 数据更新 4-2 数据删除(DELETE) DROP TABLE / DELETE DROP TABLE - 完全删除表 DELETE - 仅删除数据,保留表容器 DELET ...

  7. [SQL基础教程] 4-1 数据的插入(INSERT)

    [SQL基础教程] C4 数据更新 4-1 数据的插入(INSERT) INSERT INSERT INTO <表名>(列1,列2...) VALUES(值1,值2...); 清单 用() ...

  8. 推荐《SQL基础教程(第2版)》中文PDF+源代码+习题答案

    我认为<SQL基础教程(第2版)>非常适合数据库学习的初学者.论述的角度是读者的角度,会换位思考到读者在看到这一段时候会发出怎样的疑问,非常难得:原始数据的例题只有一道,但是可以反复从不同 ...

  9. Objective-C 基础教程第三章,面向对象编程基础知

    目录 Objective-C 基础教程第三章,面向对象编程基础知 0x00 前言 0x01 间接(indirection) 0x02 面向对象编程中使用间接 面向过程编程 面向对象编程 0x03 OC ...

  10. [Learn Android Studio 汉化教程]第四章 : Refactoring Code

    [Learn Android Studio 汉化教程]第四章 : Refactoring Code 第四章 Refactoring Code    重构代码 在Android Studio中开发,解决 ...

随机推荐

  1. Python idle运行代码出现'ascii' codec can't encode characters in position 0-2

    编码问题,采用一种方法: Python代码 ,开头加: import sys reload(sys) sys.setdefaultencoding('utf8') 在idle中运行后没错误,但是不显示 ...

  2. SPOJ Distinct Substrings SA

    正解:SA 解题报告: 传送门! 啊先给个翻译趴QwQ大概就是说给个字符串,求互不相等的子串的个数 算是道小水题辣趴,,,并不难想到的呢QAQ只是因为是新知识所以巩固下而已QAQ 然后就显然考虑合法方 ...

  3. SPSS提示“列表中不允许存在字符串变量”的解决方法

    点击 查看 菜单->变量->将需要修改为数字类型的列属性改为数字,还可以更改小数位数

  4. python基础之 面向对象之反射

    1.isinstance和issubclass issubclass(Son,Foo) 判断雷与类之间的是否有继承关系,接受两个参数,一个是疑似子类,一个是疑似父类,判断Son是否是Foo的子类 ob ...

  5. rosetta对称性文件(rosetta symmetry file)的产生及应用

    针对对称性PDB 3UKM,使用make_symmdef_file.pl脚本,可以执行产生对称单元及对称文件: $> $ROSETTA3/src/apps/public/symmetry/mak ...

  6. cocos2d-x JS 各类点、圆、矩形之间的简单碰撞检测

    这里总结了一下点.圆.矩形之间的简单碰撞检测算法 (ps:矩形不包括旋转状态) 点和圆的碰撞检测: 1.计算点和圆心的距离 2.判断点与圆心的距离是否小于圆的半 isCollision: functi ...

  7. Cocos Creator 资源加载(笔记)

    cc.loader 加载资源动态加载资源要注意两点,一是所有需要通过脚本动态加载的资源,都必须放置在 resources 文件夹或它的子文件夹下.resources 需要在 assets 文件夹中手工 ...

  8. php 实现简拼

    <blockquote>model::::::::::::::::::::::::::::: function getFirstCharter($str){if(empty($str)){ ...

  9. NOIP2015跳石头

    题目描述 Description 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有N ...

  10. Java代码质量改进之:同步对象的选择

    在Java中,让线程同步的一种方式是使用synchronized关键字,它可以被用来修饰一段代码块,如下: synchronized(被锁的同步对象) { // 代码块:业务代码 } 当synchro ...