WeHelp
SQL 是操作與管理關聯式資料庫的標準語言,也是資料處理、資料分析工作中的重要組成。
  1. 簡介 SQL 語法用途
  2. 建立、修改資料表
  3. 新增資料
  4. 更新資料
  5. 刪除資料
  6. 取得、篩選、排序資料
  7. 分群、聚合資料
建立、修改資料表
以下以常見的 SQL 語法說明如何**建立資料表**與**修改資料表欄位定義**。不同資料庫系統(MySQL、PostgreSQL、SQL Server、Oracle)在細節上可能略有差異。 ## 一、建立資料表:`CREATE TABLE` ### 基本語法 ```sql CREATE TABLE 資料表名稱 ( 欄位名稱 資料型別 [欄位約束], 欄位名稱 資料型別 [欄位約束], ... ); ``` ### 範例 ```sql CREATE TABLE students ( student_id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, birth_date DATE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` 上述資料表包含: - `student_id`:整數,且為主鍵 - `name`:最多 50 個字元,不允許空值 - `email`:最多 100 個字元,不可重複 - `birth_date`:日期 - `created_at`:建立資料時自動填入目前時間 ## 二、常見欄位約束 | 約束 | 說明 | |---|---| | `PRIMARY KEY` | 主鍵,用來唯一識別每筆資料 | | `NOT NULL` | 欄位不可為空值 | | `UNIQUE` | 欄位值不可重複 | | `DEFAULT` | 未指定值時使用預設值 | | `CHECK` | 限制欄位值必須符合條件 | | `FOREIGN KEY` | 建立與其他資料表的關聯 | 例如: ```sql CREATE TABLE orders ( order_id INT PRIMARY KEY, student_id INT NOT NULL, amount DECIMAL(10, 2) CHECK (amount >= 0), FOREIGN KEY (student_id) REFERENCES students(student_id) ); ``` ## 三、修改資料表:`ALTER TABLE` ### 1. 新增欄位:`ADD` ```sql ALTER TABLE students ADD phone VARCHAR(20); ``` 部分資料庫也支援: ```sql ALTER TABLE students ADD COLUMN phone VARCHAR(20); ``` ### 2. 修改欄位資料型別或定義 #### MySQL ```sql ALTER TABLE students MODIFY COLUMN name VARCHAR(100) NOT NULL; ``` #### PostgreSQL ```sql ALTER TABLE students ALTER COLUMN name TYPE VARCHAR(100); ``` #### SQL Server ```sql ALTER TABLE students ALTER COLUMN name VARCHAR(100) NOT NULL; ``` 不同資料庫的語法不完全相同,因此應依使用的資料庫系統調整。 ### 3. 重新命名欄位 常見寫法: ```sql ALTER TABLE students RENAME COLUMN name TO student_name; ``` SQL Server 通常使用: ```sql EXEC sp_rename 'students.name', 'student_name', 'COLUMN'; ``` ### 4. 刪除欄位:`DROP COLUMN` ```sql ALTER TABLE students DROP COLUMN phone; ``` 刪除欄位前應確認資料是否仍需要,因為欄位中的資料通常也會一併刪除。 ### 5. 新增或刪除約束 新增主鍵: ```sql ALTER TABLE students ADD CONSTRAINT pk_students PRIMARY KEY (student_id); ``` 新增外鍵: ```sql ALTER TABLE orders ADD CONSTRAINT fk_orders_students FOREIGN KEY (student_id) REFERENCES students(student_id); ``` 刪除約束時,必須使用該約束名稱: ```sql ALTER TABLE orders DROP CONSTRAINT fk_orders_students; ``` MySQL 常見語法為: ```sql ALTER TABLE orders DROP FOREIGN KEY fk_orders_students; ``` ## 四、修改欄位時的注意事項 1. 修改資料型別前,確認現有資料可以轉換。 2. 將欄位改成 `NOT NULL` 前,必須先處理原本的空值資料。 3. 刪除欄位或約束前,確認沒有程式或其他資料表依賴它。 4. 生產環境執行 `ALTER TABLE` 前,建議先備份資料。 5. 欄位名稱、資料表名稱若與保留字相同,應使用資料庫支援的引號或跳脫符號。 簡單來說: - 建立資料表:使用 `CREATE TABLE` - 修改資料表結構:使用 `ALTER TABLE` - 新增欄位:`ADD` - 修改欄位:依資料庫使用 `MODIFY`、`ALTER COLUMN` 等語法 - 刪除欄位:`DROP COLUMN`
相關學習地圖、教學課程
Python 資料工程
從 0 開始,成為資料工程師的學習路徑。
Python 後端工程、資料庫
從 0 開始,成為後端工程師的學習路徑。