資料庫

MySQL/MariaDB 資料庫建立、修改、刪除資料表教學與範例

介紹如何在 MySQL/MariaDB 資料庫中,以指令的方式建立、修改或刪除資料表。

建立資料表

在建立資料表之前,建議先檢查一下該資料表是否已經存在,若存在則先將其刪除:

-- 若 persons 資料表存在,則刪除之
DROP TABLE IF EXISTS persons;

接著使用 CREATE TABLE 指令建立新的資料表:

-- 建立 persons 資料表
CREATE TABLE persons (
  id INT NOT NULL AUTO_INCREMENT,              -- 序號,整數、非空、自動遞增
  name VARCHAR(255),                           -- 名字,可變長度的文字
  age INT UNSIGNED,                            -- 年齡,非負整數
  city ENUM('Taipei', 'Hsinchu', 'Kaohsiung'), -- 所在城市,固定選項
  PRIMARY KEY (id)                             -- 主鍵
);

建立好資料表之後,檢查一下資料表的結構:

-- 查看 persons 資料表結構
DESCRIBE persons;
+-------+--------------------------------------+------+-----+---------+----------------+
| Field | Type                                 | Null | Key | Default | Extra          |
+-------+--------------------------------------+------+-----+---------+----------------+
| id    | int(11)                              | NO   | PRI | NULL    | auto_increment |
| name  | varchar(255)                         | YES  |     | NULL    |                |
| age   | int(10) unsigned                     | YES  |     | NULL    |                |
| city  | enum('Taipei','Hsinchu','Kaohsiung') | YES  |     | NULL    |                |
+-------+--------------------------------------+------+-----+---------+----------------+

這樣就完成資料表的建立了。

新增欄位

若要在既有的資料表中,新增一個欄位,可以用 ALTER TABLE 指令配合 ADD 處理:

-- 在 persons 資料表中新增 email 欄位,放在 name 欄位後方
ALTER TABLE persons ADD email VARCHAR(50) AFTER name;

檢查一下資料表的結構:

-- 查看 persons 資料表結構
DESCRIBE persons;
+-------+--------------------------------------+------+-----+---------+----------------+
| Field | Type                                 | Null | Key | Default | Extra          |
+-------+--------------------------------------+------+-----+---------+----------------+
| id    | int(11)                              | NO   | PRI | NULL    | auto_increment |
| name  | varchar(255)                         | YES  |     | NULL    |                |
| email | varchar(50)                          | YES  |     | NULL    |                |
| age   | int(10) unsigned                     | YES  |     | NULL    |                |
| city  | enum('Taipei','Hsinchu','Kaohsiung') | YES  |     | NULL    |                |
+-------+--------------------------------------+------+-----+---------+----------------+

刪除欄位

若要將資料表中特定的欄位刪除,可以使用 ALTER TABLE 指令配合 DROP 處理:

-- 刪除 persons 資料表中的 email 欄位
ALTER TABLE persons DROP email;

這樣就可以將 email 這個欄位從 persons 資料表中刪除了。

修改欄位資料型態

如果想要修改既有資料表中某個欄位的屬性(例如資料類型、預設值等),可以使用 ALTER TABLE 指令配合 MODIFY 處理,例如將 age 欄位的資料型態改為 TINYINT UNSIGNED

-- 將 age 欄位的資料型態改為 TINYINT UNSIGNED
ALTER TABLE persons MODIFY age TINYINT UNSIGNED;

檢查一下資料表的結構:

-- 查看 persons 資料表結構
DESCRIBE persons;
+-------+--------------------------------------+------+-----+---------+----------------+
| Field | Type                                 | Null | Key | Default | Extra          |
+-------+--------------------------------------+------+-----+---------+----------------+
| id    | int(11)                              | NO   | PRI | NULL    | auto_increment |
| name  | varchar(255)                         | YES  |     | NULL    |                |
| age   | tinyint(3) unsigned                  | YES  |     | NULL    |                |
| city  | enum('Taipei','Hsinchu','Kaohsiung') | YES  |     | NULL    |                |
+-------+--------------------------------------+------+-----+---------+----------------+

修改欄位預設值

若只要修改欄位的預設值,可以改用 ALTER TABLE 指令配合 ALTER 處理:

-- 將 city 欄位的預設值改為 "Taipei"
ALTER TABLE persons ALTER city SET DEFAULT "Taipei";

檢查一下資料表的結構:

-- 查看 persons 資料表結構
DESCRIBE persons;
+-------+--------------------------------------+------+-----+---------+----------------+
| Field | Type                                 | Null | Key | Default | Extra          |
+-------+--------------------------------------+------+-----+---------+----------------+
| id    | int(11)                              | NO   | PRI | NULL    | auto_increment |
| name  | varchar(255)                         | YES  |     | NULL    |                |
| age   | tinyint(3) unsigned                  | YES  |     | NULL    |                |
| city  | enum('Taipei','Hsinchu','Kaohsiung') | YES  |     | Taipei  |                |
+-------+--------------------------------------+------+-----+---------+----------------+

若要刪除預設值,可以使用:

-- 將 city 欄位的預設值刪除
ALTER TABLE persons ALTER city DROP DEFAULT;

刪除資料表

若要刪除資料表,可以使用 DROP TABLE 指令:

-- 刪除資料表
DROP TABLE persons;

若要刪除的資料表本來就不存在,這行指令就會生錯誤,這時候可以加上 IF EXISTS 自動檢查資料表是否存在,若存在則刪除,若不存在也不會產生錯誤:

-- 若資料表存在,則刪除
DROP TABLE IF EXISTS persons;

參考資料:gitbook.net

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago