数据库视图

事务究竟有没有被隔离

喜你入骨 提交于 2020-02-11 11:59:04
我们知道在 RR 级别下,对于是一个事务来说,读到的值应该是相同的,但有没有想过为什么会这样,它是如何实现的?会不会有一些特殊的情况存在?本篇文章会详细的讲解 RR 级别下事务被隔离的原理。在阅读后应该了解如下的内容: 了解 MySQL 中的两种视图 了解 RR 级别下,如何实现的事务隔离 了解什么是当前读,以及当前读会造成那些问题 明确视图的概念 在 MySQL 中,视图有两种。第一种是 View,也就是常用来查询的虚拟表,在调用时执行查询语句从而获取结果, 语法如 create view . 第二种则是存储引擎层 InnoDB 用来实现 MVCC(Mutil-Version Concurrency Control | 多版本并发控制)时用到的一致性视图 consistent read view , 用于支持 RC 和 RR 隔离级别的实现。简单来说,就是定义在事务执行期间,事务内能看到什么样的数据。 事务真正的启动时机: 在使用 begin 或 start transation 时,事务并没有真正开始运行,而是在执行一个对 InnoDB 表的操作时(即第一个快照读操作时),事务才真正启动。 如果想要立即开始一个事务,可以用 start transaction with consistent snapshot 命令。 不期待的结果,事务没有被隔离 在之前 MySQL 事务 介绍中

Oracle数据库自带表或者视图

醉酒当歌 提交于 2020-02-10 21:26:00
dba_开头 dba_users 数据库用户信息 dba_segments 表段信息 dba_extents 数据区信息 dba_objects 数据库对象信息 dba_tablespaces 数据库表空间信息 dba_data_files 数据文件设置信息 dba_temp_files 临时数据文件信息 dba_rollback_segs 回滚段信息 dba_ts_quotas 用户表空间配额信息 dba_free_space 数据库空闲空间信息 dba_profiles 数据库用户资源限制信息 dba_sys_privs 用户的系统权限信息 dba_tab_privs 用户具有的对象权限信息 dba_col_privs 用户具有的列对象权限信息 dba_role_privs 用户具有的角色信息 dba_audit_trail 审计跟踪记录信息 dba_stmt_audit_opts 审计设置信息 dba_audit_object 对象审计结果信息 dba_audit_session 会话审计结果信息 dba_indexes 用户模式的索引信息 user_开头 user_objects 用户对象信息 user_source 数据库用户的所有资源对象信息 user_segments 用户的表段信息 user_tables 用户的表对象信息 user_tab_columns

精通iOS开发(第5版)

我的未来我决定 提交于 2020-02-10 09:48:43
《精通iOS开发(第5版)》 基本信息 原书名:Beginning ios 6 development:exploring the ios sdk 作者: (美)David Mark (瑞典)Jack Nutting (美)Jeff LaMarche (法)Fredrik Olsson 译者: 邓强 武海峰 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115327611 上架时间:2013-8-7 出版日期:2013 年9月 开本:16开 页码:1 版次:5-1 所属分类:计算机 > 软件与程序设计 > 移动开发 > iPhone 更多关于》》》《 精通iOS开发(第5版) 》 内容简介 计算机书籍   ios 是如今最炙手可热的移动平台,苹果公司为其推出了强大的软件开发工具包ios sdk。《精通ios开发(第5版)》是一部关于ios 应用开发的基础教程,内容翔实、语言生动。几位作者结合大量实例,循序渐进地讲解了适用于iphone、ipad 开发的基本流程。新版介绍强大的ios 6 操作系统,涵盖了xcode 4 以来的新功能,其中最值得注意的便是集合视图,《精通ios开发(第5版)》将以全新章节详细讲述。全书所有项目均使用xcode 4 重新创建,让开发者全面感受xcode 4 带来的振奋人心的新变化。    《精通ios开发(第5版)

民意调查Django实现(四)

爷,独闯天下 提交于 2020-02-09 18:34:46
我们接着上一小节的末尾开始学习,在上一个小节中,我们主要是了解了Django中的模板,即templates的使用。在这个小节中,我们主要关注于简单的表单处理并且裁剪我们的代码。 编写一个简单的表单 我们来更新一下我们的detail模板(“polls/detail.html”),添加HTML的 <form> 元素。 <h1>{{ question.question_text }}</h1> {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %} <form action="{% url 'polls:vote' question.id %}" method="post"> {% csrf_token %} {% for choice in question.choice_set.all %} <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }} "/> <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label></br> {% endfor %} <input type=

SQl常用语句总结(持续更新……)

大憨熊 提交于 2020-02-09 15:23:18
创建示例数据库 USE master; GO IF DB_ID (N'mytest') IS NOT NULL DROP DATABASE mytest; GO CREATE DATABASE mytest; GO USE mytest; GO IF OBJECT_ID(N'dbo.Orders') IS NOT NULL DROP TABLE dbo.Orders; GO CREATE TABLE dbo.Orders ( ProductID INT NOT NULL, MadeFrom CHAR(20), Sales MONEY NOT NULL ); 删除数据库 use master -- 设置当前数据库为master,以便访问sysdatabases表 go if exists(select * from sysdatabases where name='stuDB') drop database stuDB go或者 IF DB_ID (N'mytest') IS NOT NULL DROP DATABASE mytest; 创建数据表 标准语法 CREATE TABLE table_name( column1 datatype, column2 datatype, column3 datatype, ..... columnN datatype, PRIMARY KEY

MySQL视图操作命令详解

和自甴很熟 提交于 2020-02-09 03:16:45
上篇博文分享了视图的好处 mysql视图的作用(详细) 乘热打铁,看到一篇视图创建的博文觉得不错 创建视图 在MySQL中,创建视图的完整语法如下: CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION] 其对应的语法变量信息如下: [OR REPLACE] 中括号中的 OR REPLACE关键字是可选的。如果当前数据库中已经存在指定名称的视图时,没有该关键字,将会提示错误信息;如果使用了 OR REPLACE关键字,则当前正在创建的视图会覆盖掉原来同名的视图。 [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] ALGORITHM子句是可选的,它表示使用何种算法来处理视图。此外,它并不属于标准SQL的一部分,而是MySQL对标准SQL进行的功能扩展。 ALGORITHM可以设置三个值: MERGE、 TEMPTABLE或 UNDEFINED。如果没有 ALGORITHM子句,则默认值为 UNDEFINED(未定义的)。 对于 MERGE,会将引用视图的语句的文本与视图定义合并起来

