2012-12-04

MySQL 語法匯整

接觸 MySQL 多年的凍仁一直以來都沒有好好的指令記完,一般都會使用 phpMyAdmin 這類的 GUI 來操作 MySQL,所以把常用的 select, insert, update, drop 背熟就偷笑了!可只有這些對凍仁而言是不夠的,當 GUI 失靈時還是得依賴指令來完成任務,再還未精通前就讓凍仁在自家基地放本小抄了。

1. 基礎語法

操作功能 SQL 語法
說明
建立資料庫 create database 資料庫名稱;
列出所有資料庫 show databases;
刪除資料庫 drop database 資料庫名稱;
使用資料庫 use 資料庫名稱;
建立資料表 create table 資料表名稱(
sn integer auto_increment primary key,
name char(20),
mail char(50),
home char(50),
messages char(50)
);
常用資料庫資料型態
1. INT (整數)
2. CHAR (1~255字元字串)
3. VARCHAR (不超過255字元不定長度字串)
4. TEXT (不定長度字串最多65535字元)

列出資料表欄位資訊 describe 資料表名稱;
修改資料表欄位 alter table 資料表名稱
change column 原來欄位名稱
新欄位名稱資料型態;
新增資料表欄位 alter table 資料表名稱 add column 欄位名稱 資料型態;
刪除資料表欄位 alter table 資料表名稱 drop column 欄位名稱;
刪除資料表 drop table 資料表名稱;
清空資料表 truncate table 資料表名稱; 只清除資料並保留結構、欄位、索引 …
插入欄位資料 insert into 資料表名稱(欄位1,欄位2,欄位3,欄位4, ...... 欄位N)
values('值1','值2','值3','值4', ...... '值N');
更新修改欄位資料 update 資料表名稱 set 欄位1='值1',欄位2='值2',欄位3='值3',... 欄位N='值N'
where 條件式 (例如 sn='5' 或 name='塔司尼' );
查詢單一欄位資料 select 欄位名 from 資料表名稱;
查詢多個欄位資料 select 欄位名, 欄位名, 欄位名 from 資料表名稱;
查詢欄位資料的唯一值 select distinct 欄位名 from 資料表名稱; 重複值只列一次
查詢所有欄位資料 select * from 資料表名稱;
條件式查詢 select * from 資料表名稱 where 條件式 (例如 sn='5'); (=, <, >, !=)
條件式查詢 and select * from 資料表名稱 where 條件式1 and 條件式2;
條件式查詢 or select * from 資料表名稱 where 條件式1 or 條件式2;
查詢某一範圍 between select * from 資料表名稱 where 欄位名 between 值1 and 值2; 值為數字
查詢空值欄位的資料 select * from 資料表名稱 where 欄位名 is null not null;
查詢特定筆數資料 select * from 資料表名稱 limit 8, 10; 第9筆開始選取10筆
查詢結果遞增排序 select * from 資料表名稱 order by 欄位名;
查詢結果遞減排序 select * from 資料表名稱 order by 欄位名 desc ;
查詢比對字串列出單一欄位 select 欄位名 from 資料表名稱 where 欄位名 like '%字串%';
查詢比對字串列出所有欄位 select * from 資料表名稱 where 欄位名 like '%字串%';
刪除條件值資料 delete from 資料表名稱 where 條件式 (例如 sn='5' 或 id='91001' );
刪除條件值資料 delete from 資料表名稱 where 條件式1
and
條件式2;
刪除條件值資料 delete from 資料表名稱 where 條件式1 or 條件式2;
比對刪除條件值資料 delete from 資料表名稱 where 欄位名 like '%字串%';

2. 進階語法

操作功能 SQL 語法
說明
查看正在執行的行程 show processlist;
查看 Master 狀態 show master status;
查看 Slave 狀態 show slave status\G;
查看 binlog 狀態 show binary logs;
清除過時的 binlog purge binary logs to 'mysql-bin.000006'; 將刪除 mysql-bin.000001 ~ 5 的 binlog

3. mysqldump - MySQL 匯出語法

mysqldump 是個匯出 Database (資料庫) 的指令,也是 IT 人員最常用到的 MySQL 資料庫匯出方法之一。
[ jonny@trusty ~ ]
$ mysqldump -u root -p 資料庫名稱 > database_name.sql [Enter]
  • --all-databases: 匯出所有資料庫。
  • --no-data: 不匯出資料。
  • --routine: 匯出 stored routines (預存程序) 和自訂函數。
  • --single-transaction: 該選項從伺服器轉儲數據之前發出一個BEGIN SQL語句。
  • --skip-lock-tables: 不鎖定 table (資料表)。
  • --trigger: 匯出 trigger (觸發器)。

站內連結:
MySQL 大學筆記 on Windows XP

相關連結:
刪除整個資料表,使用 Delete, Truncate 與 Drop 的差異 @ 月神的咖啡館
How to setup MySQL Master/Slave Replication with existing data — The WP Guru
MySQL 5.1 Reference Manual

資料來源:
MySQL 基礎語法手冊 | InspireGate 派克空間
MySQL 5.1 mysqldump 導出備份 | IT 客
Jax 的工作紀錄: (轉載)mysqldump 5.1 資料備份詳細指令 [MySQL]
mysqldump 備份還原和導入匯出語句大全詳解 @ 資訊園