金沙网址:这种形式称为清单

SQL 底子知识梳理(四) – 数据更新

【博主】反骨仔    【原文】

金沙网址 1

  

  这是《SQL 功底知识梳理(三) –
聚合和排序》的下篇。

 

目录

  • 插入数据
  • 删除数据
  • 履新数据
  • 事务

 

风度翩翩、插入数据

  1.INSERT 语句的中央语法

--语法:
--INSERT INTO <表名>(列1, 列2, ...) VALUES (值1, 值2, ...)

--示例
INSERT INTO dbo.Shohin
        ( shohin_id ,
          shohin_mei ,
          shohin_bunrui ,
          hanbai_tanka ,
          shiire_tanka ,
          torokubi
        )
VALUES  ( '0011' , -- shohin_id - char(4)
          'T 恤衫' , -- shohin_mei - varchar(100)
          '衣服' , -- shohin_bunrui - varchar(32)
          1000 , -- hanbai_tanka - int
          500 , -- shiire_tanka - int
          GETDATE()  -- torokubi - date
        );

金沙网址 2

 

金沙网址,    (1)列名和值用逗号隔开分离,分别放在括号里,这种形式称为项目清单。

        ( shohin_id ,        
          shohin_mei ,
          shohin_bunrui ,
          hanbai_tanka ,
          shiire_tanka ,
          torokubi
        )        
        --列清单

        ( '0011' , -- shohin_id - char(4)
          'T 恤衫' , -- shohin_mei - varchar(100)
          '衣服' , -- shohin_bunrui - varchar(32)
          1000 , -- hanbai_tanka - int
          500 , -- shiire_tanka - int
          GETDATE()  -- torokubi - date
        )        
        --值清单    

金沙网址 3金沙网址 4

INSERT INTO dbo.Shohin
        ( shohin_id ,
          shohin_mei ,
          shohin_bunrui ,
          hanbai_tanka ,
          shiire_tanka ,
          torokubi
        )
VALUES  ( '0012' , -- shohin_id - char(4)
          'T 恤衫' , -- shohin_mei - varchar(100)
          '衣服' , -- shohin_bunrui - varchar(32)
          1000 , -- hanbai_tanka - int
          500 , -- shiire_tanka - int
          GETDATE()  -- torokubi - date
        ),
        ( '0013' , -- shohin_id - char(4)
          'T 恤衫' , -- shohin_mei - varchar(100)
          '衣服' , -- shohin_bunrui - varchar(32)
          1000 , -- hanbai_tanka - int
          500 , -- shiire_tanka - int
          GETDATE()  -- torokubi - date
        );

三遍性多行 INSERT

  

  2.省略列清单

INSERT INTO dbo.Shohin
VALUES  ( '0014' , -- shohin_id - char(4)
          'T 恤衫' , -- shohin_mei - varchar(100)
          '衣服' , -- shohin_bunrui - varchar(32)
          1000 , -- hanbai_tanka - int
          500 , -- shiire_tanka - int
          GETDATE()  -- torokubi - date
        );

  

  3.插入 NULL 值

INSERT INTO dbo.Shohin
VALUES  ( '0015' , -- shohin_id - char(4)
          'T 恤衫' , -- shohin_mei - varchar(100)
          '衣服' , -- shohin_bunrui - varchar(32)
          1000 , -- hanbai_tanka - int
          NULL , -- shiire_tanka - int
          GETDATE()  -- torokubi - date
        );

  【备注】插入 NULL
值的列不可能安装为 NOT NULL 限制。

  

  4.插入暗中同意值

--示例:创建表时设置默认值
CREATE TABLE ShohinIns
(
    id CHAR(4) NOT NULL,
    num INT DEFAULT 0    --DEFAULT 默认约束
)

--示例:INSERT 时显示插入默认值
INSERT INTO dbo.ShohinIns
        ( id, num )
VALUES  ( '001', -- id - char(4)
          DEFAULT  -- num - int
          )

--示例:INSERT 隐式插入默认值
INSERT INTO dbo.ShohinIns( id )
VALUES  ('002')

金沙网址 5

  【备注】提出使用展现的艺术插入值。即使插入的时候隐式省略了列名,并且该列未有内定暗中同意值的时候,该列的值会被设定为
NULL(假使轻易的列设置了 NOT NULL 节制的话,实行会报错)。

  【总计】省略 INSERT
语句的列名,就能活动设定该列的暗许值(未有暗中同意值时会设定为 NULL)。

  

  5.从任何表复制数据

