1000.04.CS.DB-Database-Relational-MySQL-3.4.数据的插入_查询_更新和删除-Created: 2024-08-08.Thursday10:11
在MySQL中,数据操作是日常数据库管理的核心部分。下面我们将详细讲解如何插入、查询、更新和删除数据,并通过经典例子帮助理解这些操作。
示例:
假设我们有一个 employees
表,结构如下:
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
position VARCHAR(50),
salary DECIMAL(10, 2),
hire_date DATE
);
1 数据插入
数据插入是将新记录添加到表中的过程。最常用的插入方法是 INSERT
语句。
插入一条记录:
INSERT INTO employees (name, position, salary, hire_date) VALUES ('Alice', 'Engineer', 70000.00, '2024-01-15');
插入多条记录:
INSERT INTO employees (name, position, salary, hire_date) VALUES
('Bob', 'Manager', 90000.00, '2023-05-01'),
('Charlie', 'Analyst', 60000.00, '2024-02-20');
使用隐式类型转换:
INSERT INTO employees (name, position, salary, hire_date) VALUES ('David', 'Clerk', 40000, 20240101);
-- 40000 将被转换为 40000.00, 20240101 将被转换为 '2024-01-01'
mysql> select * from employees;
+----+-------+----------+----------+------------+
| id | name | position | salary | hire_date |
+----+-------+----------+----------+------------+
| 1 | David | Clerk | 40000.00 | 2024-01-01 |
+----+-------+----------+----------+------------+
1 row in set (0.01 sec)
2 数据查询
数据查询是从表中检索记录的过程。最常用的查询方法是 SELECT
语句。
示例:
查询所有记录:
SELECT * FROM employees;
查询特定字段:
SELECT name, position FROM employees;
使用条件查询:
SELECT * FROM employees WHERE position = 'Engineer';
使用排序:
SELECT * FROM employees ORDER BY salary DESC;
使用分页: ^20240808102635
-- 这将返回从第 21 条记录开始的 10 条记录。在这种查询中,`LIMIT` 指定返回的记录数量,`OFFSET` 指定跳过的记录数量。
SELECT * FROM employees LIMIT 10 OFFSET 20;
Ref. [[1000.04.CS.DB-Database-Relational-MySQL-4.6.深分页查询的优化]]
分页可以分为浅分页和深分页。上述提到的查询属于浅分页,适用于页数较少的情况。在记录数量不多的情况下,浅分页性能通常是可以接受的。但是,当页数变多时,特别是当OFFSET
值变得很大时,浅分页的性能问题就会变得明显,因为数据库在处理深分页查询时,仍然需要扫描和跳过大量记录。
3 数据更新
数据更新是修改表中现有记录的过程。最常用的更新方法是 UPDATE
语句。
示例:
更新单条记录:
UPDATE employees SET salary = 75000.00 WHERE name = 'Alice';
更新多条记录:
UPDATE employees SET salary = salary * 1.10 WHERE position = 'Analyst';
带有条件的更新:
UPDATE employees SET position = 'Senior Engineer' WHERE name = 'Alice' AND salary < 80000;
4 数据删除
数据删除是从表中移除记录的过程。最常用的删除方法是 DELETE
语句。
示例:
删除单条记录:
DELETE FROM employees WHERE name = 'Charlie';
删除多条记录:
DELETE FROM employees WHERE position = 'Clerk';
DELETE FROM em