内容正文:
专题七 数据更新
数据库原理与应用技术-MySQL
专题复习讲练测
河北科学技术出版社
掌握国家标准《机械制图》中有关图幅、比例、字体图线等基本规定。
考纲要求
一
(五)数据更新
1.掌握插入数据的语句:INSERT…VALUES、INSERT…SET、INSERT…SELECT;
2.掌握修改数据的语句:UPDATE…SET;
3.掌握删除数据的语句:DELETE FROM、TRUNCAE TABLE;
掌握带子查询的删除语句:DELETE FROM…WHERE…=(SELECT)。
知识点梳理
二
插入数据
语法格式:
INSERT INTO table_name (column1, column2, ..., columnN)
VALUES (value1, value2, ..., valueN), (valueA, valueB, ..., valueZ);
➽ INSERT...VALUES
知识点梳理
二
插入数据
➽ INSERT...VALUES
table_name 指的是你要插入数据的表名。
(column1, column2, ..., columnN) 是可选的列名列表,它指定了要插入数据的列。若省略该列表,插入的值必须与表中列的顺序和数量完全一致。
VALUES 后面跟着一个或多个用逗号分隔的行值列表,每个行值列表用括号括起来,代表要插入的一行数据。
数据类型匹配:插入的值的数据类型必须与表中对应列的数据类型相匹配。
知识点梳理
二
插入数据
INSERT INTO table_name
SET column1 = value1,
column2 = value2,
...,
columnN = valueN;
➽ INSERT...SET
这种语法以键值对的形式指定要插入的数据,键是列名,值是要插入的数据。它更加灵活,不需要严格按照表中列的顺序插入数据。
使用场景:在动态插入数据时,比如从表单或其他程序中获取数据并插入数据库,INSERT...SET 会更方便,因为你可以根据实际情况灵活指定要插入的列和值。
知识点梳理
二
插入数据
➽ INSERT...SET
知识点梳理
二
插入数据
INSERT INTO table_name (column1, column2, ..., columnN)
SELECT columnA, columnB, ..., columnZ
FROM source_table
WHERE condition;
➽ INSERT...SELECT
此语句将 source_table 中满足 condition 的数据插入到 table_name 表中。SELECT 子句指定了要插入的数据列,这些列的数据类型和数量必须与 INSERT 语句中指定的列相匹配。
使用场景:常用于数据迁移、数据备份或者将一个表的部分数据复制到另一个表中。
知识点梳理
二
插入数据
➽ INSERT...SELECT
知识点梳理
二
修改数据
UPDATE table_name
SET column1 = value1,
column2 = value2,
...,
columnN = valueN
WHERE condition;
➽ UPDATE...SET
UPDATE 关键字用于指定要修改的表。
SET 子句用于指定要修改的列和新的值。
WHERE 子句是可选的,它用于指定修改的条件。如果省略 WHERE 子句,表中的所有行都会被修改。
数据更新逻辑:你可以使用表达式来更新列的值,例如对数值类型的列进行加减操作。
知识点梳理
二
修改数据
➽ UPDATE...SET
知识点梳理
二
删除数据
DELETE FROM table_name WHERE condition;
➽ DELETE FROM
DELETE FROM 用于从指定的表中删除行。
WHERE 子句是可选的,如果省略,表中的所有行都会被删除。
删除操作的影响:DELETE 语句是逐行删除数据的,并且会记录删除操作到日志中,因此对于大数据量的删除操作,性能可能会受到影响。
知识点梳理
二
删除数据
➽ DELETE FROM
知识点梳理
二
删除数据
语法结构:TRUNCATE TABLE table_name;
➽ TRUNCATE TABLE
TRUNCATE TABLE 用于快速删除表中的所有数据。它与 DELETE FROM table_name(无 WHERE 子句)的效果相同,但性能更高。
与 DELETE 的区别:TRUNCATE TABLE 是一个 DDL(数据定义语言)语句,它不会逐行删除数据,而是直接释放表所占用的存储空间,并且不会记录单独的删除操作,因此无法回滚。而 DELETE 是一个 DML(数据操作语言)语句,可以使用事务进行回滚。
知识点梳理
二
带子查询的删除语句
➽ DELETE FROM...WHERE...=(SELECT)
DELETE FROM table_name
WHERE column = (SELECT column_from_subquery
FROM another_table
WHERE subquery_condition);
该语句结合了 DELETE 和子查询。子查询用于从另一个表中获取满足条件的值,然后 DELETE 语句根据这些值从 table_name 表中删除相应的行。
使用场景:当你需要根据另一个表中的数据来删除某个表中的行时,可以使用这种方式
知识点梳理
二
带子查询的删除语句
➽ DELETE FROM...WHERE...=(SELECT)
限时练习
三
1. 若要将 table1 中 column1 列值为 'value1' 的所有行的 column2 列值更新为 'new_value',应使用的语句是( )
A. UPDATE table1 SET column2 = 'new_value' WHERE column1 = 'value1';
B. UPDATE table1 WHERE column1 = 'value1' SET column2 = 'new_value';
C. UPDATE SET column2 = 'new_value' FROM table1 WHERE column1 = 'value1';
D. UPDATE table1 column2 = 'new_value' WHERE column1 = 'value1';
答案:A
解析:UPDATE 语句的正确语法是 UPDATE table_name SET column = value WHERE condition;,A 选项符合该语法规则。
限时练习
三
2. 假设两表结构相同,以下可以将 table2 中所有数据插入到 table1 中的语句是( )
A. INSERT INTO table1 SELECT * FROM table2;
B. INSERT INTO table1 VALUES SELECT * FROM table2;
C. INSERT INTO table1 SET SELECT * FROM table2;
D. INSERT INTO table1 UPDATE SELECT * FROM table2;
答案:A
解析:使用 INSERT...SELECT 语句可以将一个表的数据插入到另一个表中,A 选项语法正确。
限时练习
三
3. 若要更新 products 表中 price 列的值,将所有价格乘以 1.1,应使用的语句是( )
A. UPDATE products SET price = 1.1;
B. UPDATE products WHERE price = price * 1.1;
C. UPDATE products SET price = price * 1.1;
D. UPDATE products price = price * 1.1;
答案:C
解析:使用 UPDATE...SET 语句更新列的值,可使用表达式对列进行计算。
限时练习
三
4.对于 UPDATE 语句,如果省略 WHERE 子句,会发生的情况是( )
A. 不会更新任何行
B. 会更新表中所有行
C. 会报错
D. 只会更新第一行
解析:删除满足特定条件的行使用 DELETE FROM...WHERE 语句,A 选项符合语法规则。
答案:B
限时练习
三
5. 若要将 books 表中 author 列值为 'John Doe' 的行的 publication_year 列更新为 2025,应使用的语句是( )
A. UPDATE books SET publication_year = 2025 WHERE author = 'John Doe';
B. UPDATE books WHERE author = 'John Doe' SET publication_year = 2025;
C. UPDATE books SET author = 'John Doe', publication_year = 2025;
D. UPDATE books publication_year = 2025 WHERE author = 'John Doe';
答案:A
限时练习
三
6.若要将 table6 中所有数据复制到 table7 中,应使用 INSERT INTO table7 VALUES SELECT * FROM table6;。( )
答案:错误
解析:正确的语句是 INSERT INTO table7 SELECT * FROM table6;,不需要 VALUES 关键字。
限时练习
三
7.写出将 products 表中 product_id 为 5 的产品的 price 列更新为 29.99 的命令。
答案:
UPDATE products SET price = 29.99 WHERE product_id = 5;
限时练习
三
8.给出将 orders 表中所有 status 为 'Processing' 的订单的 status 更新为 'Shipped' 的命令。
答案:
UPDATE orders SET status = 'Shipped' WHERE status = 'Processing';
限时练习
三
9.请给出将 customers 表中 country 为 'USA' 的所有客户的 credit_limit 增加 200 的命令。
答案:
UPDATE customers SET credit_limit = credit_limit + 200 WHERE country = 'USA';
内容小结
四
谢谢
$$