基本查询
相对于写操作, 读操作(查询操作)使用的更为频繁, 大部分的业务都体现在读操作上, 内容比较多
我们先学习基本查询
# 1.基本用法
# 1) 基本查询
3点:
- 查哪张表的数据?
- 查哪些列的数据?
- 条件
语法
SELECT 字段1, 字段2, ...字段n
FROM 表名
[WHERE 条件]
1
2
3
2
3
示例1--查询指定的列
# 查询t1表中的name和age字段
SELECT `name`, `age` FROM `t1`;
1
2
2
演示
示例2--查询所有的列
# 查询t1表中的所有数据
SELECT * FROM `t1`;
1
2
2
*
: 表示所有字段
演示
示例3--根据条件查询
# 查询xiaomei的年龄
SELECT `age` FROM `t1` WHERE `name`='xiaomei';
1
2
2
演示
# 2) 别名
可以给指定的列取一个别名, 一般用于多表查询中
语法
SELECT 字段1 as 别名1, 字段2 as 别名2 FROM 表名 as 表别名
1
其中, as关键字可以省略
示例
SELECT `name` as `username` FROM `t1` as stu;
1
演示
# 2.查询模型
# 1) 基本点
3个点
- 列当作变量
- 列可以参与计算
- where条件判断真假
如何理解
逐行比较, 当where条件为真的时候, 把列(变量)的值取出来
示例
SELECT name, age FROM `student`;
1
演示
示例2
# 查询本店价比市场价低多少(计算差价)
SELECT market_price - shop_price FROM `goods`;
1
2
2
演示
# 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 或者 ! | 非 |
通配符 | 说明 |
---|---|
% | 匹配任意多个字符 |
_ | 匹配一个字符 |
# 3.查询案例
以商品表为例, 做如下查询练习
1.1 查询主键id为32的商品
SELECT * FROM `goods` WHERE `id`=32;
1
1.2 不属第3栏目的所有商品id和名称
SELECT `id`, `goods_name`, `cate_id`
FROM `goods`
WHERE `cate_id` != 3;
1
2
3
2
3
1.3 本店价格高于3000元的商品
SELECT `goods_name`, `shop_price`
FROM `goods`
WHERE `shop_price` > 3000;
1
2
3
2
3
1.4 本店价格低于或等于100元的商品
SELECT `goods_name`, `shop_price`
FROM `goods`
WHERE `shop_price` <= 100;
1
2
3
2
3
1.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);
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
1.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;
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
1.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);
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
1.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;
1
2
3
4
5
2
3
4
5
1.9 取出名字以"诺基亚"开头的商品
SELECT `goods_name`
FROM `goods`
WHERE `goods_name` LIKE '诺基亚%';
1
2
3
2
3
1.10 取出名字为"诺基亚Nxx"的手机
SELECT `goods_name`
FROM `goods`
WHERE `goods_name` LIKE '诺基亚N__';
1
2
3
2
3
如果觉得有帮助, 可以微信扫码, 请杰哥喝杯咖啡~
上次更新: 2021/09/03, 15:32:17