常见的 MySQL 查询
为了减少代码冗余,MySQL 查询通常只编写一次,然后包装到类函数中。本文列出了前 10 个 MySQL 查询。
本质上,查询是从数据库表或数据库集合中检索数据的请求。可以编写各种查询语言来处理从简单到复杂的问题。根据需要查找的精确数据,查询将过滤特定参数。它还可以进行计算并自动化数据管理操作。本文介绍了 10 个最常用的 MySQL 查询。
让我们利用这些测试数据库来了解有关每个查询如何工作的更多信息。
EmployeeID |
Name |
Title |
---|---|---|
001 |
Hardik |
CEO |
002 |
Naman |
CTO |
003 |
Aadish |
CFO |
EmployeeID |
Department |
Age |
---|---|---|
001 |
Finance |
19 |
002 |
Accounts |
18 |
003 |
ERP |
29 |
SELECT All
要从数据库检索并返回所有数据,请执行简单的 SELECT 查询。其语法可以表达如下;
SELECT * FROM Employees;
Result
001 |
Hardik |
CEO |
002 |
Naman |
CTO |
003 |
Aadish |
CFO |
使用"*"指定您希望提供所有信息,以便选择表中存在的每一列。其次,要从数据库表中获取数据,请使用 FROM 关键字。最后,为了正确完成请求,请务必记住以分号";"结束句子。
SELECT Column
如果您只是希望从特定列而不是所有列中获取数据,则应使用字段名称代替星号 (*)。
代码
SELECT Title FROM Employees;
Result
Title |
---|
CEO |
CTO |
CFO |
从数据库中选择多个列时,应使用逗号分隔。相同;
SELECT Title, Name FROM Employees;
WHERE 子句
在 SELECT 查询中使用 WHERE 子句时,将过滤数据记录,然后将符合条件的记录作为结果提取。
代码
SELECT * FROM Employees WHERE EmployeeID = 001;
Result
001
Hardik
CEO
AND 关键字可用于分隔 WHERE 子句中的多个条件。
CREATE TABLE
此查询可用于创建一个包含您选择的列的全新表。添加名称时,请务必包含每列的数据类型。
代码
CREATE TABLE EmployeeInfo ( EmployeeId INT, Department VARCHAR(25), Age NUMBER );
预期的表结果
EmployeeID |
Department |
Department |
NULL |
NULL |
NULL |
执行 CREATE TABLE 命令并用列标题填充时,上述查询会在数据库中生成一个"EmployeeInfo"表。由于我们没有输入任何特定值,因此每列基本上都会返回 NULL。这将我们引向下一个查询,INSERT INTO。
INSERT INTO 查询
向数据库中一行或多行全新条目添加值的最典型查询就是这个。我们可以向 EmployeeInfo 数据库添加一些示例数据;
代码
INSERT INTO EmployeeInfo (EmployeeID, Department,Age) VALUES (1002, HR, 46), (1003, Finance, 28), (1004, IT, 39);
表结果
EmployeeInfo
EmployeeID |
Department |
Age |
---|---|---|
1002 |
HR |
46 |
1003 |
Finance |
28 |
1004 |
IT |
39 |
构建 INSERT INTO 查询时,VALUES 命令必须是整个语句的一部分。
UPDATE QUERY
可以使用此术语更改表中的当前列。此查询将根据条件向表记录添加新数据。
EmployeeInfo
EmployeeID |
Department |
Age |
---|---|---|
1002 |
HR |
36 |
1003 |
Sales |
21 |
1004 |
IT |
39 |
代码
UPDATE EmployeeInfo SET Age = 22 WHERE EmployeeID = 1003
表结果
EmployeeInfo
EmployeeID |
Department |
Age |
---|---|---|
1002 |
HR |
36 |
1003 |
Sales |
22 |
1004 |
IT |
39 |
在 UPDATE 命令后使用术语 SET 始终指示要更改的列,然后准确指定要应用修改后的数据的位置。
DELETE FROM 查询
使用 DELETE FROM 命令根据一个或多个条件从数据库中删除记录。使用条件时,查询可以影响的行数会受到限制。
代码
DELETE FROM Employees WHERE Name ="Naman";
表结果
Employees
EmployeeID |
Name |
Title |
---|---|---|
1002 |
HR |
Executive |
1004 |
Aadish |
Software Engineer |
使用 WHERE 条件允许您精确指定要过滤和执行数据的位置,如本文前面所述。此查询的目标是删除所有包含名称"Naman"的员工表记录。
使用 GROUP BY、HAVING 子句
聚合函数几乎通常使用 GROUP BY 子句。通过使用此术语,结果集将按一个或多个列分组。
使用关键字 HAVING 过滤结果集。在理想情况下,将使用 WHERE 子句,但 HAVING 子句对聚合施加了限制。
EmployeeInfo
EmployeeID |
Department |
Age |
---|---|---|
1002 |
HR |
36 |
1003 |
Sales |
21 |
1004 |
IT |
39 |
代码
SELECT COUNT(Age), EmployeeID FROM EmployeeInfo GROUP BY EmployeeID HAVING COUNT(Age) > 21;
结果
COUNT(Age) |
EmployeeID |
---|---|
39 |
1004 |
36 |
1002 |
聚合函数(SUM、AVG 和 COUNT)
有三种广受欢迎的聚合函数,它们可以使用表中的数据进行分析或计算。
COUNT − 给出与给定列相对应的行数。
AVG − 返回列的中值。
SUM − 提供所选列中所有值的总和。
EmployeeInfo
EmployeeID |
Department |
Age |
---|---|---|
1002 |
HR |
36 |
1003 |
Sales |
21 |
1004 |
IT |
39 |
COUNT 代码
SELECT COUNT(Department) FROM EmployeeInfo;
结果
COUNT(Department)
3
AVG 代码
SELECT AVG(Age) FROM EmployeeInfo; Results:
AVG(Age)
32
SUM 代码
SELECT SUM(Age) FROM EmployeeInfo; Results:
SUM(Age)
96
连接
当表之间存在链接列时,使用连接将至少两个表中的行组合在一起。INNER、FULL 和 LEFT 连接是最常用的连接。
如果连接条件为真,则使用 INNER 连接来整合来自多个表的行。
当左表或右表的记录中有匹配项时,FULL 连接选项将返回所有行。
使用 LEFT 连接时,将检索左表中的所有行以及右表中的任何匹配记录。
Employees - 表 #1(左)
EmployeeID |
Name |
Title |
---|---|---|
1002 |
Hardik |
Executive |
1003 |
Naman |
Manager |
1004 |
Aadish |
Software Engineer |
EmployeeInfo – 表 #2(右)
EmployeeID |
Department |
Age |
---|---|---|
1002 |
HR |
36 |
1003 |
Sales |
21 |
1004 |
IT |
39 |
INNER JOIN 代码
SELECT Employees.Title, EmployeeInfo.Department FROM Employees INNER JOIN EmployeeInfo ON Employees.EmployeeID = Employees.EmployeeID;
结果
Title Department Executive HR Manager Sales Software Engineer IT
FULL JOIN 代码
SELECT * FROM Employees FULL JOIN EmployeeInfo ON Employees.EmployeeID = Employees.EmployeeID;
LEFT JOIN 代码
SELECT Employees.Name, EmployeeInfo.Age FROM Employees
LEFT JOIN EmployeeInfo ON Employees.EmployeeID = Employees.EmployeeID;
结果
Name |
Age |
Webster W. |
36 |
Lizzy S. |
21 |
Oliver T. |
39 |
鉴于"Employee"数据库中的"EmployeeID"列与"EmployeeInfo"表中的"EmployeeID"相关,因此可以说 EmployeeID 列充当了两个表之间的链接。在筛选较大的数据库时,连接可能变得具有挑战性,但也非常有益。
通过有效地使用同一种语言,用户和数据库能够成功地共享信息。上述问题是新手和专家最常使用的问题。据说编写 MySQL 查询是最常执行的数据库管理任务。
结论
在本部分中,我们了解了 SQL 中使用的不同查询,以减少代码冗余并使体验更加用户友好。下表总结了一些常用的查询
查询 |
语法 |
函数 |
---|---|---|
SELECT ALL |
SELECT * |
要从数据库检索并返回所有数据,请执行简单的 SELECT 查询 |
SELECT COLUMN |
SELECT Title |
如果您只希望从特定列而不是所有列中获取数据,则应使用字段名称。 |
WHERE 子句 |
WHERE EmployeeID = 001; |
在 SELECT 查询中使用 WHERE 子句时,将过滤数据记录,然后将提取符合条件的记录作为结果。 |
CREATE TABLE |
CREATE TABLE EmployeeInfo (XYZ); |
此查询可用于创建一个包含您选择的列的全新表。 |
INSERT INTO |
INSERT INTO EmployeeInfo (EmployeeID, Department,Age) VALUES (XYZ), (ABC); |
向数据库中一行或多行全新条目添加值的最典型查询是此查询。 |
UPDATE |
UPDATE EmployeeInfo SET M=XX WHERE EmployeeID=XXXX; |
此查询将根据条件向表记录添加新数据。 |