肝通宵写了三万字把SQL数据库的所有命令,函数,运算符讲得明明白白讲解,内容实在丰富,建议收藏+三连好评

学习路线:

这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

更新CustomerID = 1的用户名字和城市数据

UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;

更新过后将会如下:
在这里插入图片描述
更新多条记录
该WHERE子句确定将更新多少条记录。
将国家为"Mexico"的所有记录的 ContactName 更新为“Juan”:

UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';

更新后将会变成:
在这里插入图片描述
更新警告!
更新记录时要小心。如果省略该 WHERE子句,则所有记录都将被更新!
例如:

UPDATE Customers
SET ContactName='Juan';

则会导致如下结果:
在这里插入图片描述
练习:
更新表City中所有记录的Customers列。

UPDATE Customers
SET City = 'Oslo';

DELETE删除语句

该DELETE语句用于删除表中的现有记录。
删除语法

DELETE FROM table_name WHERE condition;

注意: 删除表中的记录时要小心!注意 WHERE语句中的子句 DELETE。该WHERE条款指定应删除哪些记录。如果省略该WHERE子句,表中的所有记录都将被删除!
哈哈哈哈,我们还是以“Customers”表为例子如下:
在这里插入图片描述
删除示例
从“Customers”表中删除客户“Alfreds Futterkiste”:

DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';

于是就变成这样:
在这里插入图片描述
删除所有记录
可以在不删除表的情况下删除表中的所有行。这意味着表结构、属性和索引将保持不变

DELETE FROM table_name;

例如:删除“Customers”表中的所有行,但不删除该表:

DELETE FROM Customers;

练习:从Customers表中删除Country值为“挪威”的所有记录。

DELETE FROM Customers
WHERE Country = 'Norway';

TOP、LIMIT、FETCH FIRST 或 ROWNUM限制子句

SELECT TOP 子句
SELECT TOP子句用于指定要返回的记录数。SELECT TOP子句在具有数千条记录的大表上很有用。返回大量记录会影响性能。
注意: 并非所有数据库系统都支持该 SELECT TOP子句。MySQL 支持LIMIT子句选择有限数量的记录,而 Oracle 使用FETCH FIRST n ROWSONLYROWNUM
Server / MS 访问语法:

SELECT TOP number|percent column\_name(s)
FROM table_name
WHERE condition;

MySQL 语法:

SELECT column\_name(s)
FROM table_name
WHERE condition
LIMIT number;

Oracle 12 语法:

SELECT column\_name(s)
FROM table_name
ORDER BY column\_name(s)
FETCH FIRST number ROWS ONLY;

比如还是“Customers”表如下
在这里插入图片描述
TOP、LIMIT 和 FETCH FIRST示例
从 "Customers表中选择前三个记录(用于 SQL Server/MS Access):

SELECT TOP 3 \* FROM Customers;

MySQL 的等效示例:

SELECT \* FROM Customers
LIMIT 3;

Oracle 的等效示例:

SELECT \* FROM Customers
FETCH FIRST 3 ROWS ONLY;

TOP PERCENT 示例
从"Customers“表中选择前 50% 的记录(用于 SQL Server/MS Access):

SELECT TOP 50 PERCENT \* FROM Customers;

Oracle 的等效示例:

SELECT \* FROM Customers
FETCH FIRST 50 PERCENT ROWS ONLY;

添加 WHERE 条款
从“Customers”表中选择前三个记录,其中国家是“Germany”(对于 SQL Server/MS Access):

SELECT TOP 3 \* FROM Customers
WHERE Country='Germany';

MySQL 的等效示例

SELECT \* FROM Customers
WHERE Country='Germany'
LIMIT 3;

Oracle 的等效示例:

SELECT \* FROM Customers
WHERE Country='Germany'
FETCH FIRST 3 ROWS ONLY;

MIN() 和 MAX()函数求最大最小值

MIN()函数返回所选列的最小值。MAX()函数返回所选列的最大值。
MIN() 语法

