※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為 "從哪拿"。
SELECT table_column1, table_column2, table_column3...
FROM table_name
※ 避免使用 SELECT *:因為一次取得整張資料表會比較耗費系統資源。
※ 語法:
SELECT column1, column2, ...
FROM table_name
WHERE condition
※ WHERE: 用於指定條件的子句。
※ condition: 描述了檢索的條件。
※ 語法:
CREATE TABLE "表格名"
("欄位 1" "欄位 1 資料種類",
"欄位 2" "欄位 2 資料種類",
... )
※ 語法:
UPDATE table_name
SET column1=value1, column2=value2, column3=value3···
WHERE some_column=some_value
WHERE
子句指定刪除的條件。※ 語法:
DELETE FROM customers
WHERE city = 'New York'
這個語句告訴數據庫刪除 customers 表中所有 city 列值為 'New York' 的行。
※ 功能:
※ 功能:用來建立不同資料之間的關係,而外鍵一定是其他資料表的主鍵。
※ 功能:指一個實體在另一個實體之間關聯的方式。
※ 關係:
例:在一個購物網站裡,一個使用者只會有一個購物車,該購物車也只會被一個使用者所擁有。
例:在一個購物網站的一個商品分類裡會有多個商品,而一個商品只會屬於一個分類。
例:一個使用者會參與多個活動,而一個活動也會有多個使用者參與。
例:以一個登錄表單來說,使用者在用戶名和密碼字段中輸入其憑證。
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的風險