4数据更新
Posted 起航追梦人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4数据更新相关的知识,希望对你有一定的参考价值。
4-1:数据的插入(INSERT语句的使用方法)
1、使用INSERT语句可能向表中插入数据(行),原则上INSERT语句每次执行一行数据的插入。
2、列名和值用逗号,分别括在()内,这种形式称为清单。
3、对表中所有的列进行INSERT操作时可以省略表名后的列清单。
4、插入NULL时需要在VALUES子句的值清单中写入NULL。
5、可以为表中的列设定默认值,默认值可以通过CREATE TABLE语句中,为列设置DEFAULT约束来设定。
6、插入默认值可以通过两种方式实现,INSERT语句的子句指定DEFAULT关键字或省略列清单。
7、使用INSERT...SELECT可以从其他表中复制数据
4-1-1:INSERT的使用
-- 创建ShohinIns表 CREATE TABLE ShohinIns (shohin_id CHAR(4) 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) );
语法4-1:INSERT INTO <表名>(列1,列2,.....) VALUES(值1,值2,....);
-- 向表中插入一行数据 INSERT INTO ShohinIns(shohin_id,shohin_mei,shohin_bunrui,hanbai_tanka,shiire_tanka,torokubi) VALUES(\'0001\',\'T恤衫\',\'衣服\',1000,500,\'2009-09-20\');
法则4-1:原则上,执行一次INSERT语句会插入一行数据。
4-1-2:插入默认值
-- 通过显式方法插入默认值,在VALUER子句中指定DEFAULT关键字 ShohinIns(shohin_id,shohin_mei,shohin_bunrui,hanbai_tanka,shiire_tanka,torokubi) VALUES(\'0007\',\'擦菜板\',\'厨房用具\',DEFAULT,790,\'2009-04-28\'); -- 通过隐式方法插入默认值,省略hanbi_tanka列和值 ShohinIns(shohin_id,shohin_mei,shohin_bunrui,shiire_tanka,torokubi) VALUES(\'0007\',\'擦菜板\',\'厨房用具\',790,\'2009-04-28\');
法则4-2:省略INSERT语句中的列名,就会自动设定为该列的默认值(没有默认值为NULL)。
4-1-3:多其他表中复制数据
-- 用来插入入数据的商品复制表 CREATE TABLE ShohinCopy ( shohin_id CHAR(4) NOT NULL, shohin_mei VARCHAR(100) NOT NULL, shohin_bunrui VARCHAR(32) NOT NULL, hanbai_tanka INTEGER, 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;
-- 创建ShohinBunrui表 CREATE TABLE ShohinBunrui( shohin_bunrui VARCHAR(32) NOT NULL, sum_hanbai_tanka INTEGER, sun_shiire_tanka INTEGER, PRIMARY KEY(shohin_bunrui) );
-- 插入其他表中数据合计值 INSERT INTO ShohinBunrui(shohin_bunrui,sum_hanbai_tanka,sun_shiire_tanka) SELECT shohin_bunrui,SUM(hanbai_tanka),SUM(shiire_tanka) FROM Shohin GROUP BY shohin_bunrui;
法则4-3:INSERT语句中的SELECT语句中,可以使用WHERE子句或GROUP BY子句等等任何SQL语法。
4-2:数据的删除(DELETE语句的使用方法)
1、删除整个表使用DROP TABLE,只想删除表中全部数据用DELETE语句。
2、如果想删除部分数据行,只需在WHERE子句中书写对象数据的条件即可。
4-2-1:DELETE语句的基本语法
语法4-2:DELETE FROM <表名>;
--清空ShohinCopy DELETE FROM ShohinCopy;
法则4-4:DELETE语句删除的对象是记录(行)。
4-2-2:指定删除对象的DELETE语句
语法4-3:DELETE FROM <表名>
WHERE <条件>;
-- 删除销售单价大于等于4000的数据 DELETE FROM Shohin WHERE hanbai_tanka >= 4000;
语法4-3:TRUNCATE <表名> (只能删除表中全部数据且速度比DELETE快,但有些DBMS不支持)。
4-3:数据的更新(UPDATE语句的使用方法)
1、使用UPDATE语句更新表中的数据
2、更新部分数据行时间可以使用WHERE来指定更新对象的条件
3、UPDATE可以陈列值更新为NULL
4、同时更新多列,使用UPDATE的SET子句,使用逗号分开更新对象的多个列
4-3-1:UPDATE语句的基本语法
语法4-4:修改表中数据
UPDATE <表名>
SET <列名> = <表达式>;
-- 把日期全部更新为\'2009-10-10\' UPDATA Shohin SET torokubi = \'2009-10-10\';
4-3-2:指定条件的UPDATE语句
语法4-5:修改部分行的数据
UPDATE <表名>
SET <列名> = <表达式>;
WHERE <条件>;
-- 把商品种类为厨房用具的记录的销售单价更新为原来的10倍 UPDATE Shohin SET hanbai_tanka = hanbai_tanka * 10 WHERE shohin_bunrui = \'厨房用具\';
4-3-3:使用NULL进行更新
-- 把商品编号0008的登记日期更新为NULL UPDATE Shohin SET torokubi = NULL WHERE shohin_id = \'0008\';
4-3-3:多列更新
-- 使用逗号分开,所有DBMS都可以使用 UPDATE Shohin SET hanbai_tanka = hanbai_tanka *20, shiire_tanka = shiire_tanka /2 WHERE shohin_bunrui = \'厨房用具\'; --使用括号分开,部分DBMS不支持 UPDATE Shohin SET (hanbai_tanka , shiire_tanka)=(hanbai_tanka *20,shiire_tanka /2) WHERE shohin_bunrui = \'厨房用具\';
4-3:事务
4-3-1什么是事务:事务就是需要在同一个处理单元中执行的一系列更新处理的集合。
4-3-2:创建事务
语法4-6
事务开始语句;
DML语句1;
DML语句2;
DML语句3;
......
事务结束语句(COMMIT或ROLLBACK);(COMMIT提交事务,ROLLBACK回滚事务)
1、SQL Server、PostgreSQL:
事务开头语句:BEGIN TRANSACTION
2、MySQL
事务开头语句:START TRANSACTION
3、Qracle、DB2
无
-- mysql更新商品信息 START TRANSACTION;-- 事务开始 UPDATE Shohin SET hanbai_tanka = hanbai_tanka - 1000 WHERE shohin_mei = \'运动T恤\'; UPDATE Shohin SET hanbai_tanka = hanbai_tanka + 1000 WHERE shohin_mei = \'T恤衫\'; COMMIT; -- 事务结束
4-3-3:事务ACID特性
1、原子性:事务结束时,更新处理要么全执行,要么完全不执行。
2、一致性:事务处理要满足数据库提前设置的约束条件。
3、隔离性:不同事务之间互不干扰。
4、持久性:事务一结束DBMS会保证该时点的数据状态得以保存。
以上是关于4数据更新的主要内容,如果未能解决你的问题,请参考以下文章