8 如何將SQL語句對映為檔案操作

2021-10-24 12:54:15 字數 1197 閱讀 9342

介紹一下如何將 sql 語句對映為檔案操作。

前面介紹過,在 mysql 中無論哪種儲存引擎的表都會有乙個 .frm 檔案來儲存資料表的結構定義。所以,執行 show tables; 語句相當於列出資料庫目錄中所有 .frm 檔案的基本名,所得到的結果是相同的。

有些資料庫系統使用登錄檔來記錄某資料庫裡的所有資料表,但 mysql 沒有這樣做,因為,mysql 資料目錄的層次結構已經把「登錄檔」隱藏在其中了。

建立資料表時,需要執行 create table 語句定義資料表的結構。無論是哪一種儲存引擎,mysql 伺服器都將建立乙個 .frm 檔案來儲存資料表的結構定義的內部編碼。

mysql 伺服器還會根據指定資料表的具體型別建立出其他必要的檔案。例如,它將為乙個 myisam 資料表建立出乙個 .myd 資料檔案和乙個 .myi 索引檔案;為乙個 merge 資料表建立出乙個 .mgr 資料/索引檔案。

對於 innodb 資料表,innodb 處理程式將在 innodb 表空間裡為資料表初始化一些資料和索引資訊。

當執行 alter table 語句時,mysql 伺服器將對相對應資料表的 .frm 檔案重新進行編碼,來表明資料表的結構性變化,還要對有關的資料檔案和索引檔案的內容進行相應的修改。

create index 和 drop index 等語句也是對相應資料表的 .frm 檔案重新進行編碼,因為 mysql 伺服器在內部是把它們當作等效的 alter table 語句來處理的。改變 innodb 資料表的結構會引起 innodb 處理程式修改 innodb 表空間中資料表的資料,同時也對索引做出相應的修改。

drop table 語句是通過刪除該相應資料表的各種有關檔案而實現的。

對於某些資料表型別,可以通過在相應的資料庫目錄裡刪除與資料表有關的各個檔案的辦法來手動刪除這個資料表。例如,假設 mydb 是當前資料庫,mytb1 是乙個 myisam、archive 或 merge 型別的資料表,那麼 drop table mytb1 語句就大致等效於下面這兩條命令:

cd datadir(資料庫檔案存放路徑)

rm -f mydb/mytb1.* 或 del mydb/mytb1.*

對於 innodb 資料表,因為它的某些組成部分在檔案系統裡沒有實體性的檔案代表,所以沒有等效的檔案系統命令。例如,innodb 資料表在檔案系統裡只有乙個相應的 .frm 檔案,用檔案系統級命令刪除這個檔案後,該資料表在 innodb 表空間中對應的資料和索引將沒有任何意義。

如何將Py檔案打包為exe

1 安裝pip 2 安裝distribute,pip install distribute 3 按照pyinstaller,pip install pyinstaller 將所要打包的程式 即.py檔案和引用的資源檔案 放在乙個資料夾裡,用cmd進入這個目錄,輸入 pyinstaller f w p...

SQL 語句,如何將沒有順序的資料,用指定順序輸出

例如以下是乙個工資表,裡面you很多個部門,現在想按部門順序輸出,而且系統分析部要排第一。可以利用case when 關鍵字來實現此目的。select 人員編號,人員姓名,部門名稱,實發合計,工資年,case 工資月份 when 1 then 1月份工資 when 2 then 2月份工資 when...

如何將UTF 8編碼的CSV檔案轉換為GBK編碼?

我們公司產生的csv檔案一般預設都是utf 8編碼的 考慮到通用性 如果用excel直接開啟就會顯示為亂碼形式的,這是因為在中文windows環境下,excel預設的字元編碼是gbk。所以要想讓excel正常顯示,我們需要先將csv檔案從utf 8編碼修改為gbk編碼。如何操作呢?這是我們客戶經常會...