SQL 入门:搞懂增删改查、权限和事务,数据库才算真正入门
SQL 入门:搞懂增删改查、权限和事务,数据库才算真正入门

很多人第一次接触数据库,都会有一种感觉:
明明已经用过了,但又说不清它到底是什么。
比如你在 MySQL 里敲过这些命令:
SHOW DATABASES;
USE security;
SHOW TABLES;
SELECT * FROM users;
EXIT;
你可能觉得这只是“数据库命令”。
其实从你敲下这些语句开始,你已经在使用 SQL 了。
问题是,很多初学者学 SQL 的时候,上来就背概念、背分类、背语法,结果越学越乱。
今天这篇文章不准备跟你绕,我们就从最接地气的角度,把 SQL 这件事讲透:
这篇内容特别适合:
一、SQL 到底是什么?你其实早就用过了
SQL 的全称是:
Structured Query Language
中文一般叫:结构化查询语言。
注意,这个名字里虽然有“查询”两个字,但 SQL 绝不只是查询。
它不仅能查数据,还能:
也就是说,只要你在数据库里做操作,绝大多数最后都要落到 SQL 上。
一个很直观的理解方式
假设你打开 MySQL 命令行,执行:
SHOW DATABASES;
这是 SQL。
你切换数据库:
USE test;
这也是 SQL。
你查询表里的数据:
SELECT * FROM users;
还是 SQL。
所以别把 SQL 想得很玄,它本质上就是:
你和数据库沟通的标准语言。
数据库听不懂“大白话”,但它听得懂 SQL。
二、为什么说 SQL 是“非过程化语言”?
这个概念很多人第一次看会有点懵。
其实你把它和 Java、 这类编程语言对比一下,就明白了。
1)编程语言:你不仅要说“做什么”,还要说“怎么做”
比如你想实现一个排序,在 Java 或 里你得自己写:
也就是说,你必须明确告诉程序:
每一步具体怎么干
2)SQL:你只需要说“我要什么结果”
比如你想查 users 表里的所有数据,你只需要写:
SELECT * FROM users;
你不需要自己告诉数据库:
这些底层执行细节,数据库自己会处理。
这就是所谓的:
SQL 关注“做什么”,而不是“怎么做”。
举个最简单的例子你想从 users 表中查出用户名是 admin 的记录
SQL 写法:
SELECT * FROM users WHERE username = 'admin';
你只是描述需求:
至于底层怎么优化、怎么取数据、走不走索引,这部分交给数据库系统来决定。
三、SQL 的发展不是一成不变的,但入门阶段抓主干就够了
SQL 不是一天长成现在这样的,它经历了多年发展和标准化过程。
早期的 SQL 标准有多个版本,比如:
其中在实际学习中,SQL-99(也就是 SQL:1999) 是一个很重要的参考节点。
因为从这个阶段开始,SQL 体系已经相对完整成熟,后面虽然也不断演进,但对入门学习来说,核心思想变化没有那么夸张。
所以你现在学 SQL,不需要纠结版本史背得多细。
你真正要掌握的是:
四、SQL 不只是“查”,它一共可以分成五大类
这是初学 SQL 最重要的一块。
很多人总把 SQL 理解成查询语言sql语言是关系数据库语言,其实 SQL 是一个完整体系,通常可以分为五部分:
别被这些缩写吓到,其实一点都不难。
下面我按最直白的方式给你拆开。
五、DQL:数据查询语言,核心就是“查”
DQL 全称是:
Data Query Language
中文就是:数据查询语言。
它的核心用途只有一个:
查数据。
最典型的语句就是:
SELECT
最基础的查询语句
SELECT * FROM users;
意思是:
带条件查询
SELECT * FROM users WHERE username = 'admin';
这表示只查用户名为 admin 的记录。
运行结果示例
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | admin | admin123 |
+----+----------+----------+
1 row in set (0.00 sec)
DQL 是安全学习里的高频重点
为什么网络安全必须懂 DQL?
因为你后面会经常碰到:
如果连最基本的查询都看不懂,后面做 Web 安全会非常吃力。
六、DML:数据操作语言,核心就是“增删改”
DML 全称:
Data Manipulation Language
中文一般叫:数据操作语言。
它操作的对象不是表结构,而是表里的 数据内容。
核心动作就是三类:
再加上查询,经常就被合称为:
增删改查
1)插入数据:
INSERT INTO users(username, password)
VALUES ('test', '123456');
运行结果示例
Query OK, 1 row affected (0.00 sec)
2)修改数据:
UPDATE users
SET password = 'admin888'
WHERE username = 'admin';
运行结果示例
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
3)删除数据:
DELETE FROM users
WHERE username = 'test';
运行结果示例
Query OK, 1 row affected (0.00 sec)
DML 和 DDL 最容易混
你一定要记住:
这是两个完全不同的层面。
比如:
七、DDL:数据定义语言,核心是“管结构”
DDL 全称:
Data Definition Language
中文叫:数据定义语言。
它管理的不是表里的数据,而是数据库对象本身,比如:
最常见的语句有:
1)创建数据库
CREATE DATABASE websec_demo;
运行结果示例
Query OK, 1 row affected (0.00 sec)
2)创建表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50),
password VARCHAR(100)
);
运行结果示例
Query OK, 0 rows affected (0.01 sec)
3)修改表结构
ALTER TABLE users
ADD email VARCHAR(100);
运行结果示例
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
4)删除表
DROP TABLE users;
运行结果示例
Query OK, 0 rows affected (0.00 sec)
DDL 为什么重要?
因为数据库不是一开始就有的,很多业务系统开发前,第一步就是设计数据库结构。
对于安全工程师来说,DDL 同样重要,因为你在做靶场部署、环境恢复、导入 SQL 文件时,经常会遇到大量 TABLE、ALTER TABLE 语句。
八、DCL:数据控制语言,核心是“管权限”
DCL 全称:
Data Control Language
中文叫:数据控制语言。
它主要用来做什么?
给用户授权,或者收回权限。
最典型的两个语句:
举个最直接的例子
创建一个普通用户后,它默认没有什么权限。
这时你可以授权:
GRANT SELECT, INSERT, UPDATE, DELETE
ON websec_demo.*
TO 'app_user'@'localhost';
运行结果示例
Query OK, 0 rows affected (0.00 sec)
如果后面你觉得权限给多了,可以收回:
REVOKE DELETE
ON websec_demo.*
FROM 'app_user'@'localhost';
运行结果示例
Query OK, 0 rows affected (0.00 sec)
DCL 在安全里为什么特别关键?
因为数据库安全事故,很多时候不是漏洞复杂,而是权限过大。
典型风险包括:
所以懂 DCL,实际上是在理解数据库权限边界。
九、TCL:事务控制语言,核心是“要么一起成,要么一起失败”
TCL 全称:
Transaction Control Language
中文叫:事务控制语言。
这是很多人刚开始最容易觉得抽象的一块,但你只要记住“转账”这个例子,就不难理解。
为什么需要事务?
假设 A 给 B 转账 100 元,这件事表面看很简单,但数据库里至少涉及两步:
A 的账户减 100B 的账户加 100
如果第一步成功了,第二步失败了,会发生什么?
这就出大问题了。
所以数据库必须保证:
这两步要么都成功,要么都失败
这种“同生共死”的操作组合,就叫 事务。
TCL 常见语句转账案例代码
START TRANSACTION;
UPDATE bank_account SET balance = balance - 100 WHERE username = 'A';
UPDATE bank_account SET balance = balance + 100 WHERE username = 'B';
COMMIT;
如果中间发现异常,可以回滚:
START TRANSACTION;
UPDATE bank_account SET balance = balance - 100 WHERE username = 'A';
UPDATE bank_account SET balance = balance + 1000 WHERE username = 'B';
ROLLBACK;
运行结果示意提交成功时
Query OK, 0 rows affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
回滚后
Query OK, 0 rows affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
虽然执行过更新语句,但由于最后 ,数据会恢复到事务开始前的状态。
事务的核心意义
别把事务只理解成银行系统。
只要是一组操作之间存在强一致性要求SQL 入门:搞懂增删改查、权限和事务,数据库才算真正入门,都可能需要事务,比如:
十、为什么说数据库里大部分事情,最后都绕不开“增删改查”?
你以后不管做开发、运维、安全还是审计,最后会发现:
数据库的很多操作,本质上都是围绕这四件事展开的:
项目再复杂,系统再大,最终落到数据层,逃不出这个基本框架。
比如用户系统:
电商系统:
所以你只要把“增删改查”的底层逻辑吃透,后面学复杂 SQL、做注入分析、看漏洞原理,都会轻松很多。
十一、MySQL 里最基础的几条操作命令,先练熟再说

