SQL教學
SQL RDBMS概念
SQL簡介
SQL NOT NULL約束
SQL DEFAULT約束
SQL唯一約束
SQL主鍵
SQL外鍵
SQL CHECK約束
SQL示例數據庫
SQL索引約束
SQL NULL值
數據庫 - 第一範式(1NF)
數據庫 - 第二範式(2NF)
數據庫 - 第三範式(3NF)
SQL RDBMS數據庫
SQL語法
SQL數據類型
SQL操運算符
SQL算術運算符
SQL比較運算符
SQL邏輯運算符
SQL表達式
SQL創建數據庫(CREATE DATABASE)
SQL丟棄或刪除數據庫(DROP DATABASE)
SQL選擇數據庫(SELECT Database, USE語句)
SQL創建表(CREATE Table)
SQL從現有表創建表
SQL刪除表(DROP或DELETE Table)
SQL INSERT INTO插入查詢
SQL SELECT查詢語句
SQL WHERE子句
SQL AND和OR運算符
SQL UPDATE更新查詢
SQL DELETE刪除查詢
SQL LIKE子句
SQL TOP,LIMIT,ROWNUM子句
SQL ORDER BY排序子句
SQL GROUP BY(分組)
SQL Distinct關鍵字
SQL排序結果
SQL約束
SQL Join聯接
SQL INNER JOIN(內部連接)
SQL LEFT JOIN(左連接)
SQL RIGHT JOIN(右連接)
SQL FULL JOIN(全連接)
SQL自連接
SQL笛卡爾或交叉連接
SQL UNION子句/操作符
SQL INTERSECT子句
SQL EXCEPT子句
SQL別名語法
SQL索引
SQL ALTER TABLE(修改表)
SQL TRUNCATE TABLE(截斷表)
SQL View(視圖)
SQL Having子句
SQL事務
SQL通配符運算符
SQL日期函數
SQL ADDDATE()函數
SQL ADDTIME()函數
SQL CONVERT_TZ()函數
SQL CURDATE()函數
SQL CURRENT_DATE()函數
SQL CURTIME()函數
SQL CURRENT_TIME()函數
SQL CURRENT_TIMESTAMP()方法
SQL DATE(expr)函數
SQL DATEDIFF()方法
SQL DATE_ADD()和DATE_SUB()方法
SQL DATE_FORMAT()函數
SQL DATE_SUB()方法
SQL DAY()函數
SQL DAYNAME()函數
SQL DAYOFMONTH()函數
SQL DAYOFWEEK()函數
SQL DAYOFYEAR()函數
SQL EXTRACT()函數
SQL FROM_DAYS()函數
SQL FROM_UNIXTIME()函數
SQL HOUR()方法
SQL LAST_DAY()函數
SQL LOCALTIME和LOCALTIME()函數
SQL LOCALTIMESTAMP和LOCALTIMESTAMP()函數
SQL MAKEDATE()函數
SQL MAKETIME()函數
SQL MICROSECOND()函數
SQL MINUTE()函數
SQL MONTH()函數
SQL MONTHNAME()函數
SQL NOW()函數
SQL PERIOD_ADD()函數
SQL PERIOD_DIFF()函數
SQL QUARTER()函數
SQL SECOND()函數
SQL SEC_TO_TIME()函數
SQL STR_TO_DATE()函數
SQL SUBDATE()函數
SQL SUBTIME()函數
SQL SYSDATE()函數
SQL TIME()函數
SQL TIMEDIFF()函數
SQL TIMESTAMP()函數
SQL TIMESTAMPADD()函數
SQL TIMESTAMPDIFF()函數
SQL TIME_FORMAT()函數
SQL TIME_TO_SEC()函數
SQL TO_DAYS()函數
SQL UNIX_TIMESTAMP()函數
SQL UTC_DATE()函數
SQL UTC_TIME()函數
SQL UTC_TIMESTAMP()函數
SQL WEEK()函數
SQL WEEKDAY()函數
SQL WEEKOFYEAR()函數
SQL YEAR()函數
SQL YEARWEEK()函數
SQL臨時表
SQL克隆表
SQL子查詢
SQL使用序列(自動遞增)
SQL DISTINCT重複處理
SQL注入
SQL實用函數
SQL MAX()函數
SQL MIN()函數
SQL AVG()函數
SQL SUM()函數
SQL SQRT()函數
SQL RAND()函數
SQL CONCAT()函數
SQL數值函數
SQL ABS()函數
SQL ACOS()函數
SQL ASIN(X)函數
SQL ATAN(X)函數
SQL ATAN2()函數
SQL BIT_AND()函數
SQL BIT_COUNT()函數
SQL BIT_OR()函數
SQL CEIL()函數
SQL CONV()函數
SQL COS()函數
SQL COT()函數
SQL DEGREES()函數
SQL EXP(X)函數
SQL FLOOR(X)函數
SQL FORMAT(X,D)函數
SQL GREATEST()函數
SQL INTERVAL()函數
SQL LEAST()函數
SQL LOG()函數
SQL LOG10(X)函數
SQL MOD()函數
SQL OCT(N)函數
SQL PI()函數
SQL POW()函數
SQL RADIANS()函數
SQL ROUND()函數
SQL SIGN(X)函數
SQL SIN(X)函數
SQL SQRT(X)函數
SQL STD()函數
SQL TAN(X)函數
SQL TRUNCATE()函數
SQL字符串函數
SQL ASCII(str)函數
SQL BIN(N)函數
SQL BIT_LENGTH()函數
SQL CHAR()函數
SQL CHAR_LENGTH()函數
SQL CHARACTER_LENGTH()函數
SQL字符串CONCAT()函數
SQL CONCAT_WS()函數
SQL CONV(N,from_base,to_base)函數
SQL ELT()函數
SQL EXPORT_SET()函數
SQL FIELD()函數
SQL FIND_IN_SET()函數
SQL FORMAT()函數
SQL HEX()函數
SQL INSERT()函數
SQL INSTR()函數
SQL LCASE()函數
SQL LEFT()函數
SQL LENGTH()函數
SQL LOAD_FILE()函數
SQL LOCATE()函數
SQL LOWER()函數
SQL LPAD()函數
SQL LTRIM()函數
SQL MAKE_SET()函數
SQL MID()函數
SQL OCT()函數
SQL OCTET_LENGTH()函數
SQL ORD()函數
SQL POSITION()函數
SQL QUOTE()函數
SQL REGEXP模式
SQL REPEAT()函數
SQL REPLACE()函數
SQL REVERSE()函數
SQL RIGHT()函數
SQL RPAD()函數
SQL SOUNDEX()函數
SQL SPACE()函數
SQL STRCMP()函數
SQL SUBSTRING()函數
SQL SUBSTRING_INDEX()函數
SQL TRIM()函數
SQL UCASE()函數
SQL UNHEX()函數
SQL UPPER()函數

