MYSQL基礎知識總結(二)

五、運算符和函數

5.1、字符函數

名稱 描述 說明
CONCAT() 字符連接  CONCAT(str1,str2,...);SELECT CONCAT(first,second) AS name FROM user
CONCAT_WS() 使用指定的分隔符進行連接 CONCAT_WS(str1,str2,...);SELECT CONCAT(‘-’,'imooc','MYSQL')
FORMAT() 數字格式化 FORMAT(NUMBER,n);保留n爲小數,返回字符型數字
LOWER() 轉換成小寫字母  
UPPER() 轉換成大寫字母  
LEFT() 獲取左側字符 LEFT(str,n)
RIGHT() 獲取右側字符  
LENGTH() 獲取字符串長度  
LIRIM() 刪除前導空格  
RTRIM() 刪除後續空格  
TRIM() 刪除前導和後續空格  
SUBSTRING() 字符串截取 位置可以爲負值,但是長度不能爲負值
[NOT]LIKE 模式匹配 like+通配符進行過濾,“%”任意字符出現任意次數,"_"匹配單個字符,
"[JM]"以J或M開頭的,"[^JM]"不易J或M開頭的,[]指定範圍的單個字符
REPLACE() 字符串替換  

5.2、數值運算符及函數

名稱 描述 說明
CEIL() 進一取整 向上取整,ceil(2.99)=3
DIV 整數除法  
FLOOR() 舍一取整  
MOD 取餘數(取模)  
POWER() 冪運算  
ROUND() 四捨五入 ROUND(NUM,n),n爲保留幾位小數
TRUNCATE() 數字截取 TRUNCATE(NUM,n),注意TRUNCATE(125.89,0)=125,TRUNCATE(125.89,-1)=120,
TRUNCATE(125.89,-2)=100,TRUNCATE(125.89,-3)=0

5.3、比較遠算符及函數

名稱 描述 說明
[NOT]BETWEEN...AND... [不]在範圍之內  
[NOT]IN() [不]在列出值範圍內  
IS [NOT] NULL [不]爲空  

5.4、日期時間函數

名稱 描述 說明
NOW() 當前日期和時間  
CURDATE() 當前日期  
CURTIME() 當前時間  
DATE_ADD() 日期變化 SELECT DATE_ADD('2014-3-12',INTERVAL 1 YEAR),這個輸出爲2015-03-12
DATEDIFF() 日期差值  
DATE_FORMAT() 日期格式化  

5.5、信息函數

名稱 描述
COUNECTION_ID() 連接ID
DATABASE() 當前數據庫
LAST_INSERT_ID() 最後插入記錄的ID號。注意:不管一次插入幾條記錄,返回的都是最後一條的ID號
USER() 當前用戶
VERSION() 版本信息

5.6、聚合函數

名稱 描述 說明
AVG() 平均數,NULL 值不包括在計算中 SELECT customers FROM Orders WHERE orderPrice>(SELECT AVG(orderPrice) FROM Orders)
COUNT() 計數,NULL值不計入 SELECT COUNT(*) FROM tbl_name//返回表中的記錄數
SELECT COUNT(DISTINCT column_name) FROM tbl_name;//返回指定列不通知的數目
MAX() 最大值  
MIN() 最小值  
SUM() 求和  

5.7、加密函數

名稱 描述 說明
MD5() 信息摘要算法 SELECT MD5('KCY')
PASSWORD() 密碼算法 SET PASSWORD = PASSWORD('root);將用戶的密碼修改成root

5.8、自定義函數

創建自定義函數:

              CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} rountine_body

例如:1)編寫一個無參函數,改寫日期的格式

               CREATE FUNCTION f1() RETURNS VARCHAR(30) RETURNS DATE_FORMAT(NOW(),%Y年%m月%d日 %H點%i分%s秒");

               調用:SELECT f1();

            2)編寫一個有參函數來計算均值

               CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED) RETURNS float(10,2)unsigned return (num1+num2)/2;

               調用:SELECT f2(10,15);

六、MYSQL中的存儲引擎

6.1、存儲引擎就是以不同的存儲機制、索引、鎖方式等技術將數據存儲在文件或者內存中;

          常見的存儲引擎有MyISAM、InnoDB、Menory、Archive等
6.2、併發控制,多個連接對數據庫進行修改時保證數據的一致性和完整性,MySQL提供兩個級別的併發控制分別爲服務器級和存儲引擎級。
6.3、鎖,實現併發控制的一種方法。 
         1)、鎖分爲共享鎖(讀個用戶可同時進行讀操作)和排他鎖(只有一個用戶進行寫操作)
         2)、鎖的粒度表級鎖(開銷較小)和行級索(開銷較大)。    
6.4、事務,是恢復和併發控制的基本單位;
         1)、數據庫事務的四特性ACID如下:
           Atomic 原子性,整個數據庫事務是不可分割的工作單位
           Consistency 一致性,數據庫事務不能破壞關係數據的完整性以及業務邏輯上的一致性
           Isolation 隔離性,在併發環境中,當不同的事務同時操縱相同的數據時,每個事務都有各自的完整數據空間
           Durability 持久性,指的是隻要事務成功結束,它對數據庫所做的更新就必須永久保存下來
         2)、事務的隔離級別
           Serializable:可避免髒讀、不可重複讀、虛讀情況的發生。
           Repeatable read:可避免髒讀、不可重複讀情況的發生。(可重複讀,是 mysql 默認的事務隔離級別)
           Read committed:可避免髒讀情況發生。(讀取已提交的數據)
           Read uncommitted:最低級別,以上情況均無法保證。(讀取到了未提交的數據)
         3)、實際的開發過程用到事務開啓、回滾、關閉等操作,保證數據的正確性。
 6.5、索引,在存儲引擎級別實現的,對一行或者多行記錄進行排序的結構,包含普通索引、唯一索引、主鍵索引、組合索引等,索引的創建同表的創建 

                      create [unique]index on t_name(字段);
6.6、不同存儲引擎之間的對比
        1)、MyISAM:存儲限制爲256TB,支持索引,表鎖,可進行數據壓縮
        2)、InnoDB: 存儲限制爲64TB, 支持事務,支持索引,行鎖,支持外鍵
        3)、Memory: 存在內存中,支持索引,表鎖
        4)、Archive:無存儲限制,行鎖,支持數據壓縮

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章