MySQL学习笔记6(插入,更新,删除数据)

19插入数据

1插入完整的行

INSERT INTO customers

VALUES (NULL,

                'Pep E. LaPew',

                '100 Main Street',

                'Los Angeles',

                'CA',

                '90046',

                'USA'

                 NULL,

                 NULL);

各个列必须以它们在表中出现的次序填充。如果某个列没有值(如上例最后两列),应该使用NULL值。第一列为NULL是因为它是主键,由MySQL自动增量。

这种语法简单但不安全,因为高度依赖表中列的定义次序。

更安全的方法:

INSERT INTO customers(cust_name,

                 cust_city,

                 cust_state,

                 cust_zip,

                 cust_country,

                 cust_contact,

                 cust_email,

                 cust_address)

VALUES ( 'Pep E. LaPew',

                 'Los Angeles',

                'CA',

                '90046',

                'USA'

                 NULL,

                 NULL,

                '100 Main Street');

VALUES必须以指定的次序匹配指定的列名,不一定按各个列在实际表中的次序。优点是,即使表的结构改变,词INSERT语句仍然可以正常工作。cust_id不需要出现在列表中(自动增量)。

省略列的条件

  • 该列允许为NULL值
  • 在表定义中给出默认值(包括自动增量)

数据库以检索为主,INSERT操作可能耗时,为了提高整体性能,通常需要添加关键词LOW_PRIORITY降低INSERT语句优先级:INSERT LOW_PRIORITY INTO。此法同样适用于接下来的UPDATE 和 DELETE语句。

2插入多个行

INSERT INTO customers(cust_name,

                 cust_city,

                 cust_state,

                 cust_zip,

                 cust_country,

                 cust_address)

VALUES (一堆与上述列

                对应值),

VALUES (另一堆与上述列

                对应值);

3插入检索出的数据

使用场景:假如你想从另一表(custnew)中合并客户列表到你的customers表。

INSERT INTO customers(cust_id

                 cust_name,

                 cust_city,

                 cust_state,

                 cust_zip,

                 cust_country,

                 cust_address)

SELECT   cust_id

                 cust_name,

                 cust_city,

                 cust_state,

                 cust_zip,

                 cust_country,

                 cust_address

FROM  custnew;

注意:

  • 必须保证cust_id值不重复(创建新表时避开customers中已使用过的cust_id或省略这列在导入时自动产生新值)
  • MySQL不关心SELECT返回的列名,它匹配的是列的位置。对于只用不同列名的表导入数据时是非常有用的。

20更新和删除数据

1更新

更新客户的cust_name和cust_email列:

UPDATE customers

SET cust_name='The Fudds',

        cust_email='[email protected]'

WHERE cust_id = 10005;

不要省略WHERE,否则可能会更新表中所有行。

2删除

删除客户10006:

DELETE FROM customers

WHERE cust_id = 10006;

如果没有WHERE,将删除表中每个客户。

DELETE语句从表中删除所有行后,不删除表本身。如果想删除所有行,可使用TRUNCATE TABLE语句。

MySQL没有撤销在对UPDATE和DELETE语句使用WHERE之前,先用SELECT语句进行测试确保是要更新或删除的记录,防止WHERE子句不正确

猜你喜欢

转载自blog.csdn.net/captainNYS/article/details/87966267