MySql基礎知識總結
一、SQL語句的分類
- DDL(資料定義語言):用來定義資料庫物件:比如庫、表、列、觸發器、檢視、函式、儲存過程等
(可以理解為建立語言)
資料庫級別:
建立資料庫:Create database if not exists db_name;
刪除資料庫:Drop database if exist db_name;
表級別
建立表:Create Table stu(
sid int primary key,
sname varchar(25));
刪除表:Drop Table
此外:還有對資料庫和表級別上的修改
- DML(資料操縱語言):用來運算元據庫記錄(資料)
操作的是記錄級別的
DML是對錶的記錄進行操作,包括插入操作、刪除操作、修改操作
- DCL(資料控制語言):用來定義訪問許可權和安全級別
DCL這是對資料庫使用者、許可權級別的操作
- DQL(資料查詢語言):用來查詢資料記錄
DQL是對錶的記錄進行查詢,以select開頭的SQL語句
二、儲存引擎
MySQL資料庫儲存引擎總結:點選這裡
儲存引擎:與其他資料庫軟體不同,MySql資料庫軟體提供了一個名為儲存引擎的概念。儲存引擎是MySQL資料庫管理系統的一個重要特徵,在具體開發時,為了提高MySQL資料庫管理系統的使用效率和靈活性,可以根據實際需要來選擇儲存引擎。
SHOW ENGINES 檢視當前資料庫所支援的引擎
SHOW VARIABLES LIKE 'have%'; 檢視當前資料庫所支援的引擎
SHOW VARIABLES LIKE 'storage_engine%'; 檢視當前資料庫預設搜尋引擎
幾種常用的資料庫引擎:MyISAM 、InnoDB、MEMORY
更多詳細檢視《深入淺出:MySQL資料庫開發、優化與管理維護》
儲存引擎和資料型別,前者決定了資料庫物件表的型別,後者決定了資料庫物件表中儲存資料型別
三、索引
理解索引前先百度搜尋“鍵與索引的區別”,這裡推薦一篇點選這裡
索引(資料庫提高效能最常用的工具)主要是為了提高從表中檢索資料的速度。由於資料儲存在資料庫表中,所以索引是建立資料庫表物件上的,由表中的一個欄位或多個欄位生成的鍵組成,這些鍵儲存在資料結構(B樹雜湊表)中。索引分為B型樹索引和雜湊索引。
InnoDB和MyISAM儲存引擎支援B樹索引,不支援雜湊索引;MEMORY儲存引擎支援雜湊索引,也支援B樹索引
索引分為普通索引(INDEX),唯一索引(UNIQUE INDEX)(主鍵一定是唯一索引,唯一索引不一定是主鍵)、主鍵索引、全文索引(FULLTEXT INDEX)、多列索引。在以下情況建立索引:
(1)經常被查詢的欄位,即在WHERE子句中出現的欄位;(如果不是唯一,也不是主鍵,可以建立普通索引)
(2)在分組的欄位,即在GROUP BY子句中出現的欄位;(組別,很顯然不能是唯一索引,也不能是主鍵索引,所以只能是普通索引)
(3)存在依賴關係的子表和父表之間的聯合查詢,即主鍵或外來鍵處;(可以是主鍵索引,或者是唯一索引)
(4)唯一約束的欄位(唯一索引)
全文索引:主要關聯在資料型別為CHAR、VARCHAR和TEXT的欄位上、以便能夠更加
快速地查詢資料量較大的字串型別的欄位。(全文索引只能在MyISAM上建立)
(MyISAM的特點是:不支援事務,不支援外來鍵,訪問速度快(對事務完整性或者以select、Insert為主的應用基本都可以使用這個引擎)。
聯想:
InnoDB的特點是:在事務上具有優勢,也支援具有提交、回滾、奔潰回覆能力的事務安裝,比MyISAM儲存引擎佔用更多的磁碟空間。
MEMORY的特點是:使用記憶體來儲存資料,訪問速度是比MyISAM和InnoDB還要快的,但是安全上沒有保障,即伺服器斷點關機後,資料清零。
如果資料小並且能承受丟失的風險,可以使用這種引擎(用於那些內容變化不頻繁的程式碼表,或者作為統計操作的中間結果表))
多列索引:是指在建立索引時,所關聯的欄位不是一個欄位,而是多個欄位,雖然可以通過所關聯的欄位進行查詢,但是隻有查詢條件中使用了所關聯欄位中的第一個欄位,多列索引才會被使用(只有被使用的時,查詢的速度才會加快)
索引的優缺點:
優點:
(1)大大加快資料的檢索速度;
(2)建立唯一性索引,保證資料庫表中每一行資料的唯一性;
(3)加速表和表之間的連線;
(如果是在:存在依賴關係的子表和父表之間的聯合查詢,即主鍵或外來鍵處;(可以是主鍵索引,或者是唯一索引))
(4)在使用分組和排序子句進行資料檢索時,可以顯著減少查詢中分組和排序的時間。
(如果是在:在分組的欄位,即在GROUP BY子句中出現的欄位;(組別,很顯然不能是唯一索引,也不能是主鍵索引,所以只能是普通索引))
缺點:
(1)索引需要佔用物理空間。
(2)當對錶中的資料進行增加、刪除和修改的時候,索引也要動態的維護,降低了資料的維護速度。
( 查詢時速度增加,但在資料增加、刪除和修改的時候速度降低)
關於BTREE索引和HASH索引:
HASH索引:
(1)HASH索引查詢資料基本上能一次定位資料,所以用於使用=或<=>操作符號的等式比較
(2)HASH索引對ORDER
BY有加速作用
(3)只能用整個關鍵字搜尋一行, 而不能用字首(因為HASH索引需要準確的定位)BTREE索引(btree索引就得在節點上挨著查詢了,很明顯在資料精確查詢方面hash索引的效率是要高於btree的):
(1)適用於>、<、>=、<=、BETWEEN AND、!=或者<>、LIKE(適用於範圍)
四、檢視
五、觸發器
相關文章
- Java基礎知識總結Java
- React 基礎知識總結React
- 索引基礎知識總結索引
- php基礎知識總結PHP
- JavaSE基礎知識總結Java
- Rust 基礎知識總結Rust
- MySQL基礎知識點彙總MySql
- MySQL基礎知識和常用命令總結MySql
- JS基礎知識深入總結JS
- ES 基礎知識點總結
- Java基礎知識點總結Java
- Java基礎知識總結-1Java
- Redis 基礎知識點總結Redis
- SpringIOC基礎知識總結Spring
- CSS基礎知識點總結CSS
- cocosCreator基礎知識總結
- 【JavaScript的基礎知識總結】JavaScript
- Jsp基礎知識總結JS
- TCP/IP 基礎知識總結TCP
- CSS基礎知識總結(4)CSS
- JS基礎知識總結(1)JS
- JS基礎知識總結(2)JS
- MySQL基礎知識小結(一)MySql
- yii2 基礎知識總結
- Java基礎面試知識點總結Java面試
- 前端知識點總結——JavaScript基礎前端JavaScript
- Flutter 知識點總結-基礎篇Flutter
- Java基礎對反射知識總結Java反射
- 演算法基礎知識總結演算法
- iOS基礎面試知識點總結iOS面試
- JAVA基礎知識精華總結(一)Java
- JAVA基礎知識精華總結(二)Java
- MySQL知識總結MySql
- Java個人知識點總結(基礎篇)Java
- 正規表示式基礎知識總結
- 資料庫基礎知識總結(轉)資料庫
- PHP新手總結的PHP基礎知識PHP
- MySql基礎知識(2)MySql