SELECT MIN(column_name)
FROM table_name
WHERE condition;

MAX() 语法

SELECT MAX(column_name)
FROM table_name
WHERE condition;

现在我们换一个新的表Product如下:
在这里插入图片描述
MIN() 示例
查找最便宜产品的价格:

SELECT MIN(Price) AS SmallestPrice
FROM Products;

显示如下:
在这里插入图片描述
MAX() 示例
查找最贵产品的价格:

SELECT MAX(Price) AS LargestPrice
FROM Products;

返回如下:
在这里插入图片描述
练习:
使用该MIN函数选择Price列的最小值的记录。

SELECT  MIN(Price) FROM  Products;

COUNT()、AVG() 和 SUM()函数

该COUNT()函数返回与指定条件匹配的行数。
COUNT() 语法

SELECT COUNT(column_name)
FROM table_name
WHERE condition;

该AVG()函数返回数字列的平均值。
AVG() 语法

SELECT AVG(column_name)
FROM table_name
WHERE condition;

该SUM()函数返回数字列的总和。
SUM() 语法

SELECT SUM(column_name)
FROM table_name
WHERE condition;

我们还是用表product
在这里插入图片描述
COUNT() 示例
查找产品数量:

SELECT COUNT(ProductID)
FROM Products;

注意: NULL 值不计算在内。
AVG() 示例
查找所有产品的平均价格:

SELECT AVG(Price)
FROM Products;

注意: NULL 值被忽略。
假设我现在有“OrderDetails”表如下:
在这里插入图片描述
SUM() 示例
查找“OrderDetails”表中“Quantity”字段的总和:

SELECT SUM(Quantity)
FROM OrderDetails;

返回如下:
在这里插入图片描述
注意: NULL 值被忽略。
练习
返回Price值设置为18的记录数

SELECT COUNT(\*) FROM Products
WHERE Price = 18;

LIKE运算符

该LIKE运算符在 WHERE子句中用于搜索列中的指定模式。有两个通配符经常与 LIKE运算符结合使用:
百分号 (%) 代表零、一个或多个字符
下划线 () 代表一个,单个字符
但是呢注意: MS Access 使用星号 (*) 代替百分号 (%),使用问号 (?) 代替下划线 (
)
当然百分号和下划线也可以组合使用!
LIKE 语法

SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;

提示:您还可以使用 AND或OR运算符组合任意数量的条件。
以下是一些示例,显示了LIKE带有“%”和“_”通配符的不同运算符:
在这里插入图片描述
所对应意思为:
第一行:匹配任何以a开头的字段
第二行:匹配任何以a结尾的字段
第三行:匹配任何具有“or”的字段
第四行:查找第二个位置有“r”的任何值
第五行:查找任何以“a”开头且长度至少为 2 个字符的值
第六行:查找任何以“a”开头且长度至少为 3 个字符的值
第七行:查看以“a”开头并以“o”结尾的任何值
比如我们还是有如下Customers”表:
在这里插入图片描述

LIKE 示例
选择 CustomerName 以“a”开头的所有客户:

SELECT \* FROM Customers
WHERE CustomerName LIKE 'a%';

选择 CustomerName 以“a”结尾的所有客户:

SELECT \* FROM Customers
WHERE CustomerName LIKE '%a';

选择 CustomerName 中任何位置都有“或”的所有客户:

SELECT \* FROM Customers
WHERE CustomerName LIKE '%or%';

选择 CustomerName 中第二个位置为“r”的所有客户:

SELECT \* FROM Customers
WHERE CustomerName LIKE '\_r%';

选择 CustomerName 以“a”开头且长度至少为 3 个字符的所有客户:

SELECT \* FROM Customers
WHERE CustomerName LIKE 'a\_\_%';

选择 ContactName 以“a”开头并以“o”结尾的所有客户:

SELECT \* FROM Customers
WHERE ContactName LIKE 'a%o';

选择 CustomerName 不以“a”开头的所有客户:

SELECT \* FROM Customers
WHERE CustomerName NOT LIKE 'a%';

