目录
(1)可以使用以下语句创建示例表
(2)执行语句后,查看表所包含内容
(3)列的最大值
(4)拥有某个列的最大值的行
方法一:
方法二:
(5)列的最大值:按组
(6)拥有某个字段的组间最大值的行
(7)使用用户变量
(8)使用外键
(1)可以使用以下语句创建示例表
CREATE TABLE shop (article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,dealer CHAR(20) DEFAULT '' NOT NULL,price DOUBLE(16,2) DEFAULT '0.00' NOT NULL,PRIMARY KEY(article, dealer));
好像有点长,那可以分开写哦!!
演示:
录入一些数据,如下
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);
返回:
(2)执行语句后,查看表所包含内容
SELECT * FROM shop;
返回:
(3)列的最大值
选取价格最贵:
select max(price) as article from shop;
返回:
(4)拥有某个列的最大值的行
任务:找出最贵物品的编号、销售商和价格。
方法一:
select article,dealer,price from shop where price=(select max(price) from shop);
返回:
方法二:
按价格降序排序所有行并用MySQL特定LIMIT子句只得到第一行,这里用到desc前面讲过,是降序的意思。
select article ,dealer,price from shop order by price desc limit 1;
返回:
注:如果有多项最贵的物品( 例如每个的价格为19.95),LIMIT解决方案仅仅显示其中一个!
(5)列的最大值:按组
任务:每项物品的的最高价格是多少?
SELECT article, MAX(price) AS price FROM shop GROUP BY article;
返回:
(6)拥有某个字段的组间最大值的行
任务:对每项物品,找出最贵价格的物品的经销商。
SELECT article, dealer, price FROM shop s1 WHERE price=(SELECT MAX(s2.price) FROM shop s2 WHERE s1.article = s2.article);
返回:
(7)使用用户变量
任务:要找出价格最高或最低的物品的
SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;
或
SELECT * FROM shop WHERE price=@min_price OR price=@max_price;
返回:
(8)使用外键
创建表
CREATE TABLE person (id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,name CHAR(60) NOT NULL,PRIMARY KEY (id));
返回:
CREATE TABLE shirt (id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,style ENUM('t-shirt', 'polo', 'dress') NOT NULL,color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL,owner SMALLINT UNSIGNED NOT NULL REFERENCES person(id),PRIMARY KEY (id));
返回:
添加数据
INSERT INTO person VALUES (NULL, 'Antonio Paz');
返回:
查询:
SELECT @last := LAST_INSERT_ID();
返回:
继续添加数据:
INSERT INTO shirt VALUES(NULL, 'dress', 'orange', @last),(NULL, 'polo', 'red', @last),(NULL, 'dress', 'blue', @last),(NULL, 't-shirt', 'white', @last);
返回:
查看表中数据:
SELECT * FROM person;
返回:
SELECT * FROM shirt;
返回:
联合查询:
SELECT s.* FROM person p, shirt s WHERE p.name LIKE 'Lilliana%' AND s.owner = p.id AND s.color <> 'white';
返回是空: