数据库中如何执行所有基本操作,包括增删改查等完整流程?
- 内容介绍
- 文章标签
- 相关推荐
一、数据库操作概述
数据库是存储、管理和处理数据的主要工具。只是很多开发者在实际工作中会遇到以下痛点:
- 语法记不清楚——INSERT、UPDATE、DELETE、SELECT 等语句的使用细节繁多。怎么说呢,
- 事务管理混乱——不确定何时提交或回滚。导致数据不一致,
- 性能调优困难——查询慢、索引失效却找不到根因。
- 备份恢复不明确——缺乏程序化的备份策略,出现灾难时手足无措。
二、SQL 语言的四大类别
DML
DML 用于对表中的数据进行增删改查。常用语句包括的观点是,
-
INSERT向表中插入新记录。其实, -
UPDATE修改已有记录。 -
DELETE删除满足条件的记录。话说回来, -
SELECT查询并返回结果集。
DDL
DDL 用于定义和修改数据库结构:
-
CREATE DATABASE / TABLE / VIEW / INDEX … -
ALTER TABLE … ADD/DROP COLUMN … -
DROP DATABASE / TABLE / VIEW …
DQL
DQL 只关注数据检索,最常用的是 语句。可配合以下子句实现过滤、排序、分组和聚合:
-
-
-
-
-
-
-
-
-
: 授予使用者或角色权限。其实,`REVOKE`:撤销已授予的权限。 - `COMMIT`/`ROLLBACK`:事务结束时提交或回滚。
DCL
DCL 管理安全与权限:
三、增删改查完整流程示例
1. 创建数据库 & 表
CREATE DATABASE IF NOT EXISTS shop;USE shop,其实,CREATE TABLE IF NOT EXISTS product ( id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR NOT NULL。price DECIMAL NOT NULL,stock INT DEFAULT 0,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );其实,
2. 插入数据
INSERT INTO product VALUES,
3. 查询数据
至于常见需求演示。
- 从查询全部列来看,
SELECT * FROM product;怎么说呢,
SELECT id。name,price FROM product WHERE price> 6000 ORDER BY price DESC;
SELECT * FROM product LIMIT 10 OFFSET 20;
SELECT COUNT AS total_products。SUM AS total_stock,G AS avg_price FROM product;
4. 更新数据
再看痛点提示,**忘记加 WHERE 条件**会导致全表更新!务必先在事务中测试,老实说,
START TRANSACTION;UPDATE product SET stock = stock - 1 WHERE id = 1 AND stock> 0;-- 若检查到库存不足可执行 ROLLBACK;COMMIT,
5. 删除数据
一样要注意 WHERE 条件,否则会清空整表。
DELETE FROM product WHERE id = 2;
四、事务管理
- `START TRANSACTION` 或 `BEGIN`:标记事务起点。按理说,
- `COMMIT`:所有操作成功后提交。使修改永久生效,
- `ROLLBACK`:: 任意一步失败则回滚,恢复到事务开始前的状态。
- `SEPOINT` 与 `ROLLBACK TO SEPOINT`:: 在长事务中设立检查点,灵活回滚部分操作。
痛点方法:在开发环境开启自动回滚模式,防止误提交导致的数据污染。说起来,
五、表结构变更
| 常见 ALTER 操作示例 | |
|---|---|
| Add Column | `ALTER TABLE product ADD COLUMN description TEXT;` |
| Modify Column Type | `ALTER TABLE product MODIFY price DECIMAL;` |
| Drop Column | `ALTER TABLE product DROP COLUMN description;` |
| Add Index | `CREATE INDEX idx_price ON product;` // 或 `ALTER TABLE product ADD INDEX idx_price;` |
六、权限管理与安全
`GRANT` 示例:
GRANT SELECT,INSERT ON shop.product TO 'app_user'@'%' IDENTIFIED BY 'StrongP@ss!',FLUSH PRIVILEGES;话说回来,
>
REVOKE INSERT ON shop.product FROM 'app_user'@'%';FLUSH PRIVILEGES;
七、备份与恢复策略
1. 全库逻辑备份
-
使用
mysqldump导出 SQL 脚本,可跨版本迁移。 - 定期保存到离线介质或对象存储,以防硬盘故障。
bash
mysqldump -u root -p --single-transaction --routines --events shop \
| gzip> shop_$.sql.gz
2. 增量物理备份
- 利用 InnoDB 的 redo log 与 binary log 实现 Point‑In‑Time 恢复。
-
常配合
mysqlbackup,xtrabackup.
bash
xtrabackup --backup --target-dir=/backup/shop_inc \
--user=root --password=...
一、数据库操作概述
数据库是存储、管理和处理数据的主要工具。只是很多开发者在实际工作中会遇到以下痛点:
- 语法记不清楚——INSERT、UPDATE、DELETE、SELECT 等语句的使用细节繁多。怎么说呢,
- 事务管理混乱——不确定何时提交或回滚。导致数据不一致,
- 性能调优困难——查询慢、索引失效却找不到根因。
- 备份恢复不明确——缺乏程序化的备份策略,出现灾难时手足无措。
二、SQL 语言的四大类别
DML
DML 用于对表中的数据进行增删改查。常用语句包括的观点是,
-
INSERT向表中插入新记录。其实, -
UPDATE修改已有记录。 -
DELETE删除满足条件的记录。话说回来, -
SELECT查询并返回结果集。
DDL
DDL 用于定义和修改数据库结构:
-
CREATE DATABASE / TABLE / VIEW / INDEX … -
ALTER TABLE … ADD/DROP COLUMN … -
DROP DATABASE / TABLE / VIEW …
DQL
DQL 只关注数据检索,最常用的是 语句。可配合以下子句实现过滤、排序、分组和聚合:
-
-
-
-
-
-
-
-
-
: 授予使用者或角色权限。其实,`REVOKE`:撤销已授予的权限。 - `COMMIT`/`ROLLBACK`:事务结束时提交或回滚。
DCL
DCL 管理安全与权限:
三、增删改查完整流程示例
1. 创建数据库 & 表
CREATE DATABASE IF NOT EXISTS shop;USE shop,其实,CREATE TABLE IF NOT EXISTS product ( id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR NOT NULL。price DECIMAL NOT NULL,stock INT DEFAULT 0,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );其实,
2. 插入数据
INSERT INTO product VALUES,
3. 查询数据
至于常见需求演示。
- 从查询全部列来看,
SELECT * FROM product;怎么说呢,
SELECT id。name,price FROM product WHERE price> 6000 ORDER BY price DESC;
SELECT * FROM product LIMIT 10 OFFSET 20;
SELECT COUNT AS total_products。SUM AS total_stock,G AS avg_price FROM product;
4. 更新数据
再看痛点提示,**忘记加 WHERE 条件**会导致全表更新!务必先在事务中测试,老实说,
START TRANSACTION;UPDATE product SET stock = stock - 1 WHERE id = 1 AND stock> 0;-- 若检查到库存不足可执行 ROLLBACK;COMMIT,
5. 删除数据
一样要注意 WHERE 条件,否则会清空整表。
DELETE FROM product WHERE id = 2;
四、事务管理
- `START TRANSACTION` 或 `BEGIN`:标记事务起点。按理说,
- `COMMIT`:所有操作成功后提交。使修改永久生效,
- `ROLLBACK`:: 任意一步失败则回滚,恢复到事务开始前的状态。
- `SEPOINT` 与 `ROLLBACK TO SEPOINT`:: 在长事务中设立检查点,灵活回滚部分操作。
痛点方法:在开发环境开启自动回滚模式,防止误提交导致的数据污染。说起来,
五、表结构变更
| 常见 ALTER 操作示例 | |
|---|---|
| Add Column | `ALTER TABLE product ADD COLUMN description TEXT;` |
| Modify Column Type | `ALTER TABLE product MODIFY price DECIMAL;` |
| Drop Column | `ALTER TABLE product DROP COLUMN description;` |
| Add Index | `CREATE INDEX idx_price ON product;` // 或 `ALTER TABLE product ADD INDEX idx_price;` |
六、权限管理与安全
`GRANT` 示例:
GRANT SELECT,INSERT ON shop.product TO 'app_user'@'%' IDENTIFIED BY 'StrongP@ss!',FLUSH PRIVILEGES;话说回来,
>
REVOKE INSERT ON shop.product FROM 'app_user'@'%';FLUSH PRIVILEGES;
七、备份与恢复策略
1. 全库逻辑备份
-
使用
mysqldump导出 SQL 脚本,可跨版本迁移。 - 定期保存到离线介质或对象存储,以防硬盘故障。
bash
mysqldump -u root -p --single-transaction --routines --events shop \
| gzip> shop_$.sql.gz
2. 增量物理备份
- 利用 InnoDB 的 redo log 与 binary log 实现 Point‑In‑Time 恢复。
-
常配合
mysqlbackup,xtrabackup.
bash
xtrabackup --backup --target-dir=/backup/shop_inc \
--user=root --password=...

