MySQLノートの概要-DQL言語

 

DQL言語

 

基本的なクエリ

1. 
テーブル名からの構文選択クエリリスト; 

2.機能
1.クエリリストは、フィールド、定数、式、関数、または複数にすることができます2.クエリ結果は仮想テーブルです

3.例
1.単一フィールド
選択をクエリしますテーブル名からのフィールド名; 

2.複数のフィールド
選択フィールド名のクエリ、テーブル名からのフィールド名; 

3. テーブル名からのすべてのフィールド
選択*の

クエリ4.定数
選択定数値のクエリ;注:文字と日付タイプの定数値一重引用符でも、数値を必要としない

5は、クエリ機能は、
関数名(引数リスト)を選択します。

6、クエリ式は、
1234分の100を選択し、

。7、エイリアス
①as②スペース

8は、再ために
は異なるフィールド名を選択しますテーブル名; 

9、+の
役割:追加操作を行うselect value + value;選択文字+値を直接操作します;最初に文字を値に変換してみます。変換が成功した場合は操作を続行します。それ以外の場合は0に変換してから操作select null + valueを実行します;結果はすべてnull 

10です。[補足] concat関数
関数:スプライシング文字select concat(文字1、文字2、文字3、...);
 
11、[補足] ifnull関数
関数:フィールドまたは式がnullかどうかを判断し、nullの場合は指定された値を返します。それ以外の場合は元の値を返しますselect ifnull(commission_pct、0)from employees; 

12、[補足] isnull関数
:フィールドまたは式を判断しますnullかどうか、ある場合は1を返し、それ以外の場合は0を返します。

 

 

条件付きクエリ

構文
選択テーブルからクエリのフィルタ基準のリスト

2つのスクリーニングカテゴリー
1、簡単な条件演算子
< = < >!=> = < = <= > セキュリティに等しい

2、論理演算子
&&と||か!

3ではなく、ファジークエリの
ような:一般的にワイルドカードで使用され、文字または数値のワイルドカードを判断できます:%任意の数の文字、_ 

とその間の任意の1文字がnull /非null:null値を判断するために使用される

null PK 

            通常タイプ可読性値はnull値は
nullに×√√である
< = >           √√×             

 

クエリの並べ替え

1.構文
選択クエリリストをテーブルからフィルター条件順に並べ替えたリスト[asc} desc] 

2.機能
1. asc:昇順、書き込まれていない場合はデフォルトの昇順desc:降順

2.並べ替えリストは単一フィールド、複数フィールド、関数をサポート、式、エイリアス

3、順序付けは通常、クエリステートメントの末尾に配置されます(制限ステートメントを除く)。

 

共通機能

1.概要
関数:javaのメソッドに似ています。利点:再利用性が向上し、実装の詳細が非表示になります。呼び出し:関数名(引数リスト)を選択します

。2.単一行関数
1.文字関数
concat:接続

substr:インターセプトサブストリング

上部:変更大文字の

小文字:小文字に変更

置換:

長さを置換:バイトの長さを取得

トリム:前後のスペースに移動

lpad:左のパディング

rpad:右のパディング

instr:サブストリング

2の最初の出現のインデックスを取得数学関数
ceil:

切り上げ:丸め

mod:モジュラス

フロア:

切り捨て切り捨て:切り捨て

rand:乱数を取得、0から

1の間の10進数を返します3、日付関数
now:現在の日付を返します+時間

年:年を返す

月:月を返す

日:曜日を返す

date_format:日付を文字に変換する
curdate 

:現在の日付を
返すstr_to_date:文字を日付に変換する

curtime:現在の時間を返す

時:時分

:分秒

:秒

datediff:2つの日付の間の日数を

返しますmonthname:月

4 を英語返します。その他の関数
version現在のデータベースサーバーのバージョン

データベース現在開いているデータベース

ユーザー現在のユーザー

