2024-01-14|閱讀時間 ‧ 約 26 分鐘

後端技術考古題-資料庫篇(上)

    ※ 基本操作: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:主鍵。

    ※ 功能:

    1. 代表一筆資料表中的一筆資料需要具備「唯一性」和「持有性」的屬性。
    2. 每個資料表都必須要有一個主鍵的欄位。
    • foreign key:外鍵。

    ※ 功能:用來建立不同資料之間的關係,而外鍵一定是其他資料表的主鍵。

    • relation:關係。

    ※ 功能:指一個實體在另一個實體之間關聯的方式。

    ※ 關係:

    1. 一對一關係:一筆資料只會對應到最多一筆資料。

    例:在一個購物網站裡,一個使用者只會有一個購物車,該購物車也只會被一個使用者所擁有。


    1. 一對多關係:一筆資料 A 會對應到多筆資料 B,但資料 B 反過來卻只會對應到一筆資料 A。

    例:在一個購物網站的一個商品分類裡會有多個商品,而一個商品只會屬於一個分類。

    1. 多對多關係:一筆資料 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的風險

    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.