【MySQL】底子实战篇(2)—数据查询操作
媒介数据查询是数据库管理系统应用的主要内容,也是用户对数据库最频仍、最常见的操作哀求。
数据查询可以根据用户提供的限定条件,从已存在的数据表中检索用户需要的数据。
MySQL利用SELECT语句既可以完成简单的单表查询、联合查询,也可以完成复杂的联接查询、子查询,从数据库中检索符适用户需求的数据,并将结果集以表格的形式返回给用户。
学习目标
纯熟应用SELECT语句进行数据查询。
掌握应用SELECT语句进行分组聚合查询。
掌握应用SELECT语句多表联接查询和子查询。
可以或许应用SELECT语句进行嵌套查询
单表查询
查询语句的根本用法
主要语法格式如下:
SELECT 字段名1 [,字段名2.....]
FROM 表名1 [,表名2.....]
]
];
GROUP BY 用于对查询结果进行分组
ORDER BY 用来指定查询结果集的排序方式 ,ASC代表升序排列|DESC代表降序排列
字段的别名
方法
一:字段名 AS 别名
二:字段名 别名
SELECT name 姓名, id AS 学号
FROM STUDENT;
DISTINCT消除重复记录
如果查询结果中出现了重复的行,消除结果中重复的行,则利用DISTINCT关键字可达成此要求。
DISTINCT关键字要在SELECT关键字和第一个字段之间。
对于DISTINCT关键字来说,所有的空值NULL将被认为是重复的内容,当SELECT语句中包括DISTINCT关键字时,不论碰到多少个空值,在结果中只返回一个NULL。
WHERE子句指定查询条件
[*]语法
SELECT 字段名1[,字段名2...]
FROM 表名1[,表名2...]
WHERE 条件表达式
当条件表达式中出现数据类型为 CHAR、NCHAR、VARCHAR、NVARCHAR、text、datetime和smalldatetime的数据时,在引用时需要用单引号括起来。
比力运算符
= , > , < , >= , <= , <> , != , !> , !< , 可以让表中的值与指定值或表达式作比力。
逻辑运算符
逻辑运算符包括AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)。
[*] AND :连接两个条件表达式当且仅当两个条件表达式都成立时,组合起来的条件才成立。
[*] OR: 连接两个条件表达式,两个条件表达式之一成立,组合起来的条件就成立。
[*] NOT: 连接一个条件表达式,对给定条件取反。
[*] AND运算符的优先级高于OR运算符,因此当两个同时利用时,优先处理AND的表达式
字符串匹配运算符
在指定条件不是很明确的时间可以利用LIKE 运算符与指定的字符串进行匹配。其语法格式如下:
字段名 LIKE ‘指定字符串’;
通配符和字符串比逊在单引号中。
通配符含义%代表恣意长度(0个或多个)的字符串-代表恣意1个字符
[*]好比
LIKE ‘c%’ 其意为 匹配以字母c开头的字符串。
LIKE ‘%21’ 其意为 匹配以数字21结尾的字符串
LIKE ‘_c%’其意为 匹配以字母c为第二个字符的字符串。
范围运算符
利用 BETWEEN AND 可以查询一个一连的范围
列表运算符
列表运算符主要用于在SQL查询中对一组值进行匹配。常见的列表运算符包括 IN 和 BETWEEN。它们可以或许使得查询更加轻便高效。
[*]IN 运算符
IN 运算符用于检查某个值是否存在于一个指定的列表中。比方,如果我们想查询某个部门的所有员工,可以利用 IN 运算符来指定多个部门编号。
sql
SELECT * FROM Employees
WHERE DepartmentID IN (1, 2, 3);
在这个例子中,查询所有属于部门1、2或3的员工。利用 IN 运算符可以使查询更清晰,并淘汰重复代码。
[*]BETWEEN 运算符
BETWEEN 运算符用于选择在某个范围内的值。比方,查询某个时间段内的订单,可以利用 BETWEEN 运算符:
SELECT * FROM Orders
WHERE OrderDate BETWEEN '2024-01-01' AND '2024-12-31';
空值判断运算符
[*]IS NULL 运算符
IS NULL 运算符用于检测字段是否为NULL值。如果需要查找没有指定值的记录,可以利用此运算符。比方,查询所有没有邮箱地点的员工:
sql
SELECT * FROM Employees
WHERE Email IS NULL;
[*]IS NOT NULL 运算符
IS NOT NULL 运算符则用于查找那些字段有值的记录。比方,查询所有拥有邮箱地点的员工:
sql
SELECT * FROM Employees
WHERE Email IS NOT NULL;
在处理空值时,特别是在数据清算和完整性检查中,空值判断运算符是非常重要的工具。
统计查询
[*]COUNT 函数
COUNT 函数用于计算记录的数量。比方,计算员工总数:
SELECT COUNT(*) FROM Employees;
[*]SUM 函数
SUM 函数用于计算某一列的总和。比方,计算所有订单的总金额:
SELECT SUM(TotalAmount) FROM Orders;
AVG 函数
AVG 函数用于计算均匀值。比方,计算员工的均匀薪资:
sql
SELECT AVG(Salary) FROM Employees;
[*]MAX 和 MIN 函数
MAX 和 MIN 函数分别用于查找某一列的最大值和最小值。比方,查找最高薪资和最低薪资:
SELECT MAX(Salary) AS HighestSalary, MIN(Salary) AS LowestSalary FROM Employees;
多表查询
[*]内连接(INNER JOIN)
内连接用于返回两个表中匹配的记录。比方,查询每个订单及其对应的客户信息:
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
[*]外连接(OUTER JOIN)
外连接分为左外连接(LEFT JOIN)、右外连接(RIGHT JOIN)和全外连接(FULL OUTER JOIN)。左外连接返回左表的所有记录以及右表中符合条件的记录,而右外连接则相反。
– 左外连接示例
SELECT Employees.EmployeeID, Orders.OrderID
FROM Employees
LEFT JOIN Orders ON Employees.EmployeeID = Orders.EmployeeID;
[*]自连接
自连接是一种特殊的连接方式,用于从同一张表中提取数据。比方,查找所有员工及其司理的信息:
SELECT E1.EmployeeName AS Employee, E2.EmployeeName AS Manager
FROM Employees E1
LEFT JOIN Employees E2 ON E1.ManagerID = E2.EmployeeID;
子查询
[*]在 WHERE 子句中的子查询
比方,找出那些工资高于公司均匀工资的员工:
sql
SELECT * FROM Employees
WHERE Salary > (SELECT AVG(Salary) FROM Employees);
[*]在 FROM 子句中的子查询
子查询也可以作为假造表利用。比方,查询每个部门的均匀薪资:
SELECT DepartmentID, AVG(Salary) AS AverageSalary
FROM (SELECT DepartmentID, Salary FROM Employees) AS DeptSalaries
GROUP BY DepartmentID;
联合查询
[*]UNION
UNION 用于合并两个或多个查询的结果集,并去除重复记录。比方,查询来自差别部门的员工姓名:
sql
SELECT EmployeeName FROM Employees WHERE DepartmentID = 1
UNION
SELECT EmployeeName FROM Employees WHERE DepartmentID = 2;
[*]UNION ALL
UNION ALL 则会返回所有记录,包括重复的。比方:
SELECT EmployeeName FROM Employees WHERE DepartmentID = 1
UNION ALL
SELECT EmployeeName FROM Employees WHERE DepartmentID = 2;
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]