MYSQL常用查詢的例子

字號(hào):

下面是一些學(xué)習(xí)如何用MySQL解決一些常見問題的例子。
    在一些例子中,使用數(shù)據(jù)庫表“shop”來儲(chǔ)存某個(gè)商人(經(jīng)銷商)的每件物品(物品號(hào))的價(jià)格。假定每個(gè)商人對(duì)每項(xiàng)物品有一個(gè)固定價(jià)格,那么(物品,商人)即為該記錄的主關(guān)鍵字。
    啟動(dòng)命令行工具mysql并選擇數(shù)據(jù)庫:
    shell> mysql your-database-name
    (在大多數(shù)MySQL中,你可以使用test數(shù)據(jù)庫)。
    你可以使用以下語句創(chuàng)建示例表:
    mysql> 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));
    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);
    執(zhí)行語句后,表應(yīng)包含以下內(nèi)容:
    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 |
    +---------+--------+-------+
    3.6.1. 列的值
    “的物品號(hào)是什么?”
    SELECT MAX(article) AS article FROM shop;+---------+| article |+---------+| 4 |+---------+
    3.6.2. 擁有某個(gè)列的值的行
    任務(wù):找出最貴物品的編號(hào)、銷售商和價(jià)格。
    這很容易用一個(gè)子查詢做到:
    SELECT article, dealer, priceFROM shopWHERE price=(SELECT MAX(price) FROM shop);另一個(gè)解決方案是按價(jià)格降序排序所有行并用MySQL特定LIMIT子句只得到第一行:
    SELECT article, dealer, priceFROM shopORDER BY price DESCLIMIT 1;注:如果有多項(xiàng)最貴的物品( 例如每個(gè)的價(jià)格為19.95),LIMIT解決方案僅僅顯示其中一個(gè)!
    3.6.3. 列的值:按組
    任務(wù):每項(xiàng)物品的的價(jià)格是多少?
    SELECT article, MAX(price) AS priceFROM shopGROUP BY article+---------+-------+| article | price |+---------+-------+| 0001 | 3.99 || 0002 | 10.99 || 0003 | 1.69 || 0004 | 19.95 |+---------+-------+
    3.6.4. 擁有某個(gè)字段的組間值的行
    任務(wù):對(duì)每項(xiàng)物品,找出最貴價(jià)格的物品的經(jīng)銷商。
    可以用這樣一個(gè)子查詢解決該問題:
    SELECT article, dealer, priceFROM shop s1WHERE price=(SELECT MAX(s2.price) FROM shop s2 WHERE s1.article = s2.article);
    3.6.5. 使用用戶變量
    你可以清空MySQL用戶變量以記錄結(jié)果,不必將它們保存到客戶端的臨時(shí)變量中。(參見 9.3節(jié),“用戶變量”.)。
    例如,要找出價(jià)格或最低的物品的,其方法是:
    mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;mysql> SELECT * FROM shop WHERE price=@min_price OR price=@max_price;
    +---------+--------+-------+| article | dealer | price |+---------+--------+-------+| 0003 | D | 1.25 || 0004 | D | 19.95 |+---------+--------+-------+