mysql(4)=====理論(索引,視圖,存儲過程,事務)

                     mysql 的基本概念php


***問題1python

什麼是數據庫?mysql

數據庫(database)是一個長期存儲在計算機內的有組織,有共享的、統一管理的數據集合。它是一個按數據結構來存儲和管理數據的linux

計算機軟件系統。數據庫包含兩層含義,數據的「倉庫」以及管理數據的方法和技術。c++

將全部的數據收集在一塊兒不能稱爲數據庫,只有具備利用信息的功能時才能稱爲數據庫。sql


***問題2數據庫

數據庫的特色?windows

實現數據共享,減小數據冗餘;採用特定的數據類型;具備較高的數據獨立性;具備統一的數據控制功能。安全


***問題3數據結構

什麼是關係型數據庫?

關係數據庫,是創建在關係模型基礎上的數據庫,藉助於集合代數等數學概念和方法來處理數據庫中的數據。


***問題4

常見的關係型數據庫?

Oracle、SQL Server、Sybase、DB二、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) 


事務中的全部操做要麼所有執行,要麼都不執行; 


若是事務沒有原子性的保證,那麼在發生系統 故障的狀況下,數據庫就有可能處於不一致狀態

相關文章
相關標籤/搜索