Mysql《MySQL必知必会》学习总结

4089 ワード

Mysql《MySQL必知必会》
一、データの検索(第四章)
1.1行のフィールドのすべての値を比較し、効率に影響を与えるDistinctメソッドを使用しないでください.
2.サブクエリの使用を慎む:
  • 2.1 whereの後にクエリー
  • を追加
  • 2.2 whereの前に何件のデータがあるか、
  • のクエリーを何回追加します.
    二、共同照会(第十六章)
    1.Mysql複雑な文の実行順序
    select customers.cust_name,
           customers.cust_id,
           COUNT(orders.order_num) AS num_ord
    from customers INNER JOIN orders ON
    customers.cust_id = orders.cust_id
    GROUP BY customers.cust_id
    
  • Fromの後のテーブル
  • を先にロードする
  • 次に、内部接続サブステートメント(接続なしでWhereを実行するサブステートメント)
  • を実行する.
  • 実行パケット
  • クエリーselectの後の各対応するフィールド(フィルタ)
  • 三、全文検索(第十八章)
    1.全文検索の使用方法
  • まずテーブルを作成する際にFULLTEXTで全文検索が可能なフィールドを指定する必要がある
  • .
  • whereの後にMatch(フィールド名)Against(検索内容)
      :
    SELECT note_text 
    FROM produce_notes
    WHERE Match(note_text) Against('rabbit')
    
  • を使用する.
  • 拡張クエリー:
  •    1.  Against         WITH QUERY EXPANSION,           
       (    rabbit   ,   rabbit      ,      )
       
       SELECT note_text 
       FROM produce_notes
       WHERE Match(note_text) Against('rabbit' WITH QUERY EXPANSION)
       
       2.   Against         IN BOOLEAN MODE,            
           、      ,             
       
       SELECT note_text 
       FROM produce_notes
       WHERE Match(note_text) Against('rabbit -rope*' IN BOOLEAN MODE)
       
        :      ,      rabbit,     rope         , 
        rope    
       
    

    四、データの挿入
    データ挿入
  • INSERT LOWを使用PRIORITY INTO(同様にupdate、deleteを適用可能)は、通常insert操作が遅く、この構文を使用するとinsertの優先度を下げることができ、後の文
  • を先に実行する
  • データを挿入し、できるだけ単一のInsertを使用し、複数のデータを挿入し、性能
  • を最適化することができる.
  • INSERT SELECT--insert文の後にSelectに従って検索したデータを直接挿入することができますが、フィールドの位置は必ず一致を保証しなければなりません.フィールド名は
  • ではありません.
  • ** select last_insert_id()は、最後の挿入値
  • を取得することができる.
    五、データの更新、削除
    1.更新
  • 通常複数のデータの更新エラーが発生すると、ロールバック操作が行われ、updateの後にignoreが追加されると、
  • はロールバックされません.
    2.削除
  • すべてのデータを削除する場合、truncate tableを使用すると、
  • より高速(元のテーブルを削除してから作成)になります.
    六、ビュー
    1.使用
  • 作成:create viewビュー名asクエリー文
  • に続く
  • 修正:ビューにはデータが格納されず、呼び出すたびにview内のクエリーが呼び出され、一般的には
  • は変更されません.
  • 削除:drop viewビュー名
  • 七、ストレージプロセス
    1.使用
  • 作成:
  • Example One:
    delimiter //
    
    create procedure    ()
        begin
            select * from tb_user;
        end //
        
    delimiter ;
      :  sql           “;”    ,          
    
          / /       ,end    ,
         “;”      ,      ,       
    
    
    Example Two:
    create procedure productpricing(
        OUT pl DECIMAL(8,2),  // OUT       ,DECIMAL    
        OUT ph DECIMAL(8,2),  //          、  、    
        OUT pa DECIMAL(8,2),
    )
        BEGIN
            SELECT Min(prod_price)
            INTO pl   //    INTO               
            FROM products;
            SELECT Max(rpod_price)
            INTO ph
            FROM products;
            SELECT Avg(prod_price)
            INTO pa
            FROM products;
        END;
        
        
         IN :        
         OUT:       
         INOUT:          
         DECLARE:    
         DECLARE total DECIMAL(8,2)
         DECLARE taxrate INT DEFAULT 6;
         
    
    
  • コール--CALLプロシージャ名()
  •     //       ,    
        CALL productpricing(@pricelow,
                            @pricehigh,
                            @priceaverage
        )
        
        //           
        select @priceaverage
        
    
  • 削除——DROP PROMCEDUREプロセス名
  • クエリー--show create procedure ordertotal;

  • 八、カーソル
    1.概要
    カーソルは、動的にデータを処理するために使用され、1行前または1行後に移動します(MYSQLのカーソルは、ストレージ・プロシージャに依存する必要があります).
    2.使用
        //   
        CREATE PROCEDURE oricessorders()
            BEGIN
                DECLARE ordernumbers CURSOR FOR 
                SELECT order_num FROM orders;
                
                //   /    (      END ,    )
                OPEN ordernumbers;
                    FETCH ordernumber;
                CLOSE ordernumbers;
            END;
            
        
        
    

    九、トリガ
    1.使用
    1.1   
        CREATE TRIGGER newproduct //        
        AFTER INSERT ON products  //   product        
        FOR EACH ROW SELECT 'Product added';//        
        
    1.2   
        DROP TRIGGER newproduct;
    

    2.注意事項
  • フロントフリップフロップがエラーを報告すると、sqlとバック
  • を実行できません.
  • SQLエラーメッセージ、後置
  • を実行できません
  • テーブルには最大6つのトリガ
  • しか設定できません.