zoukankan      html  css  js  c++  java
  • 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会保证该时点的数据状态得以保存。

  • 相关阅读:
    asp.net mvc在Model中控制日期格式
    MVC3.0删除数据的时候给提示信息
    Jquery的鼠标移动上去显示div,鼠标离开的时候隐藏div效果
    数据库的日志数据库(_log.ldf)文件太大,如何压缩
    如何在加载数据的时候给一个等待动画
    Div内部的内容超出部分显示省略号(仅仅只有一行内容)
    IIS7.0提示---无法识别的属性“targetFramework”。请注意属性名称区分大小写。
    如何用Jquery判断在键盘上敲的哪个按键
    Split()的简单的用法
    oracle AWR报告
  • 原文地址:https://www.cnblogs.com/jp-mao/p/6619138.html
Copyright © 2011-2022 走看看