小編的世界 優質文選 資料
字體大小:
2021年10月29日 -
:
麻麻麻辣燙
SQL,即Structured Query Language 結構化查詢語言。
MYSQL:開源免費的數據庫,小型的數據庫.已經被Oracle收購了.MySQL6.x版本也開始收費。
數據定義語言:簡稱DDL(Data Definition Language),用來定義數據庫對象:數據庫,表,列等。關鍵字:create,alter,drop等
數據操作語言:簡稱DML(Data Manipulation Language),用來對數據庫中表的記錄進行更新。關鍵字:insert,delete,update等
數據控制語言:簡稱DCL(Data Control Language),用來定義數據庫的訪問權限和安全級別,及創建用戶
數據查詢語言:簡稱DQL(Data Query Language),用來查詢數據庫中表的記錄。關鍵字:select,from,where等
數值類型
日期和時間類型
字符串類型
通配符: 用來匹配一部分的特殊字符
_ : 匹配任意一個字符% : 任意0~n個字符
聚合函數
COUNT():統計指定列不為NULL的記錄行數;
MAX():計算指定列的最大值,如果指定列是字符串類型,那麼使用字符串排序運算;
MIN():計算指定列的最小值,如果指定列是字符串類型,那麼使用字符串排序運算;
SUM():計算指定列的數值和,如果指定列類型不是數值類型,那麼計算結果為0;
AVG():計算指定列的平均值,如果指定列的類型不是數值類型,那麼計算結果為0;
注意:凡是和聚合函數同時出現的列名,一定要寫在group by 之後分組時候是無法體現單個數據的group by 一般會和聚合函數配合使用,單獨使用的時候意義不大
having和where的區別
having是在分組後對數據進行過濾,而where是在分組前對數據進行過濾
having後面可以使用聚合函數(統計函數),where後面不可以使用聚合函數
LIMIT用來限定查詢結果的起始行,以及總行數。
常用的兩種引擎:
(1) InnoDBa,支持ACID,簡單地說就是支持事務完整性、一致性;b,支持行鎖,以及類似ORACLE的一致性讀,多用戶並發;c,獨有的聚集索引主鍵設計方式,可大幅提升並發讀寫性能;d,支持外鍵;e,支持崩潰數據自動修複;InnoDB設計目標是處理大容量數據庫系統,它的CPU利用率是其它基於磁盤的關系數據庫引擎所不能比的。它是一個可靠的事務處理引擎,不支持全文本搜索(2) MyISAMa,不支持 每次查詢具有原子性b,只支持表鎖c,強調的是性能,其執行速度比InnoDB類型更快,但是不提供事務支持d,如果執行大量的SELECT,MyISAM是更好的選擇
視圖
視圖是一個虛擬表(非真實存在),其本質是根據SQL語句獲取動態的數據集,並為其命名,用戶使用時只需使用名稱即可獲取結果集,並可以將其當作表來使用。
觸發器
對某個表進行增/刪/改操作的前後如果希望觸發某個特定的行為時,可以使用觸發器,觸發器用於定制用戶對表的行進行增/刪/改前後的行為。
存儲過程
存儲過程是一個SQL語句集合,當主動去調用存儲過程時,其中內部的SQL語句會按照邏輯執行。
存儲過程和函數存在以下幾個區別:
1)一般來說,存儲過程實現的功能要複雜一點,而函數實現的功能針對性比較強。存儲過程,功能強大,可以執行包括修改表等一系列數據庫操作;用戶定義函數不能用於執行一組修改全局數據庫狀態的操作。
2)對於存儲過程來說可以返回參數,如記錄集,而函數只能返回值或者表對象。函數只能返回一個變量;而存儲過程可以返回多個。存儲過程的參數可以有IN,OUT,INOUT三種類型,而函數只能有IN類~~存儲過程聲明時不需要返回類型,而函數聲明時需要描述返回類型,且函數體中必須包含一個有效的RETURN語句。
3)存儲過程,可以使用非確定函數,不允許在用戶定義函數主體中內置非確定函數。
4)存儲過程一般是作為一個獨立的部分來執行( CALL 語句執行),而函數可以作為查詢語句的一個部分來調用(SELECT調用)。
SQL語句中不可用存儲過程,而可以使用函數。