事務具有四個特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持續性(Durability)。這四個特性也簡稱ACID性。
(1)原子性:事務是應用中最小的執行單位,就如原子是自然界最小顆粒,具有不可再分的特征一樣。事務是應用中不可再分的最小邏輯執行體。
(2)一致性:事務執行的結果,必須使數據庫從一個一致性狀態,變到另一個一致性狀態。當數據庫中只包含事務成功提交的結果時,數據庫處於一致性狀態。一致性是通過原子性來保證的。
(3)隔離性:各個事務的執行互不干擾,任意一個事務的內部操作對其他並發的事務,都是隔離的。也就是說:並發執行的事務之間不能看到對方的中間狀態,並發執行的事務之間不能相互影響。
(4)持久性:指事務一旦提交,對數據所做的任何改變,都要記錄到永久存儲器中,通常是保存進物理數據庫。
特點
Myisam
BDB
Memory
InnoDB
Archive
存儲限制
沒有
沒有
有
64TB
沒有
事務安全
支持
支持
鎖機制
表鎖
頁鎖
表鎖
行鎖
行鎖
B樹索引
支持
支持
支持
支持
哈希索引
支持
支持
全文索引
支持
集群索引
支持
數據緩存
支持
支持
索引緩存
支持
支持
支持
數據可壓縮
支持
支持
空間使用
低
低
N/A
高
非常低
內存使用
低
低
中等
高
低
批量插入的速度
高
高
高
低
非常高
支持外鍵
支持
InnoDB:是Mysql的默認存儲引擎。當create創建新表時,未指定新表的存儲引擎時,默認使用InnoDB。存儲引擎提供了具有提交、回滾和崩潰恢復能力的事務安全。但是對比Myisam的存儲引擎,InnoDB寫的處理效率差一些並且會占用更多的磁盤空間以保留數據和索引。
選擇標准:根據應用特點選擇合適的存儲引擎,對於復雜的應用系統可以根據實際情況選擇多種存儲引擎進行組合。下面是常用存儲引擎的適用環境:
MyISAM:在Web、數據倉儲和其他應用環境下最常使用的存儲引擎之一。
InnoDB:默認的MySQL插件式存儲引擎,用於事務處理應用程序,具有眾多特性,包括ACID事務支持。
Memory:將所有數據保存在RAM中,在需要快速查找引用和其他類似數據的環境下,可提供極快的訪問。
Merge:允許MySQLDBA或開發人員將一系列等同的MyISAM表以邏輯方式組合在一起,並作為1個對象引用它們。對於諸如數據倉儲等VLDB環境十分適合。
與其他數據庫Oracle、DB2、SQL Server等相比功能稍弱一些
1、可以處理擁有上千萬條記錄的大型數據;
2、支持常見的SQL語句規范 ;
3、可移植行高,安裝簡單小巧 ;
4、良好的運行效率,有豐富信息的網絡支持;
5、調試、管理,優化簡單(相對其他大型數據庫)。
數值型:
日期時間類型:
字符串類型:
空間數據類型:
數學函數
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