MySQL学习笔记:第三天(一) 数据操作与事务控制

数据操作语言

数据操作语言(Data Manipulation Language ,简称DML),主要用来实现对数据库表中的数据进行操作。

数据操作语言主要包括:

  • 增加行数据:使用INSERT语句实现
  • 修改行数据:使用UPDATE语句实现
  • 删除行数据:使用DELETE语句实现

插入数据

INSERT INTO	table [(column [, column...])]
VALUES		(value [, value...]);
  • 采用这种语法一次只能追加一条记录;
  • column部分叫做列名列表,value部分叫做值列表,列名列表和值列表必须在个数及数据类型上保持一致;
  • 列名列表部分可以省略,如果省略,默认包括该表的所有列,列的顺序为使用 desc 表名 命令所查看的顺序;
  • 列名列表部分也可以指定部分非空的列,注意值列表必须和列名列表对应;
  • 字符和日期型数据必须要用单引号括起来。

插入空值null

  1. 隐含法:在列名列表中忽略该列。
  2. 显示法:指定NULL关键字或者''。

批量插入数据

使用insert语句可以一次性地向表批量插入多条记录,

INSERT INTO 表名[(字段列表)] VALUES
(值列表1),
(值列表2),
…
(值列表n);

通过子查询插入多行数据

INSERT INTO 表名[(列名1[,列名2,…,列名n])] 子查询 ;
  • 不必书写values子句
  • INSERT子句和数据类型必须和子查询中列的数量和类型相匹配中列的数量

修改数据

UPDATE		table
SET		column = value [, column = value]
[WHERE 		condition];
  • WHERE子句用来限定修改哪些行。
  • SET子句用来限定修改哪些列。
  • WHERE子句中的更新条件是一个逻辑表达式,通常需要使用到关系运算符和逻辑运算符,返回True或者False。

删除数据

DELETE FROM	  table
[WHERE	  condition];

截断表

TRUNCATE TABLE table; 

TRUNCATE和DELETE区别

  • TRUNCATE是DDL,只能删除表中所有记录,释放存储空间,使用ROLLBACK不可以回滚
  • DELETE是DML,可以删除指定记录,不释放存储空间,使用ROLLBACK可以回滚

事务处理

事务(Transaction),也称工作单元是由一个或多个SQL语句所组成的操作序列,这些SQL语句作为一个完整的工作单元,要么全部执行成功,要么全部执行失败。在数据库中,通过事务来保证数据的一致性。

事务处理语言(Transaction Process Language ,简称TPL),主要用来对组成事务的DML语句的操作结果进行确认或取消确认也就是使DML操作生效,使用提交(COMMIT)命令实现取消也就是使DML操作失效,使用回滚(ROLLBACK)命令实现。

事务组成

在数据库中,事务由一组相关的DML或SELECT语句加上一个TPL语句(COMMIT、ROLLBACK)一个DDL语句(CREATE、ALTER、DROP、TRUNCATE等)一个DCL(GRANT、REVOKE)语句。

事务特征:

  • 原子性(Atomicity)
  • 一致性(Consistency)
  • 隔离性(Isolation)
  • 持久性(Durability)

MySQL的事务处理

1.用begin,rollback,commit实现

begin开始一个事务  rollback事务回滚  commit 事务提交

2.直接用set来改变MySQL的自动提交模式

  • set autocommit = 0 禁止自动提交  
  • set autocommit = 1 开启自动提交

:当用set autocommit = 0 的时候,以后所有的sql都将作为事务处理,直到用commit确认或 rollback结束,注意当结束这个事务的同时也开启了新的事务!按第一种方法只将当前的做为一个事务!

隐式结束

隐式提交:当下列任意一种情况发生时,会发生隐式提交

  • 执行一个DDL(CREATE、ALTER、DROP、TRUNCATE、RENAME)语句;
  • 执行一个DCL(GRANT、REVOKE)语句;

隐式回滚:当下列任意一种情况发生时,会发生隐式回滚

  • 客户端强行退出
  • 客户端连接到服务器端异常中断
  • 系统崩溃

设置保存点:如果在一个事务内,想要回滚到指定位置,不是回滚到事务的起始点,可以通过保存点(SAVEPOINT)来实现。

SAVEPOINT savepointname;--定义一个保存点语句;
ROLLBACK TO savepointname;--回滚到指定保存点

注意:如上两条语句不结束事务的执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值