SQL的新增、修改和删除数据
- 一、使用INSERT 语句表中添加新行
- (1)INSERT语句的基本形式:
- (2)将显式值插入标识列
- (3)INSERT语句的多行插入
- (4)INSERT INTO SELECT语句
- 二、UPDATE语句
- 三、DELETE语句
一、使用INSERT 语句表中添加新行
(1)INSERT语句的基本形式:
INSERT INTO table_name (column_list)
VALUES (value_list);
解析:1)table_name 是要新增行的表明;
2)column_list 是要新增的列,新增列可以是一个或者多个的,但是要用逗号分隔;
3)value_list 是要新增的内容数据,新增的内容数据必须要对应相应的列
以下的语句是将新行插入sales.promotions表:
INSERT INTO sales.promotions ( promotion_name, discount, start_date, expired_date )
VALUES( '2020夏季促销', 0.25, '20200601', '20200901' );
在此示例中没有指定id(主键),因为SQL Server会自动为此列提供值
执行INSERT 语句成功后,将会返回插入的行数
(2)将显式值插入标识列
通常,不为标识列指定值,因为SQL Server将自动提供值。但是,在某些情况下,可能希望在标识列中插入值,例如数据迁移。
要为标识列插入显式值,必须首先执行以下语句:
SET IDENTITY_INSERT table_name ON;
要关闭标识插入,请使用类似的语句:
SET IDENTITY_INSERT table_name OFF;
例:在 promotion 表中插入标识列的值
SET IDENTITY_INSERT sales.promotions ON;
INSERT INTO sales.promotions (
promotion_id,
promotion_name,
discount,
start_date,
expired_date
)
VALUES(
2,
'2020春季促销',
0.25,
'20200201',
'20200301'
);
SET IDENTITY_INSERT sales.promotions OFF;
(3)INSERT语句的多行插入
要一次向表中添加多行,请使用以下形式的INSERT语句:
INSERT INTO table_name (column_list)
VALUES
(value_list_1),
(value_list_2),
…
(value_list_n);
注意:在此语法中,不使用单个值列表,而是使用多个逗号分隔的值列表进行插入
例子:向sales.promotions表插入多行数据
INSERT INTO sales.promotions ( promotion_name, discount, start_date, expired_date )
VALUES
( '2020夏季促销', 0.15, '20200601', '20200901' ),
( '2020秋季促销', 0.20,'20201001', '20201101' ),
( '2020冬季促销', 0.25, '20201201', '20210101' );
(4)INSERT INTO SELECT语句
INSERT INTO SELECT语句是要将其他表中的数据插入另一个表中
例子:将 customers 表中的所有地址都插入到 addresses 表中
INSERT INTO sales.addresses (street, city, state, zip_code)
SELECT street, city, state, zip_code
FROM sales.customers
ORDER BY first_name, last_name;
注意:addresses 中的列必须要与 customers 表中的列对应
二、UPDATE语句
要修改表中的现有数据,请使用以下UPDATE语句语法:
UPDATE table_name
SET c1 = v1, c2 = v2, … cn = vn [WHERE
condition]
解析:1) table_name 是要修改的表名
2)c1 ,c2 ,… ,cn是要修改的列名, v1,v2 ,… vn 是要修改的值
3)在 WHERE 子句中指定条件以选择更新的行。WHERE子句是可选的。 如果不指定 WHERE 子句,则表中的所有行都将更新。
(1)修改一行数据
例子;在sales.taxes表中修改列名为updated_at,state_tax_rate的一行数据。
UPDATE sales.taxes
SET state_tax_rate = 0.9, updated_at = GETDATE()
WHERE tax_id = 1
(2)修改所有行
例子:只要不指定WHERE语句,就可以修改列名为updated_at,state_tax_rate的所有数据
UPDATE sales.taxes
SET state_tax_rate = 0.9, updated_at = GETDATE()
(3)更新多列的示例
例子:对于最高当地税率为 1% 的州,以下将最高当地税率提高 2% ,以及平均税率提高 1% 。
UPDATE sales.taxes
SET max_local_tax_rate += 0.02, avg_local_tax_rate += 0.01
WHERE max_local_tax_rate = 0.01
三、DELETE语句
要删除表中的现有数据,请使用以下DELETE语句语法:
DELETE FROM table_name
[WHERE condition]
解析:1) table_name 是要删除的表名
2)在 WHERE 子句中指定条件以选择删除的行。WHERE子句是可选的。 如果不指定 WHERE 子句,则表中的所有行都将被删除。
例子:删除 sales.taxes 表中 state(州) 为 ‘Alabama’的数据
DELETE FROM sales.taxes WHERE state= 'Alabama' ;
例子:删除 sales.taxes 表中所有数据
DELETE FROM sales.taxes ;