SQL入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
导读SQL语言有40多年的历史从它被应用至今几乎无处不在。我们消费的每一笔支付记录收集的每一条用户信息发出去的每一条消息都会使用数据库或与其相关的产品来存储而操纵数据库的语言正是 SQL SQL 对于现在的互联网公司生产研发等岗位几乎是一个必备技能如果不会 SQL 的话可能什么都做不了。你可以把 SQL 当做是一种工具利用它可以帮助你完成你的工作创造价值。01 SQL 介绍1. 什么是 SQLSQL 是用于访问和处理数据库的标准的计算机语言。SQL 指结构化查询语言SQL 使我们有能力访问数据库SQL 是一种 ANSI 的标准计算机语言SQL 可与数据库程序协同工作比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。但是由于各种各样的数据库出现导致很多不同版本的 SQL 语言。为了与 ANSI 标准相兼容它们必须以相似的方式共同地来支持一些主要的关键词比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等这些就是我们要学习的SQL基础。2. SQL 的类型可以把 SQL 分为两个部分数据操作语言 (DML) 和 数据定义语言 (DDL)。数据查询语言DQL: Data Query Language数据操纵语言DMLData Manipulation Language3. 学习 SQL 的作用SQL 是一门 ANSI 的标准计算机语言用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 面向数据库执行查询SQL 可从数据库取回数据SQL 可在数据库中插入新的记录SQL 可更新数据库中的数据SQL 可从数据库删除记录SQL 可创建新数据库SQL 可在数据库中创建新表SQL 可在数据库中创建存储过程SQL 可在数据库中创建视图SQL 可以设置表、存储过程和视图的权限4. 数据库是什么顾名思义你可以理解为数据库是用来存放数据的一个容器。打个比方每个人家里都会有冰箱冰箱是用来干什么的冰箱是用来存放食物的地方。同样的数据库是存放数据的地方。正是因为有了数据库后我们可以直接查找数据。例如你每天使用余额宝查看自己的账户收益就是从数据库读取数据后给你的。最常见的数据库类型是关系型数据库管理系统RDBMSRDBMS 是 SQL 的基础同样也是所有现代数据库系统的基础比如MS SQL ServerIBM DB2OracleMySQLMicrosoft AccessRDBMS中的数据存储在被称为表tables的数据库对象中。表是相关的数据项的集合它由列和行组成。由于本文主要讲解 SQL 基础因此对数据库不做过多解释只需要大概了解即可。咱们直接开始学习SQL02 SQL 基础语言学习在了解 SQL 基础语句使用之前我们先讲一下表是什么一个数据库通常包含一个或多个表。每个表由一个名字标识例如“客户”或者“订单”。表包含带有数据的记录(行)。下面的例子是一个名为 “Persons” 的表IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing上面的表包含三条记录每一条对应一个人和五个列Id、姓、名、地址和城市。有表才能查询那么如何创建这样一个表1. CREATE TABLE – 创建表CREATE TABLE 语句用于创建数据库中的表。语法CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, .... );数据类型data_type规定了列可容纳何种数据类型。下面的表格包含了SQL中最常用的数据类型数据类型描述integer(size),int(size),smallint(size),tinyint(size)仅容纳整数、在括号内规定数字的最大位数decimal(size,d),numeric(size,d)容纳带有小数的数字、“size” 规定数字的最大位数、“d” 规定小数点右侧的最大位数char(size)容纳固定长度的字符串可容纳字母、数字以及特殊字符、在括号中规定字符串的长度varchar(size)容纳可变长度的字符串可容纳字母、数字以及特殊的字符、在括号中规定字符串的最大长度date(yyyymmdd)容纳日期实例本例演示如何创建名为 “Persons” 的表。该表包含 5 个列列名分别是“Id_P”、“LastName”、“FirstName”、“Address” 以及 “City”CREATE TABLE Persons ( Id_P int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) );Id_P 列的数据类型是 int包含整数。其余 4 列的数据类型是 varchar最大长度为 255 个字符。空的 “Persons” 表类似这样可使用 INSERT INTO 语句向空表写入数据。2. INSERT – 插入数据INSERT INTO 语句用于向表格中插入新的行。语法INSERT INTO 表名称 VALUES (值1, 值2,....); 我们也可以指定所要插入数据的列 INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....);实例本例演示 “Persons” 表插入记录的两种方式1插入新的行INSERT INTO Persons VALUES (1, Gates, Bill, Xuanwumen 10, Beijing);2在指定的列中插入数据INSERT INTO Persons (LastName, Address) VALUES (Wilson, Champs-Elysees);插入成功后数据如下这个数据插入之后是通过 SELECT 语句进行查询出来的别急马上讲3. SELECT – 查询数据SELECT 语句用于从表中选取数据结果被存储在一个结果表中称为结果集。语法SELECT * FROM 表名称;我们也可以指定所要查询数据的列SELECT 列名称 FROM 表名称;注意SQL 语句对大小写不敏感SELECT 等效于 select。实例SQL SELECT * 实例SELECT * FROM Persons;注意星号*是选取所有列的快捷方式。如需获取名为 “LastName” 和 “FirstName” 的列的内容从名为 “Persons” 的数据库表请使用类似这样的 SELECT 语句SELECT LastName,FirstName FROM Persons;4. DISTINCT – 去除重复值如果一张表中有多行重复数据如何去重显示呢可以了解下DISTINCT。语法SELECT DISTINCT 列名称 FROM 表名称;实例如果要从 “LASTNAME” 列中选取所有的值我们需要使用SELECT语句SELECT LASTNAME FROM Persons;可以发现在结果集中Wilson 被列出了多次。如需从 “LASTNAME” 列中仅选取唯一不同的值我们需要使用 SELECT DISTINCT 语句SELECT DISTINCT LASTNAME FROM Persons;通过上述查询结果集中只显示了一列 Wilson显然已经去除了重复列。5. WHERE – 条件过滤如果需要从表中选取指定的数据可将 WHERE 子句添加到 SELECT 语句。语法SELECT 列名称 FROM 表名称 WHERE 列 运算符 值;下面的运算符可在 WHERE 子句中使用操作符描述等于不等于大于小于大于等于小于等于BETWEEN在某个范围内LIKE搜索某种模式注意在某些版本的 SQL 中操作符 可以写为 !。实例如果只希望选取居住在城市 “Beijing” 中的人我们需要向 SELECT 语句添加 WHERE 子句SELECT * FROM Persons WHERE CityBeijing;注意SQL 使用单引号来环绕文本值大部分数据库系统也接受双引号。如果是数值请不要使用引号。6. AND OR – 运算符AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。如果第一个条件和第二个条件都成立则 AND 运算符显示一条记录。如果第一个条件和第二个条件中只要有一个成立则 OR 运算符显示一条记录。语法AND 运算符实例SELECT * FROM 表名称 WHERE 列 运算符 值 AND 列 运算符 值;OR 运算符实例SELECT * FROM 表名称 WHERE 列 运算符 值 OR 列 运算符 值;实例由于 Persons 表数据太少因此增加几条记录INSERT INTO Persons VALUES (2, Adams, John, Oxford Street, London); INSERT INTO Persons VALUES (3, Bush, George, Fifth Avenue, New York); INSERT INTO Persons VALUES (4, Carter, Thomas, Changan Street, Beijing); INSERT INTO Persons VALUES (5, Carter, William, Xuanwumen 10, Beijing); SELECT * FROM Persons;AND 运算符实例使用 AND 来显示所有姓为 “Carter” 并且名为 “Thomas” 的人SELECT * FROM Persons WHERE FirstNameThomas AND LastNameCarter;OR 运算符实例使用 OR 来显示所有姓为 “Carter” 或者名为 “Thomas” 的人SELECT * FROM Persons WHERE firstnameThomas OR lastnameCarter;结合 AND 和 OR 运算符我们也可以把 AND 和 OR 结合起来使用圆括号来组成复杂的表达式:SELECT * FROM Persons WHERE (FirstNameThomas OR FirstNameWilliam) AND LastNameCarter;7. ORDER BY – 排序ORDER BY 语句用于根据指定的列对结果集进行排序默认按照升序对记录进行排序如果您希望按照降序对记录进行排序可以使用 DESC 关键字。语法SELECT * FROM 表名称 ORDER BY 列1,列2 DESC;默认排序为 ASC 升序DESC 代表降序。实例以字母顺序显示LASTNAME名称SELECT * FROM Persons ORDER BY LASTNAME;空值NULL默认排序在有值行之后。以数字顺序显示ID_P并以字母顺序显示LASTNAME名称SELECT * FROM Persons ORDER BY ID_P,LASTNAME;以数字降序显示ID_PSELECT * FROM Persons ORDER BY ID_P DESC;注意在第一列中有相同的值时第二列是以升序排列的。如果第一列中有些值为 null 时情况也是这样的。8. UPDATE – 更新数据Update 语句用于修改表中的数据。语法UPDATE 表名称 SET 列名称 新值 WHERE 列名称 某值;实例更新某一行中的一个列目前Persons表有很多字段为null的数据可以通过UPDATE为 LASTNAME 是 “Wilson” 的人添加FIRSTNAMEUPDATE Persons SET FirstName Fred WHERE LastName Wilson;更新某一行中的若干列UPDATE Persons SET ID_P 6,city London WHERE LastName Wilson;9. DELETE – 删除数据DELETE 语句用于删除表中的行。语法DELETE FROM 表名称 WHERE 列名称 值;实例删除某行删除Persons表中 LastName 为 “Fred Wilson” 的行DELETE FROM Persons WHERE LastName Wilson;删除所有行可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的DELETE FROM table_name;10. TRUNCATE TABLE – 清除表数据如果我们仅仅需要除去表内的数据但并不删除表本身那么我们该如何做呢可以使用 TRUNCATE TABLE 命令仅仅删除表格中的数据语法TRUNCATE TABLE 表名称;实例本例演示如何删除名为 “Persons” 的表。TRUNCATE TABLE persons;11. DROP TABLE – 删除表DROP TABLE 语句用于删除表表的结构、属性以及索引也会被删除。语法DROP TABLE 表名称;实例本例演示如何删除名为 “Persons” 的表。drop table persons;从上图可以看出第一次执行删除时成功删除了表persons第二次执行删除时报错找不到表persons说明表已经被删除了。03 SQL 高级言语学习1. LIKE – 查找类似值LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。语法SELECT 列名/(*) FROM 表名称 WHERE 列名称 LIKE 值;实例Persons表插入数据INSERT INTO Persons VALUES (1, Gates, Bill, Xuanwumen 10, Beijing); INSERT INTO Persons VALUES (2, Adams, John, Oxford Street, London); INSERT INTO Persons VALUES (3, Bush, George, Fifth Avenue, New York); INSERT INTO Persons VALUES (4, Carter, Thomas, Changan Street, Beijing); INSERT INTO Persons VALUES (5, Carter, William, Xuanwumen 10, Beijing); select * from persons;1现在我们希望从上面的 “Persons” 表中选取居住在以 “N” 开头的城市里的人SELECT * FROM Persons WHERE City LIKE N%;2接下来我们希望从 “Persons” 表中选取居住在以 “g” 结尾的城市里的人SELECT * FROM Persons WHERE City LIKE %g;3接下来我们希望从 “Persons” 表中选取居住在包含 “lon” 的城市里的人SELECT * FROM Persons WHERE City LIKE %on%;4通过使用 NOT 关键字我们可以从 “Persons” 表中选取居住在不包含 “lon” 的城市里的人SELECT * FROM Persons WHERE City NOT LIKE %on%;注意“%” 可用于定义通配符模式中缺少的字母。2. IN – 锁定多个值IN 操作符允许我们在 WHERE 子句中规定多个值。语法SELECT 列名/(*) FROM 表名称 WHERE 列名称 IN (值1,值2,值3);实例现在我们希望从Persons表中选取姓氏为 Adams 和 Carter 的人SELECT * FROM Persons WHERE LastName IN (Adams,Carter);3. BETWEEN – 选取区间数据操作符 BETWEEN … AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。语法SELECT 列名/(*) FROM 表名称 WHERE 列名称 BETWEEN 值1 AND 值2;实例1查询以字母顺序显示介于 “Adams”包括和 “Carter”不包括之间的人SELECT * FROM Persons WHERE LastName BETWEEN Adams AND Carter;2查询上述结果相反的结果可以使用 NOTSELECT * FROM Persons WHERE LastName NOT BETWEEN Adams AND Carter;注意不同的数据库对 BETWEEN…AND 操作符的处理方式是有差异的。某些数据库会列出介于 “Adams” 和 “Carter” 之间的人但不包括 “Adams” 和 “Carter” 某些数据库会列出介于 “Adams” 和 “Carter” 之间并包括 “Adams” 和 “Carter” 的人而另一些数据库会列出介于 “Adams” 和 “Carter” 之间的人包括 “Adams” 但不包括 “Carter” 。所以请检查你的数据库是如何处理 BETWEEN…AND 操作符的4. AS – 别名通过使用 SQL可以为列名称和表名称指定别名Alias别名使查询程序更易阅读和书写。语法表别名SELECT 列名称/(*) FROM 表名称 AS 别名;列别名SELECT 列名称 as 别名 FROM 表名称;实例使用表名称别名SELECT p.LastName, p.FirstName FROM Persons p WHERE p.LastNameAdams AND p.FirstNameJohn;使用列名别名SELECT LastName Family, FirstName Name FROM Persons;注意实际应用时这个AS可以省略但是列别名需要加上 。5. JOIN – 多表关联JOIN用于根据两个或多个表中的列之间的关系从这些表中查询数据。有时为了得到完整的结果我们需要从两个或更多的表中获取结果。我们就需要执行join。数据库中的表可通过键将彼此联系起来。主键Primary Key是一个列在这个列中的每一行的值都是唯一的。在表中每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下把表间的数据交叉捆绑在一起。如图“Id_P” 列是 Persons 表中的的主键。这意味着没有两行能够拥有相同的 Id_P。即使两个人的姓名完全相同Id_P 也可以区分他们。为了下面实验的继续我们需要再创建一个表Orders。create table orders (id_o number,orderno number,id_p number); insert into orders values(1,11111,1); insert into orders values(2,22222,2); insert into orders values(3,33333,3); insert into orders values(4,44444,4); insert into orders values(6,66666,6); select * from orders;如图“Id_O” 列是 Orders 表中的的主键同时“Orders” 表中的 “Id_P” 列用于引用 “Persons” 表中的人而无需使用他们的确切姓名。select * from persons p,orders o where p.id_po.id_p;可以看到“Id_P” 列把上面的两个表联系了起来。语法select 列名 from 表A INNER|LEFT|RIGHT|FULL JOIN 表B ON 表A主键列 表B外键列;不同的 SQL JOIN下面列出了您可以使用的 JOIN 类型以及它们之间的差异。JOIN: 如果表中有至少一个匹配则返回行INNER JOIN: 内部连接返回两表中匹配的行LEFT JOIN: 即使右表中没有匹配也从左表返回所有的行RIGHT JOIN: 即使左表中没有匹配也从右表返回所有的行FULL JOIN: 只要其中一个表中存在匹配就返回行实例如果我们希望列出所有人的定购可以使用下面的 SELECT 语句SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p INNER JOIN Orders o ON p.Id_P o.Id_P ORDER BY p.LastName DESC;6. UNION – 合并结果集UNION 操作符用于合并两个或多个 SELECT 语句的结果集。UNION 语法SELECT 列名 FROM 表A UNION SELECT 列名 FROM 表B;注意UNION 操作符默认为选取不同的值。如果查询结果需要显示重复的值请使用 UNION ALL。UNION ALL 语法SELECT 列名 FROM 表A UNION ALL SELECT 列名 FROM 表B;另外UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。为了实验所需创建 Person_b 表CREATE TABLE Persons_b ( Id_P int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) ); INSERT INTO Persons_b VALUES (1, Bill, Gates, Xuanwumen 10, Londo); INSERT INTO Persons_b VALUES (2, John, Adams, Oxford Street, nBeijing); INSERT INTO Persons_b VALUES (3, George, Bush, Fifth Avenue, Beijing); INSERT INTO Persons_b VALUES (4, Thomas, Carter, Changan Street, New York); INSERT INTO Persons_b VALUES (5, William, Carter, Xuanwumen 10, Beijing); select * from persons_b;实例使用 UNION 命令列出 persons 和 persons_b 中不同的人select * from persons UNION select * from persons_b;注意UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时每条 SELECT 语句中的列的顺序必须相同。7. NOT NULL – 非空NOT NULL约束强制列不接受 NULL 值。NOT NULL 约束强制字段始终包含值。这意味着如果不向字段添加值就无法插入新记录或者更新记录。语法CREATE TABLE 表 ( 列 int NOT NULL );如上创建一个表设置列值不能为空。实例create table lucifer (id number not null); insert into lucifer values (NULL);注意如果插入NULL值则会报错ORA-01400提示无法插入拓展小知识NOT NULL也可以用于查询条件select * from persons where FirstName is not null;同理NULL也可select * from persons where FirstName is null;感兴趣的朋友可以自己尝试一下8. VIEW – 视图在 SQL 中视图是基于 SQL 语句的结果集的可视化的表。视图包含行和列就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句我们也可以提交数据就像这些来自于某个单一的表。语****法CREATE VIEW 视图名 AS SELECT 列名 FROM 表名 WHERE 查询条件;注意视图总是显示最近的数据。每当用户查询视图时数据库引擎通过使用 SQL 语句来重建数据。实例下面我们将 Persons 表中住在 Beijing 的人筛选出来创建视图create view persons_beijing as select * from persons where cityBeijing;查询上面这个视图如果需要更新视图中的列或者其他信息无需删除使用CREATE OR REPLACE VIEW选项CREATE OR REPLACE VIEW 视图名 AS SELECT 列名 FROM 表名 WHERE 查询条件;实例现在需要筛选出LASTNAME 为 Gates 的记录create or replace view persons_beijing as select * from persons where lastnameGates;删除视图就比较简单跟表差不多使用DROP即可drop view persons_beijing;本章要讲的高级语言就先到此为止不宜一次性介绍太多~04 SQL 常用函数学习SQL 拥有很多可用于计数和计算的内建函数。函数的使用语法SELECT function(列) FROM 表;下面就来看看有哪些常用的函数1. AVG – 平均值AVG 函数返回数值列的平均值。NULL 值不包括在计算中。语法SELECT AVG(列名) FROM 表名;实例计算 “orderno” 字段的平均值。select avg(orderno) from orders;当然也可以用在查询条件中例如查询低于平均值的记录select * from orders where orderno (select avg(orderno) from orders);2. COUNT – 汇总行数COUNT() 函数返回匹配指定条件的行数。语法count()中可以有不同的语法COUNT(*) 返回表中的记录数。COUNT(DISTINCT 列名) 返回指定列的不同值的数目。COUNT(列名) 返回指定列的值的数目NULL 不计入。SELECT COUNT(*) FROM 表名; SELECT COUNT(DISTINCT 列名) FROM 表名; SELECT COUNT(列名) FROM 表名;实例COUNT(*) select count(*) from persons;COUNT(DISTINCT 列名) select count(distinct city) from persons;COUNT(列名) select count(city) from persons;3. MAX – 最大值MAX函数返回一列中的最大值。NULL 值不包括在计算中。语法SELECT MAX(列名) FROM 表名;MIN 和 MAX 也可用于文本列以获得按字母顺序排列的最高或最低值。实例select max(orderno) from orders;4. MIN – 最小值MIN函数返回一列中的最小值。NULL 值不包括在计算中。语法SELECT MIN(列名) FROM 表名;实例select min(orderno) from orders;5. SUM – 求和SUM函数返回数值列的总数总额。语法SELECT SUM(列名) FROM 表名;实例select sum(orderno) from orders;6. GROUP BY – 分组GROUP BY 语句用于结合合计函数根据一个或多个列对结果集进行分组。语法SELECT 列名A, 统计函数(列名B) FROM 表名 WHERE 查询条件 GROUP BY 列名A;实例获取 Persons 表中住在北京的总人数根据 LASTNAME 分组select lastname,count(city) from persons where cityBeijing group by lastname;如果不加GROUP BY则会报错也就是常见的ORA-00937不是单组分组函数的错误。7. HAVING – 句尾连接在 SQL 中增加 HAVING 子句原因是WHERE 关键字无法与合计函数一起使用。语法SELECT 列名A, 统计函数(列名B) FROM table_name WHERE 查询条件 GROUP BY 列名A HAVING 统计函数(列名B) 查询条件;实例获取 Persons 表中住在北京的总人数大于1的 LASTNAME根据 LASTNAME 分组select lastname,count(city) from persons where cityBeijing group by lastname having count(city) 1;8. UCASE/UPPER – 大写UCASE/UPPER函数把字段的值转换为大写。语法select upper(列名) from 表名;实例选取 “LastName” 和 “FirstName” 列的内容然后把 “LastName” 列转换为大写select upper(lastname),firstname from persons;9. LCASE/LOWER – 小写LCASE/LOWER函数把字段的值转换为小写。语法select lower(列名) from 表名;实例选取 “LastName” 和 “FirstName” 列的内容然后把 “LastName” 列转换为小写select lower(lastname),firstname from persons;10. LEN/LENGTH – 获取长度LEN/LENGTH函数返回文本字段中值的长度。语法select length(列名) from 表名;实例获取 LASTNAME 的值字符长度select length(lastname),lastname from persons;11. ROUND – 数值取舍ROUND 函数用于把数值字段舍入为指定的小数位数。语法select round(列名,精度) from 表名;实例保留2位select round(1.1314,2) from dual; select round(1.1351,2) from dual;注意ROUND取舍是「四舍五入」的取整select round(1.1351,0) from dual; select round(1.56,0) from dual;12. NOW/SYSDATE – 当前时间NOW/SYSDATE函数返回当前的日期和时间。语法select sysdate from 表名;实例获取当前时间select sysdate from dual;注意如果您在使用 Sql Server 数据库请使用getdate()函数来获得当前的日期时间。学习资源如果你是也准备转行学习网络安全黑客或者正在学习这里开源一份360智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你知识库由360智榜样学习中心独家打造出品旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力熟练掌握基础攻防到深度对抗。1、知识库价值深度 本知识库超越常规工具手册深入剖析攻击技术的底层原理与高级防御策略并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等提供了独到的技术视角和实战验证过的对抗方案。广度 面向企业安全建设的核心场景渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点是应对复杂攻防挑战的实用指南。实战性 知识库内容源于真实攻防对抗和大型演练实践通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。2、 部分核心内容展示360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式既夯实基础技能更深入高阶对抗技术。360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式既夯实基础技能更深入高阶对抗技术。内容组织紧密结合攻防场景辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合是你学习过程中好帮手。1、网络安全意识2、Linux操作系统3、WEB架构基础与HTTP协议4、Web渗透测试5、渗透测试案例分享6、渗透测试实战技巧7、攻防对战实战8、CTF之MISC实战讲解3、适合学习的人群‌一、基础适配人群‌‌零基础转型者‌适合计算机零基础但愿意系统学习的人群资料覆盖从网络协议、操作系统到渗透测试的完整知识链‌‌开发/运维人员‌具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能实现职业方向拓展‌或者转行就业‌应届毕业生‌计算机相关专业学生可通过资料构建完整的网络安全知识体系缩短企业用人适应期‌‌二、能力提升适配‌1、‌技术爱好者‌适合对攻防技术有强烈兴趣希望掌握漏洞挖掘、渗透测试等实战技能的学习者‌2、安全从业者‌帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力‌3、‌合规需求者‌包含等保规范、安全策略制定等内容适合需要应对合规审计的企业人员‌因篇幅有限仅展示部分资料完整版的网络安全学习资料已经上传CSDN朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】