通配符*?!等

这是英文文档所有通配符描述(实在不想翻译,大家自己看看)
在这里插入图片描述
在这里插入图片描述
假设我们还是有如下“Customers”表:
在这里插入图片描述
使用 % 通配符
选择 City 以“ber”开头的所有客户:

SELECT \* FROM Customers
WHERE City LIKE 'ber%';

选择 City 包含“es”的所有客户:

SELECT \* FROM Customers
WHERE City LIKE '%es%';

返回如下:
在这里插入图片描述
使用 _ 通配符
选择 City 以任何字符开头,后跟“ondon”的所有客户:

SELECT \* FROM Customers
WHERE City LIKE '\_ondon';

选择 City 以“L”开头、后跟任意字符、“n”、任意字符、“on”的所有客户:

SELECT \* FROM Customers
WHERE City LIKE 'L\_n\_on';


使用 [charlist] 通配符
选择 City 以“b”、“s”或“p”开头的所有客户:

SELECT \* FROM Customers
WHERE City LIKE '[bsp]%';

选择 City 以“a”、“b”或“c”开头的所有客户:

SELECT \* FROM Customers
WHERE City LIKE '[a-c]%';

使用 [!charlist] 通配符
选择 City 不是以“b”、“s”或“p”开头的所有客户:

SELECT \* FROM Customers
WHERE City LIKE '[!bsp]%';

或者

SELECT \* FROM Customers
WHERE City NOT LIKE '[bsp]%';

IN运算符

IN运算符允许您在 WHERE子句中指定多个值。
IN操作是针对多个速记 OR条件。
IN 语法

SELECT column\_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

我们还是以“Customers”表为例子:
在这里插入图片描述
IN 运算符示例
选择位于’Germany’, ‘France’, 'UK’的所有客户:

SELECT \* FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');

选择不在选择位于’Germany’, ‘France’, 'UK’的所有客户:

SELECT \* FROM Customers
WHERE Country NOT IN ('Germany', 'France', 'UK');

选择与 Suppliers来自相同国家的所有客户:

SELECT \* FROM Customers
WHERE Country IN (SELECT Country FROM Suppliers);

返回如下
在这里插入图片描述

BETWEEN 之间运算符

在BETWEEN操作者选择一个给定的范围内的值。值可以是数字、文本或日期。
BETWEEN 语法

SELECT column\_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

我们有用到如下的product表:
在这里插入图片描述
between示例
选择价格在 10 到 20 之间的所有产品:

SELECT \* FROM Products
WHERE Price BETWEEN 10 AND 20;

要显示上一个示例范围之外的产品,请使用 NOT BETWEEN:

SELECT \* FROM Products
WHERE Price NOT BETWEEN 10 AND 20;

数字之间
选择价格在 10 到 20 之间的所有产品。此外;不要显示 CategoryID 为 1,2 或 3 的产品:

SELECT \* FROM Products
WHERE Price BETWEEN 10 AND 20
AND CategoryID NOT IN (1,2,3);

文本值之间
语句选择 Carnarvon Tigers 和 Mozzarella di Giovanni 之间具有 ProductName 的所有产品

SELECT \* FROM Products
WHERE ProductName BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni'
ORDER BY ProductName;

选择产品名称介于 Carnarvon Tigers 和 Chef Anton’s Cajun Seasoning 之间的所有产品:

SELECT \* FROM Products
WHERE ProductName BETWEEN "Carnarvon Tigers" AND "Chef Anton's Cajun Seasoning"
ORDER BY ProductName;

NOT BETWEEN 文本值
选择 ProductName 不在 Carnarvon Tigers 和 Mozzarella di Giovanni 之间的所有产品:

SELECT \* FROM Products
WHERE ProductName NOT BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni'
ORDER BY ProductName;

我们现在假设有如下"Orders" 表:
在这里插入图片描述
日期之间示例
选择 OrderDate 介于 ‘01-July-1996’ 和 ‘31-July-1996’ 之间的所有订单

