※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。
- SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。
※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為 "從哪拿"。
SELECT table_column1, table_column2, table_column3...
FROM table_name
- SELECT *:一次取得整張資料表裡所有的資料。
※ 避免使用 SELECT *:因為一次取得整張資料表會比較耗費系統資源。
- WHERE:使用 WHERE 可以限制查詢的範圍與條件。
SELECT column1, column2, ...
FROM table_name
WHERE condition
※ WHERE: 用於指定條件的子句。
※ condition: 描述了檢索的條件。
- CREATE:是一個用於創建新數據庫對象(如表、索引、視圖等)
※ 語法:
CREATE TABLE "表格名"
("欄位 1" "欄位 1 資料種類",
"欄位 2" "欄位 2 資料種類",
... )
- UPDATE:更新現有資料表中的資料我們就會需要用到 UPDATE。
※ 語法:
UPDATE table_name
SET column1=value1, column2=value2, column3=value3···
WHERE some_column=some_value
- DELETE :用來刪除資料表中的資料,可以選擇性地使用
WHERE
子句指定刪除的條件。
※ 語法:
DELETE FROM customers
WHERE city = 'New York'
這個語句告訴數據庫刪除 customers 表中所有 city 列值為 'New York' 的行。
※ 主題關鍵字
- . primary key:主鍵。
※ 功能:
- 代表一筆資料表中的一筆資料需要具備「唯一性」和「持有性」的屬性。
- 每個資料表都必須要有一個主鍵的欄位。
- foreign key:外鍵。
※ 功能:用來建立不同資料之間的關係,而外鍵一定是其他資料表的主鍵。
- relation:關係。
※ 功能:指一個實體在另一個實體之間關聯的方式。
※ 關係:
- 一對一關係:一筆資料只會對應到最多一筆資料。
例:在一個購物網站裡,一個使用者只會有一個購物車,該購物車也只會被一個使用者所擁有。

- 一對多關係:一筆資料 A 會對應到多筆資料 B,但資料 B 反過來卻只會對應到一筆資料 A。
例:在一個購物網站的一個商品分類裡會有多個商品,而一個商品只會屬於一個分類。

- 多對多關係:一筆資料 A 會對應到多筆資料 B,而一筆資料 B 也會對應到多筆資料 A。
例:一個使用者會參與多個活動,而一個活動也會有多個使用者參與。

- SQL Injection:SQL注入式攻擊,是一種常見的駭客攻擊方式。駭客會在設計不良的程式中夾帶惡意指令,透過修改SQL語句改變語意,進而達到對資料庫的惡意攻擊。
例:以一個登錄表單來說,使用者在用戶名和密碼字段中輸入其憑證。
SELECT * FROM users
WHERE username = 'input_username'
AND password = 'input_password'
如果攻擊者在用戶名字段中輸入 input_username' OR '1'='1'; --
SELECT * FROM users
WHERE username = 'input_username' OR '1'='1'; --'
AND password = 'input_password'
結果使得條件總是成立,並且注入的 --
部分注釋掉原始查詢的其餘部分。導致,攻擊者可能成功登錄,而不知道有效的用戶名和密碼。因此,網站中只要有提供輸入的欄位,就有SQL injection的風險