面試-MySQL,mysql面試題
1 事務的特性
事務具有四個特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability)。這四個特性也簡稱ACID性。
(1)原子性:事務是應用中最小的執行單位,就如原子是自然界最小顆粒,具有不可再分的特徵一樣。事務是應用中不可再分的最小邏輯執行體。
(2)一致性:事務執行的結果,必須使資料庫從一個一致性狀態,變到另一個一致性狀態。當資料庫中只包含事務成功提交的結果時,資料庫處於一致性狀態。一致性是通過原子性來保證的。
(3)隔離性:各個事務的執行互不干擾,任意一個事務的內部操作對其他並發的事務,都是隔離的。也就是說:並發執行的事務之間不能看到對方的中間狀態,並發執行的事務之間不能相互影響。
(4)持久性:指事務一旦提交,對資料所做的任何改變,都要記錄到永久儲存空間中,通常是儲存進物理資料庫。
2 MySQL儲存引擎
特點 |
Myisam |
BDB |
Memory |
InnoDB |
Archive |
儲存限制 |
沒有 |
沒有 |
有 |
64TB |
沒有 |
事務安全 |
|
支援 |
|
支援 |
|
鎖機制 |
表鎖 |
頁鎖 |
表鎖 |
行鎖 |
行鎖 |
B樹索引 |
支援 |
支援 |
支援 |
支援 |
|
雜湊索引 |
|
|
支援 |
支援 |
|
全文索引 |
支援 |
|
|
|
|
叢集索引 |
|
|
|
支援 |
|
資料緩衝 |
|
|
支援 |
支援 |
|
索引緩衝 |
支援 |
|
支援 |
支援 |
|
資料可壓縮 |
支援 |
|
|
|
支援 |
空間使用 |
低 |
低 |
N/A |
高 |
非常低 |
記憶體使用量 |
低 |
低 |
中等 |
高 |
低 |
批量插入的速度 |
高 |
高 |
高 |
低 |
非常高 |
支援外鍵 |
|
|
|
支援 |
|
Myisam:每個MyISAM在磁碟上儲存成三個檔案。檔案名稱都和表名相同,副檔名分別是.frm(儲存表定義)、.MYD(MYData,儲存資料)、.MYI(MYIndex,儲存索引)。資料檔案和索引檔案可以放置在不同的目錄,平均分布io,獲得更快的速度。最常使用的2種儲存引擎:
InnoDB:是Mysql的預設儲存引擎。當create建立新表時,未指定新表的儲存引擎時,預設使用InnoDB。儲存引擎提供了具有提交、復原和崩潰恢複能力的事務安全。但是對比Myisam的儲存引擎,InnoDB寫的處理效率差一些並且會佔用更多的磁碟空間以保留資料和索引。
3 選擇合適的MySQL儲存引擎
選擇標準:根據應用特點選擇合適的儲存引擎,對於複雜的應用系統可以根據實際情況選擇多種儲存引擎進行組合。下面是常用儲存引擎的適用環境:
MyISAM:在Web、資料倉儲和其他應用環境下最常使用的儲存引擎之一。
InnoDB:預設的MySQL外掛程式式儲存引擎,用於交易處理應用程式,具有眾多特性,包括ACID事務支援。
Memory:將所有資料儲存在RAM中,在需要快速尋找引用和其他類似資料的環境下,可提供極快的訪問。
Merge:允許MySQLDBA或開發人員將一系列等同的MyISAM表以邏輯方式組合在一起,並作為1個對象引用它們。對於諸如資料倉儲等VLDB環境十分適合。
4 MySQL特點
與其他資料庫Oracle、DB2、SQL Server等相比功能稍弱一些
1、可以處理擁有上千萬條記錄的大型資料;
2、支援常見的SQL語句規範 ;
3、可移植行高,安裝簡單小巧 ;
4、良好的運行效率,有豐富資訊的網路支援;
5、調試、管理,最佳化簡單(相對其他大型資料庫)。
5 MySQL支援的資料類型
數值型:
日期時間類型:
字串類型:
空間資料類型:
6 MySQL內建函數
數學函數
BIN(x):返回x的二進位(OCT返回八進位,HEX返回十六進位)
FLOOR(x):返回小於x的最大整數值
ROUND(x,y):返回參數x的四捨五入的有y位小數的值
LOG(x,y):返回x的以y為底的對數
MOD(x,y):返回x/y的模(餘數)
彙總函式:
COUNT(col):返回指定列中非NULL值的個數
MIN(col):返回指定列的最小值
MAX(col):返回指定列的最大值
SUM(col):返回指定列的所有值之和
字串函數:
LENGTH(s):返回字串str中的字元數
CONCAT(s1,s2...,sn):將s1,s2...,sn串連成字串
TRIM(str):去除字串首部和尾部的所有空格
LEFT(str,x):返回字串str中最左邊的x個字元
RIGHT(str,x):返回字串str中最右邊的x個字元
日期時間函數:
NOW():返回當前的日期和時間
WEEK(date):返回日期date為一年中第幾周(0~53)
YEAR(date):返回日期date的年份(1000~9999)
DAYOFWEEK(date):返回date所代表的一星期中的第幾天(1~7)
DAYOFMONTH(date):返回date是一個月的第幾天(1~31)
DAYOFYEAR(date):返回date是一年的第幾天(1~366)
加密函數:
MD5():計算字串str的MD5校正和
ENCRYPT(str,salt):使用UNIXcrypt()函數,用關鍵詞salt(一個可以惟一確定口令的字串,就像鑰匙一樣)加密字串str
控制流程函數:MySQL有4個函數是用來進行條件操作的,這些函數可以實現SQL的條件邏輯,允許開發人員將一些應用程式商務邏輯轉換到資料庫後台。
SELECT CASE 'green'
WHEN 'red' THEN 'stop'
WHEN 'green' THEN 'go' END;
格式化函數:
DATE_FORMAT(date,fmt):依照字串fmt格式化日期date值
TIME_FORMAT(time,fmt):依照字串fmt格式化時間time值
類型轉化函數:
為了進行資料類型轉化,MySQL提供了CAST()函數,它可以把一個值轉化為指定的資料類型。類型有:BINARY,CHAR,DATE,TIME,DATETIME,SIGNED,UNSIGNED
樣本:
SELECT CAST(NOW() AS SIGNED INTEGER), CURDATE()+0;
SELECT 'f'=BINARY 'F', 'f'=CAST('F' AS BINARY);
系統資訊函數:
CONNECTION_ID():返回當前客戶的串連ID
VERSION():返回MySQL伺服器的版本
USER()或SYSTEM_USER():返回當前登陸使用者名稱
FOUND_ROWS():返回最後一個SELECT查詢進行檢索的總行數
http://bxbx258.blog.51cto.com/339450/106008
7 MySQL解決亂碼問題在資料庫安的時候指定字元集,如果在安完了以後可以更改以下檔案:C:\ProgramFiles\MySQL\MySQL Server 5.0\my.ini 裡的所有的 default-character-set=gbk C:\Program Files\MySQL\MySQL Server 5.0\data\depot_development\db.optdefault-character-set=gbk default-collation=gbk_chinese_ci 建立資料庫時候:指定字元集類型
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。