
数据库
zpznba
日日行,不怕千万里。常常做,不怕千万事。
展开
-
数据库 视图基础概念
数据库中视图的概念:视图是从一个表或是多个表导出的表,视图与表不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中指存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。视图是虚表,是从一个或是几个基本表导出的表。可以将视图看做是移动的窗口,通过它可以看到自己感兴趣的数据,视图是从一个或是多个表中获得的,这些表的数据存放在数据库中,那些用户产生...原创 2019-01-19 11:06:12 · 13071 阅读 · 1 评论 -
数据库事务详解
概述事务(Transaction)是在同一个处理单元中,由一系列对数据进行访问与更新的操作所组成的一个基本程序执行逻辑单元。数据库事务其实主要做了以下两方面的事:一是保证一致性结果,能在发生异常的时候快速恢复,也就是回滚 二是并发访问的时候可以提供隔离(后面会有事务的隔离等级)ACID事务具有4个基本特征,分别是:原子性(Atomicity)、一致性(Consistency)、隔离...原创 2019-01-15 20:26:59 · 188 阅读 · 0 评论 -
数据库索引及B树、B+树
索引的本质MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时显然是...转载 2019-04-10 15:54:01 · 265 阅读 · 0 评论 -
MySQL索引实现
MySQL索引实现在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。MyISAM索引实现MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM索引的原理图:图8这里设表一共有三列,假设我们以Col1为主键,则图8是一个MyIS...转载 2019-04-10 15:58:01 · 137 阅读 · 0 评论 -
MySQL索引使用策略及优化
索引使用策略及优化MySQL的优化主要分为结构优化(Scheme optimization)和查询优化(Query optimization)。本文讨论的高性能索引策略主要属于结构优化范畴。实际上如果理解了索引背后的机制,那么选择高性能的策略就变成了纯粹的推理,并且可以理解这些策略背后的逻辑。示例数据库为了讨论索引策略,需要一个数据量不算小的数据库作为示例。本文选用MySQL官方文档中...转载 2019-04-10 16:39:05 · 170 阅读 · 0 评论 -
记录一道SQL练习题来说明Group by的用法
关于Group by的用法可以参考下文:https://www.w3school.com.cn/sql/sql_groupby.asp举个例子:有如下三张表:-- 1.分别查询学生表和学生修课表中的全部数据SELECT * FROM studentSELECT * FROM course-- 2.查询成绩在70-80分之间的学生的学号、课程号和成绩...原创 2019-09-17 23:35:14 · 276 阅读 · 0 评论 -
一道题搞懂数据库中Having的用法
先说结论:WHERE 搜索条件在进行分组操作之前应用;而 HAVING 搜索条件在进行分组操作之后应用。HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。什么意思?我们拥有下面这个 "Orders" 表:O_Id OrderDate OrderPrice Customer 1 2008/12/29 1000 ...原创 2019-09-18 21:00:00 · 2234 阅读 · 0 评论 -
当要SELECT的内容在两张表中时的查询办法
还是之前那三张表:查询选修了C02号课程的学生的姓名和所在系。【方法一】--选取内容在两张表中,第一种方法将两张表联结起来SELECT student.Sname,student.dept,Score.CnoFROM student join Score ON student.Sno = Score.Sno WHERE Cno = 'C02'【第二种】--...原创 2019-09-18 22:18:51 · 4475 阅读 · 0 评论