数据库常见面试题

…衆ロ難τιáo~ 提交于 2020-02-08 10:35:51
1:delete和truncate有啥区别? 答:delete可以配合where语句使用,可以只删除其中某一部分,但truncate不可以;功能上truncate和不带where条件的delete语句一样,都是删除整个表的数据,但是不删除表定义,区别是,truncate删除表数据的时候既删除了数据又释放了空间,速度快,但是删除的数据无法恢复,但是delete只是删除了表中数据,但是空间没有释放,支持数据恢复,同时删除速度慢,因为在事务日志中记录删除的每一行记录 2:in 和exist 有啥区别? 答:一般来说,这两个是用来做两张(或更多)表联合查询用的,in是把外表和内表作hash 连接,而exists 是对外表作loop 循环,假设有A、B两个表,使用时是这样的: 1、select * from A where id in (select id from B)--使用in 2、select * from A where exists(select B.id from B where B.id=A.id)--使用exists也可以完全不使用in和exists: 3、select A.* from A,B where A.id=B.id--不使用in和exists 具体使用时到底选择哪一个,主要考虑查询效率问题: 第一条语句使用了A表的索引; 第二条语句使用了B表的索引;

MySQL视图、触发器、事务

为君一笑 提交于 2020-02-08 09:20:14
一、视图 1、什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次用的直接使用即可 2、为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 3、如何用视图 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; drop view teacher2course; 强调 1、在硬盘中,视图只有表结构文件,没有表数据文件 2、视图通常是用于插叙,尽量不要修改视图中的数据 二、触发器   1、在满足对某张表数据的增、删、改的情况下,自动触发的功能称之为触发器    2、为何要用触发器?   答: 触发器专门针对我们对某一张表数据增insert、删delete、改update的行为,这类行为一旦执行就会触发触发器的执行,即自动运行另外一段sql代码 -- 语法: delimiter // create trigger trigger名 after/before insert/delete/update on 表名 for each row begin sql代码。。。 END // delimiter ; -- 解释: -- after 事件执行之后触发 before 事件执行之前触发 -- 触发事件 insert

视图、触发器、事务、存储过程、内置函数、流程控制、索引

爱⌒轻易说出口 提交于 2020-02-08 04:43:23
视图 什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 如何用视图 create view teacher2course as select * from teacher inner join course on teacher.t.id = course.teacher_id 强调 在硬盘中,视图只有表结构文件,没有表数据文件 视图通常是用于查询,尽量不要修改视图中的数据 drop view teacher2course; 思考:开发过程中会不会去使用视图? 不会!!视图是mysql的功能,如果你的项目里面大量的是用到了视图,那意味着你后期想要扩展某个功能的时候这个功能恰巧又需要对视图进行修改,意味着你需要现在mysql端将视图先修改一下,然后再去应用程序中修改对应的sql语句,这就涉及到跨部门沟通的问题,所以通常不会使用视图,而是通过重新修改sql语句来扩展功能 触发器 ​ 在满足对某张表数据的增、删、改的情况下,自动触发的功能称之为触发器 为何要用触发器 触发器专门针对我们对某一张表数据增insert、删delete、改update的行为,这类行为一旦执行,就会触发触发器的执行,即自动运行另一段sql代码 创建触发器的语法 # 针对插入 create trigger tri_after

视图、触发器、事务、存储过程、函数

空扰寡人 提交于 2020-02-08 04:40:25
视图 1、什么是视图 ​ 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用就可以 2、为什么要用视图 ​ 如果要频繁使用一张虚拟表,可以不用重复查询 3、如何使用使用视图 create view teacher2course as select * from teacher inner join course on teacher.tid=course.teacher_id 强调 1、在硬盘中,视图只有表结构文件,没有表数据文件 2、视图通常用于查询,尽量不要修改视图的数据 # 删除视图 drop view teacher2course; 记住:开发过程中不会去使用视图,因为视图是mysql的功能,如果项目里面大量的使用到了视图,意味着后期想要扩张某个功能的时候这个功能恰巧又需要对视图进行修改,意味着需要先在mysql这边将视图修改,然后再去应用程序中修改对应的sql语句,这就涉及到了跨部门沟通的问题,所以通常不会使用视图,而是通过重新修改sql语句来扩展功能 触发器 在满足对某张表数据的增、删、改的情况下,自动触发的功能称之为触发器 为何要用触发器 ​ 触发器专门针对我们对某一张表数据增insert、删delete、改update的行为,这类行为一旦执行 ​ 就会触发触发器的执行,即自动运行另外一段sql代码 创建触发器语法 # 针对插入 create trigger