首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
9.1 基本查询语句
9.2 单表查询
9.2.1 查询所有字段
9.2.2 查询指定字段
9.2.3 查询指定数据
9.2.4 带关键字IN的查询
9.2.5 带关键字BETWEEN AND的范围查询
9.2.6 带LIKE的字符匹配查询
9.2.7 用IS NULL关键字查询空值
9.2.8 带AND的多条件查询
9.2.9 带OR的多条件查询
9.2.10 用DISTINCT关键字去除结果中的重复行
9.2.11 用ORDER BY关键字对查询结果进行排序
9.2.12 用GROUP BY关键字分组查询
9.2.13 用LIMIT限制查询结果的数量
9.3 聚合函数查询
9.3.1 COUNT()统计函数
9.3.2 SUM()求和函数
9.3.3 AVG()平均数函数
9.3.4 MAX()最大值函数
9.3.5 MIN()最小值函数
9.4 连接查询
9.4.1 内连接查询
9.4.2 外连接查询
9.4.3 复合条件连接查询
9.5 子查询
9.5.1 带IN关键字的子查询
9.5.2 带比较运算符的子查询
9.5.3 带EXISTS关键字的子查询
9.5.4 带ANY关键字的子查询
9.5.5 带ALL关键字的子查询
9.6 合并查询结果
9.7 定义表和字段的别名
9.7.1 为表取别名
9.7.2 为字段取别名
9.8 使用正则表达式查询
9.8.1 匹配指定字符中的任意一个
9.8.2 使用“*”和“ ”来匹配多个字符
9.8.3 匹配以指定的字符开头和结束的记录
10.1 MySQL函数
10.2 数学函数
10.2.1 ABS(x)绝对值函数
10.2.2 FLOOR(x)向下取整函数
10.2.3 RAND()随机数函数
10.2.4 PI()圆周率函数
10.2.5 TRUNCATE(x,y)截断函数
10.2.6 ROUND(x)近似值函数和ROUND(x,y)四舍五入函数
10.2.7 SQRT(x)平方函数
10.3 字符串函数
10.3.1 INSERT(s1,x,len,s2)替换函数
10.3.2 UPPER(s)函数和UCASE(s)字母大写函数
10.3.3 LEFT(s,n)取左函数
10.3.4 RTRIM(s)去空格函数
10.3.5 SUBSTRING(s,n,len)截取函数
10.3.6 REVERSE(s)反转函数
10.3.7 FIELD(s,s1,s2,…,sn)位置函数
10.3.8 LOCATE(s1,s)、POSITION(s1 IN s)和INSTR(s,s1)3个位置函数
10.4 日期和时间函数
10.4.1 CURDATE()和CURRENT_DATE()当前日期函数
10.4.2 CURTIME()和CURRENT_TIME()当前时间函数
10.4.3 NOW()当前日期和时间函数
10.4.4 DATEDIFF(d1,d2)间隔天数函数
10.4.5 ADDDATE(d,n)日期计算函数
10.4.6 ADDDATE(d,INTERVAL expr type)日期时间计算函数
10.4.7 SUBDATE(d,n)日期计算函数
10.5 条件判断函数
10.6 系统信息函数
10.6.1 获取MySQL版本号、连接数和数据库名的函数
10.6.2 获取用户名的函数
10.6.3 获取字符串的字符集和排序方式的函数
10.7.1 格式化函数FORMAT(x,n)
10.7.2 改变字符集的函数
10.7.3 改变字段数据类型的函数
当前位置:
首页>>
技术小册>>
MySQL从入门到精通(三)
小册名称:MySQL从入门到精通(三)
### 9.2.3 查询指定数据 在MySQL数据库的操作中,查询(SELECT)是最为基础且频繁使用的操作之一。它能够根据用户的需求,从数据库中检索出符合特定条件的数据记录。本章“9.2.3 查询指定数据”将深入探讨如何在MySQL中精确地查询所需的数据,包括基本查询语句的构成、条件筛选、排序与分页、使用聚合函数以及子查询等高级特性。 #### 9.2.3.1 基本查询语句 MySQL中的基本查询语句以`SELECT`关键字开始,后跟列名(或星号`*`表示所有列),然后是`FROM`子句指定从哪个表中检索数据。一个简单的查询示例如下: ```sql SELECT column1, column2 FROM table_name; ``` 这条语句会返回`table_name`表中`column1`和`column2`两列的所有数据。 #### 9.2.3.2 条件筛选 为了只获取满足特定条件的数据,可以使用`WHERE`子句进行条件筛选。`WHERE`子句后跟一个或多个条件表达式,这些表达式决定了哪些行应该被包含在结果集中。 - **比较运算符**:如`=`、`<>`(不等于)、`>`、`<`、`>=`、`<=`。 - **逻辑运算符**:如`AND`、`OR`、`NOT`,用于组合多个条件。 示例: ```sql SELECT * FROM employees WHERE department_id = 3 AND salary > 5000; ``` 这个查询返回`employees`表中,部门ID为3且薪资超过5000的所有员工信息。 #### 9.2.3.3 排序数据 为了对查询结果进行排序,可以使用`ORDER BY`子句。它允许你指定一个或多个列,并可选地指定排序方向(升序`ASC`或降序`DESC`,默认为升序)。 示例: ```sql SELECT * FROM orders ORDER BY order_date DESC, order_id ASC; ``` 这个查询先按`order_date`降序排列订单,如果`order_date`相同,则按`order_id`升序排列。 #### 9.2.3.4 分页查询 当处理大量数据时,通常不需要一次性检索所有数据。相反,使用分页可以只显示用户当前请求的数据部分。MySQL提供了`LIMIT`子句来实现分页功能。 基本语法: ```sql SELECT column_names FROM table_name ORDER BY column_name LIMIT offset, count; ``` - `offset`:从哪一行开始(第一行是0)。 - `count`:返回的记录数。 示例:获取第二页数据,每页10条记录: ```sql SELECT * FROM employees ORDER BY employee_id LIMIT 10, 10; ``` 这将跳过前10条记录,从第11条开始返回接下来的10条记录。 #### 9.2.3.5 使用聚合函数 聚合函数允许对一组值执行计算,并返回单个值。常见的聚合函数包括`COUNT()`(计数)、`SUM()`(求和)、`AVG()`(平均值)、`MAX()`(最大值)、`MIN()`(最小值)等。 示例:计算每个部门的员工数: ```sql SELECT department_id, COUNT(*) AS employee_count FROM employees GROUP BY department_id; ``` 这里,`GROUP BY`子句根据`department_id`将结果集分组,`COUNT(*)`计算每个分组中的行数。 #### 9.2.3.6 子查询 子查询是嵌套在其他查询中的查询。它们可以在`SELECT`、`FROM`、`WHERE`或`HAVING`子句中使用,提供了执行复杂查询的强大能力。 - **在`WHERE`子句中使用子查询**: 示例:查找薪资高于公司平均薪资的员工: ```sql SELECT * FROM employees WHERE salary > ( SELECT AVG(salary) FROM employees ); ``` - **在`FROM`子句中使用子查询**(子查询作为临时表): 示例:查询每个部门薪资最高的员工: ```sql SELECT d.department_name, e.* FROM ( SELECT department_id, MAX(salary) AS max_salary FROM employees GROUP BY department_id ) AS max_salaries JOIN employees e ON max_salaries.department_id = e.department_id AND max_salaries.max_salary = e.salary JOIN departments d ON e.department_id = d.department_id; ``` 这个查询首先找出每个部门的最高薪资,然后通过内连接`JOIN`操作找到对应的员工及其所属部门名称。 #### 9.2.3.7 小结 在MySQL中查询指定数据是数据库操作的核心之一。通过熟练使用`SELECT`语句、条件筛选、排序、分页、聚合函数以及子查询等技巧,可以高效地检索和分析数据库中的数据。本章节详细介绍了这些概念及其应用,帮助读者从基础入门到精通MySQL的查询操作。掌握这些技能对于进行数据分析、报表生成以及应用开发中的数据库交互至关重要。随着实践的不断深入,你将能够更加灵活地构建复杂且高效的查询语句,以满足各种业务需求。
上一篇:
9.2.2 查询指定字段
下一篇:
9.2.4 带关键字IN的查询
该分类下的相关小册推荐:
MySQL从入门到精通(二)
MySQL 实战 45 讲
细说MySQL(零基础到高级应用)
SQL零基础到熟练应用(增删改查)
MySQL从入门到精通(四)
MySQL从入门到精通(五)
MySQL8.0入门与实践
MySQL必会核心问题
MySQL从入门到精通(一)