一、插入数据

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 公众号:橙汁就是奥润几