程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

面試-MySQL

編輯: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 建立數據庫時候:指定字符集類型

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved