SQLite - INSERT 查詢

你好,有志於SQL的熱情者們!今天,我們將深入探索SQLite及其INSERT查詢的奇妙世界。作為你們友善的鄰居計算機老師,我非常興奮能夠帶領你們進行這次旅行。別擔心如果你是編程新手——我們會從基礎開始,逐步學習。所以,來一杯咖啡(或者如果你喜歡,來一杯茶),我們開始吧!

SQLite - INSERT Query

了解INSERT查詢

INSERT查詢就像是數據庫派對的大門保安。它負責將新數據添加到你的表中。把它想像成向你獨家的信息俱樂部介紹新來賓。

基本語法

讓我們從INSERT查詢的最簡單形式開始:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

這裡的每一部分意味著:

  • INSERT INTO:我們告訴SQLite我們想要添加新數據。
  • table_name:我們要添加數據的表名。
  • (column1, column2, ...):我們要填充新數據的列。
  • VALUES:這個關鍵字引入我們要插入的實際數據。
  • (value1, value2, ...):對應於每個列的值。

一個簡單的例子

假設我們有一個名為students的表,其中有idnameage列。我們可以這樣添加一個新學生:

INSERT INTO students (id, name, age)
VALUES (1, 'John Doe', 20);

這將在我們的students表中添加一個新行,ID為1,名稱為"John Doe",年齡為20。

插入多行

現在,想像你正在招收一個整個班的學生。你不想為每個學生單獨寫INSERT語句,對嗎?好消息!SQLite讓你一次插入多行:

INSERT INTO students (id, name, age)
VALUES
(2, 'Jane Smith', 22),
(3, 'Bob Johnson', 21),
(4, 'Alice Brown', 23);

這個單一查詢將向我們的表中添加三個新學生。效率很高,不是嗎?

不指定列名插入數據

有時候,你可能想將數據插入表的所有列。在這種情況下,你可以省略指定列名:

INSERT INTO students
VALUES (5, 'Charlie Wilson', 24);

但是要小心!這只在為所有列提供值並且順序正確時才有效。這就像解謎一樣——所有拼圖塊必須完美地配合。

使用默認值

SQLite允許你在創建表時為列設置默認值。如果你在插入時沒有為這樣的列指定值,SQLite將使用默認值。

假設我們的students表有一個默認值為'Active'的status列:

INSERT INTO students (id, name, age)
VALUES (6, 'David Lee', 22);

在這種情況下,David Lee的status將自動設為'Active'。

從另一個表插入數據

現在,讓我們來看看真正有趣的部分!SQLite允許你將一個表中的數據插入到另一個表中。這在處理多個相關表時非常有用。

基本語法

INSERT INTO table1 (column1, column2, ...)
SELECT column1, column2, ...
FROM table2
WHERE condition;

實際例子

想像我們有兩個表:studentsnew_enrollments。我們想將所有新入學生添加到我們的學生表中:

INSERT INTO students (name, age)
SELECT student_name, student_age
FROM new_enrollments
WHERE enrollment_date = '2023-09-01';

這個查詢將所有在2023年9月1日入學的new_enrollments學生插入到students表中。

最佳實踐和提示

  1. 總是檢查你的數據:在插入之前,確保你的數據正確並且格式正確。

  2. 使用事務:對於多個插入,將它們包在事務中。這就像把所有的雞蛋放在一個籃子裡——如果有一個失敗,則全部不會通過。

  3. 注意你的列類型:確保你插入的數據與表中列的類型匹配。

  4. 使用占位符:當處理用戶輸入時,使用占位符以防止SQL注入攻擊。

  5. 優雅地處理錯誤:始終準備好對潛在的錯誤進行適當處理。

常見INSERT方法

這裡是一個總結我們討論過的常見INSERT方法的表格:

方法 描述 示例
基本INSERT 插入單行 INSERT INTO students (id, name) VALUES (1, 'John');
多行INSERT 一次性插入多行 INSERT INTO students VALUES (2, 'Jane'), (3, 'Bob');
不指定列INSERT 為所有列插入數據 INSERT INTO students VALUES (4, 'Alice', 20);
使用默認值INSERT 對未指定的列使用默認值 INSERT INTO students (id, name) VALUES (5, 'Charlie');
從SELECT插入 從另一個表插入數據 INSERT INTO students SELECT * FROM new_students;

結論

好了,各位!我們已經穿越了SQLite INSERT查詢的土地。從簡單的插入到更複雜的操作,你現在有了填充數據庫的技巧。

記住,熟練來自練習。不要害怕在安全環境中嘗試這些查詢。誰知道呢?你可能會發現一些自己的酷炫技巧!

快樂編程,願你的數據庫總是充滿數據且沒有錯誤!

Credits: Image by storyset