ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【MySQL】底子实战篇(2)—数据查询操作 [打印本页]

作者: 杀鸡焉用牛刀    时间: 2024-9-28 22:16
标题: 【MySQL】底子实战篇(2)—数据查询操作
媒介

数据查询是数据库管理系统应用的主要内容,也是用户对数据库最频仍、最常见的操作哀求。
数据查询可以根据用户提供的限定条件,从已存在的数据表中检索用户需要的数据。
MySQL利用SELECT语句既可以完成简单的单表查询、联合查询,也可以完成复杂的联接查询、子查询,从数据库中检索符适用户需求的数据,并将结果集以表格的形式返回给用户。

  
学习目标

   纯熟应用SELECT语句进行数据查询。
掌握应用SELECT语句进行分组聚合查询。
掌握应用SELECT语句多表联接查询和子查询。
可以或许应用SELECT语句进行嵌套查询
  单表查询

查询语句的根本用法

主要语法格式如下:
  1. SELECT 字段名1 [,字段名2.....]
  2. FROM 表名1    [,表名2.....]
  3. [WHERE 条件表达式]
  4. [GROUP BY 字段名列表[HAVING 条件表达式]]
  5. [ORDER BY 字段名[ASC|DESC]];
复制代码
GROUP BY 用于对查询结果进行分组
ORDER BY 用来指定查询结果集的排序方式 ,ASC代表升序排列|DESC代表降序排列
字段的别名

方法
一:字段名 AS 别名
二:字段名 别名
  1. SELECT name 姓名, id AS 学号
  2. FROM STUDENT;
复制代码
DISTINCT消除重复记录

如果查询结果中出现了重复的行,消除结果中重复的行,则利用DISTINCT关键字可达成此要求。
DISTINCT关键字要在SELECT关键字和第一个字段之间。
对于DISTINCT关键字来说,所有的空值NULL将被认为是重复的内容,当SELECT语句中包括DISTINCT关键字时,不论碰到多少个空值,在结果中只返回一个NULL。
WHERE子句指定查询条件


  1. SELECT 字段名1[,字段名2...]
  2. FROM 表名1[,表名2...]
  3. WHERE 条件表达式
复制代码
当条件表达式中出现数据类型为 CHAR、NCHAR、VARCHAR、NVARCHAR、text、datetime和smalldatetime的数据时,在引用时需要用单引号括起来。
比力运算符
= , > , < , >= , <= , <> , != , !> , !< , 可以让表中的值与指定值或表达式作比力。
逻辑运算符
逻辑运算符包括AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)。

字符串匹配运算符
在指定条件不是很明确的时间可以利用LIKE 运算符与指定的字符串进行匹配。其语法格式如下:
  1. 字段名 LIKE ‘指定字符串’;
复制代码
通配符和字符串比逊在单引号中。
通配符含义%代表恣意长度(0个或多个)的字符串-代表恣意1个字符
范围运算符
利用 BETWEEN AND 可以查询一个一连的范围
列表运算符
列表运算符主要用于在SQL查询中对一组值进行匹配。常见的列表运算符包括 IN 和 BETWEEN。它们可以或许使得查询更加轻便高效。

  1. sql
  2. SELECT * FROM Employees
  3. WHERE DepartmentID IN (1, 2, 3);
复制代码
在这个例子中,查询所有属于部门1、2或3的员工。利用 IN 运算符可以使查询更清晰,并淘汰重复代码。

  1. SELECT * FROM Orders
  2. WHERE OrderDate BETWEEN '2024-01-01' AND '2024-12-31';
复制代码
空值判断运算符

  1. sql
  2. SELECT * FROM Employees
  3. WHERE Email IS NULL;
复制代码

  1. sql
  2. SELECT * FROM Employees
  3. WHERE Email IS NOT NULL;
复制代码
在处理空值时,特别是在数据清算和完整性检查中,空值判断运算符是非常重要的工具。
统计查询


  1. SELECT COUNT(*) FROM Employees;
复制代码

  1. SELECT SUM(TotalAmount) FROM Orders;
复制代码
AVG 函数
AVG 函数用于计算均匀值。比方,计算员工的均匀薪资:
  1. sql
  2. SELECT AVG(Salary) FROM Employees;
复制代码

  1. SELECT MAX(Salary) AS HighestSalary, MIN(Salary) AS LowestSalary FROM Employees;
复制代码
多表查询

  1. SELECT Orders.OrderID, Customers.CustomerName
  2. FROM Orders
  3. INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
复制代码
– 左外连接示例
  1. SELECT Employees.EmployeeID, Orders.OrderID
  2. FROM Employees
  3. LEFT JOIN Orders ON Employees.EmployeeID = Orders.EmployeeID;
复制代码
  1. SELECT E1.EmployeeName AS Employee, E2.EmployeeName AS Manager
  2. FROM Employees E1
  3. LEFT JOIN Employees E2 ON E1.ManagerID = E2.EmployeeID;
复制代码
子查询


  1. sql
  2. SELECT * FROM Employees
  3. WHERE Salary > (SELECT AVG(Salary) FROM Employees);
复制代码

  1. SELECT DepartmentID, AVG(Salary) AS AverageSalary
  2. FROM (SELECT DepartmentID, Salary FROM Employees) AS DeptSalaries
  3. GROUP BY DepartmentID;
复制代码
联合查询


  1. sql
  2. SELECT EmployeeName FROM Employees WHERE DepartmentID = 1
  3. UNION
  4. SELECT EmployeeName FROM Employees WHERE DepartmentID = 2;
复制代码

  1. SELECT EmployeeName FROM Employees WHERE DepartmentID = 1
  2. UNION ALL
  3. SELECT EmployeeName FROM Employees WHERE DepartmentID = 2;
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4