一、插入数据
1. 添加语句:INSERT 用于插入行到数据表中 (几种常见的方式)
(1). 插入完整的行 (表名后未给出明确字段的一般需要添加所有字段)
INSERT INTO customers VALUES (
NULL, 'Pep E. LaPew', '100 Main Street', 'Los Angeles', 'CA', '90046', 'USA', NULL, NULL)
(2). 插入行的一部分 (表名后给出明确字段的必须添加对应字段的值)
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', '90058', 'USA')
(3). 插入多行 (表名后可根据需要是否给出字段,values 后面必须添加对应字段的值,多条数据间用逗号,分隔)
INSERT INTO customers (cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country)
VALUES ('Alex.Chen', 'FM101.98', 'Los Angeles', 'PM', '89757', 'CHN'),
( 'Gergia.Rola', 'FM101.98', 'Los Angeles', 'PM', '89757', 'CHN')
(4). 插入某些查询的结果 (以将custnew表中检索到的所有数据导入到customer为例)
INSERT INTO customers (
cust_id,cust_contact,cust_email, cust_name, cust_address, cust_city, cust_state,cust_zip,cust_country)
SELECT cust_id, cust_contact, cust_email, cust_name, cust_address, cust_city, cust_state, cust_zip,cust_country
FROM custnew
说明:实际上Insert语句和Select语句并不要求列名匹配,甚至不关心select返回的列名
注意:省略列必须满足的条件:
(1). 该列定义为允许NULL (无值或空值)
(2). 在表定义中给出默认值, 若不给出值,则将使用默认值
2. 性能问题
(1). 当数据库经常被多个客户访问时, INSERT操作可能很耗时, 且将可能降低等待处理的SELECT语句的性能
(2). 若数据检索是最重要的, 则可通过在INSERT INTO之间添加关键字LOW_PRIORITY, 提示MySQL降低INSERT语句优先级
二、更新数据
1. 相关说明:
(1). UPDATE语句总是以要更新的表名开始,SET命令用于将新值赋给被更新的列名, 并以WHERE子句结束
(2). 语法:更新多个列时, 则只需要使用单个SET命令,每个“列=值”对之间使用逗号分隔
UPDATE customers SET cust_name = 'The Fudds', cust_email = 'elemer@fund.com' WHERE cust_id = 10005;
2. 简单更新操作
假若表定义允许Null值, 为了删除某个列的值, 可将其设置为NULL
UPDATE customers SET cust_email = NULL WHERE cust_id = 10005
3. 多表关联更新操作 (根据客户名获取客户编号后,查询对应订单号后修改订单明细表中的数量值)
说明:由于更新表和检索表同属于一个表,需要将结果集作为一个表(给别名)用于查询更新条件,存在相同值需要去重处理
UPDATE orderitems SET quantity = 100 WHERE order_num IN (
SELECT DISTINCT(o.order_num) FROM (
SELECT order_num FROM orders WHERE cust_id = (
SELECT cust_id FROM customers WHERE cust_name = 'Coyote Inc.')
) AS o
)
三、删除数据
1. 基本语法:DELETE FROM 表名 [WHERE 删除条件]
DELETE FROM orderitems WHERE order_num =20007 AND order_item = 1;
2. 关键字作用:
(1). Delete 和 Truncate 仅仅删除表结构,而Drop会连表结构和表数据一起删除
(2). Delete 属于DML语句,删除数据后还可以回滚事务,而Truncate 和 Drop 属于DDL语句,操作完后马上生效,不能回滚事务
(3). 执行速度上而言,从快到慢依次为:Drop ——> Truncate ——> Delete
网站:www.codeboy.top 公众号:橙汁就是奥润几