sql中如何添加数据

本文详细介绍了SQL中INSERTINTO语句的各种用法,包括插入完整行数据、指定列、多行数据、默认值、子查询以及针对主键处理的INSERTOVERWRITE、INSERTIGNOREINTO、REPLACEINTO和ONDUPLICATEKEYUPDATE等高级操作。
摘要由CSDN通过智能技术生成

目录

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;

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

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yaml墨韵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值