--语法
INSERT ... 
SELECT ...

--示例
INSERT dbo.ShohinIns
        ( id, num )
SELECT shohin_id, shiire_tanka
FROM dbo.Shohin

--示例
INSERT INTO dbo.ShohinIns
        ( id, num )
SELECT id=1, num =2;

--示例
INSERT INTO dbo.ShohinIns
        ( id, num )
SELECT 1, 2;

   【备注】INSERT
语句中的 SELECT 语句中,能够选拔 WHERE 子句可能 GROUP BY 子句等其余 SQL
语法。(但使用 O途达DE奥迪Q5 BY 子句并不会时有产生别的作用。)

 

二、删除数据

  1.2 种 删除数据的措施:

    (1)DROP TABLE 语句:删除表

    (2)DELETE 语句:删除表的数目

--语法
--DELETE FROM <表名>;

--示例
DELETE FROM dbo.ShohinIns;

  【备注】DELETE
语句删除的对象是记录(行),不是表和列。

 

  2.内定删除对象的 DELETE 语句

--语法
--DELETE FROM <表名>
--WHERE <条件>;

--示例
DELETE FROM dbo.Shohin
WHERE hanbai_tanka >= 4000;

  【备注】能够透过
WHERE 子句内定对象条件来删除部分数据。

  【备注】DELETE
语句中不可能使用 GROUP BY、HAVING 和 OENCOREDEEvoque BY 三类子句。

  【备注】假设要删减表全体数码时请使用
TRUNCATE <表名>,它比 DELETE 子句更飞快。

 

三、更新数据

  1.UPDATE 子句的主干语法

--语法
--UPDATE <表名>
--    SET <列名> = <表达式>

 

  2.点名条件的 UPDATE 语句

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

--示例
UPDATE dbo.Shohin
    SET hanbai_tanka = hanbai_tanka * 10
WHERE shohin_bunrui = '厨房用具';

  

  3、使用 NULL 进行更新

--示例
UPDATE dbo.Shohin
    SET torokubi = NULL
WHERE shohin_id = '008';

  【备注】独有未设置
NOT NULL 节制和主键限定的列技巧够清空为 NULL。

  

  4.多列更新

--示例
UPDATE dbo.Shohin
    SET hanbai_tanka = hanbai_tanka * 10,    --逗号分割
        shiire_tanka = shiire_tanka / 2
WHERE shohin_bunrui = '厨房用具'

 

四、事务

  1.事务:要求在同三个处理单元中推行的一文山会海更新管理的集聚。

  2.创办职业:

--语法
--事务开始语句
--    DML 语句①;
--    DML 语句②;
--    ...
--事务结束语句(COMMIT 或 ROLLBACK);

    (1)COMMIT –
提交管理:提交业务满含的全部立异管理的终止指令。风度翩翩旦付出,不能复苏到工作早先前的处境。

    (2)ROLLBACK –
撤除管理:撤废事务包涵的风度翩翩体更新处理的停止指令。大器晚成旦回滚,数据库就能够还原到业务开始在此以前的景观。

 

--示例
BEGIN TRANSACTION;
    UPDATE dbo.Shohin
        SET hanbai_tanka = hanbai_tanka - 1000
    WHERE shohin_mei = '运动 T 恤';

    UPDATE dbo.Shohin
        SET hanbai_tanka = hanbai_tanka + 1000
    WHERE shohin_mei = 'T 恤衫';

    DELETE FROM dbo.Shohin WHERE shohin_id = '0015';

ROLLBACK;  -- COMMIT

  

  3.ACID 特性

    (1)原子性(Atomicity):在业务结束时,个中累积的换代管理依然全部试行,要么完全不实行。

    (2)朝气蓬勃致性(Consistency):事务中包蕴的拍卖,要知足数据库提前设置的束缚,也称完整性。

    (3)隔开性(lsolation):有限支撑区别职业此前互不烦懑的性状。

    (4)持久性(Durability):事务生龙活虎旦截止,DBMS
会有限支撑该时点的多少状态能够保存的表征,也称耐久性。

      

备注

  这里运用 MS SQL Server 举行求证,不保障全数的 DBMS 奉行结果正确。

 

传送门

  《SQL 根基知识梳理(意气风发) – 数据库与
SQL》

  《SQL 根基知识梳理(二) –
查询幼功》

  《SQL 功底知识梳理(三) –
聚合和排序》

 


【参考】《SQL
ゼロからはじめるデータベース操作》

 

相关文章