sql语句学习教程09_insert_insert语句_insert语法_sql数据插入_sql增删改语句

教程发布:风哥 教程分类:MySQL教程 更新日期:2020-03-05 浏览学习:1870

数据库就是用来存储数据的,所有的数据都根据业务分门别类,存储在对应的表中,所以数据的操作,其实就是对表的数据进行增删改查操作,这些操作采用的是标准SQL的DML操作语言,如insert、delete、update语句,接下来风哥为大家介绍如何使用insert对数据进行插入操作。
1. SQL INSERT语句简介

SQL提供了INSERT语句,用于将一行或多行插入表中。 INSERT语句用于:
向表中插入一行向表中插入多行将行从一个表复制到另一个表中。
我们将在以下部分中来看看INSERT语句的每个用法。
2.向表中插入一行要向表中插入一行

请使用INSERT语句的以下语法。
INSERT INTO fgedu_table (column1, column2,...)
VALUES
    (value1, value2,...);

在表中插入新行时,应注意以下几点:

首先,值的数量必须与列数相同。 此外,列和值必须是对应的,因为数据库系统将通过它们在列表中的相对位置来匹配它们。
其次,在添加新行之前,数据库系统检查所有完整性约束,例如,外键约束,主键约束,检查约束和非空约束。如果违反了其中一个约束,数据库系统将发出错误并终止语句,而不向表中插入任何新行。

如果值序列与表中列的顺序匹配,则无需指定列。 请参阅以下INSERT语句,该语句省略INSERT INTO子句中的列列表。
INSERT INTO fgedu_table
VALUES
    (value1, value2,...);

但是,这不是一个好的做法。
如果在插入新行时未在INSERT语句中指定列及其值,则列将采用表结构中指定的默认值。 默认值可以是0,序列中的下一个整数值,当前时间,NULL值等。请参阅以下语句:
INSERT INTO (column1, column3)
VALUES
    (column1, column3);
在此语法中,column2将采用默认值。

3. 在表中插入一行记录
我们将使用示例数据库中的fgedu_yg和fgedu_bm表来演示如何向表中插入一行。
要在fgedu_bm表中插入新行。参考以下语句 -
INSERT INTO fgedu_bm (
    first_name,
    last_name,
    relationship,
    yg_id
)VALUES('itpux01','fgedu','Child',200);
我们没有在INSERT语句中使用department_id列,因为bm_id列是自动增量列,因此,当插入新行时,数据库系统使用下一个整数作为默认值。
yg_id列是将fgedu_bm表链接到fgedu_yg表的外键。 在添加新行之前,数据库系统会检查fgedu_yg表的yg_id列中是否存在值:200,以确保不违反外键约束。
如果成功插入行,则数据库系统返回受影响的行数。
可以使用以下SELECT语句检查是否已成功插入行。
SELECT
    *
FROM
    fgedu_bm
WHERE
    yg_id = 200;
执行上面查询语句,得到以下结果 -
+--------------+------------+-----------+--------------+-------------+
| bm_id | first_name | last_name | relationship | yg_id |
+--------------+------------+-----------+--------------+-------------+
|           31 | itpux01        | fgedu        | Child        |         200 |
+--------------+------------+-----------+--------------+-------------+
1 rows in set

4. 向表中插入多行记录要使用单个INSERT语句插入多行
请使用以下构造:
INSERT INTO fgedu_table
VALUES
    (value1, value2,...),
    (value1, value2,...),
    (value1, value2,...),
    ...;
例如,要在fgedu_bm表中插入两行,请使用以下查询。
INSERT INTO fgedu_bm (
    first_name,
    last_name,
    relationship,
    yg_id
)
VALUES
    (
        'Avg',
        'Lee',
        'Child',
        112
    ),
    (
        'Michelle',
        'Lee',
        'Child',
        112
    );
SQL
数据库系统返回2行受影响,可以使用以下语句验证结果。
SELECT
    *
FROM
    fgedu_bm
WHERE
    yg_id = 112;

5. 从其他表复制行记录可以使用INSERT语句查询来自一个或多个表的数据,并将其插入另一个表中
如下所示:
INSERT INTO fgedu_table (column1, column2)
SELECT
    column1,
    column2
FROM
    table2
WHERE
    condition1;
在此语法中,使用SELECT(称为子选择)而不是VALUES子句。 子选择可以包含连接,以便可以组合来自多个表的数据。 执行语句时,数据库系统在插入数据之前首先评估子选择。
假设有一个名为fgedu_bm_archive的表,其结构与fgedu_bm表具有相同的结构。 以下语句将fgedu_bm表中的所有行复制到fgedu_bm_archive表中。
INSERT INTO fgedu_bm_archive
SELECT
    *
FROM
    fgedu_bm;

您可以使用以下语句验证插入操作是否成功 -
SELECT
    *
FROM
    fgedu_bm_archive;
 
6.向表中插入多行

通过前面的学习,我们已经知道如何向表中插入单行或单个数据,但是如果要在表中插入多行。 除INSERT INTO外,还将Insert与select语句结合使用。
在此命令中,假设一个表需要使用另一个表中的数据信息来插入。
下面来看看sql insert的select语法:
INSERT INTO "table 1" ("column1", "column2",....) 
SELECT "column3", "column4",.... 
FROM "table2";
SQL
INSERT INTO语句还可以包含许多子句,如:SELECT,GROUP BY,HAVING以及JOIN和ALIAS。 因此,insert into select语句可能会有些复杂。
示例:假设在数据库中有一个名为sales_data的表,而表shop_information包含每天从商店销售的数据记录。 如果要将数据从sales_data移动到shop_information怎么做?
应该使用以下语法:
INSERT INTO shop (shop_name, sales, transaction_date) 
SELECT shop_name, fgedu (sales), transaction_date 
FROM sales_information 
GROUP BY shop_name, transaction_date;
注:sales_data和shop_information表的结构相同。

网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】sql语句学习教程10_delete_delete语句_delete大批量删除_sql数据删除_sql增删改语句
【下一篇】sql语句学习教程08_update_update批量更新_update语句_update语法_sql增删改