DCL事务控制语言

概念:一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。

事务的特性:
ACID
原子性:一个事务不可再分割,要么都执行要么都不执行
一致性:一个事务执行会使数据从一个一致状态切换到另外一个一致状态
隔离性:一个事务的执行不受其他事务的干扰
持久性:一个事务一旦提交,则会永久的改变数据库的数据.

事务的创建
隐式事务:事务没有明显的开启和结束的标记
比如insert、update、delete语句

显式事务:事务具有明显的开启和结束的标记
前提:必须先设置自动提交功能为禁用
set autocommit=0;

步骤1:开启事务
set autocommit=0;
start transaction;可选的
步骤2:编写事务中的sql语句(select insert update delete)
语句1;
语句2;
...步骤3:结束事务
commit;提交事务
rollback;回滚事务savepoint 节点名;设置保存点

事务的隔离级别:
脏读 不可重复读 幻读
read uncommitted: √ √ √
read committed: × √ √
repeatable read: × × √
serializable × × ×

mysql中默认 第三个隔离级别 repeatable read
oracle中默认第二个隔离级别 read committed
查看隔离级别
select @@tx_isolation;
设置隔离级别
set session|global transaction isolation level 隔离级别;

1.演示事务的使用步骤

#开启事务
SET autocommit=0;
START TRANSACTION;
#编写一组事务的语句
UPDATE account SET balance = 1000 WHERE username='张无忌';
UPDATE account SET balance = 1000 WHERE username='赵敏';#结束事务
ROLLBACK;
#commit;

2.演示事务对于delete和truncate的处理的区别

SET autocommit=0;
START TRANSACTION;DELETE FROM account;
ROLLBACK;

3.演示savepoint 的使用

SET autocommit=0;
START TRANSACTION;
DELETE FROM account WHERE id=25;
SAVEPOINT a;#设置保存点
DELETE FROM account WHERE id=28;
ROLLBACK TO a;#回滚到保存点

视图

含义

虚拟表,和普通表一样使用
mysql5.1版本出现的新特性,是通过表动态生成的数据

创建语法的关键字 是否实际占用物理空间 使用
视图 create view 只是保存了sql逻辑 增删改查,只是一般不能增删改
create table 保存了数据 增删改查

案例:查询姓张的学生名和专业名

CREATE VIEW v1
AS
SELECT stuname,majorname
FROM stuinfo s
INNER JOIN major m ON s.`majorid`= m.`id`;SELECT * FROM v1 WHERE stuname LIKE '张%';

创建视图

语法:
create view 视图名
as
查询语句;

1.查询姓名中包含a字符的员工名、部门名和工种信息

#①创建
CREATE VIEW myv1
ASSELECT last_name,department_name,job_title
FROM employees e
JOIN departments d ON e.department_id  = d.department_id
JOIN jobs j ON j.job_id  = e.job_id;#②使用
SELECT * FROM myv1 WHERE last_name LIKE '%a%';

2.查询各部门的平均工资级别

#①创建视图查看每个部门的平均工资
CREATE VIEW myv2
AS
SELECT AVG(salary) ag,department_id
FROM employees
GROUP BY department_id;#②使用
SELECT myv2.`ag`,g.grade_level
FROM myv2
JOIN job_grades g
ON myv2.`ag` BETWEEN g.`lowest_sal` AND g.`highest_sal`;

3.查询平均工资最低的部门信息

SELECT * FROM myv2 ORDER BY ag LIMIT 1;

4.查询平均工资最低的部门名和工资

CREATE VIEW myv3
AS
SELECT * FROM myv2 ORDER BY ag LIMIT 1;SELECT d.*,m.ag
FROM myv3 m
JOIN departments d
ON m.`department_id`=d.`department_id`;

视图的修改

方式一:

create or replace view 视图名
as
查询语句;

SELECT * FROM myv3 CREATE OR REPLACE VIEW myv3
AS
SELECT AVG(salary),job_id
FROM employees
GROUP BY job_id;

方式二:

alter view 视图名
as
查询语句;

ALTER VIEW myv3
AS
SELECT * FROM employees;

删除视图

语法:drop view 视图名,视图名,…;

查看视图

DESC myv3;

SHOW CREATE VIEW myv3;

视图的更新

#1.插入INSERT INTO myv1 VALUES('张飞','zf@qq.com');#2.修改
UPDATE myv1 SET last_name = '张无忌' WHERE last_name='张飞';#3.删除
DELETE FROM myv1 WHERE last_name = '张无忌';

具备以下特点的视图不允许更新

①包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all

②常量视图

③Select中包含子查询

④join

⑤from一个不能更新的视图

WHERE last_name=‘张飞’;

#3.删除
DELETE FROM myv1 WHERE last_name = ‘张无忌’;


**具备以下特点的视图不允许更新**> ①包含以下关键字的sql语句:分组函数、distinct、group  by、having、union或者union all
>
> ②常量视图
>
> ③Select中包含子查询
>
> ④join
>
> ⑤from一个不能更新的视图
>
> ⑥where子句的子查询引用了from子句中的表

