上一篇我們針對資料庫的基本概念以及MySQL的安裝、建置與使用做了探討
這個章節要來學習基礎的SQL語法,以及使用NodeJS要怎麼連結MySQL資料庫
Go Go!
好的,我會以繁體中文提供一份完整的SQL語法入門教學,並盡量使用台灣慣用的方式來回答。
SQL語法入門教學
目錄
- 什麼是SQL?
- 基本的SQL語法
- CREATE TABLE
- INSERT INTO
- SELECT
- WHERE
- UPDATE
- DELETE
- 資料型態
- 關聯式資料庫
- 常用的SQL函數
- GROUP BY 與 HAVING
- JOIN
- 子查詢
- 索引
- 常見的SQL問題
1. 什麼是SQL?
SQL(Structured Query Language)是一種用來管理、操作關聯式資料庫的程式語言。它允許我們進行資料的查詢、新增、修改和刪除等操作。
2. 基本的SQL語法
2.1 CREATE TABLE
用來建立新的資料表。
CREATE TABLE table_name ( column1 datatype1 constraints, column2 datatype2 constraints, ... );
2.2 INSERT INTO
用來新增資料到資料表中。
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
2.3 SELECT
用來查詢資料。
SELECT column1, column2, ... FROM table_name WHERE condition;
2.4 WHERE
用來篩選資料。
SELECT column1, column2, ... FROM table_name WHERE condition;
2.5 UPDATE
用來更新資料。
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
2.6 DELETE
用來刪除資料。
DELETE FROM table_name WHERE condition;
3. 資料型態
在建立資料表時,我們需要指定每個欄位的資料型態,例如整數、字串、日期等。
4. 關聯式資料庫
關聯式資料庫是由多個資料表組成,這些資料表之間透過特定的欄位建立關聯。
5. 常用的SQL函數
SQL提供了許多內建的函數,用來處理資料,如SUM、AVG、COUNT等。
6. GROUP BY 與 HAVING
用來進行分組和過濾。
7. JOIN
用來結合兩個或多個資料表。
8. 子查詢
在查詢中使用另一個查詢。
9. 索引
用來提升查詢效能。
10. 常見的SQL問題
包括重複資料、遺漏資料等常見的問題。
這份教學提供了SQL的基本概念和常用語法,希望對你作為前端工程師的學習有所幫助。如果你有任何問題或需要進一步的解釋,請隨時向我詢問!
我們從他所提到的「基本的SQL語法」,逐一的去詢問細節
當然,我會提供針對
INSERT INTO
的完整教學,並使用表格示範資料的樣子。以下是詳細的介紹:INSERT INTO 教學
插入新資料到資料表
INSERT INTO
語句用來將新的資料插入到資料表中。讓我們一步一步介紹如何使用它。語法:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
範例:
假設我們有一個資料表
customers
,包含customer_id
、first_name
、last_name
和INSERT INTO customers (customer_id, first_name, last_name, email) VALUES (1, 'John', 'Doe', 'john.doe@example.com');
插入多筆資料
你可以一次插入多筆資料,只需在
VALUES
子句中使用多個組合。範例:
INSERT INTO customers (customer_id, first_name, last_name, email) VALUES (2, 'Jane', 'Smith', 'jane.smith@example.com'), (3, 'Bob', 'Johnson', 'bob.johnson@example.com'), (4, 'Alice', 'Brown', 'alice.brown@example.com');
插入部分欄位的資料
如果你只想插入部分欄位的資料,可以省略那些不需要的欄位。
範例:
INSERT INTO customers (first_name, last_name) VALUES ('Ella', 'Williams');
插入資料的注意事項
- 確保你的資料符合資料表的資料型態和約束。
- 如果資料表有自動遞增的主鍵,不需要提供主鍵的值,資料庫會自動生成。
- 總是使用單引號括住字串型態的資料。
- 檢查資料表的約束,如唯一性約束,以確保資料不重複。
表格示範資料的樣子
以下是一個表格示範資料的樣子,假設我們有一個
customers
資料表:
customer_id | first_name | last_name | |
---|---|---|---|
1 | John | Doe | mailto:john.doe@example.com |
2 | Jane | Smith | mailto:jane.smith@example.com |
3 | Bob | Johnson | mailto:bob.johnson@example.com |
4 | Alice | Brown | mailto:alice.brown@example.com |
5 | Ella | Williams | NULL |
在這個表格中,我們使用
INSERT INTO
插入了前五筆資料。第五筆資料的NULL
,表示這個欄位沒有值。希望這份教學對你理解
INSERT INTO
語句有所幫助。如果有任何進一步的問題,請隨時提出!
當然,我會提供針對
SELECT
的完整教學,並根據每個範例提供相對應的表格示範資料的樣子。SELECT 教學
從資料表中檢索資料
SELECT
語句用來從資料表中檢索(選取)資料。讓我們一步一步介紹如何使用它。語法:
SELECT column1, column2, ... FROM table_name WHERE condition;
範例 1:選取所有欄位
SELECT * FROM customers;
表格示範資料的樣子:
customer_id | first_name | last_name | |
---|---|---|---|
1 | John | Doe | mailto:john.doe@example.com |
2 | Jane | Smith | mailto:jane.smith@example.com |
3 | Bob | Johnson | mailto:bob.johnson@example.com |
4 | Alice | Brown | mailto:alice.brown@example.com |
5 | Ella | Williams | NULL |
範例 2:選取特定欄位
SELECT first_name, last_name FROM customers;
表格示範資料的樣子:
first_name | last_name |
---|---|
John | Doe |
Jane | Smith |
Bob | Johnson |
Alice | Brown |
Ella | Williams |
範例 3:選取特定條件的資料
SELECT * FROM customers WHERE last_name = 'Smith';
表格示範資料的樣子:
customer_id | first_name | last_name | |
---|---|---|---|
2 | Jane | Smith | mailto:jane.smith@example.com |
範例 4:選取特定條件的部分欄位
SELECT first_name, email FROM customers WHERE last_name = 'Brown';
表格示範資料的樣子:
first_name | |
---|---|
Alice | mailto:alice.brown@example.com |
注意事項:
SELECT
語句可以選取所有欄位(使用 ``)或者選取特定欄位。FROM
子句用來指定資料表的名稱。WHERE
子句用來篩選符合特定條件的資料。希望這份教學對你理解
SELECT
語句有所幫助。如果有任何進一步的問題,請隨時提出!
當然,我會提供針對
WHERE
的完整教學,並詳細介紹其細節。WHERE 教學
用於篩選資料
WHERE
子句用於在SELECT
,UPDATE
,DELETE
等語句中篩選符合特定條件的資料。讓我們進一步瞭解如何使用它。語法:
SELECT column1, column2, ... FROM table_name WHERE condition;
條件運算符
在
WHERE
子句中,我們可以使用以下條件運算符:
=
: 等於<>
或!=
: 不等於<
: 小於>
: 大於<=
: 小於等於>=
: 大於等於BETWEEN
: 在某個範圍內LIKE
: 符合特定模式IN
: 在指定的值集合中範例:
1. 等於 (
=
):SELECT * FROM customers WHERE first_name = 'John';
2. 大於 (
>
):SELECT * FROM orders WHERE total_amount > 1000;
3. 小於等於 (
<=
):SELECT * FROM products WHERE price <= 50;
4. 在某個範圍內 (
BETWEEN
):SELECT * FROM employees WHERE salary BETWEEN 30000 AND 50000;
5. 符合特定模式 (
LIKE
):SELECT * FROM products WHERE product_name LIKE 'App%';
6. 在指定的值集合中 (
IN
):SELECT * FROM customers WHERE city IN ('Taipei', 'New York', 'London');
邏輯運算符
你也可以使用邏輯運算符來結合多個條件:
AND
: 且OR
: 或NOT
: 非範例:
1. 使用
AND
:SELECT * FROM products WHERE category = 'Electronics' AND price < 500;
2. 使用
OR
:SELECT * FROM orders WHERE status = 'Shipped' OR status = 'Delivered';
3. 使用
NOT
:SELECT * FROM customers WHERE NOT city = 'Taipei';
注意事項:
WHERE
子句應用於各種 SQL 語句,如SELECT
,UPDATE
,DELETE
等。- 使用條件運算符來指定條件,進行資料的篩選。
- 可以使用邏輯運算符來組合多個條件。
希望這份教學對你理解
WHERE
子句有所幫助。如果有任何進一步的問題,請隨時提出!
好的,我會先提供一個完整的表格資料,然後根據這份表格來示範多個不同的
WHERE
子句範例,並顯示每個查詢的結果表格。表格資料範例:
假設我們有一個名為
products
的資料表,它包含以下欄位:
product_id | product_name | category | price |
---|---|---|---|
1 | Laptop | Electronics | 1000 |
2 | Headphones | Electronics | 50 |
3 | T-shirt | Apparel | 20 |
4 | Watch | Accessories | 300 |
5 | Sneakers | Footwear | 80 |
6 | Sunglasses | Accessories | 150 |
7 | Smartphone | Electronics | 700 |
8 | Jeans | Apparel | 50 |
9 | Backpack | Accessories | 70 |
10 | Tablet | Electronics | 300 |
WHERE 子句範例:
1. 篩選出 Electronics 類別的產品:
SELECT * FROM products WHERE category = 'Electronics';
結果表格:
product_id | product_name | category | price |
---|---|---|---|
1 | Laptop | Electronics | 1000 |
2 | Headphones | Electronics | 50 |
7 | Smartphone | Electronics | 700 |
10 | Tablet | Electronics | 300 |
2. 篩選出價格低於 100 的產品:
SELECT * FROM products WHERE price < 100;
結果表格:
product_id | product_name | category | price |
---|---|---|---|
2 | Headphones | Electronics | 50 |
3 | T-shirt | Apparel | 20 |
5 | Sneakers | Footwear | 80 |
8 | Jeans | Apparel | 50 |
9 | Backpack | Accessories | 70 |
3. 篩選出價格介於 100 到 300 之間的產品:
SELECT * FROM products WHERE price BETWEEN 100 AND 300;
結果表格:
product_id | product_name | category | price |
---|---|---|---|
4 | Watch | Accessories | 300 |
6 | Sunglasses | Accessories | 150 |
10 | Tablet | Electronics | 300 |
4. 篩選出產品名稱以 'S' 開頭的產品:
SELECT * FROM products WHERE product_name LIKE 'S%';
結果表格:
product_id | product_name | category | price |
---|---|---|---|
5 | Sneakers | Footwear | 80 |
6 | Sunglasses | Accessories | 150 |
5. 篩選出價格為 50 或 300 的產品:
SELECT * FROM products WHERE price IN (50, 300);
結果表格:
product_id | product_name | category | price |
---|---|---|---|
2 | Headphones | Electronics | 50 |
4 | Watch | Accessories | 300 |
8 | Jeans | Apparel | 50 |
10 | Tablet | Electronics | 300 |
希望這些範例能夠幫助你更好地理解
WHERE
子句的使用方式。如果有任何進一步的問題,請隨時提出!
當然,我會提供針對
UPDATE
的完整教學,並使用表格示範更新前後的結果。UPDATE 教學
用於更新資料
UPDATE
語句用於更新資料表中已存在的記錄。讓我們一步一步介紹如何使用它。語法:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
範例:
假設我們要更新之前提到的
products
資料表中的一筆資料:更新前的表格資料:
product_id | product_name | category | price |
---|---|---|---|
1 | Laptop | Electronics | 1000 |
2 | Headphones | Electronics | 50 |
3 | T-shirt | Apparel | 20 |
4 | Watch | Accessories | 300 |
5 | Sneakers | Footwear | 80 |
6 | Sunglasses | Accessories | 150 |
7 | Smartphone | Electronics | 700 |
8 | Jeans | Apparel | 50 |
9 | Backpack | Accessories | 70 |
10 | Tablet | Electronics | 300 |
更新範例:
假設我們要將
product_id
為 5 的price
更新為 90:UPDATE products SET price = 90 WHERE product_id = 5;
更新後的表格資料:
product_id | product_name | category | price |
---|---|---|---|
1 | Laptop | Electronics | 1000 |
2 | Headphones | Electronics | 50 |
3 | T-shirt | Apparel | 20 |
4 | Watch | Accessories | 300 |
5 | Sneakers | Footwear | 90 |
6 | Sunglasses | Accessories | 150 |
7 | Smartphone | Electronics | 700 |
8 | Jeans | Apparel | 50 |
9 | Backpack | Accessories | 70 |
10 | Tablet | Electronics | 300 |
注意事項:
- 使用
UPDATE
語句時,請確保SET
子句中指定的值符合該欄位的資料型態和約束。- 使用
WHERE
子句來確定要更新哪些記錄。如果省略WHERE
子句,將會更新所有記錄。- 一定要小心使用
UPDATE
語句,確保不會造成資料的不可逆變化。希望這份教學對你理解
UPDATE
語句有所幫助。如果有任何進一步的問題,請隨時提出!
當然,我會提供針對
DELETE
的完整教學,並使用表格示範刪除前後的結果。DELETE 教學
用於刪除資料
DELETE
語句用於從資料表中刪除記錄。讓我們一步一步介紹如何使用它。語法:
DELETE FROM table_name WHERE condition;
範例:
假設我們要從之前提到的
products
資料表中刪除一筆資料:刪除前的表格資料:
product_id | product_name | category | price |
---|---|---|---|
1 | Laptop | Electronics | 1000 |
2 | Headphones | Electronics | 50 |
3 | T-shirt | Apparel | 20 |
4 | Watch | Accessories | 300 |
5 | Sneakers | Footwear | 90 |
6 | Sunglasses | Accessories | 150 |
7 | Smartphone | Electronics | 700 |
8 | Jeans | Apparel | 50 |
9 | Backpack | Accessories | 70 |
10 | Tablet | Electronics | 300 |
刪除範例:
假設我們要刪除
product_id
為 3 的記錄:DELETE FROM products WHERE product_id = 3;
刪除後的表格資料:
product_id | product_name | category | price |
---|---|---|---|
1 | Laptop | Electronics | 1000 |
2 | Headphones | Electronics | 50 |
4 | Watch | Accessories | 300 |
5 | Sneakers | Footwear | 90 |
6 | Sunglasses | Accessories | 150 |
7 | Smartphone | Electronics | 700 |
8 | Jeans | Apparel | 50 |
9 | Backpack | Accessories | 70 |
10 | Tablet | Electronics | 300 |
注意事項:
- 使用
DELETE
語句時,請確保條件WHERE
子句足夠準確以避免刪除不需要刪除的記錄。- 如果省略
WHERE
子句,將會刪除所有記錄,這是一個危險的操作,應當謹慎使用。希望這份教學對你理解
DELETE
語句有所幫助。如果有任何進一步的問題,請隨時提出!
OK ,剩下的進階語法等下一篇再討論
先來處理NodeJS搭配MYSQL的部分
當然,我會提供透過 Node.js 連接資料庫並進行操作的教學。以下以 MySQL 資料庫為例:
步驟1:安裝相關套件
首先,你需要安裝 Node.js 的資料庫套件,以便於連接 MySQL 資料庫。在終端中執行以下指令:
npm install mysql
步驟2:連接資料庫
在你的 Node.js 檔案中,使用以下程式碼連接到你的 MySQL 資料庫:
const mysql = require('mysql'); const connection = mysql.createConnection({ host: 'localhost', // 資料庫位置 user: 'username', // 使用者名稱 password: 'password', // 使用者密碼 database: 'database_name' // 資料庫名稱 }); connection.connect((err) => { if (err) { console.error('資料庫連線失敗: ', err); } else { console.log('成功連線至資料庫'); } });
步驟3:進行資料操作
一旦你成功連接到資料庫,你可以進行各種資料操作,如查詢、新增、更新和刪除。
以下是一個範例:
// 查詢 connection.query('SELECT * FROM products', (error, results) => { if (error) throw error; console.log('查詢結果: ', results); }); // 新增 const newProduct = { product_name: 'New Product', category: 'Electronics', price: 500 }; connection.query('INSERT INTO products SET ?', newProduct, (error, results) => { if (error) throw error; console.log('新增成功'); }); // 更新 const productId = 1; const updatedPrice = 1200; connection.query('UPDATE products SET price = ? WHERE product_id = ?', [updatedPrice, productId], (error, results) => { if (error) throw error; console.log('更新成功'); }); // 刪除 const productToDeleteId = 2; connection.query('DELETE FROM products WHERE product_id = ?', productToDeleteId, (error, results) => { if (error) throw error; console.log('刪除成功'); });
步驟4:關閉連線
當你完成所有操作後,請記得關閉連線:
connection.end((err) => { if (err) { console.error('資料庫關閉失敗: ', err); } else { console.log('成功關閉資料庫連線'); } });
這就是使用 Node.js 連接到 MySQL 資料庫並進行操作的基本步驟。請確保將相關資料(如使用者名稱、密碼、資料庫名稱等)替換為你自己的資訊。
希望這份教學對你有所幫助!如果有任何進一步的問題,請隨時提出。
範例都先看過,然後我們先來了解connection.query的教學
當然,我會提供針對
connection.query
的完整教學。
connection.query
教學
connection.query
是用於在 Node.js 中執行 SQL 查詢的方法。它可以處理各種資料庫操作,如查詢、新增、更新和刪除。執行 SELECT 查詢
connection.query('SELECT * FROM products', (error, results, fields) => { if (error) throw error; console.log('查詢結果: ', results); });
在上述範例中,我們執行了一個簡單的 SELECT 查詢來選取
products
表中的所有欄位和資料。results
將包含查詢的結果,fields
包含相關的欄位資訊。執行 INSERT 操作
const newProduct = { product_name: 'New Product', category: 'Electronics', price: 500 }; connection.query('INSERT INTO products SET ?', newProduct, (error, results) => { if (error) throw error; console.log('新增成功'); });
在這個範例中,我們使用
SET ?
來插入新資料,newProduct
是一個包含新產品資料的物件。執行 UPDATE 操作
const productId = 1; const updatedPrice = 1200; connection.query('UPDATE products SET price = ? WHERE product_id = ?', [updatedPrice, productId], (error, results) => { if (error) throw error; console.log('更新成功'); });
這個範例中,我們使用
?
來傳遞參數,以避免 SQL 注入攻擊。在這種情況下,我們更新了產品ID為1的價格。執行 DELETE 操作
const productToDeleteId = 2; connection.query('DELETE FROM products WHERE product_id = ?', productToDeleteId, (error, results) => { if (error) throw error; console.log('刪除成功'); });
這個範例中,我們使用
?
來傳遞參數,並在DELETE FROM
子句中指定要刪除的記錄。處理結果
在每個查詢中,都提供了一個回調函式,用於處理執行查詢後的結果。
error
將包含任何可能的錯誤,results
將包含查詢的結果。這就是使用
connection.query
方法進行資料庫操作的基本步驟。希望這份教學對你有所幫助!如果有任何進一步的問題,請隨時提出。
OK,直接請ChatGPT來一個完整範例
首先,我們需要先建立一個資料庫(DB)並創建一個表格(table)。以下是使用 SQL 語句的示例來建立一個名為
products
的表格,該表格將用於後續的操作範例:CREATE DATABASE mydatabase; USE mydatabase; CREATE TABLE products ( product_id INT AUTO_INCREMENT PRIMARY KEY, product_name VARCHAR(255) NOT NULL, category VARCHAR(255), price INT );
這將建立一個名為
mydatabase
的資料庫,並在其中建立了一個products
表格,該表格包含product_id
、product_name
、category
和price
四個欄位。接下來,讓我們提供使用 Node.js 和 Express 創建的 API 程式碼示例,以執行插入、查詢、更新和刪除操作。以下是完整的程式碼範例:
const express = require('express'); const mysql = require('mysql'); const app = express(); const port = 3000; // 建立資料庫連線 const connection = mysql.createConnection({ host: 'localhost', user: 'username', password: 'password', database: 'mydatabase' // 請替換為你的資料庫名稱 }); connection.connect((err) => { if (err) { console.error('資料庫連線失敗: ', err); } else { console.log('成功連線至資料庫'); } }); // 新增產品 app.post('/products', (req, res) => { const newProduct = { product_name: 'New Product', category: 'Electronics', price: 500 }; connection.query('INSERT INTO products SET ?', newProduct, (error, results) => { if (error) { console.error('新增失敗: ', error); res.status(500).send('新增失敗'); } else { console.log('新增成功'); res.status(201).send('新增成功'); } }); }); // 查詢所有產品 app.get('/products', (req, res) => { connection.query('SELECT * FROM products', (error, results) => { if (error) { console.error('查詢失敗: ', error); res.status(500).send('查詢失敗'); } else { console.log('查詢結果: ', results); res.status(200).json(results); } }); }); // 更新產品 app.put('/products/:id', (req, res) => { const productId = req.params.id; const updatedPrice = 1200; connection.query('UPDATE products SET price = ? WHERE product_id = ?', [updatedPrice, productId], (error, results) => { if (error) { console.error('更新失敗: ', error); res.status(500).send('更新失敗'); } else { console.log('更新成功'); res.status(200).send('更新成功'); } }); }); // 刪除產品 app.delete('/products/:id', (req, res) => { const productId = req.params.id; connection.query('DELETE FROM products WHERE product_id = ?', productId, (error, results) => { if (error) { console.error('刪除失敗: ', error); res.status(500).send('刪除失敗'); } else { console.log('刪除成功'); res.status(200).send('刪除成功'); } }); }); app.listen(port, () => { console.log(`伺服器運行在 <http://localhost>:${port}`); });
這個程式碼示例使用 Express 創建一個簡單的 API,包含新增、查詢、更新和刪除操作。請確保替換
username
、password
和mydatabase
等資料庫連接相關資訊,以使程式碼正確運作。希望這個示例有幫助!如果有任何進一步的問題,請隨時提出。
如果直接用初始root的帳號去連線,就會跑出一串資料庫連線錯誤的訊息
Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
這個錯誤通常是因為 MySQL 伺服器與現在的 Node.js MySQL 客戶端版本之間的身份驗證方式不相容所引起的。
為了解決這個問題,你可以嘗試以下方法:
方法1:更新 MySQL 使用者的身份驗證方式
- 以 root 身份登入 MySQL 伺服器。
sudo mysql -u root -p
- 進入 MySQL 命令行,執行以下指令:
ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
注意替換
'username'
和'password'
為你實際的使用者名稱和密碼。
- 重新載入權限:
FLUSH PRIVILEGES;
- 退出 MySQL 命令行:
exit;
- 重新啟動 MySQL 伺服器。
sudo service mysql restart
方法2:使用 mysql2 套件
另一個解決方法是使用
mysql2
套件而非mysql
套件,因為mysql2
支援 MySQL 8.x 的身份驗證方式。首先,安裝
mysql2
:npm install mysql2
然後在 Node.js 中使用它:
const mysql = require('mysql2'); const connection = mysql.createConnection({ host: 'localhost', user: 'username', password: 'password', database: 'mydatabase' }); // ...
請確保將
'username'
、'password'
和'mydatabase'
替換為你實際的使用者名稱、密碼和資料庫名稱。這些方法中的其中一個應該可以解決你遇到的問題。如果你還有任何疑問,請隨時提出。
這邊我採用方法2,使用mysql2 來處理,簡單快速
來了解一下這兩個套件的差異
mysql
和mysql2
是兩個用於 Node.js 的 MySQL 客戶端套件,它們之間的主要區別在於其內部實現和支援的功能。以下是它們之間的一些主要差異:
1. 內部實現:
- mysql:
mysql
是 Node.js 的一個較早的 MySQL 客戶端套件,使用純 JavaScript 實現。- 它使用回調(callbacks)來處理非同步操作。
- mysql2:
mysql2
是mysql
的增強版,它是基於 C++ 來實現的。- 由於它使用了非阻塞 I/O,所以通常比
mysql
在效能上更優秀。2. 支援的功能:
- mysql:
- 對於新的 MySQL 8.x 身份驗證方式(caching_sha2_password)可能會遇到相容性問題。
- mysql2:
- 支援 MySQL 8.x 的身份驗證方式,因此在使用新版 MySQL 時更為推薦。
- 支援 Promise 和 async/await,讓程式碼更容易閱讀和編寫。
總的來說,如果你需要支援最新版的 MySQL 或者你想要更強大的非同步處理能力,
mysql2
是一個比較好的選擇。然而,如果你對性能要求不高,或者你已經在使用
mysql
,也可以繼續使用它。兩者之間的基本操作基本上是相似的,可以根據個人偏好來選擇。
在這次的對話中,我們討論了與資料庫相關的幾個重要主題:
- SQL 語法入門教學:
- 我提供了針對
INSERT INTO
、SELECT
、WHERE
、UPDATE
以及DELETE
的完整教學,並附上相對應的範例和結果表格。- Node.js 連接資料庫教學:
- 我介紹了如何使用 Node.js 連接 MySQL 資料庫,並提供了建立資料庫連線、進行資料操作的基本範例。
connection.query
方法的使用教學:
- 我提供了
connection.query
方法的完整教學,包括了如何執行SELECT
、INSERT
、UPDATE
以及DELETE
操作。- Node.js + Express 創建 API:
- 我展示了如何使用 Node.js 和 Express 創建一個簡單的 API,包括了新增、查詢、更新和刪除操作。
- 解決資料庫連線問題:
- 我解釋了一種可能的資料庫連線失敗錯誤(
ER_NOT_SUPPORTED_AUTH_MODE
)的解決方法,包括更新 MySQL 使用者的身份驗證方式和使用mysql2
套件。總結來說,我們已經涵蓋了許多與資料庫相關的基礎知識和操作。希望這些資訊對你學習和開發有所幫助!如果你有任何其他問題或需要進一步的協助,請隨時提出。祝你學習愉快!
本次的內容在這邊:
https://chat.openai.com/share/388e7e09-558f-4876-9253-dbaa1d4ed678
這篇先討論了基礎的SQL語法
最基礎的增刪查改(CRUD)操作都可以使用這些基礎語法完成
也可以用mysql2這個套件搭配NodeJS來開發對應的API了!
下一篇!繼續討論SQL,要討論這篇沒討論到的進階SQL語法
有關一開始ChatGPT所提到的「資料型態 ****」、「內建的函數」、「GROUP BY 與 HAVING」、「子查詢」、「索引」、「JOIN」這幾個功能與主題
我是會寫出增刪查改API的前端工程師一宵三筵,我們明天見!