一、实验简介
1.1 实验内容
本节实验中我们将通过一个经销商数据库的实例来学习并实践多种常用的在数据库中查找记录的方法。
1.2 实验知识点
- 表查询操作
二、实验步骤
在下面的例子中使用数据表 shop
来存储商人(经销商)的每件物品(物品号)对应的价格。假如每个商人对应的每个物品都有一个固定的价格,那么该表中的关键字就是物品
和商人
。
通过如下代码创建一个示例表:
# 创建 shop 数据表,散列数据:物品编号、经销商、价格
# ZEROFILL 表示如果一个 INT 类型的数不足 4 位就在前面补零且不允许出现负数
# DOUBLE(16, 2) 表示该数值至多占 16 位,包括小数点儿,其中小数位数至多两位
mysql> CREATE TABLE shop (
-> article INT(4) ZEROFILL DEFAULT '0',
-> dealer CHAR(20) DEFAULT '',
-> price DOUBLE(16, 2) DEFAULT '0.00',
-> PRIMARY KEY (article, dealer)
-> );
# 插入数据
mysql> INSERT INTO shop VALUES
-> (1,'A',3.45), (1,'B',3.99), (2,'A',10.99), (3,'B',1.45),
-> (3,'C',1.69), (3,'D',1.25), (4,'D',19.95);
执行以下语句查看表的内容:
mysql> SELECT * FROM shop;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0001 | A | 3.45 |
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | B | 1.45 |
| 0003 | C | 1.69 |
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
+---------+--------+-------+
7 rows in set (0.01 sec)
寻找列的最大值
使用 MAX
函数计算物品号 article
的最大值:
mysql> SELECT MAX(article) as article FROM shop;
查询某列最大值所在的行
# 显示 price 这一列最大值对应的行
mysql> SELECT article, dealer, price
-> FROM shop
-> WHERE price=(SELECT MAX(price) FROM shop);
另外一个方法是对所有行进行价格的降序排序,然后使用 MySQL 特有的 LIMIT 子句显示其中一行(这里是指定第一行显示最高价格):
mysql> SELECT article, dealer, price
-> FROM shop
-> ORDER BY price DESC
-> LIMIT 1;
大家可以输入上述语句查询结果是否一样。
注:如果有多项物品的价格都是19.95(最贵的物品不止一个),那么LIMIT的显示结果也只会显示其中一个
<