SQL 基础语法总结

一、基础信息查询

csharp 复制代码
-- 当前数据库
SELECT DATABASE();
-- 数据库版本
SELECT VERSION();

二、DDL 库与表定义(创建/删除/修改结构)

(一) 数据库操作

sql 复制代码
SHOW DATABASES;                -- 查看所有库
USE 数据库名;                   -- 切换数据库
CREATE DATABASE 库名;           -- 创建库
DROP DATABASE 库名;             -- 删除库

(二) 数据表操作

sql 复制代码
SHOW TABLES;                    -- 查看当前库所有表
DESC 表名;                      -- 查看表结构
CREATE TABLE 表名(字段 类型...);   -- 创建表
DROP TABLE 表名;                -- 删除表

三、DML 数据操作(增删改查 核心)

(一) 查询 SELECT

sql 复制代码
SELECT * FROM 表名;                     -- 查所有列
SELECT 字段1,字段2 FROM 表名;           -- 查指定列
WHERE 条件                              -- 条件筛选
DISTINCT 字段                           -- 去重
ORDER BY 字段 ASC/DESC                  -- 升序/降序排序
LIMIT n,m                               -- 分页,从n开始取m条

(二) 插入 INSERT

scss 复制代码
INSERT INTO 表名(字段) VALUES(值);

(三) 修改 UPDATE

sql 复制代码
UPDATE 表名 SET 字段=值 WHERE 条件;
-- 必加 where,否则全表修改

(四) 删除 DELETE

sql 复制代码
DELETE FROM 表名 WHERE 条件;
-- 必加 where,否则全表删除

四、常用条件语法

(一) 运算符

  • 比较:=><>=<=!=
  • 逻辑:ANDORNOT
  • 范围:BETWEEN 小 AND 大
  • 集合:IN(值1,值2)

(二) 模糊查询

sql 复制代码
LIKE '%字符%'  -- 匹配任意多个字符
LIKE '_字符_'  -- 匹配单个字符

五、聚合函数(统计)

scss 复制代码
COUNT()  -- 统计行数
MAX()    -- 最大值
MIN()    -- 最小值
SUM()    -- 求和
AVG()    -- 平均值

六、分组与筛选

sql 复制代码
GROUP BY 字段;                -- 分组
HAVING 条件;                  -- 分组后条件过滤

七、联合查询 UNION

sql 复制代码
select 列1,列2 from 表1
UNION
select 列1,列2 from 表2;

-- UNION 去重  / UNION ALL 不去重
-- 硬性要求:列数相同、对应字段类型兼容

八、 SQL 综合应用(CTF 注入)

(一) 核心系统库概念

  1. information_schema
    MySQL 自带系统字典库,储存整台数据库所有:库名、表名、字段名,注入查表必备。
  2. 三张核心系统表
  • schemata:储存所有数据库信息
  • tables:储存所有数据表信息
  • columns:储存所有字段(列) 信息

(二) 关键字段释义

  • schema_name:数据库名
  • table_schema:表所属的数据库
  • table_name:数据表名
  • column_name:字段(列)名

(三) CTF 注入常用语句

  1. 查看当前库、版本
csharp 复制代码
SELECT DATABASE();
SELECT VERSION();
  1. 查询所有数据库
sql 复制代码
SELECT schema_name FROM information_schema.schemata;
  1. 查询当前库所有表
ini 复制代码
SELECT table_name FROM information_schema.tables WHERE table_schema = database();
  1. 查询指定表所有字段
ini 复制代码
SELECT column_name FROM information_schema.columns WHERE table_name = '表名';
  1. 探测字段数量
vbnet 复制代码
order by 1
order by 2
-- 不报错代表存在,报错即为最大列数
  1. 批量拼接爆库/表/字段
sql 复制代码
-- 爆出当前库所有表
SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema = database();

-- 爆出指定表所有字段
SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name = '表名';
  1. 查询表内真实数据
sql 复制代码
SELECT 字段1,字段2 FROM 表名;
SELECT * FROM 表名 LIMIT 0,1;
相关推荐
流星白龙10 小时前
【MySQL高阶】2.MySQL命令行客户端(2)
android·mysql·adb
努力努力再努力wz10 小时前
【Qt入门系列】:QLabel控件详解:从文本显示到图片展示,再到内容布局与伙伴机制
android·开发语言·数据结构·数据库·c++·qt·mysql
流星白龙10 小时前
【MySQL高阶】5.MySQL服务器简介
服务器·mysql·adb
流星白龙10 小时前
【MySQL高阶】9.在一台机器上运行多个MySQL实例
数据库·mysql·adb
Rick199310 小时前
MySQL 优化器会选择【最小、最精准、最高效】的索引
数据库·mysql
mN9B2uk1711 小时前
MySQL命令行导出数据库
c语言·数据库·mysql
~央千澈~11 小时前
《ZAKU渗透论:卓伊凡的2026渗透工程》第三章:Web攻击原理(上)——注入与SQL注入
数据库·sql·oracle
AI人工智能+电脑小能手11 小时前
【大白话说Java面试题 第86题】【Mysql篇】第16题:MySQL 中锁的种类与行锁实现原理?
java·开发语言·数据库·mysql·面试
Yvonne爱编码11 小时前
数据库---Day9 视图(附完整数据库脚本+练习题)
数据库·mysql·oracle
heimeiyingwang11 小时前
【架构实战】Canal数据同步:MySQL数据变更实时捕获
数据库·mysql·架构