0
点赞
收藏
分享

微信扫一扫

交换机高级-端口安全

村里搬砖的月野兔 03-28 19:00 阅读 2
sql

目录

1、插入完整的行数据

2、 插入指定列的数据

3. 插入多行数据

4. 省略列名

5. 插入默认值或NULL值

6、INSERT INTO ... SELECT

7、INSERT OVERWRITE

8、INSERT IGNORE INTO

9、REPLACE INTO

10、INSERT INTO ... ON DUPLICATE KEY UPDATE

11、使用子查询插入


在SQL中,你可以使用INSERT INTO语句来添加数据到数据库表中。以下是一些基本的例子来说明如何操作。

1、插入完整的行数据

如果你想要插入一行的所有数据,你需要为表中的每一列都提供一个值。语法如下:

INSERT INTO 表名 (列1, 列2, 列3, ...)  
VALUES (值1, 值2, 值3, ...);

假设我们有一个名为students的表,它包含idname, 和age三个列。

CREATE TABLE students (  
    id INT PRIMARY KEY,  
    name VARCHAR(50),  
    age INT  
);

例如,假设你有一个名为students的表,它有idname, 和 age三列。你可以这样插入一行数据:

INSERT INTO students (id, name, age)  
VALUES (1, '张三', 20);

2、 插入指定列的数据

如果你只想为表中的某些列插入数据,你可以省略其他列。这种情况下,你不需要在INSERT INTO语句中列出所有的列名,只需要列出你想要插入数据的列名即可。

INSERT INTO 表名 (列1, 列2, 列3, ...)  
VALUES (值1, 值2, 值3, ...);

使用上面的students表为例,假设我们只想插入nameage,可以这样写:

INSERT INTO students (name, age)  
VALUES ('李四', 22);

在这种情况下,id列的值可能会由数据库自动填充(例如,如果id是一个自增列)。

3. 插入多行数据

在某些数据库中(如MySQL),你可以一次插入多行数据。语法如下:

INSERT INTO 表名 (列1, 列2, ...)  
VALUES   
    (值1a, 值2a, ...),  
    (值1b, 值2b, ...),  
    ...;

例如:

INSERT INTO students (name, age)  
VALUES   
    ('王五', 21),  
    ('赵六', 23);

注意:不是所有的数据库系统都支持一次插入多行数据。在使用前,请确保你的数据库系统支持此功能。

4. 省略列名

如果你为表中的所有列都提供了值,并且这些值的顺序与表中的列顺序相匹配,那么你可以省略列名:

INSERT INTO students  
VALUES (4, '赵六', 22);

这条语句的效果与之前的示例相同。但是,为了代码的可读性和维护性,通常建议明确指定列名。

5. 插入默认值或NULL值

如果表的某列有默认值,并且你在INSERT INTO语句中没有为该列提供值,那么它将使用默认值。如果某列允许NULL值,并且你没有提供值,那么它将插入NULL。

例如,如果age列有默认值18,你可以这样插入数据:

INSERT INTO students (id, name)  
VALUES (5, '孙七');

在这种情况下,age列将被设置为默认值18

6、INSERT INTO ... SELECT

这种语句允许你从另一个表或查询结果中插入数据。

INSERT INTO target_table (column1, column2, ...)  
SELECT columnA, columnB, ...  
FROM source_table  
WHERE condition;

例如,你可以从一个表复制数据到另一个具有相同结构的表:

INSERT INTO students_backup (id, name, age)  
SELECT id, name, age  
FROM students;

7、INSERT OVERWRITE

这个语句在某些数据库管理系统(如Hive)中可用,用于覆盖目标表中的数据。它通常与分区表一起使用,以替换特定分区的数据。

8、INSERT IGNORE INTO

这个语句在插入数据时,如果主键或唯一索引的值已存在,它会忽略这次插入操作,而不会引发错误。这可以用来避免插入重复数据。

INSERT IGNORE INTO students (id, name, age)  
VALUES (1, '张三', 20);

如果id为1的记录已经存在,这条语句将不会有任何效果。

9、REPLACE INTO

这个语句在插入数据时,如果主键或唯一索引的值已存在,它会先删除旧记录,然后插入新记录。这可以用来更新已存在的记录。

REPLACE INTO students (id, name, age)  
VALUES (1, '张三', 21);

如果id为1的记录已经存在,这条语句会先删除那条记录,然后插入新的记录。

10、INSERT INTO ... ON DUPLICATE KEY UPDATE

这个语句在MySQL中特别有用。当尝试插入一个与现有记录具有相同主键或唯一索引的记录时,它会更新现有记录而不是插入新记录。

INSERT INTO students (id, name, age)  
VALUES (1, '张三', 25)  
ON DUPLICATE KEY UPDATE  
age = VALUES(age);

如果id为1的记录已经存在,这条语句会更新那条记录的age字段为25。

11、使用子查询插入

你可以在INSERT INTO语句中使用子查询来动态生成要插入的数据。

INSERT INTO summary_table (total_students)  
SELECT COUNT(*) FROM students;

选择使用哪种插入语句取决于你的具体需求,例如是否需要更新现有记录、是否需要避免重复数据、以及你的数据库管理系统支持哪些特性。在编写插入语句时,务必注意数据类型匹配、约束条件(如主键和唯一索引)以及可能的性能影响。

举报

相关推荐

0 条评论