1、范围查询-between and
格式: where 列名 between minvalue and maxvalue 闭区间[minvalue,maxvalue]
(1)选择id,商品品名称,批发价在3000-4000之间的商品
select id, product_name,sale_price*cutoff from t_product
where sale_price*cutoff between 3000 and 4000
(2)选择id,商品名称,批发价不在3000-4000之间的商品
select id, product_name,sale_price*cutoff from t_product
where sale_price*cutoff not between 3000 and 4000
select id, product_name,sale_price*cutoff from t_product
where not sale_price*cutoff between 3000 and 4000
select id, product_name,sale_price*cutoff from t_product
where !(sale_price*cutoff between 3000 and 4000)
2、集合查询-in
格式: where 列名 in (值1,值2....)
where 列名 not in (值1,值2....)
(1)选择id,商品名称,类型编号为2,4的所有商品
select id, product_name,category_id from t_product where category_id in (2,4)
(2)选择id,商品名称,类型编号不为2,4的所有商品
select id, product_name,category_id from t_product where category_id not in (2,4)
3、空值查询-is null
is null:判断列的值是否为空。
格式: where 列名 is null
select * from t_product where product_name = null {查询为null的不能使用 等号= 赋值查询}
select * from t_product where product_name is null
3-1、非空值查询-is not null
格式: where 列名 is not null
select * from t_product where product_name is not null {查询product_name不为null的}
4、模糊查询-like
%通配符:代表任意零或多个字符。
_通配符:代表任意一个字符。
查询id,商品名称,商品名称匹配 '%黑米MI_'
select id, product_name from t_product where product_name like '%黑米MI_'
查询id,商品名称,商品名称匹配 '%米M%'
select id, product_name from t_product where product_name like '%米M%'
查询id,商品名称,类型编号,零售价大于等于2000并且商品名称匹配'黑米M%'
select id, product_name,category_id ,sale_price from t_product
where sale_price >=2000 and product_name like '黑米M%'
5、查询结果排序
使用 order by 子句将记录排序
asc : 升序,缺省
desc: 降序
order by 子句出现在SELECT语句的最后
select语句执行顺序:
先执行from--->接着执行where--->再执行select--->最后执行order by
格式:
select
from table_name
wherr 条件
order by 列名1 [ASC/DESC],列名2 [ASC/DESC]...;
【order by后面可接多个列名,即先按列名1排序后,再将(列名1相同的数据)再按列名2排序】
(1)查询所有商品按照类型编号排序
select * from t_product order by category_id asc
(2)查询所有商品按照类型编号category_id排序、再按照折扣cutoff排序
select * from t_product order by category_id asc,cutoff asc
{order by后接了两个列名表示:先将数据按category_id升序排序,此时category_id是有重复的值的,这些重复的值是没有按照什么规则排序的,
故此时加上列名2-cutoff,就将ategory_id这些重复的值按照列名2-cutoff再排序}
order_by.png
(3)查询所有商品并按照批发价排序(加上别名)
select id,product_name,sale_price*cutoff from t_product order by sale_price*cutoff desc
select id,product_name,sale_price*cutoff as pfj from t_product order by pfj desc
(4)查询类型为2并按照批发价排序(加上别名)
select id,product_name,category_id,sale_price*cutoff from t_product where category_id=2 order by sale_price*cutoff
select id,product_name,category_id,sale_price*cutoff as pfj from t_product where category_id=2 order by pfj
注意:尽量不要使用中文的别名排序。{因为order by是在select之后执行的,所以它可以使用别名}