単一テーブルのクエリのMySQLデータベース

シングルスタンダードのクエリ

  単一テーブルのクエリ

  優先順位のキーワードの実装

  単純な問合せ

  どこ制約

  グループによる

  集計関数

  HAVINGフィルタ

  問い合わせを注文することによって順序

  レコードの数を制限するためにLIMITクエリ

  正規表現の照会を使用して

単一テーブルのクエリ                                                                                                                                                                    

DISTINCTフィールド1、フィールド... 2を選択FROMテーブル
                               の条件
                               GROUP BYフィールド、
                               HAVINGスクリーニング
                               、ORDER BYのフィールド、
                               LIMITは、数を制限

優先順位のキーワードの実装                                                                                                                                                          


どこ
グループによる
SELECT 
DISTINCT 
HAVING 
注文によって
制限

1.表見つかりから
2保持指定された制約は、ファイルに/テーブルは、抽出記録
3.取得したレコードのグループによって、グループでない場合に、グループにより、全体のグループ
4.この行SELECT(デエンファシス)
5は、グルーピングの結果が有するフィルタ
:結果は条件によって並べ替えられて6.
7.結果は、数表示バーを制限します

単純な問合せ                                                                                                                                                                               

単純なクエリ 
を選択し、フィールド名、フィールド名、フィールド名からテーブル名---- 名前照会

を選択 * からテーブル名----- 検索

#の回避重複DISTINCT 
DISTINCTフィールド名を選択する、テーブル名; 

#は、表示形式を定義
    
連結を()関数は、文字列に使用される
連結(SELECT 名:フィールド名)から名前を、

第1のパラメータCONCAT_WS()分離線である
SELECT CONCAT_WS(、フィールド名)から名前、


4で操作クエリ 
選択フィールド名、給与* 12(給与* 12)ANNUAL_SALARY(給与)などからテーブル名#の操作に加えて名前を再定義

どこ制約                                                                                                                                                                             

言葉を使用することができますここで、

1.比較演算子:> <> = <= <>!=

2.between 80と80と100との間の100#値

80または10の3.in(80,10)#値

'Eの%' 4.like

  ワイルドカードは%や_することができ、

  %任意の数の文字を表します

  _ 1つの文字を表します

論理演算子とか

単一条件検索 
 を選択し、フィールド名から条件テーブル; 
例:EMP_NAME選択から従業員をどこPOST = 販売; 

多くの条件

を選択し、フィールド名から   従業員どこ条件の条件

例:SELECT EMP_NAME、給与従業員からの投稿 = 先生と給与> 10000 ; 

#のキーの間および
例:EMP_NAME SELECT、給与従業員FROM 
        WHERE給与BETWEEN 10000および20000 ; 

    SELECT EMP_NAME、給与従業員FROM 
        WHERE給与、NOT BETWEEN 10000 20000; 

キーワード(ヌルフィールド等号か否かを判断し、必要が)NULL IS 
従業員FROM EMP_NAME SELECT、post_comment:例
        ; WHERE post_comment IS NULL 

    SELECT EMP_NAME、従業員FROM post_comment 
        post_commentがNOT NULLであり; 
注意します空の文字列がnullではない

#のコレクションクエリ内のキーワード
例:EMP_NAME SELECT、従業員からの給与
        給与 =給与= 3000 OR 3500 OR 4000 OR給与給与= 9000 = ; 
    
    SELECT EMP_NAME、従業員からの給与
        給与のWHERE( 3000,3500 、4000,9000 ); 

    SELECT EMP_NAME、従業員の給与FROM 
        WHERE給与NOT IN( 3000,3500,4000,9000 );
 あいまいクエリのような#のキーワード
例:通配符'%は' 
    SELECT * 社員FROM 
            LIKE EMP_NAME ' 例えば%' ; 

    通配符' _' 
    SELECT * 社員FROM 
            EMP_NAME LIKE ' al__ ' ;
    

グループによる                                                                                                                                                                                  

キーワードをグループ化して単独群 
POSTを選択からPOSTによって従業員グループ; 


#のキーワードによってグループと関連して使用GROUP_CONCAT()関数は、

POST、GROUP_CONCAT(EMP_NAME)を選択するから、POSTによって従業員グループ
                 に従ってジョブパケット、およびクエリグループをメンバー名の

#1 で集計関数を使用して、グループ 
SELECT POST、COUNT(上記IDを述べた)からのPOSTによる従業員グループ;
                 に従ってジョブのグループ化、およびそこにあるどのように多くのそれぞれの参照は

