1、先准备一张表
mysql> CREATE TABLE tb_1
(
id int(11) not null unique primary key auto_increment,
name varchar(25) not null unique,
price float(2)
);
Query OK, 0 rows affected (0.01 sec)
2、往tb_1 表插入数据,演示查询
mysql> insert into tb_1
-> (id, name, price)
-> values
-> (1, 'apple', 2.3),
-> (2, 'watermelon', 5.6),
-> (3, 'banana', 3.5),
-> (4, 'orange', 6.7),
-> (5, 'cucumber', 1.2),
-> (6, 'tomatoes', 6.6);
Query OK, 6 rows affected (0.01 sec)
3、单表查询 查询所有字段列
mysql> select * from tb_1;
4、单表查询 查询指定某个字段
mysql> select name from tb_1;
5、单表查询 指定多个字段查询
mysql> select name, price from tb_1;
6、查询 apple多少钱
mysql> select name, price
-> from tb_1
-> where name = 'apple';
7、创建个 tb_2 表
插入数据
查询价格等于 8 块的水果
mysql> select name, price
-> from tb_2
-> where price = 8;
7、查询价格小于 6 块的水果
mysql> select name, price
-> from tb_2
-> where price < 6;
8、 带 IN 关键字的查询
IN 操作符用来指定满足条件范围内的记录,符合条件就匹配出来,否则就不显示
mysql> select name, price
-> from tb_2
-> where price IN(5, 8);
9、 使用 NOT IN(x, y) 关键字查询条件满足的不显示,条件以外的显示
mysql> select name, price
-> from tb_2
-> where price NOT IN(5,8);
10、 带 BETWEEN AND 关键字查询范围内的记录
mysql> select name, price
-> from tb_2
-> where price BETWEEN 3 AND 6;
11、 使用 NOT BETWEEN 查询满足条件以外的会被查询出来
mysql> select name, price
-> from tb_2
-> where price NOT BETWEEN 3 AND 6;
12、 使用 LIKE 关键字匹配查询
mysql> select name, price
-> from tb_2
-> where name LIKE('a%');
13、 使用 "_" 下划线匹配,与%不同的是 %可以匹配任意长度,而 "_" 只能匹配一个,如果要多匹配几个 就要多敲几个下划线
mysql> select name, price
-> from tb_2
-> where name LIKE('_____a');
14、 使用 AND 关键字 查询,可以多加几个查询条件,当所有的条件都满足时,则显示
mysql> select id, name, price
-> from tb_2
-> where id > 3 AND price > 5;
15、 使用 OR 关键字的多条件查询 只要两个条件满足其中一个 就返回数据
mysql> select name, price
-> from tb_2
-> where name = 'o%' OR price > 5;
16、 使用 DISTINCT 去除重复的值
select distinct id from tb_2;
17、 使用 ORDER BY 关键字对查询结果排序 默认是升序
mysql> select name, price
-> from tb_2
-> order by price;
多列排序 先按照 name排序,再按 price排序
mysql> select name, price
-> from tb_2
-> order by name, price;
18、 使用 DESC 降序排序
mysql> select id, name, price
-> from tb_2
-> order by id desc;
19、 分组查询 通常和聚合函数一起使用,例如 : MAX()、 MIN()、 COUNT()、 SUM()、 AVG()
mysql> select id, group_concat(name) as names
-> from tb_2
-> group by id;
20、 分组过滤 :和where过滤的区别是,having是再分组后进行过滤,而where这是再未分组过滤
mysql> select id, group_concat(name) as names, price
-> from tb_2
-> group by id having(price) > 20;