mysql分类和事务回滚
主要内容:
***数据定义语言DDL重点
***数据操纵语言DML重点
数据查询语言DQL重点
---事务控制语言TCL
---数据库控制语言DCL
---主键(primary key)
---数据冗余(另外建表,把某个外建与另一个表的主键建立关系联系起来)
---事务
***数据定义语言DDL重点
定义:DDL(Data Definition Language):负责数据结构定义与创建数据库对象的语言。
负责数据结构定义与创建数据库对象的语言。
常用的有create alter drop truncate(删除数据并自动重建表)
注意:DDL不支持事务,DDL语句操作以后无法会滚(rollback)。//面试常见考点
***数据操纵语言DML重点
DML(Data Maniplution Language)
作用:负责对数据库中更改数据的操作的指令。如:增删改查insert delete update select。
注意:DML支持事务,在非自动提交时候,可以利用rollback会滚操作,也是面试重点。
数据查询语言DQL重点
DQL(Data Query Language)
定义:用于查询表格内的数据的指令,包括select命令。
作为DML一部分 与事务无关。
DQL是工作中最常用的语句,面试必考。
###TCL
事务控制语言:事务控制语言。包含:commit ,rollback , savepoint ,rollback to等。
分配用户数据权限的。
###DCL
Data Control Language:数据控制语言
主键约束:
主键:...
约束:创建表时给表中字段添加约束。
注意:主键约束,保存的数值必须唯一且非空。
格式:create table t(id int primary key,name varchar(10));
insert into t values(101,'zhangFei');
insert into t values(101,'liuBei');
insert into t3 values(null,'guanYu');
###主键+自增约束
---create table t3(id int primary key auto_increment,name varchar(10));
insert into t3 values(null,'guanYu');
select * from t3;
+----+--------+
| id | name |
+----+--------+
| 1 | guanYu |
+----+--------+
如何让自增数值清零?使用truncate关键字 表示删除又创建一个新表
truncate table t2;
###注释 comment
---创建表的时候可以通过对字段进行描述
---格式:create table t4(id int primary key auto_increment ,comment '这个字段是主键',ename varchar(10),sal int comment '这是工资');
show create table t4;
###'和'的区别
create table 't4'(id int,'age' int);
'的作用是用来修饰字符串的
###数据冗余
---由于表设计的不合理,出现了大量重复的数据,成为数据冗余。把可能重复的数据保存到一张新的 表中。把可能重复的数据存到
一张新表,通过id建立关系,这中关系的字段称之为外键。
练习二:请设计表保存以下数据:保存教学部下java教研部的老师信息:苍老师 工资 200 年龄
然后再保存到集团总部下销售部门,销售A部的员工李白工资50 ,年龄28岁。
1.创建部门表:create table dept(id int primary key auto_increment,name varchar(10),parent_id int);
insert into dept values(null,'集团总部门',null);
insert into dept values(null,'教学部',1);
insert into dept values(null,'java教研部',2);
insert into dept values(null,'销售部',1);
insert into dept values(null,'销售A部',4);
2.创建员工表: create table emp(id int primary key auto_increment ,name varchar(10),sal int,age int,dept_id int);
insert into emp values(null,'苍老师',200,18,3),(null,'李白',50,28,5);
###事务(自动提交--->数据库,改为手动提交--->内存-->数据库,增强数据存储安全性)
什么是事物?数据库执行的最小工作单元,把多条sql语句放到事物中可以保证多条sql要么全部成功,要么全部失败。
1.创建person表:create table person(id int primary key auto_increment,name varchar(10),money int);
2.插入数据:insert into person values(null,'超人',200),(null,'钢铁侠',1000);
事务好像有几个特性:...(查查)
---查看数据库的自动提交状态
show variables like '%autocommit%';
---关闭自动提交 0 ,打开自动提交1;
set atuocommit=0;
###转账验证过程:
1.把自动提交关掉:set autocommit=0;
2.让超人+300:update person set money=500 where id=1;
3.此时打开另外一个终端use db2;查询数据select * from person;(数据库中的数据此时并没有修改)
4.回到第一个中终端窗口,让钢铁侠-300 update person set money=700 where id=2;(当前窗口查询
数据时,因为查询的是内存中的数据并没有发生改变)
5.在第一个窗口中手动提交commit;此时会把内存中的多次SQL在内存中的执行结果 同时提交到数据库中
(此时两个终端发生改变)
###事务回滚
-rollback :commit操作之前的结果。
-savepoint:设置回滚点。
---格式:savepoint 标识;
-rollback to s1;指定会滚到某个会滚点。
测试步骤:1.先把超人money=100; 2.把超人money=200; 3.此时savepoint s1; 4.把超人money=300;
5.此时rollback to s1;(此时数据会会滚到money=200)
###事务的应用场景(类似于java中多线程并发执行)
当执行某一个事情需要多行sql语句,并且要求多行sql要么全部成功,要么全部失败,此时必须使用事务,不然就会出现sql部分成功部分失败的情况。(多条sql语句做一件事)
###事务总结:
1.查看自动提交状态
show variables like '%autocommit%';
2.修改提交状态
set autocommit=0/1;
3.手动提交
commit;
4.会滚
rollback;
5.设置会滚点
savepoint s1;
6.会滚到某个会滚点
rollback to s1;
mysql分类和事务回滚的更多相关文章
- 为什么mysql事务回滚后, 自增ID依然自增
事务回滚后,自增ID仍然增加,回滚后,自增ID仍然增加.比如当前ID是7,插入一条数据后,又回滚了.然后你再插入一条数据,此时插入成功,这时候你的ID不是8,而是9.因为虽然你之前插入回滚,但是ID还 ...
- MySQL 存储引擎、锁、调优、失误与事务回滚、与python交互、orm
1.存储引擎(处理表的处理器) 1.基本操作 1.查看所有存储引擎 mysql> show engines; 2.查看已有表的存储引擎 mysql> show create table 表 ...
- mysql数据库 索引 事务和事务回滚
mysql索引 索引相当于书的目录优点:加快数据的查询速度缺点:占物理存储空间,添加,删除,会减慢写的速度 查看表使用的索引 mysql> show index from 表名\G;(\G分行显 ...
- mysql事务回滚机制概述
应用场景: 银行取钱,从ATM机取钱,分为以下几个步骤 1 登陆ATM机,输入密码: 2 连接数据库,验证密码: 3 验证成功,获得用户信息,比如存款余额等: 4 用 ...
- MySQL(22):事务管理之 事务回滚
1. 在操作事务的时候,如果发现当前事务操作是不合理的,此时只要还没有提交事务,就可以通过回滚取消当前事务,接下来就针对事务的回滚进行详细讲解. 2. 为了演示回滚操作,在上一个笔记案例基础之上,此时 ...
- php+mysql 原生事务回滚
<?php $conn = mysql_connect('127.0.0.1', 'root', ''); mysql_select_db('msc_test'); mysql_query('S ...
- [转] C# mysql 事务回滚
什么是数据库事务 数据库事务是指作为单个逻辑工作单元执行的一系列操作. 设想网上购物的一次交易,其付款过程至少包括以下几步数据库操作: · 更新客户所购商品的库存信息 · 保存客户付款信息--可能包括 ...
- mysql 事务回滚
begindeclare t_error integer default 0; //添加变量t_error并赋初始值为0declare continue handler for sqlexcepti ...
- 【Java EE 学习 19】【使用过滤器实现全站压缩】【使用ThreadLocal模式解决跨DAO事务回滚问题】
一.使用过滤器实现全站压缩 1.目标:对网站的所有JSP页面进行页面压缩,减少用户流量的使用.但是对图片和视频不进行压缩,因为图片和视频的压缩率很小,而且处理所需要的服务器资源很大. 2.实现原理: ...
随机推荐
- 对Aspose.Cells Excel文件操作的扩展
工作中对Excel操作的需求很是常见,今天其他项目组的同事在进行Excel数据导入时,使用Aspose.Cells Excel 遇到了些问题. 刚好闲来不忙,回想自己用过的Excel文件操作,有NPO ...
- Windows 平台下安装Cygwin后,sshd服务无法启动
Windows 平台下安装Cygwin后,sshd服务无法启动 系统日志记录信息: 事件 ID ( 0 )的描述(在资源( sshd )中)无法找到.本地计算机可能没有必要的注册信息或消息 DLL 文 ...
- python----并发之协程
<python并发之协程>一: 单线程下实现并发,即只在一个主线程,并且cpu只有一个的情况下实现并发.(并发的本质:切换+保存状态) cpu正在运行一个任务,会在两种情况下切去执行其他的 ...
- ASP.NET MVC中ViewBag和ViewData的区别
在MVC3.0以上我们会用到ViewBag或者ViewData进行页面传值,对比一下二者的差距: ViewData ViewBag 基于key/value的字典集合 dynamic类型对象 从ASP. ...
- HDU 2087 - 剪花布条 - [KMP算法]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...
- CNN中的卷积理解和实例
卷积操作是使用一个二维卷积核在在批处理的图片中进行扫描,具体的操作是在每一张图片上采用合适的窗口大小在图片的每一个通道上进行扫描. 权衡因素:在不同的通道和不同的卷积核之间进行权衡 在tensorfl ...
- NTLM
我们介绍Kerberos认证的整个流程.在允许的环境下,Kerberos是首选的认证方式.在这之前,Windows主要采用另一种认证协议——NTLM(NT Lan Manager).NTLM使用在Wi ...
- HashMap 的工作原理及代码实现,什么时候用到红黑树
HashMap工作原理及什么时候用到的红黑树: 在jdk 1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里.但是当位于一个桶中的元素较多,即has ...
- 为什么使用 Redis及其产品定位(转)
原文:http://www.infoq.com/cn/articles/tq-why-choose-redis 传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储 ...
- div+css网页标准布局实例教程(二)
五.布局页面——头部和导航 有了上边的基础,下面的任务就是要利用html和css制作完成一个完整的网页了.先从头部开始,第三小节时我们已经把整体框架给搭建好了,就像盖房子一样,整体结构已经出来了,下面 ...