相关新闻

Selenium自动化测试入门:python unittest 单元测试框架

Selenium自动化测试入门:python unittest 单元测试框架

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 unittest又名PyUnit, Python单元测试框架(The Python unit testing framework),简称为PyUnit。自从 Python 2.1 版本…

2026/7/3 14:29:54 阅读更多 →
数据资产评估效率低?AI架构师亲测:标准化方法让评估时间缩短50%

数据资产评估效率低?AI架构师亲测:标准化方法让评估时间缩短50%

数据资产评估效率低?AI架构师亲测:标准化方法让评估时间缩短50% 引言:一场关乎数据价值的生死时速 凌晨三点,会议室灯光惨白,王明揉着发胀的太阳穴,盯着屏幕上密密麻麻的数据表。作为一家金融科技公司的数据资产经理,他正带领团队为即将到来的监管数据资产入表要求做最…

2026/7/3 14:29:54 阅读更多 →
2024年最值得关注的AI语义索引技术趋势

2024年最值得关注的AI语义索引技术趋势

2024年最值得关注的AI语义索引技术趋势 关键词:AI语义索引、多模态融合、动态索引、可解释性、隐私保护、向量检索、知识图谱 摘要:本文将带您走进AI语义索引的世界,从“查字典”到“懂意思”的技术进化讲起,深入解析2024年最值得关注的五大核心趋势——多模态融合、动态实…

