SQL数据更新

目录

数据插入(INSERT语句的使用方法)

什么是INSERT

INSERT语句的基本语法

插入NULL

插入默认值

通过显示方式插入默认值

通过隐式方式插入默认值

从其他表中复制数据

多种多样的SELECT语句

数据的删除(DELETE语句的使用方法)

DROP TABLE语句和DELETE语句

DELETE语句的基本语法

指定删除对象的DELETE语句(搜索型DELETE)

删除部分数据行的搜索型DELETE

舍弃(TRUNCATE)

数据的更新(UPDATE语句的使用方法)

UPDATE语句的基本语法

指定条件的UPDATE语句(搜索型UPDATE)

使用NULL进行更新

多列更新

事务

什么是事务

创建事务

事务开始语句

COMMIT-提交处理

ROLLBACK-取消处理


数据插入(INSERT语句的使用方法)

什么是INSERT

通过CREATE TABLE语句创造出的表可以比作一个空箱子.只有把数据装入这个箱子,它才能称之为数据库.用来装入数据的SQL就是INSERT(插入).

INSERT语句的基本语法

单行插入.

INSERT语法

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

列的数量要和值的数量一一对应.

当然列名可以忽略,但是值一定要对应创建表时的字段.

例如插入一个值:

INSERT INTO Shohin  
(shohin_id,shohin_mei,shohin_bunrui,hanbai_tanka,shiire_tanka,torokubi)
VALUES('0001','T-shirt','clothes',1000,500,'2009-09-20');

或者

INSERT INTO Shohin VALUES('0001','T-shirt','clothes',1000,500,'2009-09-20');

多行插入:

不适于Oracle;

INSERT INTO Shohin  
(shohin_id,shohin_mei,shohin_bunrui,hanbai_tanka,shiire_tanka,torokubi)
VALUES
('0002','puncher','stationery',500,320,'2009-09-11'),
('0003','exercise T-shirt','clothes',4000,2800,'2009-09-11'),
('0004','kitchen knife','kitchenware',3000,2800,'2009-09-21'),
('0005','pressure cooker','kitchenware',6800,5000,'2009-09-15'),
('0006','fork','kitchenware',500,NULL,'2009-09-20'),
('0007','rasp','kitchenware',880,790,'2009-09-28'),
('0008','ball-point pen','stationery',100,NULL,'2009-09-20');

插入NULL

INSERT语句想给某一列插入NULL值时,可以直接在VALUES子句中的值写入NULL;

但是想要插入NULL的列一定不能设置NOT NULL约束.

插入默认值

通过在创建表的CREATE TABLE语句中设置DEFAULT约束来实现.

设置DEFAULT 0 就是设置默认值为0;

例如:

CREATE TABLE Shohin(
	shohin_id VARCHAR(50) NOT NULL,
	shohin_mei VARCHAR(100) NOT NULL,
	shohin_bunrui VARCHAR(32) NOT NULL,
	hanbai_tanka INTEGER DEFAULT 0,
	shiire_tanka INTEGER,
	torokubi DATE,
	PRIMARY KEY(shohin_id)
);

通过显示方式插入默认值

在VALUES子句中指定DEFAULT关键字.

INSERT INTO Shohin  
(shohin_id,shohin_mei,shohin_bunrui,hanbai_tanka,shiire_tanka,torokubi)
VALUES('0001','T-shirt','clothes',DEFAULT,500,'2009-09-20');

通过隐式方式插入默认值

插入默认值时可以不使用DEFAULT关键字,只要在列清单和VALUES中省略设定了默认值的列就可以了.

INSERT INTO Shohin  
(shohin_id,shohin_mei,shohin_bunrui,shiire_tanka,torokubi)
VALUES('0001','T-shirt','clothes',500,'2009-09-20');

省略了hanbai_tanka 字段和VALUES中的DEFAULT.

建议使用显示方式,因为可以一目了然的知道hanbai_tanka字段设置了默认值,SQL语句更加容易理解.

如果省略了没有设定默认值的列的话,该列的值就会设定为NULL,如果省略的时设定了NOT NULL约束的列的话,INSERT语句会出错.

从其他表中复制数据

CREATE TABLE ShohinCopy(
	shohin_id VARCHAR(50) NOT NULL,
	shohin_mei VARCHAR(100) NOT NULL,
	shohin_bunrui VARCHAR(32) NOT NULL,
	hanbai_tanka INTEGER DEFAULT 0,
	shiire_tanka INTEGER,
	torokubi DATE,
	PRIMARY KEY(shohin_id)
);

