06 增删改

6.1 插入数据

插入单行

在插入行时,最好给出对应的列名。这样即使表的结构改变了,插入语句仍能正确工作。

当一个列在定义中有默认值,或者允许为NULL,则可以在插入时省略这一列。

INSERT INTO customers(
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country
)
VALUES(
'Pep E. La',
'100 Main Street',
'Los Angeles',
'CA',
'90046',
'USA'
);

插入多行

INSERT INTO customers(
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country
)
VALUES(
'Pep E. La',
'100 Main Street',
'Los Angeles',
'CA',
'90046',
'USA'
),(
'Martin',
'101 Main Street',
'New York',
'NY',
'11111',
'USA'
);

插入检索结果

下面的例子中,custnew表和customers表结构相同。我们省略cust_id,让它自增长。

INSERT INTO customers(
cust_contact,
cust_email,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
SELECT cust_contact,
cust_email,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country
FROM custnew;

6.2 更新数据和删除数据

注意:如果没有WHERE限制条件,UPDATE和DELETE会作用每一行。在使用UPDATE和DELETE前可以用SEELCT来测试一下WHERE过滤的结果。

UPDATE

UPDATE customers
SET cust_name = 'The Fudds',
cust_email = 'elma@fudd.com'
WHERE cust_id = 10005;

在UPDATE更新多行时,如果一行出错,会停下来,并且恢复UPDATE执行前的数据。如果想让出错后继续更新,可以加ignore,如UPDATE IGNORE customers ...

DELETE

  • DELETE删除的是一整行,不是列

  • DELETE删除的是表的内容,不会删除表本身

如果想删除一个表中的所有内容,更快的方法是使用TRUNCATE TABLE语句。这实际上是删除原来的表,并新建一个新的空表。