码迷,mamicode.com
首页 > 数据库 > 详细

0011《SQL必知必会》笔记07 数据的插入、更新和删除

时间:2016-04-26 12:41:48      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

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.

0011《SQL必知必会》笔记07 数据的插入、更新和删除

标签:

原文地址:http://www.cnblogs.com/sonng/p/5434261.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!