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