iT邦幫忙

2023 iThome 鐵人賽

DAY 11
0
自我挑戰組

30 天架設 Node.js - Express 框架:快速學習之路系列 第 11

Day 11 - 資料庫:創建、讀取、更新和刪除資料(上)

  • 分享至 

  • xImage
  •  

經過前兩天的安裝與設定,我們已經可以用 Express 連接 MySQL 資料庫。
接下來我們要來學學怎麼 讀取/新增/刪除/修改,
也就是大家口中常提到的 CRUD (Create/ Read/ Update/ Delete) 。

在這之前我們講解一下 SQL 語法讓大家有個基本的概念。

SQL 語法介紹

不知道大家有沒有發現,昨天已經不小心偷跑了兩個 SQL 語法 → 新增和讀取。

  • Create (新增, INSERT INTO 語法)

    • 使用 INSERT INTO TableName (column1, column2, ...) VALUES
      (value1, value2,...) → 用來新增該資料表某一筆資料。

          INSERT INTO `booktest` (`bookName`) VALUES
          ('testBook')
      
          -- 在 booktest 的資料表新增欄位 `bookName` 為 'testBook' 的資料
      
  • Read (讀取, SELECT 語法)

    • 使用 SELECT * FROM TableName → 用來讀取該資料表的所有資料。

          SELECT * FROM `booktest`
      
          -- 讀取 booktest 資料表的所有資料
      
  • Update (修改, UPDATE 語法)

    • 使用 UPDATE TableName SET column1=value1, column2=value2, ... WHERE
      '符合的條件' → 用來更新該資料表符合條件的欄位資料。

          UPDATE `booktest` SET `bookName` = 'testBook1' WHERE id = 1
      
          -- 將 booktest 資料表 id = 1 的 bookName 欄位資料改為 'testBook1'
      
  • Delete (刪除, DELETE FROM 語法)

    • 使用 DELETE FROM TableName WHERE '符合的條件' → 用刪除該資料表符合條件的資料。

          DELETE FROM `booktest`  WHERE id = 1
      
          -- 將 booktest 資料表 id = 1 的資料刪除
      

用 Express 下 SQL 語法

我們再回過頭來看一下昨天的測試語法,

    // config\mysqlConnection.js

    // simple query
    const [rows, fields] = await connection.query('SELECT * FROM `booktest`')

咦? 是不是只要把我們的 SQL 直接寫在 connection.query() 裡面就好了呢?
看樣子好像是這樣,我們再下幾個指令試試看:

    // config\mysqlConnection.js
    
    const mysql = require('mysql2/promise')

    async function mysqlConnection() {
      try {
        // 建立與數據庫的連接
        const connection = await mysql.createConnection({
          host: 'localhost',
          port: 3306,
          user: 'root',
          database: 'book',
          password: '${密碼}'
        })

      // query database
      const [rows1, fields1] = await connection.query('INSERT INTO `booktest` (`bookName`) VALUES ("testBook")')
      console.log(rows1)

       // query database
       const [rows2, fields2] = await connection.query('UPDATE `booktest` SET `bookName` = "testBook1" WHERE id = 1')
       console.log(rows2)

        // query database
      const [rows3, fields3] = await connection.query('SELECT * FROM `booktest`')
      console.log(rows3)
      
        // 關閉連接
        connection.end()

      } catch (error) {
        console.error('連接數據庫時出現錯誤:', error)
      }
    }

    mysqlConnection()

像昨天一樣先在終端機下 cd config
再下 node mysqlConnection.js 指令,測試看看有沒有我們預期應該出現的資料。

https://ithelp.ithome.com.tw/upload/images/20230905/20162304RBRDAlNRmf.png

看樣子原本 id 為 1 的 testBook 有修改成功為 testBook1,也順利地加入一個新資料!

是不是有點很有趣呢?

明天我們可以結合前幾天做的路由來實際實作看看。/images/emoticon/emoticon07.gif

參考資料:


上一篇
Day 10 - 連接資料庫:使用 MySQL 資料庫進行連接(下)
下一篇
Day 12 - 資料庫:創建、讀取、更新和刪除資料(中)
系列文
30 天架設 Node.js - Express 框架:快速學習之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言