既然是入门,下面这些命令一定要会。
1)登录 MySQL
mysql -uroot -p
回车后输入密码。
也可以直接写成:
mysql -uroot -proot
不过这种写法会把密码直接暴露在命令行中,学习环境里可以用,生产环境不推荐。
2)查看所有数据库
SHOW DATABASES;
运行结果示例
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| security |
| test |
+--------------------+
3)切换数据库
USE security;
运行结果示例
Database changed
4)查看当前数据库中的表
SHOW TABLES;
运行结果示例
+--------------------+
| Tables_in_security |
+--------------------+
| emails |
| referers |
| users |
+--------------------+
5)退出 MySQL
QUIT;
或者:
EXIT;
运行结果示例
Bye
十二、代码案例:从建库到增删改查,带你完整跑一遍
下面给你一套最小可运行示例,建议直接自己敲一遍。
1)创建数据库
CREATE DATABASE sql_demo DEFAULT CHARACTER SET utf8mb4;
运行结果
Query OK, 1 row affected (0.00 sec)
2)切换数据库
USE sql_demo;
运行结果
Database changed
3)创建表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(100) NOT NULL
);
运行结果
Query OK, 0 rows affected (0.01 sec)
4)插入数据
INSERT INTO users(username, password)
VALUES ('admin', 'admin123'),
('test', 'test123');
运行结果
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
5)查询数据
SELECT * FROM users;
运行结果
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | admin | admin123 |
| 2 | test | test123 |
+----+----------+----------+
2 rows in set (0.00 sec)
6)更新数据
UPDATE users SET password='123456' WHERE username='test';
运行结果
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
7)再次查询
SELECT * FROM users;
运行结果
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | admin | admin123 |
| 2 | test | 123456 |
+----+----------+----------+
2 rows in set (0.00 sec)
8)删除数据
DELETE FROM users WHERE username='test';
运行结果
Query OK, 1 row affected (0.00 sec)
9)最终查询
SELECT * FROM users;
运行结果
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | admin | admin123 |
+----+----------+----------+
1 row in set (0.00 sec)
十三、学网络安全sql语言是关系数据库语言,为什么 SQL 不是可选项,而是必修项?
这点一定要说清楚。
很多人觉得 SQL 是开发的事,安全只要会扫漏洞、会打靶就行。
这是典型误区。
你只要做这些事情,就离不开 SQL:
尤其是 SQL 注入,你如果连 SQL 基础都不懂, 看起来就像天书。
但只要你理解了:
很多注入原理就突然顺了。
十四、最后总结:先把五大类记清,再把增删改查练熟
SQL 入门阶段sql语言是关系数据库语言,别急着一头扎进复杂语法。
先把框架搭起来,后面学起来才不乱。
你可以先这样记:
SQL 五大类一句话总结
DQL:查数据
DML:改数据
DDL:改结构
DCL:管权限
TCL:管事务
学习顺序建议
如果你是初学者,我建议按这个顺序来:
1. 先学 MySQL 登录、切库、看表
2. 再学 SELECT 查询
3. 然后学 INSERT / UPDATE / DELETE
4. 接着学 CREATE / ALTER / DROP
5. 再理解用户授权和权限控制
6. 最后学事务和安全场景
最后一句话送给刚入门的朋友
数据库世界里最怕的不是语法多,而是分类不清。
只要你先把 SQL 的五大部分分清楚SQL 入门:搞懂增删改查、权限和事务,数据库才算真正入门,再去学具体命令,很多内容都会越学越顺。
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » SQL 入门:搞懂增删改查、权限和事务,数据库才算真正入门
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码

