mysql=====理论(索引,视图,存储过程,事务)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql=====理论(索引,视图,存储过程,事务)相关的知识,希望对你有一定的参考价值。

                     mysql 的基本概念


***问题1

什么是数据库?

数据库(database)是一个长期存储在计算机内的有组织,有共享的、统一管理的数据集合。它是一个按数据结构来存储和管理数据的

计算机软件系统。数据库包含两层含义,数据的“仓库”以及管理数据的方法和技术。

将所有的数据收集在一起不能称为数据库,只有具有利用信息的功能时才能称为数据库。


***问题2

数据库的特点?

实现数据共享,减少数据冗余;采用特定的数据类型;具有较高的数据独立性;具有统一的数据控制功能。


***问题3

什么是关系型数据库?

关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。


***问题4

常见的关系型数据库?

Oracle、SQL Server、Sybase、DB2、Access 、mysql

非关系型数据库的一个链接

http://blog.csdn.net/qq_22101509/article/details/49794303


***问题5

数据库系统的组成?

数据库:用于存储数据的地方

数据库管理系统:用于存储数据库的软件

数据库应用程序:为提高数据库系统的处理能力所使用的管理数据库的软件补充

数据库不等于数据库管理系统,数据库只是一个具有能够 提供提取信息的一个地方,而真正的增删改查是由数据库管理系统来完成的(DBMS)


***问题6

sql语言可分为哪几部分?

数据定义语言(DDL):drop  create alter

数据操作语言(DML):insert   delete  update  select

数据控制语言(DCL):grant revoke commit rollback


***问题7

mysql的优势?

考虑方向:速度、价格、支持不同的系统(windows linux unix Mac os)、支持查询的语言(sql 语句)、丰富的接口(php c c++ python ......)

开源


***问题8

什么是索引?

索引是一个单独的、存储在磁盘上的数据库结构,它们包含着对数据表里所有记录的引用指针。


***问题9

索引的分类?

普通索引和唯一索引

单列索引和组合索引

全文索引

空间索引


***问题10

查询表中使用的存储引擎

mysql> show create table score;

+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Table | Create Table                                                                                                                                                                                                                              |

+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| score | CREATE TABLE `score` (

  `id` int(10) NOT NULL,

  `stu_id` int(10) DEFAULT NULL,

  `c_name` varchar(20) DEFAULT NULL,

  `grade` int(10) DEFAULT NULL,

  PRIMARY KEY (`id`),

  UNIQUE KEY `id` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.16 sec)


  索引的优点?索引的缺点?

优点:方便查询

缺点:太多的索引也占用磁盘空间


  索引的设计原则?

索引并非越多越好。

避免对经常更新的表进行过多的索引,并且索引中的列尽可能少。

数据量小的表最好不要使用索引。

在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引。

当唯一性是某种数据本身的特征时,指定唯一索引。

在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引


***问题11

什么是存储过程?

SEQ语言是非程序语言

程序语言指为达到某个目的,将处理流程通过多个命令来编写。而非程序语言是不能编写流程的。

定义:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。 

简单说就是数据库中保存一系列sql命令的集合

查询的工作原理

所有查询在执行前都需要经过解释,解析,优化,编译和执行

解释:检查语句的语法是否正确

解析:检查语句中出现的对象名是否有效,同时检查对象的所有权限

优化:检查是否能够使用索引并决定联合策略

编译:把查询翻译成一个可执行的表

执行:把编译过程的查询要求提交并进行处理

存储过程的优势?

存储过程是事先完成了解析、编译存储在数据库中的,执行时能减轻数据库负担,提高执行性能



***问题12

什么是视图?

视图是一个虚拟表,是从数据库中一个或多个表中导出来的表。视图还可以从已经存在的视图的基础上定义。

视图的作用?

● 简单性

● 安全性

● 逻辑数据独立性


***问题13

事务的理解?


事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。 

事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。 

二.事务的 ACID 

事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。 

1 、原子性 

事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做 

2 、一致性 

事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是 不一致的状态。 

3 、隔离性 

一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。 

4 、持续性 

也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。 


数据库系统必须维护事务的以下特性 ( 简称 ACID) : 


原子性 (Atomicity) 


一致性 (Consistency) 


隔离性 (Isolation) 


持久性 (Durability) 


原子性 (Atomicity) 


事务中的所有操作要么全部执行,要么都不执行; 


如果事务没有原子性的保证,那么在发生系统 故障的情况下,数据库就有可能处于不一致状态


本文出自 “IT生活” 博客,请务必保留此出处http://dingxue.blog.51cto.com/12290895/1973682

以上是关于mysql=====理论(索引,视图,存储过程,事务)的主要内容,如果未能解决你的问题,请参考以下文章

pymysql增删改查视图触发器事务存储过程内置函数流程控制索引理论

pymysql增删改查视图触发器事务存储过程内置函数流程控制索引理论

MySQL - 索引&视图&存储过程

超详细图解!MySQL进阶篇存储过程,视图,索引,函数,触发器

MySQL系列理论知识

Mysql的索引视图触发器存储过程