主要内容

***数据定义语言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分类和事务回滚的更多相关文章

  1. 为什么mysql事务回滚后, 自增ID依然自增

    事务回滚后,自增ID仍然增加,回滚后,自增ID仍然增加.比如当前ID是7,插入一条数据后,又回滚了.然后你再插入一条数据,此时插入成功,这时候你的ID不是8,而是9.因为虽然你之前插入回滚,但是ID还 ...

  2. MySQL 存储引擎、锁、调优、失误与事务回滚、与python交互、orm

    1.存储引擎(处理表的处理器) 1.基本操作 1.查看所有存储引擎 mysql> show engines; 2.查看已有表的存储引擎 mysql> show create table 表 ...

  3. mysql数据库 索引 事务和事务回滚

    mysql索引 索引相当于书的目录优点:加快数据的查询速度缺点:占物理存储空间,添加,删除,会减慢写的速度 查看表使用的索引 mysql> show index from 表名\G;(\G分行显 ...

  4. mysql事务回滚机制概述

    应用场景:   银行取钱,从ATM机取钱,分为以下几个步骤       1 登陆ATM机,输入密码:    2 连接数据库,验证密码:    3 验证成功,获得用户信息,比如存款余额等:    4 用 ...

  5. MySQL(22):事务管理之 事务回滚

    1. 在操作事务的时候,如果发现当前事务操作是不合理的,此时只要还没有提交事务,就可以通过回滚取消当前事务,接下来就针对事务的回滚进行详细讲解. 2. 为了演示回滚操作,在上一个笔记案例基础之上,此时 ...

  6. php+mysql 原生事务回滚

    <?php $conn = mysql_connect('127.0.0.1', 'root', ''); mysql_select_db('msc_test'); mysql_query('S ...

  7. [转] C# mysql 事务回滚

    什么是数据库事务 数据库事务是指作为单个逻辑工作单元执行的一系列操作. 设想网上购物的一次交易,其付款过程至少包括以下几步数据库操作: · 更新客户所购商品的库存信息 · 保存客户付款信息--可能包括 ...

  8. mysql 事务回滚

    begindeclare t_error integer default 0;  //添加变量t_error并赋初始值为0declare continue handler for sqlexcepti ...

  9. 【Java EE 学习 19】【使用过滤器实现全站压缩】【使用ThreadLocal模式解决跨DAO事务回滚问题】

    一.使用过滤器实现全站压缩 1.目标:对网站的所有JSP页面进行页面压缩,减少用户流量的使用.但是对图片和视频不进行压缩,因为图片和视频的压缩率很小,而且处理所需要的服务器资源很大. 2.实现原理: ...

随机推荐

  1. 9.17 Django ORM分组

    2018-9-17 19:53:22 预习:http://www.cnblogs.com/liwenzhou/p/8343243.html 新买个蓝牙挂耳耳机,感觉不错! 放上代码  笔记什么的明天继 ...

  2. PHP 正则表达式抓取网页内容。

    我想用php抓取爱奇艺生活类型视频网页里面的元素,应该如何去做呢? 首先我要非常熟悉正则表达式,关于正则表达式的学习,我会写一篇博客一直学习的. 直接举例子: 这是一个爱奇艺生活视频的界面的网址 $u ...

  3. poj3662 Telephone Lines【最短路】【二分】

    http://poj.org/problem?id=3662 Telephone Lines Time Limit: 1000MS   Memory Limit: 65536K Total Submi ...

  4. 洛谷P2216 理想的正方形

    题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输入格式: 第一行为3个整数,分别表示a,b,n的值 第二行至 ...

  5. TensorFlow 度量张量和张量或者和零之间的误差值

    用于一个回归任务或者正则问题 # l2损失,output= sum(x ** 2)/2 inputdata = tf.Variable(np.random.rand(2,3), dtype=np.fl ...

  6. Gym - 101020H Weekend floyd+next_permutation

    https://vjudge.net/problem/Gym-101020H 题意:正常读取方式给你一个图(双向的),然后给你f个点,让你找一条路从1到n的最短路,要求经过f个点(以任意顺序). 题解 ...

  7. Chrome浏览器扩展 获取用户密码

    Chrome 浏览器允许安装第三方扩展程序以扩展浏览器并给浏览器加入新的功能,扩展使用 JavaScript 以及 HTMl 编写并允许互相访问和控制 DOM. 因为允许访问 DOM,攻击者就可以读取 ...

  8. C++创建窗口程序初步

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...

  9. Python爬虫实例(六)多进程下载金庸网小说

    目标任务:使用多进程下载金庸网各个版本(旧版.修订版.新修版)的小说 代码如下: # -*- coding: utf-8 -*- import requests from lxml import et ...

  10. 2018/04/18 每日一学Linux 之 ssh关闭密码登录

    在平常工作中,常常需要关闭 SSH 的密码登录,只留 SSH 证书登录. 好处显而易见,避免了经常输入密码导致的密码泄露,和设置密码导致被暴力破解的可能性. -- 方法也很简单,首先 你是可以 登录 ...