SQL学习笔记(三)

sql Jun 20, 2019

第五章 数据更新

对于mysql这种业务型数据仓库,需要对数据进行增删改查。

5.1 数据的插入

数据的插入使用insert语句,insert语句语法。将列名和值用逗号隔开,分别括在()内,这种形式叫做清单。insert语句是由列清单和表清单组成的。

INSERT INTO <表名> (列1, 列2, 列3, ……) VALUES (值1, 值2, 值3, ……);

5.1.1 多行插入

很多数据库都支持多行插入,例如mysql,语法如下

INSERT INTO <表名> (列1, 列2, 列3, ……) VALUES (值1, 值2, 值3, ……), (值1, 值2, 值3, ……), (值1, 值2, 值3, ……)...;

5.1.2 列清单的省略

对表进行全列插入的时候可以省略列清单

5.1.3 插入null

想要插入null,需要在值清单写null

5.1.4 从其他表复制数据

可以使用insert...select语句从其他表复制数据

5.2 数据的删除

数据的删除使用delete语句,想要删除整个表可以使用drop table语句 ,语法如下:

DELETE FROM <表名>
WHERE <条件>;

5.2.1 删除和舍弃

当想要删除所有数据的时候,很多数据库提供了TRUNCATE(舍弃)语句,语法如下。

TRUNCATE <表名>;

TRUNCATE语句只能删除表中的全部数据。与delete相比truncate的执行效率更高,因为他不记录日志。另外truncate删除数据后,再插入数据,自增id从1开始。delete删除数据后自增id从删除后id开始。

5.3 数据的更新

update语句可以对数据进行更新,语法如下:

UPDATE <表名>
SET <列名> = <表达式>
WHERE <条件>;

ps:
多列更新用逗号隔开

5.4 事务

事物是对表中数据进行更新的单位。简单来说,事物就是需要在同一个处理单元中执行的一系列更新处理的集合。

5.4.1 创建事务

事务的语法没有标准语法由数据库自己定义,mysql的语法如下:

--事务开始语句--
START TRANSACTION
DML语句①;
DML语句②;
DML语句③;
.. .
--事务结束语句 提交或者回滚--
COMMIT; 或者 rollback;

ps:
并不是所有的语句都可以被撤销, 事务处理用来管理 INSERT 、 UPDATE 和DELETE 语句。你不能回退 SELECT 语句。你不能回退 CREATE 或 DROP 操作。事务处理块中可以使用这两条语句,但如果你执行回退,它们不会被撤销。

5.4.2 ACID特性

数据库的事务都要遵循四种特性,将四种特性的首字母结合起来就是ACID特性。

  1. 原子性(Atomicity):
    原子性是指在事务结束时,其中所包含的更新处理要么全部执行,要么完全不执行。
  2. 一致性(Consistency):
    一致性是指事务中包含的处理要满足数据库提前设置的约束,如主键约束或者null约束等。对事务来说,这些不合法的sql是会被回滚。合法的sql会正常执行
  3. 隔离性(Isolation):
    隔离性是保证不同事务之间互不干扰的特性。某个事务在结束之前,对其他事物是不可见的。
  4. 持久性(Durability):
    持久性指的是事务在结束后,数据库能够保证该时间节点的数据状态会被保存的特性。即使由于系统故障导致数据丢失,数据库也能通过某种手段进行恢复。一般来说是通过将事务的执行记录保存到硬盘等存储介质中。