SQL Insert語句

在本教程中,我們將學習如何使用SQL INSERT語句來將數據插入表中。

1. SQL INSERT語句簡介

SQL提供了INSERT語句,用於將一行或多行插入表中。 INSERT語句用於:

  • 向表中插入一行
  • 向表中插入多行
  • 將行從一個表複製到另一個表中。

我們將在以下部分中來看看INSERT語句的每個用法。

2.向表中插入一行

要向表中插入一行,請使用INSERT語句的以下語法。

INSERT INTO table1 (column1, column2,...)
VALUES
    (value1, value2,...);

在表中插入新行時,應注意以下幾點:

  • 首先,值的數量必須與列數相同。 此外,列和值必須是對應的,因爲數據庫系統將通過它們在列表中的相對位置來匹配它們。

  • 其次,在添加新行之前,數據庫系統檢查所有完整性約束,例如,外鍵約束,主鍵約束,檢查約束和非空約束。如果違反了其中一個約束,數據庫系統將發出錯誤並終止語句,而不向表中插入任何新行。

如果值序列與表中列的順序匹配,則無需指定列。 請參閱以下INSERT語句,該語句省略INSERT INTO子句中的列列表。

INSERT INTO table1
VALUES
    (value1, value2,...);

但是,這不是一個好的做法。

如果在插入新行時未在INSERT語句中指定列及其值,則列將採用表結構中指定的默認值。 默認值可以是0,序列中的下一個整數值,當前時間,NULL值等。請參閱以下語句:

INSERT INTO (column1, column3)
VALUES
    (column1, column3);

在此語法中,column2將採用默認值。

2. 在表中插入一行記錄

我們將使用示例數據庫中的employeesdependents表來演示如何向表中插入一行。

SQL

要在dependents表中插入新行。參考以下語句 -

INSERT INTO dependents (
    first_name,
    last_name,
    relationship,
    employee_id
)VALUES('Max','Su','Child',176);

我們沒有在INSERT語句中使用department_id列,因爲dependent_id列是自動增量列,因此,當插入新行時,數據庫系統使用下一個整數作爲默認值。

employee_id列是將dependents錶鏈接到employees表的外鍵。 在添加新行之前,數據庫系統會檢查employees表的employee_id列中是否存在值:176,以確保不違反外鍵約束。

如果成功插入行,則數據庫系統返回受影響的行數。

可以使用以下SELECT語句檢查是否已成功插入行。

SELECT 
    *
FROM
    dependents
WHERE
    employee_id = 176;

執行上面查詢語句,得到以下結果 -

+--------------+------------+-----------+--------------+-------------+
| dependent_id | first_name | last_name | relationship | employee_id |
+--------------+------------+-----------+--------------+-------------+
|           31 | Max        | Su        | Child        |         176 |
+--------------+------------+-----------+--------------+-------------+
1 rows in set

3. 向表中插入多行記錄

要使用單個INSERT語句插入多行,請使用以下構造:

INSERT INTO table1
VALUES
    (value1, value2,...),
    (value1, value2,...),
    (value1, value2,...),
    ...;

例如,要在dependents表中插入兩行,請使用以下查詢。

INSERT INTO dependents (
    first_name,
    last_name,
    relationship,
    employee_id
)
VALUES
    (
        'Avg',
        'Lee',
        'Child',
        192
    ),
    (
        'Michelle',
        'Lee',
        'Child',
        192
    );

數據庫系統返回2行受影響,可以使用以下語句驗證結果。

SELECT 
    *
FROM
    dependents
WHERE
    employee_id = 192;

4. 從其他表複製行記錄

可以使用INSERT語句查詢來自一個或多個表的數據,並將其插入另一個表中,如下所示:

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

在此語法中,使用SELECT(稱爲子選擇)而不是VALUES子句。 子選擇可以包含連接,以便可以組合來自多個表的數據。 執行語句時,數據庫系統在插入數據之前首先評估子選擇。

假設有一個名爲dependents_archive的表,其結構與dependents表具有相同的結構。 以下語句將dependents表中的所有行復制到dependents_archive表中。

INSERT INTO dependents_archive 
SELECT
    *
FROM
    dependents;

您可以使用以下語句驗證插入操作是否成功 -

SELECT
    *
FROM
    dependents_archive;

通過上面的示例學習,我們已經知道如何使用SQL INSERT語句將一行或多行插入表中。