条件查询
WHERE子句
该语句可以实现按照一定的条件进行查询功能
语法
SELECT <字段列表>
FROM <表名>
WHERE <条件表达式>
以下是常见的比较运算符
运算符 | 说明 |
---|---|
= | 等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
!> | 不大于 |
!< | 不小于 |
<>或!= | 等于 |
使用比较与运算符限制查询结果
- 使用=查询数据
如果相同条件满足,将该记录显示
SELECT
*
FROM
goods
WHERE
id = 22;
- 使用>查询数据
大于所指定条件的数据
SELECT
id,
`name`,
views_count
FROM
goods
WHERE
views_count > 0
- 使用<查询数据
查询小于条件的数据,注意表中的数据必须小于所指定的条件。
SELECT
id,
`name`,
views_count
FROM
goods
WHERE
views_count < 16
-
=查询
SELECT
id,
`name`,
views_count
FROM
goods
WHERE
views_count >= 16
- <=查询
SELECT
id,
`name`,
views_count
FROM
goods
WHERE
views_count <= 16
- !=查询
SELECT
id,
`name`,
original_price
FROM
goods
WHERE
original_price != 2000
范围查询
范围查询是用来查询给定的两个值之间的数据,通常使用BETWEEN …… AND 和 NOT …… BETWEEN …… AND来指定范围条件
在使用BETWEEN …… AND查询条件的时候,指定的第一个值必须小于第二个值,因为BETWEEN …… AND的实质是查询条件大于或者等于第一个值,并且小于等于第二个值的简写形式,等价于比较运算符">=....<="
- 查询两个值之间的数据
SELECT
id AS '商品id',
`name` AS '商品名称',
original_price AS '价格'
FROM
goods
WHERE
original_price BETWEEN 1000
AND 2000;
- 查询两个日期之间的数据
查询两个日期之间的数据也可以使用BETWEEN来实现,可以使用日期类型的数据作为查询条件
SELECT
id,
`name`,
addtime
FROM
goods
WHERE
addtime BETWEEN '2016-07-20 09:58:53'
AND '2016-07-20 10:58:53';
- 使用日期函数
通过GETDATE()函数和DATEADD()函数,获取当天的日期和前一天的日期,在通过使用BETWEEN……AND来查询在这两个日期之间的数据
SELECT GETDATE();
- 查询不在两个数之间的数据
可以使用NOT BETWEEN…… AND 来实现
SELECT
id,
`name`,
original_price
FROM
goods
WHERE
original_price NOT BETWEEN 2000
AND 3000;
- 日期时间查询
5.1 转换日期格式
有时候数据库中表存储的日期可能不是规范的日期形式,为了方便用户查看,需要将日期转换为四位数字的年份,同时改变日期格式,如将‘02.09.02’转换为‘2002-09-02’的格式
-
- 长日期格式转换为短日期的格式
CONVERT(char(10),getdat(),120) 将日期转换成yyyy-mm-dd格式时间,其中120是格式代码,char(10)是指取出前10位字符
-
- 将日期中的‘-’转换为'/'
REPLACE()函数寻找列值中的'-',将其转换为'/'
-- 查询所有图书信息
SELECT id ,`name`,current_price,addtime FROM goods ORDER BY addtime;
-- 把长日期格式数据转换为短日期格式数据
SELECT id,`name`,current_price,CONVERT(char(10),addtime,120) AS '录入日期' FROM goods ORDER BY id;
-- 将日期的格式中的'-'转换为'/'
SELECT id,`name`,`REPLACE`(CONVERT(char(10),addtime,120,'-','/') AS '录入日期' FROM goods ORDER BY id;
5.2 计算两个日期的时间间隔天数
使用DATEDIFF()函数计算日期间隔天数
语法(MYSQL)
DATEDIFF(expr1,expr2)
参数说明:
该函数返回其实时间expr1和结束时间expr2之间的天数,expr1和expr2为日期或者date-and-time表达式,计算中只取这些值的日期部分
SELECT
书号,书名, CONVERT (
CHAR (10),
出版日期,120
) 出版日期, CONVERT (
CHAR (10),
下一次出版日期,120
) 出版日期, DATEDIFF(
DAY,
出版日期,下一次出版日期
) 两次出版相差的天数
FROM
goods
5.3 按照指定日期查询数据
-
- DAY()函数
返回代表指定的日期的天日期部分的整数
DAY(date)
参数说明:
date: 类型为datetime 或者smalldatetime的表达式
DAY()函数返回值的数据类型为int
SELECT DAY(0) AS MY_DAY1,DAY('02/03/2018') AS MY_DAY2
-
- MONTH()函数
实现按月查询
SELECT "month number" = MONTH('03.11.2017')
-
- YEAR()函数
返回表示指定日期中的年份的整数
SELECT
YEAR(-1) AS MY_YEAR1,
YEAR(3) AS MY_YEAR2,
YEAR('08/13/2018') AS MY_YEAR3;
举例 查询日期的月和年
SELECT
id,
`name`,
is_sale,
addtime
FROM
goods
WHERE
MONTH (addtime) = 7
AND YEAR (addtime) = 2016
AND is_sale = 1;