SQLServer模糊查询:BETWEEN用法解析

需积分: 34 1 下载量 16 浏览量 更新于2024-07-12 收藏 14.58MB PPT 举报
"这篇资源是关于SQL入门教程的,重点介绍了如何使用BETWEEN进行模糊查询。教程通过实例展示了如何筛选单价在特定范围内的图书信息,并且提到了BETWEEN语句在日期范围查询中的应用。同时,该教程是SQLServer相关课程的一部分,课程涵盖了SQLServer2005的安装、数据库管理、数据表管理等多个方面,旨在全面教授数据库的基础知识和操作技能。" 在SQL中,BETWEEN是一个非常实用的条件操作符,常用于筛选处于两个值之间的记录。在这个例子中,我们看到如何使用BETWEEN来查询单价在20到99元之间的图书信息。查询语句`WHERE UnitPrice Between 20 and 99`会返回所有单价在这两个数值之间(包含20和99)的书籍记录。需要注意的是,BETWEEN语句中的起始表达式和结束表达式的顺序不能颠倒,即总是从较小的值开始到较大的值结束。 BETWEEN不仅适用于数值类型的比较,还可以用于日期类型的查询。例如,`WHERE Birthday Between '1960-01-01' and '1982-01-01'`将找出所有在1960年1月1日到1982年1月1日之间出生的作者。日期格式通常遵循'YYYY-MM-DD'的标准,确保日期字符串符合数据库系统的日期格式要求。 这个教程所在的课程结构严谨,包括了SQLServer的安装、数据库管理、数据表操作、视图和索引、T-SQL编程、事务处理、游标、存储过程、触发器、权限与安全以及数据库设计等多个核心主题。这样的安排旨在确保学生能够全面理解数据库的各个方面,从基础操作到高级功能,为实际工作中的数据库管理打下坚实基础。 数据库在日常生活和工作中扮演着至关重要的角色,无论是在超市结账、火车售票、通话记录查询还是网络游戏数据存储等方面,都离不开数据库的支持。数据库系统提供了数据的高效存储、检索和安全性,而数据库管理系统则负责管理和维护这些数据,保证数据的完整性和安全性。数据库管理员是这一过程中的关键角色,他们负责确保数据库的正常运行和数据的准确无误。 通过学习这个教程,学生不仅可以掌握BETWEEN语句的用法,还能深入理解数据库的基本概念,如数据、数据库、数据库管理系统,以及数据库管理员的角色和数据库系统的工作原理。这些知识对于从事任何与数据库相关的工作都是必不可少的。

优化代码SELECT SUM(IF(order_date BETWEEN '2022-10-31' AND '2022-11-11' AND is_new_customer = 1, 1, 0)) AS new_customer_count, SUM(IF(order_date BETWEEN '2022-10-31' AND '2022-11-11' AND is_new_customer = 0, 1, 0)) AS old_customer_count, SUM(IF(order_date BETWEEN '2022-10-31' AND '2022-11-11' AND is_new_customer = 1, payment_amount, 0)) AS new_customer_payment_amount, SUM(IF(order_date BETWEEN '2022-10-31' AND '2022-11-11' AND is_new_customer = 0, payment_amount, 0)) AS old_customer_payment_amount, SUM(IF(order_date BETWEEN '2022-10-31' AND '2022-11-11' AND category = 'A', 1, 0)) AS category_A_customer_count, SUM(IF(order_date BETWEEN '2022-10-31' AND '2022-11-11' AND category = 'A', payment_amount, 0)) AS category_A_payment_amount, SUM(IF(order_date BETWEEN '2022-10-31' AND '2022-11-11' AND category = 'B', 1, 0)) AS category_B_customer_count, SUM(IF(order_date BETWEEN '2022-10-31' AND '2022-11-11' AND category = 'B', payment_amount, 0)) AS category_B_payment_amount, SUM(IF(order_date BETWEEN '2022-10-31' AND '2022-11-11' AND product_id = 'P1', 1, 0)) AS product_P1_customer_count, SUM(IF(order_date BETWEEN '2022-10-31' AND '2022-11-11' AND product_id = 'P1', payment_amount, 0)) AS product_P1_payment_amount FROM orders o LEFT JOIN (SELECT DISTINCT order_date FROM orders WHERE order_date BETWEEN '2022-10-31' AND '2022-11-11') d1 ON o.order_date = d1.order_date LEFT JOIN (SELECT DISTINCT order_date FROM orders WHERE order_date BETWEEN '2021-10-31' AND '2022-10-30' AND order_date NOT IN (SELECT order_date FROM orders WHERE order_date BETWEEN '2022-10-31' AND '2022-11-11')) d2 ON o.order_date = d2.order_date LEFT JOIN (SELECT DISTINCT order_date FROM orders WHERE order_date BETWEEN '2021-11-12' AND '2022-10-30' AND order_date IN (SELECT order_date FROM orders WHERE order_date BETWEEN '2022-10-31' AND '2022-11-11')) d3 ON o.order_date = d3.order_date WHERE d1.order_date IS NOT NULL OR d2.order_date IS NOT NULL OR d3.order_date IS NOT NULL;