INSERT INTO ShohinCopy(shohin_id,shohin_mei,shohin_bunrui,hanbai_tanka,shiire_tanka,torokubi)
SELECT shohin_id,shohin_mei,shohin_bunrui,hanbai_tanka,shiire_tanka,torokubi
FROM Shohin;

执行INSERT....SELECT语句,将原来Shohin表中的数据全部复制到ShohinCopy.因此INSERT...SELECT语句可以在需要的时候进行数据备份时使用.

多种多样的SELECT语句

该INSERT语句中的SELECT语句也可以使用WHERE子句或者GROUP BY子句等.但是ORDER BY语句时无效的.

数据的删除(DELETE语句的使用方法)

DROP TABLE语句和DELETE语句

DROP TABLE语句将表完全删除.

DELETE语句会留下表(容器),而删除表的内容.

DROP TABLE语句会完全删除整张表,因此删除之后在想插入数据,就必须使用CREATRE TABLE语句重新创建.

DELETE语句在删除数据(行)的同时会保留数据表,因此只需要通过INSERT语句就可以再次向表中插入数据.

DELETE语句的基本语法

语法:

DELETE FROM <表名>;

例如清空Shohin

DELETE FROM Shohin;

指定删除对象的DELETE语句(搜索型DELETE)

想要删除部分数据行,可以像SELECT语句使用WHERE子句指定删除条件,这种指定了删除对象的DELETE语句称之为搜索型DELETE.

删除部分数据行的搜索型DELETE

语法

DELETE FROM <表名>
WHERE <条件>;

例如删除hanbai_tanka大于等于4000的数据

 与SELECT语句不同,DELETE语句中不能使用GROUP BY,HAVING和ORDER BY三类子句,而只能使用WHERE.

舍弃(TRUNCATE)

只删除表中全部数据的TRUNCATE语句

TRUNCATE <表名>;

与DELETE不同,TRUNCATE只能删除表中的全部数据,而不能通过WHERE子句指定条件删除部分数据.也正是它不能具体的控制删除对象,多以其速度比DELETE要快得多.

因此要删除全部数据行时, 使用TUNCATE可以缩短执行时间;

数据的更新(UPDATE语句的使用方法)

UPDATE语句的基本语法

和INSERT语句,DELETE语句一样,UPDATE语句也属于DML语句。

改变表中的数据UPDATE语句

UPDATE <表名>
        SET <列名> = <表达式>;

将更新对象的列和更新后的值都技术在SET子句中。

例如:

将torokubi时间都改为2009-10-10 

UPDATE Shohin
SET torokubi = '2009-10-10';

指定条件的UPDATE语句(搜索型UPDATE)

更新部分数据行的搜索型UPDATE

语法:

UPDATE <表名>
	SET <列名> = <表达式>
WHERE <条件>;

例如:将shohin_bunrui为kitchenware的行hanbai_tanka乘10

使用NULL进行更新

使用UPDATE也可以将列更新为NULL(该更新俗称NULL清空)。此时只需要将赋值表达式右边的值直接写为NULL即可。

例如将shohin_id 为008的数据的登记日期更新为NULL

UPDATE Shohin
	SET torokubi = NULL
WHERE shohin_id = '0008';

和INSERT语句一样,UPDATE语句也可以将NULL作为一个值来使用,但是只有未设置NOT NULL约束和主键约束才可以清空为NULL。

多列更新

UPDATE Shohin
	SET hanbai_tanka = hanbai_tanka * 10,
		shiire_tanka = shiire_tanka /10
WHERE shohin_bunrui = 'kitchenware';

事务

什么是事务

事务就是需要在同一处理单元中执行的一系列更新处理的集合。

创建事务

事务语法:

事务开始语句;
	DML语句1; 
	DML语句2;
	DML语句3;
事务结束语句(COMMIT或者ROLLBACK);

使用事务开始语句和事务结束语句,将一系列的DML语句(INSERT,UPDATE,DELETE语句)括起来,就实现了一个事务处理。

事务开始语句

SQL server ,PostgreSQL数据库

BEGIN TRANSACTION

MySQL数据库

START TRANSACTION

Oracle,DB2数据库

COMMIT-提交处理

COMMIT时提交事务包含的全部更新处理的结束指令。

相当于文件处理中的覆盖保存,一旦提交就无法恢复到事务开始的状态。

ROLLBACK-取消处理

ROLLBACK时取消事务包含的全部更新处理的结束指令。相当于文件处理中的放弃保存,一旦回滚,数据库就会恢复到事务开始之前的状态。通常回滚并不会像提交那样造成大闺蜜的数据损失。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

波雅_汉库克

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

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

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

打赏作者

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

抵扣说明:

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

余额充值