2026/7/3 14:29:59 阅读更多 →

最新新闻

基于YOLOv11的果树害虫智能识别系统开发与优化

基于YOLOv11的果树害虫智能识别系统开发与优化

1. 项目概述:基于YOLOv11的果树害虫智能识别系统去年在果园实地调研时,我发现果农们仍在用最原始的方法识别害虫——拿着放大镜一片叶子一片叶子地检查。这种低效的识别方式直接导致虫害防治的滞后性,往往发现时已经造成不可逆的损失。这正是…

2026/7/4 23:43:22 阅读更多 →
如何从‘能聊天’升级到‘让别人愿意主动找你聊’的系统?

如何从‘能聊天’升级到‘让别人愿意主动找你聊’的系统?

一、第一刀:为什么大多数人只能“能聊天”,不能“被找聊”? 因为他们停留在:被动对话系统✔ 特征: 别人发起你回应你维持但不会“积累吸引力”👉 本质:只是“对话节点”,不是“对话源…

2026/7/4 23:41:22 阅读更多 →
基于Playwright与MCP协议实现浏览器自动化与手动操作协同

基于Playwright与MCP协议实现浏览器自动化与手动操作协同

1. 项目概述:当自动化脚本遇上你的手动操作在浏览器自动化测试和爬虫开发的日常里,我们常常面临一个尴尬的割裂:一边是精心编写的Playwright脚本,在无头模式下高效、稳定地执行任务;另一边,则是我们自己手动…