2023-05-25 上传

优化代码SELECT SUM(CASE WHEN order_date BETWEEN '2022-10-31' AND '2022-11-11' AND is_new_customer = 1 THEN 1 ELSE 0 END) AS new_customer_count, SUM(CASE WHEN order_date BETWEEN '2022-10-31' AND '2022-11-11' AND is_new_customer = 0 THEN 1 ELSE 0 END) AS old_customer_count, SUM(CASE WHEN order_date BETWEEN '2022-10-31' AND '2022-11-11' AND is_new_customer = 1 THEN payment_amount ELSE 0 END) AS new_customer_payment_amount, SUM(CASE WHEN order_date BETWEEN '2022-10-31' AND '2022-11-11' AND is_new_customer = 0 THEN payment_amount ELSE 0 END) AS old_customer_payment_amount, SUM(CASE WHEN order_date BETWEEN '2022-10-31' AND '2022-11-11' THEN CASE WHEN category = 'A' THEN 1 ELSE 0 END ELSE 0 END) AS category_A_customer_count, SUM(CASE WHEN order_date BETWEEN '2022-10-31' AND '2022-11-11' THEN CASE WHEN category = 'A' THEN payment_amount ELSE 0 END ELSE 0 END) AS category_A_payment_amount, SUM(CASE WHEN order_date BETWEEN '2022-10-31' AND '2022-11-11' THEN CASE WHEN category = 'B' THEN 1 ELSE 0 END ELSE 0 END) AS category_B_customer_count, SUM(CASE WHEN order_date BETWEEN '2022-10-31' AND '2022-11-11' THEN CASE WHEN category = 'B' THEN payment_amount ELSE 0 END ELSE 0 END) AS category_B_payment_amount, SUM(CASE WHEN order_date BETWEEN '2022-10-31' AND '2022-11-11' THEN CASE WHEN product_id = 'P1' THEN 1 ELSE 0 END ELSE 0 END) AS product_P1_customer_count, SUM(CASE WHEN order_date BETWEEN '2022-10-31' AND '2022-11-11' THEN CASE WHEN product_id = 'P1' THEN payment_amount ELSE 0 END ELSE 0 END) AS product_P1_payment_amount FROM orders WHERE (order_date BETWEEN '2022-10-31' AND '2022-11-11') OR (order_date BETWEEN '2021-10-31' AND '2022-10-30' AND order_date NOT IN (SELECT order_date FROM orders WHERE order_date BETWEEN '2022-10-31' AND '2022-11-11')) OR (order_date BETWEEN '2021-11-12' AND '2022-10-30' AND order_date IN (SELECT order_date FROM orders WHERE order_date BETWEEN '2022-10-31' AND '2022-11-11'))

2023-05-25 上传