INSERT INTO customers
VALUES(NULL,
‘Pep E. LaPew‘,
‘100 Main Street‘,
‘Los Angeles‘,
‘CA‘,
‘90046‘,
‘USA‘,
‘NULL‘,
‘NULL‘);
INSERT INTO customers(cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
cust_contact,
cust_email)
VALUES(‘Pep E. LaPew‘,
‘100 Main Street‘,
‘Los Angeles‘,
‘CA‘,
‘90046‘,
‘USA‘,
‘NULL‘,
‘NULL‘);
此例子完成与前一个INSERT语句完全相同的工作,但在表名后的括号里明确地给出了列名。在插入行时,MySQL将用VALUES列表中的相应值填入列表中的对应项。VALUES中的第一个值对应于第一个指定的列名。第二个值对应于第二个列名,如此等等。
因为提供了列名,VALUES必须以其指定的次序匹配指定的列名,不一定按各个列出现在实际表中的次序。其优点是,即使表的结构改变,此INSERT语句仍然能正确工作。你会发现cust_id的NULL值是不必要的,cust_id列并没有出现在列表中,所以不需要任何值。
不管使用哪种INSERT语法,都必须给出VALUES的正确数目。如果不提供列名,则必须给每个表列提供一个值。如果提供列名,则必须对每个列出的列给出一个值。如果不这样,将产生一条错误消息,相应的行插入不成功。
如果表的定义允许,则可以在INSERT操作中省略某些列。省略的列必须满足以下某个条件。
如果对表中不允许NULL值且没有默认值的列不给出值,则MySQL将产生一条错误消息,并且相应的行插入不成功。
INSERT INTO customers(cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
VALUES(‘Pep E. LaPew‘,
‘100 Main Street‘,
‘Los Angeles‘,
‘CA‘,
‘90046‘,
‘USA‘),
(‘M. Martian‘,
‘42 Galaxy Way‘,
‘New York‘,
‘NY‘,
‘11213‘,
‘USA‘);
INSERT INTO customers(cust_id,
cust_email,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
SELECT cust_id,
cust_country,
cust_email,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country
FROM custnew;
mysql> UPDATE customers
SET cust_email=‘elmer@fudd.com‘
WHERE cust_id=10005;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
UPDATE IGNORE customers…
mysql> DELETE FROM customers
WHERE cust_id=10006;
Query OK, 1 row affected (0.01 sec)
??如果省略了WHERE子句,则UPDATE或DELETE将被应用到表中所有的行。换句话说,如果执行UPDATE而不带WHERE子句,则表中每个行都将用新值更新。类似地,如果执行DELETE语句而不带WHERE子句,表的所有数据都将被删除。
原文:https://www.cnblogs.com/chengmf/p/13168537.html