MySQL05:DCL语言、视图相关推荐

  1. Python|SQL详解之DDL|DML|DQL|DCL|索引|视图、函数和过程|JSON类型|窗口函数|接入MySQL|清屏|正则表达式|executemany|语言基础50课:学习(14)

    文章目录 系列目录 原项目地址 第41课:SQL详解之DDL 建库建表 删除表和修改表 第42课:SQL详解之DML insert操作 delete 操作 update 操作 完整的数据 第43课:S ...

  2. [转]DML DDL DCL 语言的区别

    转自: http://www.k187.com/viewthread-3023.html 对于SQL语言,有两个组成部分: DML(data manipulation language):它们是SEL ...

  3. mysql ddl dcl_MySQL常用DDL、DML、DCL语言整理(附样例)

    在介绍这些SQL语言之前,先罗列一下mysql的常用数据类型和数据类型修饰,供查询参考 后面的带数字表示此类型的字段长度 数值型: TINYINT 1 ,SMALLINT 2,MEDIUMINT 3 ...

  4. 死磕数据库系列(二十):MySQL 数据库 DDL、DML、DQL、DCL 语言理论与实践(sql 8.0 版)...

    点关注公众号,回复"1024"获取2TB学习资源! 今天,民工哥带大家一起来学习一下 MySQL 数据库的 DDL.DML.DQL.DCL 这几种语言的理论知识与实践.如有帮助,请 ...

  5. SQL语言---视图操作

    文章目录 前言 一.视图 1.什么是视图? 2.建立视图 3.删除视图 二.定义视图 1.建立视图 (1)语法格式 (2)举例讲解 例子1:建立房间视图 例子2:基于多表建立视图 例子3:基于视图建立 ...

  6. SQL语言——视图(view)的作用

    一.了解视图 1.什么是视图 视图是一张虚拟表,封装了底层与数据表的接口,相当于一张表或多张表的数据结果集.是一种允许用户通过视图访问数据的安全机制.可以简化复杂的SQL查询,可直接使用视图而不需要考 ...

  7. MySQL语言解析----1

    SQL:Structure Query Language 结构查询语言,是所有数据库操作的基础语言,是和数据库软件交互的基础接口. 一.SQL语言分类 DDL语言:Data Definition La ...

  8. 查询作者名长度大于8的 sql语言_从零学会SQL-入门

    <从"为什么"开始>的作者西蒙·斯涅克发现了一种思维方式,世界上最简单的法则,苹果公司的成功之道,著名的乔布斯思考模式----黄金圈法则. 一般的大众思维,都是从做什么 ...

  9. Python|线程和进程|阻塞|非阻塞|同步|异步|生成器和协程|资源竞争|进程间通信|aiohttp库|daemon属性值详解|语言基础50课:学习(11)

    文章目录 系列目录 原项目地址 第34课:Python中的并发编程-1 线程和进程 多线程编程 使用 Thread 类创建线程对象 继承 Thread 类自定义线程 使用线程池 守护线程 资源竞争 G ...

最新文章

  1. 使用sae定时执行Python脚本
  2. Hello,Word宏!
  3. Centos7 修改SSH 端口
  4. python结巴分词 词频统计_一个txt文档,已经用结巴分词分完词,怎么用python工具对这个分完词的文档进行计算统计词频,求脚本,非...
  5. XorPay.com 支付平台介绍【支持个人申请】
  6. 用户故事与敏捷方法pdf
  7. VisualStudio2019配置OpenCV
  8. 统计学习方法笔记(李航)———第三章(k近邻法)
  9. vs2005 c# mysql_在VS2010中怎样用C#创建数据库联接并执行sql语句 最好举个例子讲一下...
  10. linux文件句柄满了 现象_Linux 离奇磁盘爆满,如何解决? | 原力计划
  11. 杭电2112(SPFA)
  12. STM32 C++编程 004 Adc (数模转换)类
  13. ffmpeg js转换音频_浏览器音频兼容和ffmpeg的音频转码使用
  14. SPI(Service Provider Interface)机制
  15. 【转】泡天涯,混论坛,你不可不知道的
  16. java 内存使用过高_Java服务器内存和CPU占用过高的原因
  17. laravel 理论
  18. phpstudy和php,phpstudy和wamp哪个好
  19. 人脸识别门禁系统设计(一)
  20. 揭秘微信红包:架构、抢红包算法、高并发和降级方案

热门文章

  1. Java学习之面板与布局管理器
  2. mysql拆分英文数字_MySQL中的REGEX仅显示由连字符分隔的数字。
  3. 计算机组成微程序操作码怎么写,计算机组成原理学习笔记——控制器
  4. 重启物理机后kvm无法启动虚拟机
  5. mysql ---- DQL(单表查询)
  6. nginx ---- 背景介绍及环境准备
  7. 计算机网络中TCP属于,【填空题】TCP/IP协议将计算机网络的结构划分为应用层、传输层、网络互连层等4个层次,其中IP协议属于【1】层。...
  8. mybatis中使用小于号
  9. Git生成ssh密钥
  10. 【Codeforces 321E / BZOJ 5311】【DP凸优化】【单调队列】贞鱼