文章目錄
一、MySQL存儲引擎
1.什麼是存儲引擎?
存儲引擎就是指表的類型。數據庫的存儲類型決定了表在計算機中的存儲方式。用戶可以根據不同的存儲方式、是否進行事務處理等來選擇合適的存儲引擎
2.如何查看MySQL的存儲引擎?
查看MySQL支持的存儲引擎: SHOW ENGINES
查看顯示支持的存儲引擎信息:
SHOW VARIABLES LIKE 'have%'
查看默認的存儲引擎:
SHOW VARIABLES LIKE 'storage_ engine'
3.MySQL常用存儲引擎及特點
(1)InnoDB
①優缺點:
優勢在於提供了良好的事務管理、奔潰修復能力和併發控制。
缺點是讀寫效率稍差,佔用的數據空間相對比較大。
②適用場合:
更新密集的表:InnoDB存儲引擎特別適合處理多重併發的更新請求。
事務:InnoDB存儲引擎是唯一支持事務的標準MySQL存儲引擎,這是管理敏感數據(如金融信息和用戶註冊信息)的必須軟件
自動災難恢復:與其他存儲引擎不一樣,InnoDB表能夠自動從災難中恢復。雖然MyISAM表也能在災難後修復,但其過程要長的多
(2)MyISAM
①優缺點:
MyISAM存儲引擎的優勢在於佔用空間小,處理速度快,缺點是不支持事務和併發性。
(3)Memory
①MEMORY存儲引擎的優缺點:
MEMORY表的大小是受到限制的。表的大小主要取決於兩個參數,分別是max_rows和max_heap_table_size。其中,max_rows可以在創建表時指定:max_heap_table_size的大小默認爲16MB,可以按需要進行擴大。因其存在內存中的特性,這類表的處理速度非常快。但是其數據容易丟失,生命週期短。(注意:mysqld守護進程奔潰時,所有的MEMORY數據都會丟失)
MEMORY表不支持VARCHAR、BLOB、TEXT數據類型,因爲這種表類型按固定長度的記錄格式存儲。此外,如果使用版本4.1.0之前的MySQL,這不支持自動增長列。
②適用場景:
暫時:目標數據只是臨時需要,在其生命週期中必須立即可用。
相對無關:存儲在MEMORY表中的數據如果突然丟失,不會對應用服務產生實質的負面影響,而且不會對數據完整性有長期影響。
二、數據表創建
1.什麼是表?
- 數據表是數據庫最重要的組成部分之一,是其它對象的基礎
- 數據表是存儲數據的數據結構
- 數據表是包含了特定實體類型的數據
- 數據表由行(row)和列(column)構成的二維網絡
- 數據表一定先有表結構,再有數據
- 數據表至少有一列,可以沒有行或者多行
- 數據表名稱要求唯一,而且不要包含特殊字符
2.如何創建數據表?
(1)代碼實現
CREATE TABLE [IF NOT EXISTS] tbl name( 字段名稱字段類型[完整性約束條件]...)ENGINE=引擎名稱CHARSET=編碼方式;
(2)完整性約束條件
PRIMARY KEY
主鍵
AUTO_INCREMENT
自增長
FOREIGN KEY
外鍵
NOT NULL
非空
UNIQUE KEY
唯一
DEFAULT
默認值
(3)試驗:
提示:
- 註釋:#或–
- 需要輸入中文時,需要臨時轉換客戶端的編碼方式:
SET NAMES GBK;
- 通過
COMMENT給字段添加註釋
測試:
mysql> CREATE TABLE IF NOT EXISTS `user`(
-> id SMALLINT,
-> username VARCHAR(20),
-> age TINYINT,
-> sex ENUM('男','女','保密'),
-> emali VARCHAR(50)
-> )ENGINE=INNODB
-> ;
Query OK, 0 rows affected (0.03 sec)
mysql> SHOW TABLES
-> ;
+----------------+
| Tables_in_test |
+----------------+
| user |
+----------------+
1 row in set (0.00 sec)