「」 ' 
強調:
私たちは、グループ化のためのユニークな基礎としてフィールドを使用している場合各自己完結型のレコードセットは、このパケットが感知されていない
複数のレコードのフィールドの間に同じ値を、このフィールドは、一般に、パケットの基礎として使用されます
「」 '

集計関数                                                                                                                                                                             

強調:集約関数は、コンテンツのセットを重合しないパケットは、デフォルトの設定されている場合

例:
    SELECT COUNT( * )従業員FROM、
    SELECT COUNT( *)従業員FROM WHERE depart_id = 1 ; 
    SELECT MAX(給与)従業員FROM。
    MIN SELECT(給料)従業員FROM; 
    従業員からの選択AVG(給与)は、
    従業員からの選択SUM(給与); 
    SELECT SUM(給与)ここでは、従業員FROM depart_id = 3。

HAVINGフィルタ                                                                                                                                                                          

!!!!!! HAVINGとWHERE同じ場所ではありません

#をハイからローに実行優先順位:>による>グループは、HAVING によってパケット群の前に発生するので、そこはどこ任意のフィールドことができますが、集計関数を使用することはできません1.。有する2は、このようにパケットの分野で使用することができたが、によって、集計関数を使用することができ、他の分野に直接採取することができないパケット群の後に発生します
MySQLの> @@ sql_modeのを選択します。
+ -------------------- + 
| @@のsql_mode | 
+ -------------------- + 
| ONLY_FULL_GROUP_BY | 
+ -------------------- + セット(0.00 秒)

のMySQL > SELECT * FROM から給与> 100000 EMP + ---- + ------ + ------ + ----- + ------------ + --------- + - ------------- + ------------ + -------- + ----------- + 
| ID | EMP_NAME | セックス| 年齢| 入社年月日| ポスト| post_comment | 給料| オフィス| depart_id | 
+ ---- + ------ + ------ + ----- + ------------ + --------- + - ------------- + ------------ + -------- + ----------- +
| 2 | アレックス| 男性| 78 | 2015年3月2日| 教師| NULL | 1000000.31 | 401 | 1 |
+ ---- + ------ + ------ + ----- + ------------ + --------- + - ------------- + ------------ + --------- + ----------- + セット(0.00 秒)

のMySQL >選択後、GROUP_CONCAT(EMP_NAME)からポストを有する給与> 10000によってEMP基を表します。错误、分组后无法直接取到給与字段 
ERROR 1054(42S22):不明な列' 給与'   ' 句を有する' 
MySQLの >を選択後、GROUP_CONCAT(EMP_NAME)からポスト平均を有する(給料)> 10000によってEMP基;
+ ----------- + ------------------------------------- ------------------ +  
| ポスト| GROUP_CONCAT(EMP_NAME)|
+ ----------- + ------------------ + ------------------------------------- 
|操作|プロセス一口鉄、銅一口鄭銀をかむ、Yaojin、張イェジン| 
|先生|ジャッキー・チェン、Jinxin、jingliyang、liwenzhou、yuanhao、wupeiqi、アレックス| 
+ ----------- + ---------- + ---------------------------------------------  SET( 0.00 秒)

 検証
検証

問い合わせを注文することによって順序                                                                                                                                                                 

押して、単一のソート
    SELECT * 従業員の給与BY ORDER FROM; 
    SELECT *社員から順給与ASC BY;  昇順 
    *従業員の給与DESC BY ORDER FROM SELECT; 降順

複数列並べ替え:古い同じ場合は、最初に年齢順に応じて給与に応じてソート
    SELECT * から従業員の
        年齢BY ORDER、
        給与DESC;

レコード数のクエリを制限LIMLT                                                                                                                                                       

例:
    SELECT * 給与DESC BY従業員から順
        LIMIT 3;                    初期位置をデフォルトは0 
    
    SELECT * DESC BY従業員から順給与
        LIMIT 0、 5; 0から始まる、すなわち、最初のクエリが最初に、次いで、この1つは含みます5つのチェックなどのバック

    SELECT * 従業員給与DESCのBY ORDERから
        LIMIT 5,5; 5を含むその後の調査が含まれている記事6を、チェックアウトすることである第五の初めから、

正規表現の照会を使用して                                                                                                                                                                

SELECT *従業員FROM WHERE EMP_NAMEのREGEXP、' ^エール' ;エール#では始まる

SELECTを * EMP_NAMEのREGEXP、従業員FROM ' $に' ;の末端に位

SELECT *従業員FROM EMP_NAMEのREGEXP、' M {2} ' ;#二つの連続メートル

 

 

  

おすすめ

転載: www.cnblogs.com/tianshuai1/p/10994335.html