收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
SELECT * FROM Customers WHERE City LIKE 's%';
从Customers数据库中查找所有在Paris和London的用户
SELECT * FROM Customers WHERE City IN ('Paris','London');
以上便是对所有符号的演示。
我们再来一些**练习**加以巩固(我们用到的是上面的customers)
1-选择City列值为“Berlin”的所有记录。
SELECT * FROM Customers WHERE City='Berlin';
2-使用NOT关键字选择City不是"Berlin"的所有记录。
SELECT * FROM Customers WHERE NOT City ='Berlin';
3-选择CustomerID列值为 32 的所有记录。
SELECT * FROM Customers WHERE CustomerID =12;
### AND、OR 和 NOT 运算符
该WHERE子句可以结合 AND,OR和 NOT操作。在AND与OR操作用于基于多个条件筛选记录:
该AND操作显示一个记录,如果所有条件满足 AND 为真。
所述OR操作显示一个记录,如果任何一个条件满足OR为真。
该NOT操作显示,如果条件(S)是不正确的记录。
**AND 语法**
SELECT column1, column2, ... FROM table_name WHERE condition1 AND condition2 AND condition3 ...;
**OR语法**
SELECT column1, column2, ... FROM table_name WHERE condition1 OR condition2 OR condition3 ...;
**NOT语法**
SELECT column1, column2, ... FROM table_name WHERE NOT condition;
我们还是假设有如下“Customers”表:

**AND 示例**
以下 SQL 语句从Customers中选择国家为"Germany"且city为"Berlin"的所有字段:
SELECT * FROM Customers WHERE Country='Germany' AND City='Berlin';
**OR 示例**
选取所有"Customers" 中city为"Berlin" OR “München”:
SELECT * FROM Customers WHERE City='Berlin' OR City='München';
**NOT 示例**
从 “Customers” 选取country不是 "Germany"的字段:
SELECT * FROM Customers WHERE NOT Country='Germany';
**结合AND, OR and NOT**
从"Customers" 中选择国家为"Germany"”且城市必须为"Berlin" OR "München"的所有字段(使用括号形成复杂的表达式):
SELECT * FROM Customers WHERE Country='Germany' AND (City='Berlin' OR City='München');
从 “Customers"中选择国家不是“Germany” 也不是"USA":的所有字段:
SELECT * FROM Customers WHERE NOT Country='Germany' AND NOT Country='USA';
**练习**
选择 City 列值为 ‘Berlin’ 且 PostalCode 列值为 12209 的所有记录。
SELECT * FROM Customers WHERE City = 'Berlin' AND PostalCode= 12209;
### ORDER BY 关键字
该ORDER BY关键字用于按升序或降序对结果集进行排序。ORDER BY默认情况下,关键字按升序对记录进行排序。要按降序对记录进行排序,请使用 DESC关键字。
**ORDER BY 语法**
SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASC|DESC;
我们还是假设有这个“Customers”表如下:

**ORDER BY 示例**
从“Customers”表中选择所有客户,按“Country”列排序:
SELECT * FROM Customers ORDER BY Country;
**ORDER BY DESC 示例**
从“Customers”表中选择所有客户,按“Country”列按 DESCENDING 排序:
SELECT * FROM Customers ORDER BY Country DESC;
**ORDER BY 多列示例**
从“Customers”表中选择所有客户,按“Country”和“CustomerName”列排序。这意味着它按国家/地区排序,但如果某些行具有相同的国家/地区,则按 CustomerName 排序:
SELECT * FROM Customers ORDER BY Country, CustomerName;
从“Customers”表中选择所有客户,按“Country”升序和“CustomerName”列降序排序:
SELECT * FROM Customers ORDER BY Country ASC, CustomerName DESC;
**练习**
从Customers表中选择所有记录,按城市列的字母顺序对结果进行排序。
SELECT * FROM Customers ORDER BY City;
### INSERT INTO 插入语句
该INSERT INTO语句用于在表中插入新记录。
**INSERT语法**
可以INSERT INTO 用两种方式编写语句:
1- 指定要插入的列名和值:
INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
2-如果要为表的所有列添加值,则无需在 SQL 查询中指定列名。但是,请确保值的顺序与表中的列顺序相同。在这里, INSERT INTO语法如下:
INSERT INTO table_name VALUES (value1, value2, value3, ...);
我们假设还是有着样一个Customers表:

**INSERT示例**
以下 SQL 语句在“Customers”表中插入一条新记录:
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country) VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');
运行显示如下:

您是否注意到我们没有在 CustomerID 字段中插入任何数字?CustomerID 列是一个自动递增字段,将在新记录插入表中时自动生成。
**仅在指定列中插入数据**
下面的 SQL 语句将插入一条新记录,但只在“CustomerName”、“City”和“Country”列中插入数据(CustomerID 会自动更新):
INSERT INTO Customers (CustomerName, City, Country) VALUES ('Cardinal', 'Stavanger', 'Norway');
运行后将会显示如下:

**练习:**
表中插入一条新记录。
INSERT INTO Customers (
CustomerName, Address, City, PostalCode, Country )
VALUES
(
'Hekkan Burger', 'Gateveien 15', 'Sandnes', '4306', 'Norway' ) ;
### NULL 空值
具有 NULL 值的字段是没有值的字段。如果表中的字段是可选的,则可以在不向该字段添加值的情况下插入新记录或更新记录。然后,该字段将保存为 NULL 值。
**注意**: NULL 值不同于零值或包含空格的字段。具有 NULL 值的字段是在创建记录期间留空的字段!
**如何测试 NULL 值?**
无法使用比较运算符(例如 =、< 或 <>)测试 NULL 值。我们将不得不改用IS NULL和 IS NOT NULL运算符。
**IS NULL 语法**
SELECT column_names FROM table_name WHERE column_name IS NULL;
**IS NOT NULL 语法**
SELECT column_names FROM table_name WHERE column_name IS NOT NULL;
我们还是以”Customers”表为例子:

**IS NULL 运算符**
列出了 "Address"字段中具有 NULL 值的所有客户:
SELECT CustomerName, ContactName, Address FROM Customers WHERE Address IS NULL;
**提示**:始终使用 IS NULL 来查找 NULL 值。
**IS NOT NULL 运算符**
该IS NOT NULL运算符用于测试非空值(NOT NULL 值)。
列出了在 "Address”字段中具有值的所有客户:
SELECT CustomerName, ContactName, Address FROM Customers WHERE Address IS NOT NULL;
**练习:**
从列为空的Customers位置选择所有记录PostalCode。
SELECT * FROM Customers WHERE PostalCode IS NULL;
### UPDATE更新语句
UPDATE语句用于修改表中的现有记录。
UPDATE **语法:**
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
**注意:** 更新表中的记录时要小心!注意 WHERE语句中的子句UPDATE。该WHERE子句指定应该更新哪些记录。如果省略该WHERE子句,表中的所有记录都将被更新!
我们还是以“Customers”表为例:

**更新表**
更新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;
**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**


**[如果你需要这些资料,可以戳这里获取](https://gitee.com/vip204888)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**
**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**