10〜第14章「MySQLはなります知っている必要があります」

第14章の章X

章X

スプライシングフィールド、連結方式の()関数へのスプライス2列

SELECT Concat(vend_name, ' (', vend_country, ')')
FROM vendors
ORDER BY vend_name;

タイプの出力

ACME (USA)
Anvils R US (USA)

データを整理する関数空間RTRIM()で右に不要なデータを削除するには

SELECT Concat(RTrim(vend_name), ' (', RTrim(vend_country), ')')
FROM vendors
ORDER BY  vend_name;

LTRIM()は、トリム()を削除スペース側左スペースを除去します。

エイリアスを使用して、ASキーワード

SELECT Concat(RTrim(vend_name), ' (', RTrim(vend_country), ')') AS vend_title
FROM vendors
ORDER BY  vend_name;

算術計算

SELECT  prod_id,
        quantity,
        item_price,
        quantity * item_price AS expanded_price
FROM orderitems
WHERE order_num = 20005;

章XI

テキスト機能を処理する、アッパー()関数

SELECT vend_name, Upper(vend_name) AS vend_name_upcase
FROM  vendors
ORDER BY vend_name;

同様のY.Lieの連絡先の名前と一致するように、発音のSoundex()関数

SELECT cust_name, cust_contact
FROM customers
WHERE Soundex(cust_contact) = Soundex('Y Lie');

日付と時刻の操作関数

SELECT cust_id, order_num
FROM orders
WHERE order_date = '2005-09-01';

ORDER_DATEとは、日付を取得するには、Data()関数と比較して、特定の時間が含まれている場合

SELECT cust_id, order_num
FROM orders
WHERE Date(order_date) = '2005-09-01';

すべての日付は、月に2つのアプローチ一致します

SELECT cust_id, order_num
FROM orders
WHERE Date(order_date) BETWEEN '2005-09-01' AND '2005-09-30';
SELECT cust_id, order_num
FROM orders
WHERE Year(order_date) = 2005 AND Month(order_date) = 9;

後者は、何日の月を心配する必要はありません。

章XII

AVG()関数

SELECT AVG(prod_price) AS avg_price
FROM products;

特定のベンダーの製品の平均価格を返します。

SELECT AVG(prod_price) AS avg_price
FROM products
WHERE vend_id = 1003;

COUNT()関数
COUNT(*)は、NULL値を含む、すべての行をカウントする
特定の列にCOUNT(列)の値を有する行カウントを

SELECT COUNT(*) AS num_cust
FROM customers;
SELECT COUNT(cust_email) AS num_cust
FROM customers;

MAX()関数、非データシーケンス、MAX()関数は、最後の行を返し、NULL値は無視されます

SELECT MAX(prod_price) AS max_price
FROM products;

MIN()関数は、非データ列、MIN()関数は、最上位の行を返し、NULL値は無視されます

SELECT MIN(prod_price) AS min_price
FROM products;

SUM()関数

SELECT SUM(quantity) AS items_ordered
FROM orderitems
WHERE order_num = 20005;
SELECT SUM(quantity*item_price) AS total_price
FROM orderitems
WHERE order_num = 20005;

異なる値の集計、DISTINCT

SELECT AVG(DISTINCT prod_price) AS avg_price
FROM products
WHERE vend_id = 1003;

DISTINCT使用した後、唯一異なる価格の平均を検討
COUNT(DISTINCT)が間違っている、あること、DISTINCT列名は、COUNT(*)のために使用することはできませんが

集約関数の組み合わせ

SELECT COUNT(*) AS num_items,
       MIN(prod_price) AS price_min,
       MAX(prod_price) AS price_max,
       AVG(prod_price) AS price_avg
FROM products;

章XIII

グループの作成

SELECT vend_id, COUNT(*) AS num_prods
FROM products
GROUP BY vend_id;

ここでは、各vend_idではなくnum_prod一度、リスト全体に対して計算されます

パケットフィルタリング

SELECT cust_id, COUNT(*) AS orders
FROM orders
GROUP BY cust_id
HAVING COUNT(*) >= 2;

製品prod_price <10をフィルタリングするために、パケットが行われます

SELECT vend_id, COUNT(*) AS num_prods
FROM  products
WHERE  prod_price >= 10
GROUP BY vend_id
HAVING COUNT(*) >= 2;

GROUP BYはソートORDER BYを使用してのみ頼ることはできません

SELECT order_num, SUM(quantity*item_price) AS ordertotal
FROM orderitems
GROUP BY order_num
HAVING SUM(quantity*item_price) >= 50
ORDER BY ordertotal;

ない最後の1の場合、結果は昇順たOrderTotalにおける結果によると、最後の文を追加する場合は、昇順列order_num従います

SLELCT句の順序

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT

第14章

サブクエリ

SELECT order_num
FROM orderitems
WHERE prod_id = 'TNT2';

問い合わせさらにお問い合わせによると、列order_num

SELECT cust_id
FROM orders
WHERE order_num IN (20005, 20007);

問い合わせさらにお問い合わせによると、CUST_ID

SELECT cust_name, cust_contact
FROM customers
WHERE cust_id IN (10001, 10004);

この3件の問い合わせを統合することができます

SELECT cust_name, cust_contact
FROM customers
WHERE cust_id IN (SELECT cust_id
                  FROM orderts
                  WHERE order_num IN (SELECT order_num
                                      FROM order_items
                                      WHERE prod_id = 'TNT2'));

性能の限界のために、あまりにも多くのサブクエリを入れ子にすることはできません。

顧客の注文は10001カウントされます

SELECT COUNT(*) AS orders
FROM orders
WHERE cust_id = 10001;

各クライアント行うCOUNT(*)は、このサブクエリとして

SELECT cust_name,
       cust_state,
       (SELECT COUNT(*)
        FROM orders
        WHERE orders.cust_id = customers.cust_id) AS orders
FROM customers
ORDER BY cust_name;

このサブクエリで
顧客がCUST_ID 10001、10002、10003、10004、10005を持っている
と10001はCUST_IDで注文、10001、10003、10004、10005有する
顧客のそれぞれについて、従ってCUST_ID、受注CUST_IDでCOUNT(*)戻ります数量インチ

公開された84元の記事 ウォン称賛7 ビュー10000 +

おすすめ

転載: blog.csdn.net/weixin_43569916/article/details/104247026