掌握資料庫級 DDL(Data Definition Language)是 MySQL 入門第一課。本文涵蓋 SHOW DATABASES、CREATE DATABASE、DROP DATABASE、USE 核心指令,以及 mysqladmin、檔案系統級操作等輔助手段。
SHOW DATABASES;
-- 篩選
SHOW DATABASES LIKE 'my%'; -- 支援 % _ 通配符
對應命令列:mysqlshow(無參數即列出所有庫)。
CREATE DATABASE db_name;
-- 避免重複報錯 (3.22+)
CREATE DATABASE IF NOT EXISTS db_name;
本質:在 MySQL 資料目錄下建立同名子目錄。
命令列工具:mysqladmin create db_name
DROP DATABASE [IF EXISTS] db_name;
-- 返回被刪除檔案數(約 3×表數:.frm/.MYD/.MYI)
命令列工具:mysqladmin drop db_name
極度危險:資料與結構永久消失,無回收桶,操作前必備份!
USE db_name;
-- 後續無前綴表名操作皆針對此庫
SELECT * FROM mytable; -- 實為 db_name.mytable
跨庫查詢仍需全名:SELECT * FROM other_db.other_table;
USE 是客戶端指令,可不加分號;也可在連接字串指定預設庫。
因資料庫本質是目錄,可直接操作:
前提:MySQL 服務停止,或執行 FLUSH TABLES WITH READ LOCK 確保無寫入。
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user: 'root@localhost' (Using password: YES)'
解決:指定有效帳密 -u user -p,確認 skip-networking、bind-address、防火牆、host 欄位授權。
| 操作 | SQL 指令 | 命令列工具 | 檔案系統 |
|---|---|---|---|
| 列出 | SHOW DATABASES | mysqlshow | ls $datadir |
| 建立 | CREATE DATABASE [IF NOT EXISTS] | mysqladmin create | mkdir $datadir/db |
| 刪除 | DROP DATABASE [IF EXISTS] | mysqladmin drop | rm -rf $datadir/db |
| 選用 | USE db_name | --database=db_name (客戶端) | N/A |