首页
技术小册
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.8 带AND的多条件查询 在数据库查询中,经常需要根据多个条件来筛选数据,以确保查询结果既精确又符合业务需求。MySQL中的`AND`关键字正是用来实现这种多条件联合查询的强大工具。本章节将深入探讨`AND`操作符在SQL查询中的使用,包括其基本语法、应用场景、性能优化以及结合其他SQL功能的复杂查询示例。 #### 9.2.8.1 基本语法 在SQL查询中,`AND`操作符用于连接两个或多个条件,只有当所有条件都为真(TRUE)时,查询才会返回结果。基本语法如下: ```sql SELECT column1, column2, ... FROM table_name WHERE condition1 AND condition2 AND ... AND conditionN; ``` 这里,`column1, column2, ...`是你希望从`table_name`表中检索的列名,而`condition1, condition2, ..., conditionN`是应用到这些列上的条件,它们之间通过`AND`连接。 #### 9.2.8.2 应用场景 `AND`操作符在多条件查询中非常有用,适用于各种需要精确匹配多个条件的场景。以下是一些常见的应用场景: 1. **用户信息筛选**:假设有一个用户表(users),包含用户名(username)、年龄(age)、性别(gender)等字段,你可以使用`AND`来筛选出特定年龄段和性别的用户。 ```sql SELECT * FROM users WHERE age BETWEEN 20 AND 30 AND gender = 'male'; ``` 2. **订单筛选**:在订单管理系统中,你可能需要根据订单状态(status)和订单金额(amount)来筛选订单。 ```sql SELECT * FROM orders WHERE status = 'shipped' AND amount > 1000; ``` 3. **产品库存查询**:在电商系统中,你可能需要查询库存量(stock)大于某个值且处于上架状态(is_available)的产品。 ```sql SELECT * FROM products WHERE stock > 10 AND is_available = 1; ``` #### 9.2.8.3 性能优化 虽然`AND`操作符非常强大,但在处理大量数据时,不合理的查询条件可能会导致查询性能下降。以下是一些优化`AND`查询性能的建议: 1. **索引优化**:确保查询中涉及的列都建立了适当的索引。MySQL可以利用索引来加速查询过程,特别是当查询条件中的列被频繁搜索时。 2. **条件顺序**:虽然MySQL查询优化器会尝试重新排列查询条件以优化性能,但在某些情况下,手动调整条件的顺序可能会有所帮助。通常,将过滤掉最多行数的条件放在前面是个好习惯。 3. **避免在`WHERE`子句中使用函数**:直接在`WHERE`子句中对列使用函数会阻止MySQL使用索引,从而导致查询性能下降。 4. **使用合适的数据类型**:确保列的数据类型与查询中使用的数据类型相匹配,以避免不必要的类型转换开销。 5. **分析查询计划**:使用`EXPLAIN`或`EXPLAIN ANALYZE`(MySQL 8.0+)来分析查询的执行计划,了解MySQL是如何处理你的查询的,并根据需要调整查询或索引。 #### 9.2.8.4 结合其他SQL功能的复杂查询 `AND`操作符经常与其他SQL功能结合使用,以实现更复杂的查询逻辑。以下是一些示例: 1. **与`OR`结合使用**:虽然`AND`和`OR`在逻辑上是相反的,但它们可以在同一个查询中组合使用,以实现更灵活的查询条件。 ```sql SELECT * FROM users WHERE (age > 30 AND gender = 'male') OR (age < 20 AND gender = 'female'); ``` 2. **与`IN`操作符结合**:当需要匹配列中的多个值时,`IN`操作符可以与`AND`结合使用。 ```sql SELECT * FROM products WHERE category_id IN (1, 2, 3) AND is_available = 1; ``` 3. **与`LIKE`操作符结合**:在需要执行模糊匹配时,`LIKE`操作符可以与`AND`结合使用。 ```sql SELECT * FROM articles WHERE title LIKE '%MySQL%' AND publish_date > '2023-01-01'; ``` 4. **与子查询结合**:`AND`还可以与子查询结合,以实现基于查询结果的进一步筛选。 ```sql SELECT * FROM orders WHERE customer_id IN (SELECT id FROM customers WHERE city = 'New York') AND amount > 1000; ``` #### 9.2.8.5 小结 通过本章节的学习,你应该对MySQL中的`AND`操作符有了更深入的理解,包括其基本语法、应用场景、性能优化策略以及与其他SQL功能的结合使用。`AND`操作符是实现多条件查询的关键,掌握其使用方法对于编写高效、准确的数据库查询至关重要。在未来的数据库设计和查询编写中,请记得灵活运用`AND`操作符,以满足你的业务需求。
上一篇:
9.2.7 用IS NULL关键字查询空值
下一篇:
9.2.9 带OR的多条件查询
该分类下的相关小册推荐:
MySQL 实战 45 讲
MySQL从入门到精通(四)
MySQL必会核心问题
细说MySQL(零基础到高级应用)
MySQL从入门到精通(五)
SQL零基础到熟练应用(增删改查)
MySQL从入门到精通(二)
MySQL从入门到精通(一)
MySQL8.0入门与实践