常用SQL语句大全:从入门到精通,一文搞定数据查询!

admin 2025年6月5日16:46:54评论8 views字数 5095阅读16分59秒阅读模式

TRAVEL

点击蓝字 关注我们

常用SQL语句大全:从入门到精通,一文搞定数据查询!

前言

在数字化时代,数据库是各类案件调查的核心证据来源,SQL作为数据检索与分析的核心工具,在电子数据取证领域作用日益重要。掌握SQL语句是取证人员突破数据壁垒、精准提取分析证据链的关键。本文将解析数据定义、操作、查询与控制的核心逻辑,助其在海量数据中快速定位有效信息,提升取证效率与精准度。

1

数据定义语言(DDL)

常用SQL语句大全:从入门到精通,一文搞定数据查询!
常用SQL语句大全:从入门到精通,一文搞定数据查询!

核心作用:定义和管理数据库、表、索引等对象的结构,是构建数据存储框架的基础,为后续数据存储与操作提供规范。

  • CREATE:用于创建数据库、表等对象

-- 学生表(studentsCREATE TABLE students (    student_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '学号',    name VARCHAR(50NOT NULL COMMENT '姓名',    gender ENUM('M','F','O'NOT NULL DEFAULT 'O' COMMENT '性别');
-- 课程表(courses)CREATE TABLE courses (    course_id INT PRIMARY KEY COMMENT '课程编号',    course_name VARCHAR(100UNIQUE NOT NULL COMMENT '课程名称',    credit TINYINT UNSIGNED COMMENT '学分');
-- 成绩表(scores)CREATE TABLE scores (    id INT PRIMARY KEY AUTO_INCREMENT,    student_id INT,    course_id INT,    score DECIMAL(4,1CHECK (score BETWEEN 0 AND 100),    FOREIGN KEY (student_id) REFERENCES students(student_id) ON DELETE CASCADE,    FOREIGN KEY (course_id) REFERENCES courses(course_id) ON UPDATE CASCADE);
  • ALTER:修改已存在对象的结构

-- 新增手机号字段ALTER TABLE students ADD COLUMN phone VARCHAR(15UNIQUE;
  • DROP:删除数据库对象

-- 删除入学日期字段ALTER TABLE students DROP COLUMN enrollment_date;
  • TRUNCATE:用于快速清空表中的所有数据,且无法回滚操作

TRUNCATE TABLE students;--(如果表被外键约束引用,不能直接使用 TRUNCATE TABLE 语句清空)
  • RENAME:对数据库对象进行重命名

RENAME TABLE students TO new_students;
常用SQL语句大全:从入门到精通,一文搞定数据查询!

2

数据操作语言(DML)

常用SQL语句大全:从入门到精通,一文搞定数据查询!

核心作用:对表中的数据进行新增、更新、删除的操作,是实现数据动态管理的关键,能够灵活处理案件调查过程中获取的新数据或修正错误数据。

  • INSERT:向表中插入数据

-- 批量插入课程数据 INSERT INTO courses (course_id, course_name, credit) VALUES (101'数据库原理'3),(102'数据结构进阶'4);
-- 插入学生选课成绩INSERT INTO scores (student_id, course_id, score) VALUES(100110189.5),(100210292.0);
  • UPDATE:更新表中的

-- 修改学生信息(带条件)UPDATE new_students SET phone = '13800138000' WHERE student_id = 1001;
  • DELETE:删除表中的数据

-- 删除无效成绩记录DELETE FROM scores WHERE score IS NULL;
  • SELECT:从数据库中检索数据

-- 查询所有学生电话SELECT phoneFROM new_students;
常用SQL语句大全:从入门到精通,一文搞定数据查询!

3

数据查询语言(DQL)

常用SQL语句大全:从入门到精通,一文搞定数据查询!

核心作用:从数据库中检索数据,相比较于数据操作语言中的SELECT,数据查询语言更侧重于系统、全面对数据进行检索、分析和处理,涵盖多种复杂查询场景。

  • 基础查询:SQL中最基本的数据检索方式,用于从一个或多个表中获取指定列的数据,语法格式为:

SELECT column1, column2, ...FROM table_name;
-- 查询所有课程信息SELECT course_id AS 编号, course_name AS 课程名 FROM courses;
-- 去重查询(不同学分值)SELECT DISTINCT credit FROM courses;
  • 条件查询: SQL中用于筛选符合特定条件的数据的查询方式,通过WHERE子句实现,语法格式为:

SELECT column1, column2, ...FROM table_nameWHERE condition;
-- 范围查询(BETWEEN)SELECT * FROM scores WHERE score BETWEEN 80 AND 90;--(从 scores 表中查询所有 分数(score)在 80 到 90 之间(包含 80 和 90) 的记录,并返回所有字段(* 表示返回所有列)。)
-- 多条件组合(AND/OR)SELECT name FROM students WHERE gender = '女' AND (YEAR(NOW()) - YEAR(enrollment_date)) > 3;--(从 students 表中查询出所有性别为女,且入学时间超过 3 年的学生的姓名。)
  • 聚合查询: SQL 中用于对数据进行统计和汇总的查询方式,通过聚合函数和分组操作实现,主要由SELECT、FROM、WHERE、GROUP BY、HAVING和ORDER BY子句组成,语法格式为:

SELECT     [分组列1, 分组列2, ..., ]  -- 可选,用于分组的列    聚合函数(列名) AS 别名,    -- 必选,至少一个聚合函数    ...FROM 表名[WHERE 条件表达式]            -- 可选,过滤行[GROUP BY 分组列1, 分组列2, ...]  -- 可选,指定分组依据[HAVING 聚合函数条件表达式]   -- 可选,过滤分组[ORDER BY 排序列 [ASC|DESC]]  -- 可选,排序结果[LIMIT 偏移量, 行数];        -- 可选,分页(MySQL特有)
-- 统计各科最高分/最低分SELECT     course_id,    MAX(score) AS 最高分,    MIN(score) AS 最低分FROM scoresGROUP BY course_id;
-- 筛选平均分超过85的课程SELECT course_id, AVG(score) avg_scoreFROM scoresGROUP BY course_idHAVING avg_score > 85;
  • 连接查询: SQL 中用于结合多个表中数据的查询方式,通过匹配不同表之间的关联字段(如外键)来合并结果,语法格式为:

SELECT 列名FROM 表1INNER JOIN 表2ON 表1.列 = 表2.列; -- 连接条件
-- 三表联查(学生-课程-成绩)SELECT     s.name 学生姓名,    c.course_name 课程名称,    sc.score 成绩FROM scores scJOIN students s ON sc.student_id = s.student_idJOIN courses c ON sc.course_id = c.course_id;-- 左连接查询未选课学生SELECT s.name FROM students sLEFT JOIN scores sc ON s.student_id = sc.student_idWHERE sc.student_id IS NULL;
  • 嵌套子查询: SQL 查询中包含另外一个完整的查询语句,子查询通常用于为外层查询提供条件判断的依据,语法格式为:

SELECT 列名FROM 表名WHERE 列名 [运算符] (子查询);  -- 标量/列子查询
-- 查询比'张三'年龄小的学生SELECT name, birthdate FROM studentsWHERE birthdate > (    SELECT birthdate FROM students WHERE name = '张三');
-- 使用EXISTS查询有成绩的学生SELECT name FROM students sWHERE EXISTS (    SELECT 1 FROM scores WHERE student_id = s.student_id);
  • 分页查询:使用LIMIT子句实现分页查询,语法格式为:

SELECT 列名FROM 表名[WHERE 条件][ORDER BY 排序字段]LIMIT 每页数量 OFFSET 起始位置;
-- MySQL分页查询(每页5条)SELECT * FROM studentsORDER BY enrollment_date DESCLIMIT 5 OFFSET 0;
  • 联合查询:将多个SELECT语句的结果合并成一个结果集,主要有UNION和UNION ALL两种方式,语法格式为:

-- UNION:会去除合并结果集中的重复行,并且默认对结果集进行排序SELECT column1, column2,... FROM table1UNIONSELECT column1, column2,... FROM table2;
-- 合并两个查询结果(UNION)SELECT course_name FROM courses WHERE credit = 3UNIONSELECT course_name FROM courses;
-- UNION ALL:不会去除重复行,也不会对结果集排序,性能上相对UNION更优SELECT column1, column2,... FROM table1UNION ALLSELECT column1, column2,... FROM table2;
-- 合并两个查询结果(UNION ALL)SELECT course_name FROM courses WHERE credit = 3UNION ALLSELECT course_name FROM courses;
  • 窗口查询(进阶):在满足特定条件的记录集合(窗口)内进行计算,不改变原表的行数,能实现一些复杂的统计需求,语法格式为:

-- 常见窗口函数如 SUM()、AVG()、RANK() 等。语法格式为:窗口函数 OVER (    [PARTITION BY 列1, 列2, ...]  -- 分组(可选)    [ORDER BY 列1 [ASC|DESC], 列2, ...]  -- 排序(可选)    [窗口子句]  -- 定义窗口范围(可选))
-- 计算成绩排名SELECT     student_id,    class_id,    score,    RANK() OVER (PARTITION BY class_id ORDER BY score DESC)FROM scores;
常用SQL语句大全:从入门到精通,一文搞定数据查询!

4

数据控制语言(DCL)

常用SQL语句大全:从入门到精通,一文搞定数据查询!

核心作用:控制用户对数据库的访问权限。

  • GRANT:授予用户权限

-- 创建新用户CREATE USER 'report_user'@'localhost' IDENTIFIED BY 'SecurePass123!';
-- 授权只读权限GRANT SELECT ON school_db.* TO 'report_user'@'localhost';
  • REVOKE:收回用户权限

-- 撤销删除权限REVOKE DELETE ON students FROM 'admin_user'@'%';
常用SQL语句大全:从入门到精通,一文搞定数据查询!
常用SQL语句大全:从入门到精通,一文搞定数据查询!

掌握这些常用SQL语句,取证人员便能在电子数据取证的战场上更加游刃有余,快速从海量数据中锁定关键证据,为案件侦破提供有力的支撑。在实际应用中还需要不断结合具体案件场景,灵活运用这些语句,提升取证效率和准确性。

常用SQL语句大全:从入门到精通,一文搞定数据查询!

END

微信号CyberForen

原文始发于微信公众号(Hunter取证):常用SQL语句大全:从入门到精通,一文搞定数据查询!

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月5日16:46:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   常用SQL语句大全:从入门到精通,一文搞定数据查询!https://cn-sec.com/archives/4135334.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息