DELETE

语法:delete from 表名 [where condition]

delete from grade;

TRUNCATE

用于完全清空表数据,但表结构、索引、约束不变;

语法:

truncate [table] table_name;

事务 transaction

  • 原子性(A):执行事务,要么都成功,要么都失败。
  • 一致性(C):执行后,保持数据的一致。
  • 隔离性(I): 事务之间相互独立,互不影响
  • 持久性(D):数据永久存储在数据库中

事务的隔离级别:

  • 读取未提交(Read-uncommitted): 处于此模式下可能会出现脏读、幻象读、不可重复读
  • 读取提交(Read-committed):处于此模式下可能会出现幻象读、不可重复读
  • 重复读取(repeatable-read):处于此模式下可能会出现幻象读
  • 串行化(Serialize):不会出现幻象读
  • 脏读:
  • 幻读:

SET Autocommit

  • set autocommit = 0;关闭自动提交模式
  • set autocommit = 1;开启自动提交模式

    注意:MySQL默认是自动提交,使用事务时应先关闭自动提交
mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
| 1 |
+--------------+ mysql> set autocommit = 0;
mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
| 0 |
+--------------+

事务的实现方式:

  • Start transaction :开始一个事务,标记事务的起点
  • Commit : 提交一个事务给数据库
  • Rollback : 将事务回滚,数据回到本事务的初始状态
  • Set autocommit = 1; 还原MyAQL数据库的自动提交

查看默认事务提交方式:

mysql> select @@autocommit;

关闭自动提交事务:

mysql> set autocommit = 0;

过程:

  1. 开始事务:start transaction;
  2. 执行一系列SQL : mysql> update tbl_name set name =999 where name = 12;
  3. 假设出现异常事务回滚mysql> rollback;
  4. 假设一切正常 :mysql> commit;

课堂案例:

mysql> create database shop;
mysql> use shop;
mysql> create table account
-> (
-> id int not null primary key auto_increment,
-> name varchar(32) not null,
-> cash decimal(9,2) not null
-> );
mysql> insert into account(name,cash) values('A',2000.00);
mysql> insert into account(name,cash) values('B',10000.00);
mysql> select * from account;
+----+------+----------+
| id | name | cash |
+----+------+----------+
| 1 | A | 2000.00 |
| 2 | B | 10000.00 |
+----+------+----------+
mysql> update account set cash = cash - 500 where id =1;
mysql> update account set cash = cashh +500 where id =2;\\发生错误
ERROR 1054 (42S22): Unknown column 'cashh' in 'field list'
mysql> select * from account;
+----+------+----------+
| id | name | cash |
+----+------+----------+
| 1 | A | 1500.00 |
| 2 | B | 10000.00 |
+----+------+----------+
mysql> rollback;
mysql> select * from account;
+----+------+----------+
| id | name | cash |
+----+------+----------+
| 1 | A | 2000.00 |
| 2 | B | 10000.00 |
+----+------+----------+

MySql数据库学习笔记(2)的更多相关文章

  1. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  2. MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  3. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. Mysql数据库学习笔记之数据库索引(index)

    什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...

  5. MYSQL数据库学习笔记1

      MYSQL数据库学习笔记1 数据库概念 关系数据库 常见数据库软件 SQL SQL的概念 SQL语言分类 数据库操作 创建数据库 查看数据库的定义 删除数据库 修改数据库 创建表 数据类型 约束 ...

  6. MySQL数据库学习笔记<一>

    MySQL基本概念以及简单操作   一.MySQL   MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系 ...

  7. MySQL数据库学习笔记(四)----MySQL聚合函数、控制流程函数(含navicat软件的介绍)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. MySQL数据库学习笔记(三)----基本的SQL语句

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  9. mysql 数据库学习笔记一

    一.navicat的引入: (第三方可视化的客户端,方便MySQL数据库的管理和维护)安装网址:https://www.navicat.com.cn/ NavicatTM是一套快速.可靠并价格相宜的数 ...

  10. MySql数据库学习笔记(1)

    MySql数据库 下载地址 https://dev.mysql.com/downloads/mysql/5.1.html#downloads 连接到本机上的MYSQL mysql -u root -p ...

随机推荐

  1. 【codevs4927】线段树练习

    题目大意:维护一个序列,支持区间加.区间染色.区间最值查询.区间和查询. 题解:对于区间赋值操作来说,维护一个赋值标记,注意,这里不能直接用赋值的值直接维护,因为不像加法标记,0 表示不用处理,这里 ...

  2. numpy 多维数组及数组操作

    NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机 ...

  3. react-native中的state

    我们使用两种数据来控制一个组件:props和state.props是在父组件中指定, 而且一经指定,在被指定的组件的生命周期中则不再改变. 对于需要改变的数据,我们需要使用state. 假如我们需要制 ...

  4. python 类的介绍实例

    使用面向对象的优点: 1.能够更好的设计软件架构 2.维护软件模块 3.易于架构和组件的重用 类的定义: 构造函数:初始化用,写不写都可以,默认为空 类属性:属于类的对象 方法属性:不属于类的对象 私 ...

  5. RabbitMQ入门-队列

    先建工程 下一步,输入坐标 下一步,输入工程名 先看一下最终目录 修改pom文件 <?xml version="1.0" encoding="UTF-8" ...

  6. bzoj3718 树状数组

    https://www.lydsy.com/JudgeOnline/problem.php?id=3718 有时候,要透过题面看到本质 题意 你的老板命令你将停车场里的车移动成他想要的样子.停车场是一 ...

  7. TIMESTAMP使用遇到得麻烦

    mysql按日期查询报空,怎么查看日志发现是14:36:01.709(Timestamp), 参数出了问题 2018-04-17 14:36:16,887 [http-nio-8080-exec-5] ...

  8. Hive基础概念、安装部署与基本使用

    1. Hive简介 1.1 什么是Hive Hives是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 1.2 为什么使用Hive ① 直接使用 ...

  9. DBUtils数据库连接池

    DBUtils pip install DBUtils 模式一: 为每个线程创建一个连接.(内部是通过threading.local实现的) 模式二: 创建一定个数的连接,所有线程都来连接池中获取.( ...

  10. 深入理解Python异步编程(上)

    本文代码整理自:深入理解Python异步编程(上) 参考:A Web Crawler With asyncio Coroutines 一.同步阻塞方式 import socket def blocki ...