- 1、基本用法
- 2、查询模型
- 3、 where条件
- 4、查询案例
- 4-1、 查询主键id为32的商品
- 4-2、查询cate_id 不等于3的数据的(id,cate_id,goods_name)这个几个字段
- 4-3、 本店价格高于3000元的商品(goods_name,shop_price)
- 4-4、 本店价格低于或等于100元的商品
- 4-5、 取出第4栏目或第11栏目的商品(使用or或者使用in)
- 4-6、 取出100<=本店价格<=500的商品(使用and或者between)
- 4-7、 取出不属于第3栏目且不属于第11栏目的商品(使用and或使用not in分别实现)
- 4-8、 取出第3个栏目下面价格<1000或>3000,并且点击量>5的商品
- 4-9、 取出名字以”诺基亚”开头的商品
- 4-10、 取出名字为”诺基亚Nxx”的手机
- 模糊查询
like
相对于写操作, 读操作(查询操作)使用的更为频繁, 大部分的业务都体现在读操作上, 内容比较多
我们先学习基本查询
1、基本用法
- 查哪张表的数据?
- 查哪些列的数据?
- 条件
语法
SELECT 字段1, 字段2, ...字段nFROM 表名[WHERE 条件]
1-1、查询指定字段
示例1—查询指定的列
# 查询t1表中的name和age字段
SELECT `name`, `age` FROM `t1`;
1-2、查询所有的字段
示例2—查询所有的列
# 查询t1表中的所有数据
SELECT * FROM `t1`;
# 查询xiaomei的年龄
SELECT `age` FROM `t1` WHERE `name`='xiaomei';
# 根据用户名和密码进行查询
SELECT * from user WHERE username='gis' and `password` = '1234'
1-4、 别名
可以给指定的列取一个别名, 一般用于多表查询中
语法
SELECT 字段1 as 别名1, 字段2 as 别名2 FROM 表名 as 表别名
其中, as关键字可以省略
示例
SELECT `name` as `username` FROM `t1` as stu;
演示
2、查询模型
- 列当作变量
- 列可以参与计算
- where条件判断真假
如何理解
逐行比较, 当where条件为真的时候, 把列(变量)的值取出来
示例
SELECT name, age FROM `student`;
示例2
# 查询本店价比市场价低多少(计算差价)
SELECT market_price - shop_price FROM `goods`;
3、 where条件
MySQL中常用的运算符如下表:
| 运算符 | 说明 |
|---|---|
| >, <, <=, >=, =, <> | <>表示不等于, 也可以使用!= |
| BETWEEN…AND | 在某个范围内, between 100 and 200, 包含100和200, 闭区间[100, 200] |
| IN (1,2, … n) | 集合表示多个值,使用逗号分隔 |
| LIKE | 模糊查询 |
| is null | 查询某一列为null |
| is not null | 查询某一列不为null |
| 逻辑运算符 | 说明 |
|---|---|
| and 或者 && | 与, SQL 中建议使用前者,后者并不通用 |
| or 或者 || | 或 |
| not 或者 ! | 非 |
| 通配符 | 说明 |
|---|---|
| % | 匹配任意多个字符 |
| _ | 匹配一个字符 |
4、查询案例
以商品表为例, 做如下查询练习
4-1、 查询主键id为32的商品
SELECT * FROM `goods` WHERE `id`=32;
4-2、查询cate_id 不等于3的数据的(id,cate_id,goods_name)这个几个字段
SELECT `id`, `goods_name`, `cate_id`
FROM `goods`
WHERE `cate_id` != 3;
4-3、 本店价格高于3000元的商品(goods_name,shop_price)
SELECT `goods_name`, `shop_price`
FROM `goods`
WHERE `shop_price` > 3000;
4-4、 本店价格低于或等于100元的商品
SELECT `goods_name`, `shop_price`
FROM `goods`
WHERE `shop_price` <= 100;
4-5、 取出第4栏目或第11栏目的商品(使用or或者使用in)
# 使用or
SELECT `goods_name`, `cate_id`
FROM `goods`
WHERE `cate_id`=4 or `cate_id`=11;
# 不使用or
SELECT `goods_name`, `cate_id`
FROM `goods`
WHERE `cate_id` in (4, 11);
select * from goods where cate_id =4 || cate_id =11;
4-6、 取出100<=本店价格<=500的商品(使用and或者between)
# 使用and
SELECT `goods_name`, `shop_price`
FROM `goods`
WHERE `shop_price` >= 100 and `shop_price` <= 500;
# 不使用and
SELECT `goods_name`, `shop_price`
FROM `goods`
WHERE `shop_price` between 100 and 500;
4-7、 取出不属于第3栏目且不属于第11栏目的商品(使用and或使用not in分别实现)
# 使用and
SELECT `goods_name`, `cate_id`
FROM `goods`
WHERE `cate_id` != 3 and `cate_id` != 11;
# 使用 not in
SELECT `goods_name`, `cate_id`
FROM `goods`
WHERE `cate_id` not in (3, 11);
4-8、 取出第3个栏目下面价格<1000或>3000,并且点击量>5的商品
SELECT `goods_name`, `cate_id`, `shop_price`, `click_count`
FROM `goods`
WHERE `cate_id`=3
and (`shop_price` < 1000 or `shop_price` > 3000)
and `click_count` > 5;
4-9、 取出名字以”诺基亚”开头的商品
SELECT `goods_name`
FROM `goods`
WHERE `goods_name` LIKE '诺基亚%';
4-10、 取出名字为”诺基亚Nxx”的手机
SELECT `goods_name`
FROM `goods`
WHERE `goods_name` LIKE '诺基亚N__';
模糊查询like
%代表 零个,一个或多个字符
_代表 匹配一个字符
like 'qq%' 以qq开头
like '%qq' 以qq结尾
like '%qq%' 包含x
like 'x_' 以x开头,后面只有一个字符
like '_x' 以x结尾,前面只有一个字符
