<<知っている必要がありますSQLは>>になります - 注3

計算フィールドを作成します。

スプライス
  SELECT Concat(vend_name, ' (', vend_country, ')')
          AS ven_title
  FROM Vendors
  ORDER BY vend_name;
計算
  SELECT prod_id, quantity, item_price,
         quantity*item_price AS expanded_price
  FROM OrderItems
  WHERE order_num = 20008;
テスト計算

SELECTステートメントを確認するために使用することができます正しいかテスト、例えば次のとおりです。

    SELECT 2 * 3; -- (will return 6)
    SELECT TRIM('   abc    '); -- (will return 'abc')
    SELECT Now(); -- (will return current time)




データ・ハンドラー

機能

テキスト処理関数
  SELECT vend_name, UPPER(vend_name) AS vend_name_upcase
  FROM Vendors
  ORDER BY vend_name;

SOUNDEX()ファンクション、英数字モードに代表される音節を記述する任意のアルゴリズムにテキスト文字列は、あいまい音を探すために使用することができます

    SELECT cust_name, cust_contact
    FROM Customers
    WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green');
日付と時刻の処理関数
   SELECT order_num 
   FROM Orders 
   WHERE strftime('%Y', order_date) = 2012
数値ハンドラ

一般的な数学関数はABS() COS() EXP() PI() SIN() SQRT() TAN()
絶対値、余弦、指数関数、PI、正弦波、平方根、正接であります



集約されたデータ

集計関数

AVG
  SELECT AVG(prod_price) AS avg_price
  FROM Products 
  WHERE vend_id = 'DLL01';
カウント
  SELECT COUNT(*) AS num_cust
  FROM Customers;
MAX
   SELECT MAX(prod_price) AS max_price
   FROM Products;
MIN
   SELECT MIN(prod_price) AS min_price
   FROM Products;
   SELECT SUM(quantity) AS items_ordered
   FROM OrderItems
   WHERE order_num = 20005;
異なる値の集計

DISTINCT

   SELECT AVG(DISTINCT prod_price) AS avg_price
   FROM Products
   WHERE vend_id = 'DLL01';
集約関数の組み合わせ
   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;




パケットデータ

GROUP BY

グループの作成
   SELECT vend_id, COUNT(*) AS num_prods
   FROM Products 
   GROUP BY vend_id;

GROUP BYではWHERE、次のステートメント、ORDER BYステートメントの前に

パケットフィルタリング

WHEREラインフィルタ、HAVINGフィルタパケット

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

SELECT句の順序

SELECT - > WHERE - - > GROUP BY - > HAVING - > ORDER BY> FROM

   SELECT vend_id, COUNT(*) AS num_prods
   FROM Products
   WHERE prod_price >= 4
   GROUP BY vend_id 
   HAVING COUNT(*) >= 2;
   ORDER BY vend_id




サブクエリを使用します

サブクエリ

サブクエリフィルタ

外向きのプロセスから

   SELECT cust_name, cust_contact
   FROM Customers
   WHERE cust_id IN (SELECT cust_id 
                     FROM Orders 
                     WHERE order_num IN (SELECT order_num 
                                         FROM ORDERItems 
                                         WHERE prod_id = 'RGAN01'));
   
計算フィールドとして、
    SELECT cust_name, cust_state,
           (SELECT COUNT(*)
            FROM Orders 
            WHERE Orders.cust_id = Customers.cust_id) AS orders 
    FROM Customers 
    ORDER BY cust_name;




テーブルの結合

リンク

リンクの作成
    SELECT vend_name, prod_name, prod_price
    FROM Vendors, Products
    WHERE Vendors.vend_id = Products.vend_id;

デカルト積は、直接2つのテーブルを乗じ、クロスカップリング、結合していない状態と呼ばれます

内側連結
    SELECT vend_name, prod_name, prod_price 
    FROM Vendors INNER JOIN Products 
    ON Vendors.vend_id = Products.vend_id;

インナーには知られている結合当量カプラー、平等のテストに基づいて2つのテーブルを

複数のテーブルを結合
    SELECT prod_name, vend_name, prod_price, quantity
    FROM OrderItems, Products, Vendors 
    WHERE Products.vend_id = Vendors.vend_id 
    AND OrderItems.prod_id = Products.prod_id 
    AND order_num = 20007;




高度なリンク

表の別名

利点は、使用してSQL文の中で何度も同じテーブルをできるように、文を短くすることができます

    SELECT cust_name, cust_contact 
    FROM Customers AS C, Orders AS O, OrderItems AS OI 
    WHERE C.cust_id = O.cust_id 
    AND O.order_num = OI.order_num 
    AND OI.prod_id = 'RGAN01';
自己結合
    SELECT C2.cust_id, C2.cust_name, C2.cust_contact 
    FROM Customers AS C1, Customers AS C2
    WHERE C2.cust_name = C1.cust_name 
    AND C1.cust_contact = 'Jim Jones';

DBMS処理リンクは、はるかに速くサブクエリより

ナチュラルリンク

各列に返さ後、複数回の除外

外部リンク
    SELECT Customers.cust_id, Orders.order_num 
    FROM Customers LEFT OUTER JOIN Orders 
    ON Customers.cust_id = Orders.cust_id;
リンク集約機能付
    SELECT Customers.cust_id, COUNT(Orders.order_num) AS num_order
    FROM Customers INNER JOIN Orders 
    ON Customers.cust_id = Orders.cust_id 
    GROUP BY Customers.cust_id;




複合クエリー

連合

使用UNION

各SELECTステートメントを与える、プラスUNION間

    SELECT cust_name, cust_contact, cust_email
    FROM Customers 
    WHERE cust_state IN ('IL', 'IN', 'MI')
    UNION 
    SELECT cust_name, cust_contact, cust_email 
    FROM Customers 
    WHERE cust_name = 'Fun4All';
ルール

各クエリは、データ・タイプは互換性があるように、同じ列、式、または集計関数を含める必要があります

これは、重複行が含まれています
    SELECT cust_name, cust_contact, cust_email
    FROM Customers 
    WHERE cust_state IN ('IL', 'IN', 'MI')
    UNION ALL
    SELECT cust_name, cust_contact, cust_email 
    FROM Customers 
    WHERE cust_name = 'Fun4All';

おすすめ

転載: www.cnblogs.com/burymyname/p/11908047.html
おすすめ