2026/7/4 23:39:21 阅读更多 →
通过COM组件在Web上实现Kinect骨骼追踪、声控截屏保存的功能

通过COM组件在Web上实现Kinect骨骼追踪、声控截屏保存的功能

具体实现 第一部分 ActiveX插件的实现 1) 创建一个新的解决方案,叫做MyFirstKinect。 2)接着创建一个Windows窗体控件库,用于做ActiveX的插件,项目叫做MyFirstKinectControl 3)在MyFirstKinectControl项目…

2026/7/4 23:39:21 阅读更多 →
Coze平台AI Agent开发实战与优化技巧

Coze平台AI Agent开发实战与优化技巧

1. Coze平台与AI Agent开发概述作为一名长期从事AI应用开发的工程师,我最近深度体验了Coze平台在AI Agent开发中的实际表现。这个由字节跳动推出的开发平台确实为不同技术背景的用户提供了一种全新的AI应用构建方式。与传统开发模式相比,Coze最显著的特点…

2026/7/4 23:39:21 阅读更多 →
机器学习模型线上稳定性实战:特征一致性、数据漂移与推理容错

机器学习模型线上稳定性实战:特征一致性、数据漂移与推理容错

1. 这不是“跑通模型”就完事的课——它讲的是模型怎么在真实业务里活下来“From Notebook to Production: Running ML in the Real World (Part 4)”这个标题,光看前半句,很多人会下意识划走:又一个讲MLOps流程的泛泛而谈?但关键…

2026/7/4 23:37:20 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