1302 words
7 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’); |(=, <, >, !=)| | 條件式查詢 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 ‘%字串%’; | |

匯出資料庫#

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