面試-MySQL,mysql面試題

來源:互聯網
上載者:User

面試-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 建立資料庫時候:指定字元集類型


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.