SELECT \* FROM Orders
WHERE OrderDate BETWEEN #07/01/1996# AND #07/31/1996#;

或者使用:

SELECT \* FROM Orders
WHERE OrderDate BETWEEN '1996-07-01' AND '1996-07-31';

AS 别名使用

别名列语法

SELECT column_name AS alias_name
FROM table_name;

别名表语法

SELECT column\_name(s)
FROM table_name AS alias_name;

现在我们还是假设有custorm表如下:
在这里插入图片描述
还有一个oeder表
在这里插入图片描述
列的别名示例
创建两个别名,一个用于 CustomerID 列,另一个用于 CustomerName 列:

SELECT CustomerID AS ID, CustomerName AS Customer
FROM Customers;

创建两个别名,一个用于 CustomerName 列,另一个用于 ContactName 列。注意:如果别名包含空格,则需要双引号或方括号:

SELECT CustomerName AS Customer, ContactName AS [Contact Person]
FROM Customers;

创建一个名为“Address”的别名,该别名组合了四列(Address、PostalCode、 City 和Country):

SELECT CustomerName, Address + ', ' + PostalCode + ' ' + City + ', ' + Country AS Address
FROM Customers;

注意:要使上面的 SQL 语句在 MySQL 中工作,请使用以下命令:

SELECT CustomerName, CONCAT(Address,', ',PostalCode,', ',City,', ',Country) AS Address
FROM Customers;

表别名示例
选择来自 CustomerID=4(Around the Horn)的客户的所有订单。我们使用“Customers”和“Orders”表,分别给它们表别名“c”和“o”(这里我们使用别名来缩短SQL)

SELECT o.OrderID, o.OrderDate, c.CustomerName
FROM Customers AS c, Orders AS o
WHERE c.CustomerName='Around the Horn' AND c.CustomerID=o.CustomerID;

以下 SQL 语句与上面相同,但没有别名:

SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName
FROM Customers, Orders
WHERE Customers.CustomerName='Around the Horn' AND Customers.CustomerID=Orders.CustomerID;

别名在以下情况下很有用:
1.一个查询涉及多个表
2.一个查询涉及多个表
3.查询中使用的函数
4.列名很大或不太可读
5.两列或更多列组合在一起

JOIN连接

JOIN子句用于行从两个或更多表根据它们之间的相关列结合。
假设我们现在有"Orders" 表如下
在这里插入图片描述
同时还有表 “Customers” 如下:
在这里插入图片描述
请注意,“Orders”表中的“CustomerID”列指的是“Customers”表中的“CustomerID”。上面两个表之间的关系是“CustomerID”列。
示例
使用INNER JOIN选择在两个表中具有匹配值的记录:

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;

返回如下
在这里插入图片描述
不同类型的 SQL JOIN
在这里插入图片描述

INNER JOIN内连接关键字

INNER JOIN关键字选择在两个表中具有匹配值的记录。
语法:

SELECT column\_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

画个图理解:
在这里插入图片描述
假设我们还是有order表
在这里插入图片描述
customer表
在这里插入图片描述
INNER JOIN 示例
选择所有包含客户信息的订单:

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

返回
在这里插入图片描述
JOIN 三张表
选择包含客户和发货人信息的所有订单

SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
FROM ((Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);

返回如下
在这里插入图片描述

LEFT JOIN 左连接 关键字

LEFT JOIN关键字返回左表 (table1) 中的所有记录,以及右表 (table2) 中的匹配记录。如果没有匹配项,则结果是右侧的 0 条记录。
左连接语法

SELECT column\_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

来个图就懂了
在这里插入图片描述
我们还是用customer表:
在这里插入图片描述
order表
在这里插入图片描述
LEFT JOIN 示例
选择所有客户,以及他们可能拥有的任何订单:

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerName;

返回如下
在这里插入图片描述

RIGHT JOIN右连接 关键字

语法

SELECT column\_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

上图就懂了
在这里插入图片描述
现在我们用到order表如下
在这里插入图片描述
还有个employee表
在这里插入图片描述
返回所有员工,以及他们可能下过的任何订单:

SELECT Orders.OrderID, Employees.LastName, Employees.FirstName
FROM Orders
RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
ORDER BY Orders.OrderID;

FULL OUTER JOIN 关键字

FULL OUTER JOIN和 FULL JOIN是一样的。
语法为:

SELECT column\_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name
WHERE condition;

来个图就懂了
在这里插入图片描述
我们假设还是以customer表
在这里插入图片描述
还有个order表
在这里插入图片描述
选择所有客户和所有订单:

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

返回如下
在这里插入图片描述

Self Join自连接 关键字

语法

SELECT column\_name(s)
FROM table1 T1, table1 T2
WHERE condition;

我们假设有custormer表
在这里插入图片描述
匹配来自同一城市的客户:

SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City
FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City
ORDER BY A.City;

返回如下
在这里插入图片描述

GROUP BY语句

该GROUP BY语句将具有相同值的行分组为汇总行,例如“查找每个国家/地区的客户数量”。
该GROUP BY语句通常与聚合函数 ( COUNT(), MAX(), MIN(), SUM(), AVG()) 一起使用, 以按一列或多列对结果集进行分组。
语法:

SELECT column\_name(s)
FROM table_name
WHERE condition
GROUP BY column\_name(s)
ORDER BY column\_name(s);

假设我们还是有customer这个表
在这里插入图片描述
列出了每个国家/地区的客户数量:

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;

列出了每个国家的客户数量,从高到低排序:

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;

HAVING 子句

语法:

SELECT column\_name(s)
FROM table_name
WHERE condition
GROUP BY column\_name(s)
HAVING condition
ORDER BY column\_name(s);

假设还是有custorm表如下
在这里插入图片描述
列出了每个国家/地区的客户数量。仅包括拥有超过 5 个客户的国家/地区:

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;

列出了每个国家的客户数量,从高到低排序(仅包括客户超过 5 个的国家):

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
ORDER BY COUNT(CustomerID) DESC;

EXISTS 运算符

EXISTS运算符用于测试子查询中是否存在任何记录。
EXISTS运算符返回true,如果子查询返回一个或多个记录。
语法

SELECT column\_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);

假设我们还是用到product表
在这里插入图片描述
suppiler表
在这里插入图片描述
例如:
返回 TRUE 并列出产品价格小于 20 的供应商:

SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.supplierID AND Price < 20);

返回如下
在这里插入图片描述
返回 TRUE 并列出产品价格等于 22 的供应商:

SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.supplierID AND Price = 22);

返回为:
在这里插入图片描述

注释

单行注释以–.
– 和行尾之间的任何文本都将被忽略(不会被执行)
例如:

--Select all:
SELECT \* FROM Customers;

又例如

SELECT \* FROM Customers -- WHERE City='Berlin';

多行注释/*以 /.
/
和 */ 之间的任何文本都将被忽略。
例如:

/\*Select all the columns
of all the records
in the Customers table:\*/
SELECT \* FROM Customers;



本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。


最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。


最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。


![](https://img-blog.csdnimg.cn/img_convert/311903982dea1d8a5d2c98fc271b5b41.jpeg)



### 学习路线图


 其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。


相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。


![](https://img-blog.csdnimg.cn/img_convert/1ddfaf7dc5879b1120e31fafa1ad4dc7.jpeg)


#### 网络安全工具箱


当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份**我自己整理的网络安全入门工具以及使用教程和实战。**


![](https://img-blog.csdnimg.cn/img_convert/bcd1787ce996787388468bb227d8f959.jpeg)


#### 项目实战


最后就是项目实战,这里带来的是**SRC资料&HW资料**,毕竟实战是检验真理的唯一标准嘛~


![](https://img-blog.csdnimg.cn/img_convert/35fc46df24091ce3c9a5032a9919b755.jpeg)


#### 面试题


归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618540462)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 27
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值