Skip to content

建立資料表 (table) & INSERT INTO 語法

Posted on:2023年9月19日

昨天已經成功建立一個資料庫 (database) 了,今天開始就會建立一個資料表 (table),並且將資料寫入這個資料表 (table) 也就是大家可能有聽過的 INSERT INTO SQL 指令

但是在這之前,我先再來回顧一下資料表 (table), 資料庫 (database),以及 關聯式資料庫管理系統 (RDBMS)

資料表 (table) & 資料庫 (database) & 關聯式資料庫管理系統 (RDBMS)

大家可以看到下圖是一個簡單的 資料表 (table)
他是由許多的單元格 (cell) 所組成,而這些單元格則是由列 (Row) 和 欄位 (column) 交集所產生的

但是這些單位都必須依靠 資料表 (table) 所產生的

https://ithelp.ithome.com.tw/upload/images/20230918/20152148xwBpoEfzEn.png

所以我們可以知道一個資料庫是由很多的資料表產生的

https://ithelp.ithome.com.tw/upload/images/20230918/20152148sLvGUrG4HT.png

很多的資料庫則被一個 PostgreSQL 服務所管理,形成一個資料庫叢集

https://ithelp.ithome.com.tw/upload/images/20230918/20152148MeWvSvJtGs.png

所以我們可以知道雖然單元格 (cell) 是最小的單位,但是在 RDBMS 中資料表(table) 是基本的數據組織和存儲單位,由多個字段或單元格組成。

所以就讓我們來建立一個資料表吧

CREATE TABLE

  1. 首先我們先 CREATE DATABASE,並使用 psql 進入 postgresql 終端互動介面
$ createdb demo_db

$ psql demo_db
  1. 我們可以創建一個新的資料表 (table),為它取一個名字,並且宣告所有的欄位名稱與其資料型別
demo_db=> CREATE TABLE books (
              author        varchar(80),
              title         varchar(80),
              price         int,
              create_at     date
          );

CREATE TABLE

https://ithelp.ithome.com.tw/upload/images/20230918/20152148X0KufRvcxs.png

INSERT INTO

  1. 一次寫入一筆資料
-- psql

demo_db=> INSERT INTO books (author, title, price, create_at)
          values ('我是作者', '好看的書', 1000, '2023-09-19');

INSERT 0 1
demo_db=> SELECT * FROM books;

結果:

  author  |  title   | price | create_at
----------+----------+-------+------------
  我是作者  | 好看的書  | 1000  | 2023-09-19
(1 row)

這樣我們就可以成功的查詢到我們剛剛寫入的資料了 但是這樣好像有點不方便,是不是每次寫入資料都要再執行一次命令,好像有點麻煩,而且還要用 SELECT 去驗證一下,好麻煩,其實我們也是可以一次寫入很多比資料的

  1. 一次寫入多筆資料
demo_db=> INSERT INTO books (author, title, price, create_at)
          VALUES
          ('喬治·歐威爾', '1984', 9.99, '2021-01-01'),
          ('J.K 羅琳', '哈利波特', 12.99, '2022-02-15'),
          ('J·R·R·托爾金', '魔戒', 15.99, '2022-03-10');
  1. 使用 RETURNING 子句

demo_db=> INSERT INTO books (author, title, price, create_at)
          VALUES ('我是作者', '我的書籍', 1999, '2023-09-19')
          RETURNING *;

結果:

  author  |  title   | price | create_at
----------+----------+-------+------------
 我是作者  | 我的書籍   | 1999  | 2023-09-19
(1 row)

INSERT 0 1
--sql

demo_db=> INSERT INTO books (author, title, price, create_at)
          VALUES ('我是作者', '我的書籍', 1999, '2023-09-19')
          RETURNING title, author;

結果:


  title   |  author
----------+----------
 我的書籍   | 我是作者
(1 row)

INSERT 0 1
demo_db=> INSERT INTO books (author, title, price, create_at)
          VALUES ('作者本人', '好貴的書', 10000, '2021-01-01')
          RETURNING author, title, price * 1.1 AS price_with_tax;

結果:


 author  |  title   | price_with_tax
----------+----------+----------------
 作者本人   | 好貴的書  |     11000.0
(1 row)

INSERT 0 1

加上了 RETURNING,我們就可以不用在另外使用 SELECT 查詢語句了,真是太棒了

DROP TABLE

$ DROP TABLE tablename;

若是你不需要這個資料表了,那麼我們就可以將它刪除了,但是基本上工作的時候不會用到這個指令,所以請小心使用。

那麼就來將剛剛所建立的資料表 books 刪除吧

demo_db=> DROP TABLE books

DROP TABLE

結語

今天我們一起建立資料表(table),並且使用 SQL 語法 INSERT INTO 將資料寫入資料表中了,也就代表成功的將資料存到資料庫了。 明天我們就要將這些資料讀取出來!