1. 程式人生 > >mysql=====理論(索引,視圖,存儲過程,事務)

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=====理論(索引,視圖,存儲過程,事務)