zoukankan      html  css  js  c++  java
  • 0011《SQL必知必会》笔记07 数据的插入、更新和删除

    1、插入完整的行或一部分:INSERT INTO 表名(列名1~n) VALUES (对应的值1~n)

    INSERT INTO products(prod_id,
                        vend_id,
                        prod_name,
                        prod_price,
                        prod_desc)
    VALUES('RYL03',
           'FNG01',
           'monkey doll',
           9.45,
           null);

      注意:1. 省略列名,也可以插入,但在将来表结构发生变化后,可能导致错误,因此一般不用;

           2. 如果只对部分列插入数据,省略的那些列要么可以为NULL,要么有默认值,否则会发生错误;

         3. 字符型数据要用''括起来。

    2、插入SELECT检索出的数据。比如新建表dll01_products,将products中vend_id=DLL01的数据(除开prod_desc)插入新表

    INSERT INTO dll01_products(new_prod_id,
                               new_vend_id,
                               new_prod_name,
                               new_prod_price)
    SELECT prod_id,
           vend_id,
           prod_name,
           prod_price
    FROM products
    WHERE vend_id='DLL01';

      注意:1. 两个表的列名没有关系,只是把SELECT的第n列插入到INSERT的第n列,当然数据类型肯定要兼容

         2. 插入的数据和原有数据在有唯一性约束的列不能有重复数据

    3、复制一个表(部分或全部列)

    CREATE TABLE custcopy AS 
    SELECT prod_id,vend_id,prod_name,prod_price,prod_desc FROM products;

      注意:用在测试SQL语句,先将数据复制出来,测试SQL语句,成功后再到实际的数据运行,确保安全

    4、修改数据:将custcopy表的prod_id=RGAN01的vend_id改为FNG01,prod_name改为‘bean bag toy’.特别注意:要有WHERE字句,否则会更新整个列

    UPDATE custcopy
    SET vend_id='FNG01',
        prod_name='bean bag toy'
    WHERE prod_id='RGAN01';

    5、删除数据:删除custcopy表中prod_id为‘RYL01’,‘RYL02’,‘RYL03’的行。特别注意:不能缺少WHERE字句,否则会删除所有行。

    DELETE FROM custcopy
    WHERE prod_id IN ('RYL01','RYL02','RYL03');

      注意:1. 被删除的数据如果被定义了外键,比如这里的prod_id在orderitems表中定义了外键,那么不能被删除

         2. 如果要删除所有行,TRUNCATE TABLE 比DELETE效率高。

    6、UPDATE与DELETE的使用原则:

      6.1 千万要有WHERE字句;

      6.2 保证每个表都有主键,UPDATE和DELETE的时候用WHERE字句和主键进行过滤;

      6.3 实施引用完整性,确保不删除与其他表有关联的行;

      6.4 在UPDATE和DELETE之前,先用SELECT进行测试,确保数据正确;

      6.5 DBA应尽量确保系统不能执行不带WHERE的UPDATE和DELETE.

  • 相关阅读:
    VI的常用命令【工具篇】
    linux中安装中文字体
    阅读源代码,学习PostgreSQL数据库 (1) 准备工作
    如何安装gcc 3.3.6
    Buffered I/O and nonbuffered I/O
    Linux下查看硬件配置的相关命令
    linux disk i/o shceduler
    Linux编译内核操作流程 ——为新手指南
    HDOJ 1026 Ignatius and the Princess I
    HDOJ 2544 最短路 SPFA算法
  • 原文地址:https://www.cnblogs.com/sonng/p/5434261.html
Copyright © 2011-2022 走看看