文章目录
基本查询
SELECT
*|<字段列表> :字段列表至少要包括一个字段名称,查询多个字段时,用逗号(,)隔开,最后一个字段后不加逗号。
FROM<表1>,<表2>... : 表1和表2表示查询数据的来源,可以是单个或者多个。
WHERE 字句 : 用于限定范围查询,但必须满足查询条件。
GROUP BY<字段> : 该字句表示对指定的字段查询出的结果进行分组。
ORDER BY<字段> : 该字句表示按照升序(ASC)和降序(DESC)的顺序查询出的结果。
简单数据记录查询
查询所有字段
SELECT*FROM 表名;
实例1
- 题目:查询goods表中的所有数据。
1.选择数据库
mysql> USE db_shop;
Database changed
2.查询所有数据
mysql> SELECT*FROM goods;
+----+--------+--------------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+--------------+-------+------+---------------------+
| 1 | 书籍 | 斗罗大陆 | 38.50 | 3 | 2022-02-12 15:30:27 |
| 2 | 水果 | 火龙果 | 15.00 | 16 | 2022-03-06 14:12:32 |
| 3 | 蔬菜 | 胡萝卜 | 6.00 | 5 | NULL |
| 4 | 服装 | 牛仔裤 | 65.00 | 60 | 2022-06-05 16:32:20 |
| 5 | 冷饮 | 百事可乐 | 3.00 | 12 | 2022-06-09 00:00:00 |
+----+--------+--------------+-------+------+---------------------+
5 rows in set (0.00 sec)
查询指定字段
SELECT 指定字段1,指定字段2,...FROM 表名;
实例2(1)
- 题目:从goods表中查询type字段。
查询单个指定字段
mysql> SELECT type FROM goods;
+--------+
| type |
+--------+
| 书籍 |
| 水果 |
| 蔬菜 |
| 服装 |
| 冷饮 |
+--------+
5 rows in set (0.00 sec)
实例2(2)
- 题目从goods表中查询type、name字段。
查询多个指定字段
mysql> SELECT type,name FROM goods;
+--------+--------------+
| type | name |
+--------+--------------+
| 书籍 | 斗罗大陆 |
| 水果 | 火龙果 |
| 蔬菜 | 胡萝卜 |
| 服装 | 牛仔裤 |
| 冷饮 | 百事可乐 |
+--------+--------------+
5 rows in set (0.00 sec)
查询指定记录
使用“=”号查询
实例3
- 题目:从goods表中查询id值为5的记录。
查询指定记录
mysql> SELECT*FROM goods WHERE id=5;
+----+--------+--------------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+--------------+-------+------+---------------------+
| 5 | 冷饮 | 百事可乐 | 3.00 | 12 | 2022-06-09 00:00:00 |
+----+--------+--------------+-------+------+---------------------+
1 row in set (0.00 sec)
使用“<"号查询
实例4
- 题目:从goods表中查询num<10值
查询指定范围记录
mysql> SELECT*FROM goods WHERE num<10;
+----+--------+--------------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+--------------+-------+------+---------------------+
| 1 | 书籍 | 斗罗大陆 | 38.50 | 3 | 2022-02-12 15:30:27 |
| 3 | 蔬菜 | 胡萝卜 | 6.00 | 5 | NULL |
+----+--------+--------------+-------+------+---------------------+
2 rows in set (0.00 sec)
使用">="号查询
实例5
- 题目:从goods表中查询"price>=15"的记录。
查询指定范围记录
mysql> SELECT*FROM goods WHERE price>=15;
+----+--------+--------------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+--------------+-------+------+---------------------+
| 1 | 书籍 | 斗罗大陆 | 38.50 | 3 | 2022-02-12 15:30:27 |
| 2 | 水果 | 火龙果 | 15.00 | 16 | 2022-03-06 14:12:32 |
| 4 | 服装 | 牛仔裤 | 65.00 | 60 | 2022-06-05 16:32:20 |
+----+--------+--------------+-------+------+---------------------+
3 rows in set (0.00 sec)
多条件查询
使用AND关键字查询
实例6
- 题目:从goods表中查询price的值大于10并且id>2的值
查询指定范围的记录
mysql> SELECT*FROM goods WHERE price>10 AND id>2;
+----+--------+-----------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+-----------+-------+------+---------------------+
| 4 | 服装 | 牛仔裤 | 65.00 | 60 | 2022-06-05 16:32:20 |
+----+--------+-----------+-------+------+---------------------+
1 row in set (0.00 sec)
使用OR关键字查询
实例7
- 题目:从goods表中查询type值为“书籍”或者“冷饮”的记录。
查询指定范围记录
mysql> SELECT*FROM goods WHERE type='书籍' OR type='冷饮';
+----+--------+--------------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+--------------+-------+------+---------------------+
| 1 | 书籍 | 斗罗大陆 | 38.50 | 3 | 2022-02-12 15:30:27 |
| 5 | 冷饮 | 百事可乐 | 3.00 | 12 | 2022-06-09 00:00:00 |
+----+--------+--------------+-------+------+---------------------+
2 rows in set (0.00 sec)
使用IN关键字查询
b
- 题目:从goods表中id的值为2和5的记录。
查询指定记录。
mysql> SELECT*FROM goods WHERE id IN(2,5);
+----+--------+--------------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+--------------+-------+------+---------------------+
| 2 | 水果 | 火龙果 | 15.00 | 16 | 2022-03-06 14:12:32 |
| 5 | 冷饮 | 百事可乐 | 3.00 | 12 | 2022-06-09 00:00:00 |
+----+--------+--------------+-------+------+---------------------+
2 rows in set (0.00 sec)
实例8(2)
- 题目:从goods表中查询id的值不为2和5的记录。
查询值范围记录。
mysql> SELECT*FROM goods WHERE id NOT IN(2,5);
+----+--------+--------------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+--------------+-------+------+---------------------+
| 1 | 书籍 | 斗罗大陆 | 38.50 | 3 | 2022-02-12 15:30:27 |
| 3 | 蔬菜 | 胡萝卜 | 6.00 | 5 | NULL |
| 4 | 服装 | 牛仔裤 | 65.00 | 60 | 2022-06-05 16:32:20 |
+----+--------+--------------+-------+------+---------------------+
3 rows in set (0.00 sec)
查询空值
SELECT*FROM 表名 WHERE 指定字段 IS NULLL;
实例9 (1)
- 题目:从goods表中查询add_time为NULL的值
查询指定记录
mysql> SELECT*FROM goods WHERE add_time IS NULL;
+----+--------+-----------+-------+------+----------+
| id | type | name | price | num | add_time |
+----+--------+-----------+-------+------+----------+
| 3 | 蔬菜 | 胡萝卜 | 6.00 | 5 | NULL |
+----+--------+-----------+-------+------+----------+
1 row in set (0.00 sec)
实例9(2)
- 题目:从goods表中查询add_time不为为NULL的值
查询指定范围记录
mysql> SELECT*FROM goods WHERE add_time IS NOT NULL;
+----+--------+--------------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+--------------+-------+------+---------------------+
| 1 | 书籍 | 斗罗大陆 | 38.50 | 3 | 2022-02-12 15:30:27 |
| 2 | 水果 | 火龙果 | 15.00 | 16 | 2022-03-06 14:12:32 |
| 4 | 服装 | 牛仔裤 | 65.00 | 60 | 2022-06-05 16:32:20 |
| 5 | 冷饮 | 百事可乐 | 3.00 | 12 | 2022-06-09 00:00:00 |
+----+--------+--------------+-------+------+---------------------+
4 rows in set (0.00 sec)
查询结果不重复
从goods表中type的值,然后再去重。
1.查询指定字段。
mysql> SELECT type FROM goods;
+--------+
| type |
+--------+
| 书籍 |
| 水果 |
| 蔬菜 |
| 服装 |
| 冷饮 |
| 水果 |
+--------+
6 rows in set (0.00 sec)
2.查询不重复记录
mysql> SELECT DISTINCT type FROM goods;
+--------+
| type |
+--------+
| 书籍 |
| 水果 |
| 蔬菜 |
| 服装 |
| 冷饮 |
+--------+
5 rows in set (0.00 sec)
范围查询
SELECT*FROM 表名 WHERE 限定范围的字段 BETWEEN 数据1 AND 数据2;
实例10(1)
- 题目:从goods表中price的值为3到20的商品名称和价格。
查询指定范围记录。
mysql> SELECT name,price FROM goods WHERE price BETWEEN 3 AND 20;
+--------------+-------+
| name | price |
+--------------+-------+
| 火龙果 | 15.00 |
| 胡萝卜 | 6.00 |
| 百事可乐 | 3.00 |
| 菠萝 | 11.00 |
+--------------+-------+
4 rows in set (0.00 sec)
实例10(2)
- 题目:从goods表中price的值不为为3到20的商品名称和价格。
查询指定范围记录。
mysql> SELECT name,price FROM goods WHERE price NOT BETWEEN 3 AND 20;
+--------------+-------+
| name | price |
+--------------+-------+
| 斗罗大陆 | 38.50 |
| 牛仔裤 | 65.00 |
+--------------+-------+
2 rows in set (0.00 sec)
字符匹配查询
SELEECT*FROM 表名 WHERE 指定字段 LIKE 指定字段中包含的数据;
实例11(1)
- 题目:从goods表中查询name值以“果”结尾的记录
查询指定范围记录。
mysql> SELECT*FROM goods WHERE name LIKE '%果';
+----+--------+-----------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+-----------+-------+------+---------------------+
| 2 | 水果 | 火龙果 | 15.00 | 16 | 2022-03-06 14:12:32 |
| 6 | 水果 | 苹果 | 11.00 | 0 | NULL |
+----+--------+-----------+-------+------+---------------------+
2 rows in set (0.00 sec
)
实例11(2)
- 题目:从goods表中查询name值以“斗”开头的记录
查询指定范围记录。
mysql> SELECT*FROM goods WHERE name LIKE '斗%';
+----+--------+--------------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+--------------+-------+------+---------------------+
| 1 | 书籍 | 斗罗大陆 | 38.50 | 3 | 2022-02-12 15:30:27 |
+----+--------+--------------+-------+------+---------------------+
1 row in set (0.00 sec)
实例11(3)
- 题目:从goods表中查询name值包含“仔”字的记录。
查询指定范围记录。
mysql> SELECT*FROM goods WHERE name LIKE '%仔%';
+----+--------+-----------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+-----------+-------+------+---------------------+
| 4 | 服装 | 牛仔裤 | 65.00 | 60 | 2022-06-05 16:32:20 |
+----+--------+-----------+-------+------+---------------------+
1 row in set (0.00 sec
实例11(4)
- 题目:从goods表中查询name值以“百”开头,“百”后有三个字符的记录。
查询指定范围记录。
mysql> SELECT*FROM goods WHERE name LIKE '百___';
+----+--------+--------------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+--------------+-------+------+---------------------+
| 5 | 冷饮 | 百事可乐 | 3.00 | 12 | 2022-06-09 00:00:00 |
+----+--------+--------------+-------+------+---------------------+
1 row in set (0.00 sec)
排序查询 ——默认按照升序排序
SELECT*FROM 表名 ORDER BY 一个或多个字段[升序ASE|降序DESC];
单字段排序
实例12
- 题目:从goods表中查询id,name和add_time字段的数据并按照add_time的值进行排序。
查询指定范围记录,并进行排序。
mysql> SELECT id,name,add_time FROM goods ORDER BY add_time;
+----+--------------+---------------------+
| id | name | add_time |
+----+--------------+---------------------+
| 3 | 胡萝卜 | NULL |
| 6 | 苹果 | NULL |
| 1 | 斗罗大陆 | 2022-02-12 15:30:27 |
| 2 | 火龙果 | 2022-03-06 14:12:32 |
| 4 | 牛仔裤 | 2022-06-05 16:32:20 |
| 5 | 百事可乐 | 2022-06-09 00:00:00 |
+----+--------------+---------------------+
6 rows in set (0.00 sec)
多字段排序
实例13
- 题目:从goods表中查询所有记录,并按照price和num字段的值进行排序。
查询所有记录,并进行排序
mysql> SELECT*FROM goods ORDER BY price,num;
+----+--------+--------------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+--------------+-------+------+---------------------+
| 5 | 冷饮 | 百事可乐 | 3.00 | 12 | 2022-06-09 00:00:00 |
| 3 | 蔬菜 | 胡萝卜 | 6.00 | 5 | NULL |
| 6 | 水果 | 苹果 | 11.00 | 0 | NULL |
| 2 | 水果 | 火龙果 | 15.00 | 16 | 2022-03-06 14:12:32 |
| 1 | 书籍 | 斗罗大陆 | 38.50 | 3 | 2022-02-12 15:30:27 |
| 4 | 服装 | 牛仔裤 | 65.00 | 60 | 2022-06-05 16:32:20 |
+----+------ --+--------------+-------+------+---------------------+
6 rows in set (0.00 sec)
降序排序
实例14(1)
- 题目:从goods表中查询所有记录,并按照price字段进行降序排序。
查询所有记录,并进行降序排序。
mysql> SELECT*FROM goods ORDER BY price DESC;
+----+--------+--------------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+--------------+-------+------+---------------------+
| 4 | 服装 | 牛仔裤 | 65.00 | 60 | 2022-06-05 16:32:20 |
| 1 | 书籍 | 斗罗大陆 | 38.50 | 3 | 2022-02-12 15:30:27 |
| 2 | 水果 | 火龙果 | 15.00 | 16 | 2022-03-06 14:12:32 |
| 6 | 水果 | 苹果 | 11.00 | 0 | NULL |
| 3 | 蔬菜 | 胡萝卜 | 6.00 | 5 | NULL |
| 5 | 冷饮 | 百事可乐 | 3.00 | 12 | 2022-06-09 00:00:00 |
+----+--------+--------------+-------+------+---------------------+
6 rows in set (0.00 sec)
实例14(2)
- 题目:从goods表中查询所有记录,并按照price字段和num字段进行排序。
查询所有记录,并进行降序排序。
mysql> SELECT*FROM goods ORDER BY price DESC,num;
+----+--------+--------------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+--------------+-------+------+---------------------+
| 4 | 服装 | 牛仔裤 | 65.00 | 60 | 2022-06-05 16:32:20 |
| 1 | 书籍 | 斗罗大陆 | 38.50 | 3 | 2022-02-12 15:30:27 |
| 2 | 水果 | 火龙果 | 15.00 | 16 | 2022-03-06 14:12:32 |
| 6 | 水果 | 苹果 | 11.00 | 0 | NULL |
| 3 | 蔬菜 | 胡萝卜 | 6.00 | 5 | NULL |
| 5 | 冷饮 | 百事可乐 | 3.00 | 12 | 2022-06-09 00:00:00 |
+----+--------+--------------+-------+------+---------------------+
6 rows in set (0.00 sec)
限制查询结果的数量
- 语法:——默认起点为0
SELECT*FROM 表名 LIMIT 指定起点,指定终点;
实例15(1)
- 题目:将goods表中前4条记录查询出来。
查询指定范围记录。
mysql> SELECT*FROM goods LIMIT 4;
+----+--------+--------------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+--------------+-------+------+---------------------+
| 1 | 书籍 | 斗罗大陆 | 38.50 | 3 | 2022-02-12 15:30:27 |
| 2 | 水果 | 火龙果 | 15.00 | 16 | 2022-03-06 14:12:32 |
| 3 | 蔬菜 | 胡萝卜 | 6.00 | 5 | NULL |
| 4 | 服装 | 牛仔裤 | 65.00 | 60 | 2022-06-05 16:32:20 |
+----+--------+--------------+-------+------+---------------------+
4 rows in set (0.00 sec)
实例15(2)
- 题目:将goods表中从第四条记录开始,总条数为2的结果。
查询指定范围记录。
mysql> SELECT*FROM goods LIMIT 4,2;
+----+--------+--------------+-------+------+---------------------+
| id | type | name | price | num | add_time |
+----+--------+--------------+-------+------+---------------------+
| 5 | 冷饮 | 百事可乐 | 3.00 | 12 | 2022-06-09 00:00:00 |
| 6 | 水果 | 苹果 | 11.00 | 0 | NULL |
+----+--------+--------------+-------+------+---------------------+
2 rows in set (0.00 sec)