1246 words
6 minutes
MySQL 的基礎語法使用筆記

前言#

自己經常用資料庫(數據庫),但是語法如果太久沒用都會忘光光,我就在這篇文章當作一個小抄,不然每次碰到 MySQL 語法問題都要 Google 一下語法使用,很麻煩。

MySQL 使用工具#

我自己是比較偏好使用 MariaDB,因人而異,總之我這篇文章就略過什麼 MySQL 安裝過程,這些都是自己探索安裝一下就可以了。

Terminal window
# 進入 MySQL 指令
# 登入使用者為 root
mysql -u root -p

基礎語法#

自行修改中文成英文。不要真的輸入中文當資料庫名稱或資料表名稱喔。

操作功能MySQL 語法格式說明
列出所有資料庫show databases;
建立資料庫create database 資料庫名稱;
刪除資料庫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字元)
列出所有資料表show tables;
列出資料表欄位資訊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’);(=, <, >, !=)
條件式查詢 andselect * from 資料表名稱 where 條件式1 and 條件式2;
條件式查詢 orselect * from 資料表名稱 where 條件式1 or 條件式2;
查詢某一範圍 betweenselect * 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 ‘%字串%‘;

匯出資料庫#

mysqldump 是個匯出 Database (資料庫) 的指令,也是 IT 人員最常用到的 MySQL 資料庫匯出方法之一。

Terminal window
mysqldump -u root -p 資料庫名稱 > database_name.sql
  • —all-databases: 匯出所有資料庫。
  • —no-data: 不匯出資料。
  • —routine: 匯出 stored routines (預存程序) 和自訂函數。
  • —single-transaction: 該選項從伺服器轉儲數據之前發出一個BEGIN SQL- 句。
  • —skip-lock-tables: 不鎖定 table (資料表)。
  • —trigger: 匯出 trigger (觸發器)。

匯入資料庫#

匯入 *.sql 最簡單的辦法的辦法就是進入 MySQL 建立一個資料庫並使用該資料庫,然後直接加載 *.sql

進入 MySQL:

Terminal window
mysql -u root -p

建立並加載資料表,加載的資料庫位置是在檔案系統中的絕對位置。

mysql > create database test;
mysql > use test;
mysql > source /home/user/test.sql;

新建資料庫使用者#

我一般是建議新建一個跟 root 擁有一樣權限的使用者。

mysql > GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql > FLUSH PRIVILEGES;
mysql > exit

Reference#

MySQL 的基礎語法使用筆記
https://huangno1.github.io/posts/mysql_learn_note_basic/
Author
HuangNO1
Published at
2020-12-24
License
CC BY-NC-SA 4.0