数据库关联查询

内连接查询(inner join)

SELECT * FROM tb1 INNER JOIN tb2 ON 条件

左表查询(左关联查询)(left join)

查询两个表共有的数据,和左表所有的数据,左表有右表没有的部分用null代替

SELECT * FROM tb1 LEFT JOIN tb2 ON 条件

右表查询(右关联查询)(right join)

查询两个表共有的数据,和右表表所有的数据,右表有左表没有的部分用null代替

SELECT * FROM tb1 RIGHT JOIN tb2 ON 条件

多表(三表)关联查询

1、内关联查询

select * from major inner join major_course inner join course where

major.id = major_course.major_id and major_course.course_id = course.id

and major.id= 1;

2、关联子查询

SELECT

name

FROM

major

WHERE

id IN (

SELECT

mc.major_id

FROM

course AS c

LEFT JOIN major_course AS mc ON c.id = mc.course_id

WHERE

c.id = 1

);

事务

创建新的数据库名为bank

create database bank;

在bank数据库中创建新的表名为user

create table user(

id int primary key,

name varchar(20),

money int);

往user表中添加数据

insert into user values(1,'a',1000);

查看是否添加成功

select * from user;

回滚(就是撤销sql语句执行的效果)

rollback;

验证sql的语句执行的效果是否撤销

select * from user;

如果想要让回滚有效的话需要关闭事务(关闭mysql的自动提交)

set @@autocommit=0;

select @@autocommit;

验证回滚:

a再插入一条数据

insert into user values(2,'b',1000);

b查看此时的user表

select * from user;

c回滚

rollback;

d查看

select * from user;

e

重复上述操作

f由于关闭了自动提交功能,现在手动提交

commit;

g再回滚查看表(显然回滚失效了)

【总结】

事务:

——自动提交:@@autocommit=1;

——手动提交:commit;

——回滚:rollback;

事务是以两种方式存在的:一是手动开启事务,二是默认(自动)开启事务

手动开启事务给我们提供了一个修改的机会,如果操作失败的话可以通过回滚,实现修改,如果操作成功可以手动提交(commit)增加数据的安全性

3、事务的四大特征

A 原子性:事务是最小的单位,不可以再进行分割了

C 一致性:事务要求同一事务中的sql语句,必须保证同时成功或者同时失败

I 隔离性:事务1与事务2之间具有隔离性(后面详解)

D 持久性:事务一旦结束(commit),就不可以返回(rollback)

4、事务的隔离性

(1)read uncommitted 读未提交的

(2)read committed 读已提交的

(3)repeatable read 可以重复读

(4)serializable 串行化

MySQL查询和事务的更多相关文章

  1. MySQL的ALTER变更、正则查询、分组查询、排序查询以及事务查询的概

    MySQL的表和字段信息的变更 ALTER TABLE table-name DROP column-name; #删除某个字段 ALTER TABLE table-name ADD column-n ...

  2. MySQL多表查询、事务、DCL:内含mysql如果忘记密码解决方案

    MySQL多表查询.事务.DCL 多表查询 * 查询语法: select 列名列表 from 表名列表 where.... * 准备sql # 创建部门表 CREATE TABLE dept( id ...

  3. MySql多表查询_事务_DCL(资料三)

    今日内容 1. 多表查询 2. 事务 3. DCL 多表查询: * 查询语法: select 列名列表 from 表名列表 where.... * 准备sql # 创建部门表 CREATE TABLE ...

  4. 【mysql】关于事务的隔离级别

    一.锁的种类 MySQL中锁的种类很多,有常见的表锁和行锁,也有新加入的Metadata Lock等等,表锁是对一整张表加锁,虽然可分为读锁和写锁,但毕竟是锁住整张表,会导致并发能力下降,一般是做dd ...

  5. MySQL数据库的事务管理

    当前在开发ERP系统,使用到的数据库为Mysql.下面介绍下如何开启事务,以及事务隔离的机制 : 1. 检查当前数据库使用的存储引擎. show engines; 2. 修改前my.ini中的文件如下 ...

  6. MySQL存储过程之事务管理

    原文链接:http://hideto.iteye.com/blog/195275 MySQL存储过程之事务管理 ACID:Atomic.Consistent.Isolated.Durable 存储程序 ...

  7. mysql中不同事务隔离级别下数据的显示效果--转载

    事务是一组原子性的SQL查询语句,也可以被看做一个工作单元.如果数据库引擎能够成功地对数据库应用所有的查询语句,它就会执行所有查询,如果任何一条查询语句因为崩溃或其他原因而无法执行,那么所有的语句就都 ...

  8. 浅谈mysql中不同事务隔离级别下数据的显示效果

    事务的概念 事 务是一组原子性的SQL查询语句,也可以被看做一个工作单元.如果数据库引擎能够成功地对数据库应用所有的查询语句,它就会执行所有查询,如果任何一条查 询语句因为崩溃或其他原因而无法执行,那 ...

  9. Mysql 查询缓存总结

    Mysql 查询缓存总结 MySQL查询缓存解释 缓存完整的SELECT查询结果,也就是查询缓存.保存查询返回的完整结果.当查询命中该缓存,mysql会立刻返回结果,跳过了解析.优化和执行阶段, 查询 ...

  10. 事务,Oracle,MySQL及Spring事务隔离级别

    一.什么是事务: 事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败. 二.事务特性(4种): 原子性 (atomicity):强调事务的不可分割:一致性 (consiste ...

随机推荐

  1. JavaScript常用的8个数组去重实战源码

      JavaScript常用的8个数组去重实战源码 在我们学习和使用JavaScript的中,会经常使用到数组的去重,接下来的内容,来给大家分享一下,我们在开发过程中,常用到的数组去重方法,这些方法都 ...

  2. HttpClient常用的一些常识

    HttpClient是目前我们通讯组件中最常见的一个Api了吧.至少从我目前接触到与外部系统通讯的话是这样的.下面我将我自己常用的一些知识总结一下. 因为本猿也是边写边总结,有啥不对的还望多多指出. ...

  3. css设置背景图(背景图太大导致图片显示不全)

    .bg{background:url('/back.png');filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(sizi ...

  4. TODO留学小程序,展开,收起失效

    text设置user-select=true后,display: -webkit-box 失效? https://developers.weixin.qq.com/community/develop/ ...

  5. python语法中的左值、右值和字符

    位置决定语义 在下面的python代码中,忽略掉语法错误,源码中同样一个单词tsecer在不同的位置有不同的意义 import之后 在import之后的tsecer是作为一个简单的字面字符串来处理:这 ...

  6. docker持久化数据存储

    一.把数据存储到本地/opt/data目录下面,容器挂载到/data目录下面 [root@docker-1 ~]# docker run -itd --name www -v /opt/data:/d ...

  7. 访问远程服务-RPC 与 REST

    方法调用 所做的传递参数.传回结果都依赖于栈内存.所以Caller 调用者 Callee 被调用者应该同属一个进程,拥有相同的 栈内存, 进程间通信(Inter-Process Communicati ...

  8. 运筹学之线性规划 1.X

    线性规划 线性规划问题的标准形式可以写成: \[\begin{aligned} &max~z=\pmb{c}^T\pmb{X} \\ &s.t.\{ \begin{aligned} & ...

  9. 小程序toast组件中事件触发条件

    微信小程序toast组件是一种消息提示框.例如当文章条数全部加载出来后,用户再次点击加载更多的时候,js判断文章条数全部加载出来后,便让toast组件弹出提示用户"没有更多文章了" ...

  10. static有什么作用?

    在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数 一. 定义全局静态变量 :在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有以下特点: ( ...