パスワード( '文字'):md5( 'の形式でパスワードを返します('文字 '):md5暗号化形式の文字

5 を返します。フロー制御関数
①if 
(条件式、式1、式2):条件式が成立する場合は式1を返し、そうでない場合は式2を返します
②ケース1ケース変数または式または定数フィールド1の場合、次に2、値1の定数値2の値... ELSE N末端

③caseケース2の場合、条件1 2、値1と、この状態値N末端2の値... ELSE 

3 、グループ化機能
1、分類
最大最大値

最小最小値

合計および

平均平均

カウント計算数

2、特性
①テーブル名からの構文選択最大(フィールド); 

②サポートされているタイプの合計および平均は、通常、数値最大を処理するために使用されます。 Minとcountは任意のデータ型を処理できます

③上記のグループ化関数はnullを無視します

④両方を個別に使用して重複排除統計を達成できますテーブルから合計(個別のフィールド)を選択します。

⑤count関数count(フィールド):このフィールドのnull以外の値の

数を数えるcount(*):結果セットの行の数

数えるcount(1):結果セットの数を数える

効率:

MyISAMストレージエンジン、count()最も高い

InnoDBストレージエンジン、カウント()およびカウント(1)効率>カウント(フィールド)

groupグループ化機能と共にクエリされたフィールド。グループ化の後に表示する必要があります。

 

グループクエリ

まず、文法

選択グループ関数、グループ化されたフィールド
テーブルから
フィルタ[] 
フィールドをグループ化してグループを
後に[有する】パケットフィルタリング
[リストをソートすることによって注文] 

第二に、特性

            キーワードフィルタリングテーブルの位置を使用しては

前群スクリーニング元のgroup byの前面は
グループ化の後にフィルター処理されます。グループ化後の結果はgroup byの背後にあります

        

 

接続クエリ

1.意味

複数のテーブルのフィールドがクエリに含まれている場合、マルチテーブル接続
選択フィールド1、
テーブル1のフィールド2 、テーブル2、... を使用する必要があります。

デカルト積:複数のテーブルをクエリする場合、有効ではありません複数のテーブルのすべての行の完全な接続につながる接続条件
解決方法:有効な接続条件を追加する



2番目、分類

時系列の分類によると:
    sql92:
        同等の
        非同等の
        自己接続

        もいくつかの外部接続をサポートします(oracle、sqlserver、mysqlの場合) )サポートされていない
    SQL99 [推奨] 
        EN 
            等価
            非等価
            接続から
        外部結合
            外側の左
            及び右の外側の
            全体の外側に(MySQLがサポートしていない)
        クロスコネクト





 3つ、SQL92構文

 1を、同等の接続
:構文
    クエリのSELECTリスト
    表1別名からの、表2のエイリアス
    、表1. key =表2.key 
    【と】フィルタ
    基による[]フィールドグループ
    [有する]グループ化されたフィルタは、
    []ソートフィールドによって順

特性:
    一般テーブルエイリアス① 
    複数の配列表を切り替えてもよい② 
    接続テーブル③nは、少なくともN-必要 - 1接続条件
    ④等価接続の結果は、複数のテーブルの交差です


。2. 非等価接続
構文:
    表1エイリアスから
    クエリリスト選択し、非等価
    接続条件
    [およびフィルター条件] 
    [グループ別グループ化フィールド] 
    [ グループ化後のフィルタリング] [ フィールドの
    並べ替え]
 3. 自己結合

構文:
    テーブルエイリアス1、テーブルエイリアス2から
    クエリリスト選択し
    、同等の接続条件
    [およびフィルター条件] 
    [グループフィールドでグループ化] 
    [グループ化後にフィルタリング
    する] [並べ替えフィールドで並べ替え]

 4番目に、SQL99構文

 1 、内部接続
構文:
テーブル1から
クエリリスト選択します。エイリアス
[内部]結合テーブル2エイリアスを接続条件
適用します。
リストの制限句を並べ替えて
グループ化順序をフィルタリングした後
、グループ化リストによって条件をグループ化します。
機能:
①テーブルの順序は

変更できます
。②内部接続の結果 = 複数のテーブルの交差③nテーブル接続には、少なくともn - 1個の接続条件が必要です

カテゴリー:
同等の接続
非同等の接続
セルフ接続




 2. 外部接続
構文:
テーブル1エイリアスから
クエリリスト選択 |右| 完全【外部】結合テーブル2エイリアス結合条件
フィルター条件は、
リストの
制限句を並べ替える
ことでフィルター順序をグループ
化したリストをグループ化することによってグループ化し
機能:
①クエリ結果= マスターテーブルのすべての行。スレーブテーブルが一致する場合、一致する行を表示し、スレーブテーブルに一致しない場合は、nullを表示します
。②左結合は左側のマスターテーブル、右結合は
  完全結合の右側のマスターテーブルです。両側がマスターです。表
③は、交差部分

 3 を除いて、一致しない残りの行のクエリに一般的に使用されますクロス結合

構文:
表1エイリアスから
クエリリスト選択
クロス結合テーブル2エイリアス; 

機能:
デカルト積

サブクエリ

1.意味
他のステートメント内にネストされたselectステートメントは、サブクエリまたは内部クエリと呼ばれます。
外部ステートメントは、挿入、更新、削除、選択などです。一般に、selectステートメントは、より外部ステートメントです。
ステートメントがselectステートメントの場合、このステートメントそれは外部クエリまたはメインクエリと呼ばれます。2 

番目に、分類
1.発生位置の
後に選択します。
後ろから
        標準量子クエリのみをサポートします
        テーブルサブクエリ
場所または次のもの:
        標準量子クエリ
        列サブクエリ
        行サブクエリ
が存在する後:
        標準量子クエリ
        列サブクエリ
        行サブクエリ
        テーブルサブクエリ

2の結果セットに従ってランク付け
スカラークエリ(単一サブクエリ):結果セットの1行1 
列サブクエリ(複数行のサブクエリ):列の複数の結果セット
行サブクエリ:結果セットがマルチあります複数行および複数列の
テーブルサブクエリ:結果セットは複数行および複数列


3です。例
遅れているまたは標準のクォンタムクエリの例ケース:給与が
最も低い従業員の名前と給与をクエリし
ます① 従業員からの最低給与選択分(給与)

従業員の名前と
給与を照会し、必要な給与=①select last_name 、salary from employees 
where salary =(
    select min(salary)from employees 
); 

2.サブクエリをリストする
Case:リーダーである
すべての従業員の名前を照会する①すべての従業員のmanager_idを照会する
SELECTをMANAGER_ID 
従業員から

②クエリ名、①属しEMPLOYEE_IDのリスト
SELECT LAST_NAME 
従業員から
でEMPLOYEE_ID(
    SELECTがMANAGER_ID 
    従業員から
)。

ページングクエリ

1.アプリケーションシナリオ
クエリするエントリが多すぎると、1ページが完全に表示されません
。2.構文

select query list 
from table 
limit [offset、] size; 
注:
offsetは、開始エントリのインデックスを表し、デフォルトの
サイズは0です。表示されるエントリの数を表します。

数式:表示される
ページ数がページの場合、ページあたりのエントリ数は
、テーブルの
制限から
クエリリスト選択します(ページ1)*サイズ、サイズ。

 

共同クエリ

1.意味
ユニオン:マージ、ユニオン、複数のクエリ結果を1つの結果に結合
2.構文
クエリステートメント1 
ユニオン[すべて] 
クエリステートメント2 
ユニオン[すべて] 
... 

3.意味
1.より複雑なクエリステートメントを置く複数のステートメントに分割
2.複数のテーブルのクエリに適用できる場合、クエリ列は基本的に一貫しています

。4.機能
1.複数のクエリステートメントに必要なクエリ列の数は一貫して
いる必要があります2.複数のクエリステートメントを必要とする各クエリ列のタイプと順序は一致している必要があります。3。
ユニオン重複排除、ユニオンすべてに重複アイテムが含まれています

クエリの概要

構文:
クエリリストを選択⑦ 
テーブル1エイリアスから① 
接続タイプ結合テーブル2② 
接続条件で③where 
フィルター④ 
グループ化リストによるグループ化
filterフィルターを持つ⑥ 
ソートリストによる順序⑧ 
制限開始エントリインデックス、エントリ数;⑨

 

おすすめ

転載: www.cnblogs.com/liqbk/p/12737849.html