插入更新删除数据

目录

插入数据(INSERT)

插入完整的行

插入部分列(省略某些字段)

批量插入

插入查询结果

更新数据(UPDATE)

更新某一行的某个字段

同时更新多个字段

删除数据(DELETE)

删除指定行

删除所有行


本篇文章内容的前置知识为创建和操纵表与约束,如果不了解,可点击链接学习

创建和操纵表与约束-CSDN博客

插入数据(INSERT)

INSERT 用于将数据插入表中。

插入完整的行

写法一:不指定列名(不推荐)

语法结构:

INSERT INTO 表名 
VALUES (值1, 值2, 值3, ...);
INSERT INTO products
VALUES (1009, '电竞耳机', 499, 101);

所有值必须严格按照表结构顺序
不推荐,因为顺序变化容易出错。

写法二:指定列名插入(推荐)

语法结构:

INSERT INTO 表名 (列1, 列2, 列3, ...) 
VALUES (值1, 值2, 值3, ...);
INSERT INTO products (prod_id, prod_name, prod_price, vend_id)
VALUES (1010, '便携投影仪', 1099, 102);

顺序明确,更安全、更稳定,表结构变动也不容易出错。

插入部分列(省略某些字段)
INSERT INTO products (prod_id, prod_name, vend_id)
VALUES (1011, '智能手表', 100);

未提供 prod_price,系统将插入 NULL 或默认值
条件:省略的字段必须允许 NULL 或设置默认值

若表中存在自增列,插入时必须省略该列,否则会报错。

 批量插入

插入大量数据时,单条 INSERT 效率低,使用批量插入

INSERT INTO products (prod_id, prod_name, prod_price, vend_id)
VALUES 
    (1012, 'U盘', 69, 100),
    (1013, '移动硬盘', 399, 101),
    (1014, '读卡器', 29, 102);

插入查询结果

把一张表中的数据插入另一张表,使用 INSERT 和 SELECT

语法结构:

INSERT INTO 目标表名 (列1, 列2, 列3, ...) 
SELECT 列1, 列2, 列3, ...
FROM 源表名 
[WHERE 条件];

要求:把 vend_id 为 100 的产品插入一个新表中:

CREATE TABLE hotProducts (
    prod_id INT PRIMARY KEY,
    prod_name VARCHAR(100),
    prod_price DOUBLE,
    vend_id INT
);

INSERT INTO hotProducts (prod_id, prod_name, prod_price, vend_id)
SELECT prod_id, prod_name, prod_price, vend_id
FROM products
WHERE vend_id = 100;

INSERT SELECT 用于将一个表中的数据批量插入另一个表
SELECT 的列必须和 INSERT 指定的列数量、顺序、数据类型一致
可加 WHERE 过滤插入的数据

INSERT和SELECT的列名尽量一致;虽然技术上不要求一致,只要位置和类型匹配

更方便的写法如下:

CREATE TABLE hotProducts LIKE products;

INSERT INTO hotProducts 
SELECT * 
FROM products 
WHERE vend_id = 100;

这种方式会完全复制原表结构,无法灵活修改新表的字段类型或约束。

更新数据(UPDATE)

语法结构:

UPDATE 表名
SET 列名 = 新值, ...
[WHERE 条件];
更新某一行的某个字段

要求:修改商品 1011 的价格为 799

UPDATE products
SET prod_price = 799
WHERE prod_id = 1011;

这里不能省略 WHERE,否则会更新整张表

同时更新多个字段

要求:将商品 1009 改名为蓝牙耳机,价格改为 599

UPDATE products
SET prod_name = '蓝牙耳机',
    prod_price = 599
WHERE prod_id = 1009;

SET 中字段用逗号分隔;最后一个字段不加逗号

删除数据(DELETE)

语法结构:

DELETE FROM 表名
[WHERE 条件];
删除指定行

要求:删除 prod_id = 1014 的读卡器产品

DELETE FROM products
WHERE prod_id = 1014;

如果省略 WHERE,会删除整张表所有记录

要求:删除所有价格为 NULL 的商品

DELETE FROM products
WHERE prod_price IS NULL;

删除所有行
DELETE FROM products;

代码会删除整张表所有数据,但是会保留表结构,需谨慎使用

如果想从表中删除所有行,不要使用 DELETE。可使用 TRUNCATE TABLE 语句,它完成相同的工作,而速度更快

语法结构:

TRUNCATE TABLE 表名;

TRUNCATE 会重置 AUTO_INCREMENT,DELETE不会重置


尚未完结,可点击链接跳转下一篇文章

汇总数据(使用聚集函数)-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值