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;
相关推荐
爱吃牛肉的大老虎2 小时前
MySQL优化之系统表分析SQL
android·sql·mysql
.柒宇.2 小时前
MySQL的MGR高可用
数据库·mysql·adb
当战神遇到编程2 小时前
MySQL核心篇:增删改查(CRUD)
数据库·mysql
猿小喵2 小时前
记录一次长时间未提交事务造成的慢SQL
数据库·sql·mysql
蜡台2 小时前
Centos 安装Mysql
linux·mysql·centos·yum·mysql8
HalvmånEver3 小时前
MySQL数据库表(table)操作
linux·数据库·学习·mysql
一只大袋鼠3 小时前
MyBatis 进阶实战(四): 连接池、动态 SQL、多表关联(一对多 / 多对一 / 多对多)
java·开发语言·数据库·sql·mysql·mybatis
电商API&Tina3 小时前
【1688API接口】1688 开放平台 API 接入心得
java·开发语言·数据库·python·sql·json
User_芊芊君子3 小时前
0 基础学 MySQL !核心知识点梳理,搞定库表操作与 CRUD
数据库·mysql·adb