Q:數據庫啓動失敗,提示找不到pid文件
A:1、之前的數據庫服務未釋放,導致3306端口處於佔用狀態
2、數據庫初始化失敗
3、數據目錄位置錯誤
4、數據目錄權限問題
SQL模型:
ANSI QUOTES
IGNORS_SPACE
STRICT_ALL_TABLES
STRICT_TRANS_TABLES
RADITIONAL
MYSQL服務器變量:
作用域:分爲兩類
全局變量
SHOW GLOBAL VARIABLES
會話變量
SHOW [SESSION] VARIABLES
DDL:數據操作語言
INSERT
DELETE
SELECT
UPDATE
DML:數據定義語言
CREATE
DROP
ALTER
DCL:數據控制語言
GRANT
REVOKE
RDB對象:
庫、表、索引、視圖、用戶、存儲過程、存儲函數、觸發器、事件調度器。
約束:
域約束:數據類型約束
外鍵約束:引用完整性約束
主鍵約束:某字段能唯一標識此字段所屬的實體,並且不允許爲空一張表中可以有多個
檢查性約束:age:int
關係型數據庫:
表示層:表
邏輯層:存儲引擎
物理層:數據文件
數據存儲和查詢
存儲管理器:
權限機完整性管理
事務管理器
文件管理器
緩衝區管理器
查詢管理器:
DML解釋器
DDL解釋器
DCL解釋器
查詢執行引擎
mysql是單進程多線程的系統;不會給多個進程啓動多個進程!
線程複用
mysql不支持對稱多處理器(smp),意思是不能在一個sql處理分攤到多個cpu上處理,因此在處理速度上面就慢。
關係運算:
投影:只輸出指定的字段
選擇:只輸出符合條件的行
自然鏈接:具有相同名字的所有屬性值上取值相同的行
笛卡爾積:
SQL查詢語句:
sequel ---> SQL
SQL-86
SQL-89
SLQ-92
SQL-99
SQL-08
SQL語言的組成部分:
DDL:
DML:
完整性定義語言:DDL的一部分功能
視圖定義:
事務控制:
嵌入式SQL和動態SQL:
授權:DCL
使用程序設計語言如何RDBMS交互:
嵌入式SQL:與動態SQL類似,但其語言必須程序編譯時完全確定下來;
ODBC;針對的程序爲 C
動態SQL:程序設計語言使用函數(mysql_conect())或者方法與RDBMS服務器建立連接,並進行交互;通過建立連接向SQL服務器發送查詢語句,並將結果保存至變量中而後進行處理。
JDBC;針對的程序爲 JAVA
MYSQL支持插件式存儲引擎
mysql 5.5.8的之前的存儲引擎是MyISAM,不支持事務。特別適合查詢比較多但是修改比較少的場景。
mysql 5.5.8版本之後的存儲引擎是InnoDB,
表管理器:負責創建、讀取或修改表定義文件;維護表描述高速緩存;管理表鎖。
表結構定義文件。
表修改模塊:表創建、刪除、重命名、移除、更新或插入之類的操作
表維護模塊:;檢查、修改、備份、恢復、優化(碎片整理)及解析;
文件中記錄組織:
堆文件組織:一條記錄可以放在文件中的任何地方。
順序文件組織:根據”搜索碼“值順序存放;
散列文件組織:
表結構定義文件;表數據文件
表空間:table space
數據字典:Data Dictionary;mysql初始化,即mysql的數據字典
關係的元數據:
關係的名字
字段的名字
字段的類型和長度
視圖
約束
用戶名字、授權、密碼
緩衝區管理器:
緩存置換策略: