8、如何将SQL语句映射为文件操作
介紹一下如何將 SQL 語句映射為文件操作。
1. 查詢數據表
前面介紹過,在 MySQL 中無論哪種存儲引擎的表都會有一個 .frm 文件來保存數據表的結構定義。所以,執行 SHOW TABLES; 語句相當于列出數據庫目錄中所有 .frm 文件的基本名,所得到的結果是相同的。
有些數據庫系統使用注冊表來記錄某數據庫里的所有數據表,但 MySQL 沒有這樣做,因為,MySQL 數據目錄的層次結構已經把“注冊表”隱藏在其中了。
2. 創建數據表
創建數據表時,需要執行 CREATE TABLE 語句定義數據表的結構。無論是哪一種存儲引擎,MySQL 服務器都將創建一個 .frm 文件來保存數據表的結構定義的內部編碼。
MySQL 服務器還會根據指定數據表的具體類型創建出其他必要的文件。例如,它將為一個 MyISAM 數據表創建出一個 .MYD 數據文件和一個 .MYI 索引文件;為一個 MERGE 數據表創建出一個 .mgr 數據/索引文件。
對于 InnoDB 數據表,InnoDB 處理程序將在 InnoDB 表空間里為數據表初始化一些數據和索引信息。
3. 更新數據表
當執行 ALTER TABLE 語句時,MySQL 服務器將對相對應數據表的 .frm 文件重新進行編碼,來表明數據表的結構性變化,還要對有關的數據文件和索引文件的內容進行相應的修改。
CREATE INDEX 和 DROP INDEX 等語句也是對相應數據表的 .frm 文件重新進行編碼,因為 MySQL 服務器在內部是把它們當作等效的 ALTER TABLE 語句來處理的。改變 InnoDB 數據表的結構會引起 InnoDB 處理程序修改 InnoDB 表空間中數據表的數據,同時也對索引做出相應的修改。
4. 刪除數據表
DROP TABLE 語句是通過刪除該相應數據表的各種有關文件而實現的。
對于某些數據表類型,可以通過在相應的數據庫目錄里刪除與數據表有關的各個文件的辦法來手動刪除這個數據表。例如,假設 mydb 是當前數據庫,mytb1 是一個 MyISAM、Archive 或 MERGE 類型的數據表,那么 DROP TABLE mytb1 語句就大致等效于下面這兩條命令:
cd DATADIR(數據庫文件存放路徑)
rm -f mydb/mytb1.* 或 del mydb/mytb1.*
對于 InnoDB 數據表,因為它的某些組成部分在文件系統里沒有實體性的文件代表,所以沒有等效的文件系統命令。例如,InnoDB 數據表在文件系統里只有一個相應的 .frm 文件,用文件系統級命令刪除這個文件后,該數據表在 InnoDB 表空間中對應的數據和索引將沒有任何意義。
總結
以上是生活随笔為你收集整理的8、如何将SQL语句映射为文件操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6、查看表结构命令
- 下一篇: 1、MySQL约束概述