一、簡介
由MySQL AB公司開發,是最流行的開放源碼SQL數據庫管理系統,主要特點:
1、是一種數據庫管理系統
2、是一種關聯數據庫管理系統
3、是一種開放源碼軟件,且有大量可用的共享MySQL軟件
4、MySQL數據庫服務器具有快速、可靠和易於使用的特點
5、MySQL服務器工作在客戶端/服務器模式下,或嵌入式系統中
InnoDB存儲引擎將InnoDB表保存在一個表空間內,該表空間可由數個文件創建。這樣,表的大小就能超過單獨文件的最大容量。表空間可包括原始磁盤分區,從而使得很大的表成爲可能。表空間的最大容量爲64TB。
二、MySQL 存儲引擎,也稱表類型
2.1. MySQL 存儲引擎,也被稱爲表類型:
MyISAM表:無事務處理功能,支持表鎖
.frm:表結構定義文件
.MYD:表數據文件
.MYI:表索引文件
InnoDB表:支持事務處理功能,支持行鎖
.frm:表結構定義文件
.ibd:表空間(包含數據和索引文件)
2.2. MySQL常用的查詢命令:
SHOW ENGINES; #查看數據庫支持的引擎及狀態。
SHOW TABLE STATUS LIKE 'user' \G #查看錶user的屬性信息,\G豎排顯示
mysqld --help --verbose #查看mysql支持的各種相關指令
SHOW CHARACTER SET; #顯示所有支持的字符集
SHOW COLLATION ; #顯示各個字符集下的排序規則
2.3. 程序語言連接數據的方式:
動態SQL:通過函數或方法與數據庫服務建立連接,
嵌入式SQL:
2.4. MySQL工具:
客戶端工具:
mysql(登錄工具), mysqladmin(管理工具),
mysqldump(備份工具), mysqlimport,mysqlcheck
服務器端工具:
mysqld(啓動進程), mysqld_safe(安全線程),
mysqld_multi(支持多實例)
2.5. MySQL配置文件:my.cnf
配置文件啓動順序爲,/etc/my.cnf -->/etc/mysql/my.cnf -->$MYSQL_HOME/my.cnf
--> --default-extra-file=/path/to/somefile -->~/.my.cnf
2.6. MySQL啓動失敗的原因大致有:
1、此前mysql服務未關閉 killall mysqld
2、數據初始化失敗
3、數據目錄位置錯誤
4、數據目錄權限問題
2.7. DBA的工作內容:
開發DBA:數據庫設計,SQL語句,存儲過程,存儲函數,觸發器
管理DBA:安裝,升級,備份,恢復,用戶管理,權限管理,監控,性能分析,基準測試
2.8. MySQL數據類型:
數值型:
精確數值型: int(整數型) decimal(十進制型)
近似數值型: float(單精度浮點型) double(雙精度浮點型) real(實數型)
字符型:
定長字符型:CHAR(NUM), BINARY(區分大小寫) 最長不超過255個字符
變長字符型:VARCHAR(NUM), VARBINARY(區分大小寫) 最長不超過65535
ENUM枚舉型:ENUM('A','BB','CC','DD')用戶只能在列舉中選擇一個
SET枚舉字符串型
日期時間型:
date日期, time時間, datetime日期時間, timestamp時間戳, year年
2.9. 數據類型需具備以下幾點:
1、存入的值類型
2、佔據的存儲空間
3、是變長還是定長
4、如何比較及排序
5、是否能夠索引
AUTO_INCREMENT 自動增長類型,需滿足幾點:必須爲整型,非空,元符號,主鍵或唯一鍵
eg:CREATE TABLE test(ID INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,Name CHAR(20))
創建一個test表,包含2個字段ID和Name,ID字段的修飾符必須是INT(整型),UNSIGNED(無符號的)
AUTO_INCREMENT(自動增長),NOT NULL(非空的),PRIMARY KEY(主鍵)。
Name字段類型爲CHAR(20)(定長字符型長度爲20).
mysql> SELECT LAST_INSERT_ID();
2.10. MySQL服務器變量:
按作用域,分兩類:
全局變量
SHOW GLOBAL VARIABLES LIKE ' '; 查看全局變量
會話變量
SHOW [SESSION] VARIABLES LIKE ' '; 查看會話變量
按生效時間,分兩類:
可動態調整的變量:可即時修改
靜態變量:
寫在配置文件中,通過參數傳遞給mysqld
動態調整參數的生效方式:
全局變量:對當前會話無效,只對新建立會話有效;
會話變量:即時生效,但只對當前會話有效;
服務器變量:@@變量名
顯示:SELECT
設定:SET GLOBAL|SESSION 變量名='value'
mysql> SET GLOBAL sql_mode='strict_all_tables'; #設定sql_mode的值爲strict_all_tables
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @@global.sql_mode; #查看sql_mode的全局變量
+-------------------+
| @@global.sql_mode |
+-------------------+
| STRICT_ALL_TABLES |
+-------------------+
1 row in set (0.00 sec)
mysql> SELECT @@sql_mode; #查看sql_mode的會話變量
+------------+
| @@sql_mode |
+------------+
| |
+------------+
1 row in set (0.00 sec)
---end---