データベーステーブルのクエリ、シングルテーブル、マルチテーブル、サブクエリ

基本的なクエリとメソッド
から
WHERE
によってグループ
HAVING
DISTINCT

リミット
....

连表
の内側には参加し
、左の参加
権利参加
組合を

サブクエリ

 

 

オーダー書き込み
EMPここIDから、名前を選択IDを 、> 3とid <6
実行順序
エンドステーションテーブルで決定される#から
スクリーニングデータ上#条件を
いくつかのフィールドのうち選択位データをフィルタリング

EMP \ Gから選択*;結果は、クエリ結果の標準化を混乱あなたが照会することができ現象プラス\ Gを表示される可能性がある場合、テーブルのフィールドを組版場合は特に


3未満または6つのデータに等しい#1クエリIDを
選択* 。。;> = IDからID 3および<= 6 EMP
; WHERE BETWEEN 3とID EMPからSELECT * 6。
上記の文はとまったく同じです
#2のデータのクエリが20,000または18,000または17000払う
EMPどこ給料から選択IDを、名前20000の給与18,000 = =または給与= 17000;
; SELECTは、上記WHERE給与(20000,18000,17000)でEMPからID、名前を挙げ
名前がの文字含まoを#3クエリ従業員名、従業員の給与
のようなファジーマッチング
%一致以上任意の文字
_:任意の文字と一致し
EMP場所名から選択名、給与などの「%のOの%を」;
#4.従業員名のクエリがそのに従業員の給与の4文字の名前である
EMPどこから名前を選択し、名前、給与などの'____';
#5クエリIDが6よりも3より小さいか大きい場合、データは、
ID <3 EMP SELECT * FROMまたはID> 6。
* IDがBETWEEN 3およびNot 6を選択EMPから;
#6は、クエリは、給与の範囲ではない20000,18000,17000データ
ない(20000,18000,17000)EMP給与からSELECT ID、名前、
#7クエリジョブ記述名とジョブ名のスタッフの空は、NULLが使用されていないときを決定するために使用することができる=
SELECT名、からPOST WHERE EMP post_comment = NULL;
SELECT名前は、EMPからWHERE post_comment POSTはヌルであり、

MySQLは大文字と小文字を区別していない


ことにより、基パケット

部門グループによる#1
のポストでEMPグループから選択*;
グループ化した後、最小単位を行う必要がありますが設定され、そのグループ内の単一のデータ情報を表示してはならない

のMySQLでグループの後にのみ、フィールド情報パケットを直接することはできません得ることができます追加情報フィールドを取得し
ていますが、他の方法を導入することによって得ることができます(集計関数)

あなたのMySQLは指示strictモードを与えられていない場合は設定されていない
ショーのような変数「%は、MODE%と」;
SET現在のウィンドウのセッションが有効に
設定されているグローバルグローバルに有効な
セットグローバルsql_modeの=「STRICT_TRANS_TABLES、ONLY_FULL_GROUP_BY」;
POSTによるEMPグループからのSELECT *;
SELECTは、上記のIDを述べ、グループ名からPOSTによるEMP;
POSTによってグループEMPから名前を選択します。
#2.各部門の集計関数SUMのCOUNT AVGの分maxの最大の給料は、GET
、POSTによってグループEMPからPOST、MAX(給与)を選択し、
エイリアシングtoフィールド
を選択「部署」ポストによってEMPグループから「最大給与」として、MAX(給与)などポスト;
選択ポスト「部門」、MAX(給与)ポストによってEMPグループから「最大賃金」;
最低賃金#各部門
選択ポスト、分(給料)POSTによってEMPグループから、
各部門の#平均給与
を選択後、AVG(給与)からポストによってEMP基を表します。
各部門の#のための給与の合計
POST SELECT POSTによるEMPグループから、SUM(給与);
の各部門の人々の#番号
POSTによるEMPグループからSELECT POST、COUNT(年齢);
SELECT POST、COUNT(給与)のempグループからのPOSTによる;
SELECT POST、COUNT( POSTによってグループEMPからID);
POSTによってグループEMPからSELECT POST、COUNT(post_comment);
統計フィル内のパケットの数は、任意の非ヌルフィールドカウントを行うことができ、固有の識別データフィールドを使用することを推奨することができる
ようなIDフィールドとを
「」「
各グループ内の単一のデータが希望の計算を行い、集計関数が自動的に、あなたが考慮する必要はありませんでしょう

「」」

クエリパケット#3と各部門の後に部署の名の下に学生のすべての名前を
選択し、ポスト、GROUP_CONCAT(ポストによってグループEMPから名前)、
ポストを選択し、GROUP_CONCAT(「DSB」、名前)ポストによってグループEMPから、
GROUP_CONCAT()の値に相当する)、複数であってもよい(指定されたフィールドを取得することができ、各データパケット


を選択後、 GROUP_CONCAT(名前、「:」、給与)グループEMPからPOSTすることにより、


連結
:CONCAT(「NAME」を選択し 、CONCAT名):EMPから(「SAL」、給与を);


ヒント:
CONCATを使用すると、データをスプライスを支援するために使用されている
グループは使用しないCONCAT下
GROUP_CONCATパケットの後に使用


#クエリ各従業員を年俸
SELECT名前、EMPから給与* 12;


から始まるルックアップテーブル、最も基本的な手順に従ってください、最初の最後には制限を決定していないために、この表をチェックし、どのようなテーブルを決定し、その後、分類の必要性を決定し、あなたが必要とする情報に相当するものをフィールド決定
。「」「+

あなたが各ステップは新しいテーブルとして処理され、生成されなければならない結果と
して、テーブルの上に他の操作を実行する
。」「」
1.クエリジョブ名とジョブがすべて含まれてい従業員の名前GROUP_CONCAT
2.クエリジョブ名と各ジョブの従業員の数はカウントに含ま
3.男性社員と女性社員がカウント会社でクエリの数
4.クエリジョブ名を、それぞれの位置AVGの平均給与
5.名前と位置問い合わせを各ポジションの最大最大給与
それぞれ最低賃金分の6クエリジョブ名と位置
7出会う男性社員と男性社員の平均給与、女性従業員の平均給与と女性従業員AVG

「」 "
合計数平均分集計関数maxのみパケットの後に使用することができ
、テーブルには、デフォルトで書き込みグループでない場合、すべてのデータは、グループである
「」 "
順序を書きます
選択
から
どこ
のグループで

実行順序
からによってグループSELECT


30歳以上の従業員の平均賃金の年齢で8、統計部門

30歳以上の若年労働者を取得するには#
POSTによってWHERE年齢> 30グループEMPからSELECT POST、AVG(給与);
「」 "
終了時にSQL文を書くには、息をしてはならない
初期の段階である手順に従って書くために
書かれたステップその後、現在の結果の後にクエリの結果を見て、その後、さらに上の書き込みに
「「」


今も、データをフィルタリングするために使用されている場所を正確です
が、でグループ追従しているた
場所は予備的なスクリーニングを行うために、全体のデータをされた
データパケットを持った後、対象スクリーニング実施するために
1、統計部門を高齢者30歳以上の平均賃金、
および部門の10,000以上の平均賃金を保持
SELECT POST、POST HAVING AVG(給与)> 10000によるWHERE年齢> 30グループEMPからAVG(給与);
からSELECT POST、AVG(給与)ポストによるEMP年齢> 30グループ #1、AVG(給与)> 10000 エラー

後群は、によって使用されなければならない持つ:#が強調
AVG(給与)> 10000 HAVING EMPからSELECT *;エラー番号を

実行順序
から
WHERE
によってグループ
HAVING
SELECT


重にDISTINCTを
マルチ複製データ重複排除である
「」「
重複除外データが再ために、正確に同じでなければならない
とみなすことができない異なるデータの重複が存在する限り、
「」」
SELECT DISTINCTを上記IDを述べ、EMPから年齢、



実行順序
からによってグループHAVING SELECT DISTINCT によって順のソートデフォルトの昇順ASCはDESC降順になることができます給与でEMPオーダーからSELECT *を; SELECT *給与ASCによるEMPオーダーから、EMPオーダーからによってSELECT *給与DESC; SELECT年齢別EMP注文から*、給与、その後、#は最初の昇順歳の年齢に応じて給与をたどるには、昇順同じシナリオを作っ年齢ASCでEMPオーダーSELECT * FROM 、給与DESC;# 最初の同じ昇順歳の年齢に応じて次いで、場合に応じて、ここで、昇順で給与


















#10歳の従業員の平均賃金歳以上の部門の統計、
#1000よりも平均給与より高い部門を維持し、その後、平均賃金の並べ替え
から[ポスト、AVG(給与)ポストによる年齢> 10群はAVG(給与を持つEMP 平均することにより)、> 1000順序(給料 )

限度の制限記事のデータは数を表示
選択*からEMPリミット5;#は唯一の5つのデータを示して
EMPリミット5,5からSELECT *を;

「」 "
時間制限があるだけで一つのパラメータほんの数を示して表したとき
2つの制限がある場合二番目のパラメータの位置を開始する最初の引数が示すとき、パラメータの数は、次の番組の最初から開始位置を示します

。「」 "
最高の人間の照会給与詳細#の
#は、ソートに基づいて支払うことが
、その後制限#取る制限

DESC限界によって給与をEMP注文からSELECT *を1;


ただ、基本的に正のプログラミングに関連したREG見始めて


定期的に
選択する* EMPから場所名の正規表現" ^ jは*(N | Y)。 $「;


ジェイソン
jssdsdsay
JY
JNN




マルチテーブルクエリ

『』 『
2つのカテゴリに分類され、テーブルのクエリ
1.リンクテーブルクエリ
2.サブクエリ
『』』
EMP、DEPからのSELECT *;結果は直積である


#クエリ部門の従業員と情報技術部門の部門



あなたが近づいさえない助けるために特別なテーブル持っている
(内部結合)コネクタを

左の接続(左結合)

右の接続(右結合)

組合を追加するために、完全に接続されている(労働組合)限り、左と右の接続、SQL文として#完全に接続状態になる

EMPから選択*は上DEPに参加左 emp.dep_id = DEP。 ID
・ユニオン
emp.dep_id dep.id ON参加EMP右DEP =からSELECT *;


サブクエリの
テーブルとしてクエリの結果はさらに、クエリのSQLステートメント





idは=(DEPから選択名 EMPからdep_id選択する場所名= 「ジェイソン」);

#2.各部門の従業員、最新の新兵の
#のアイデア:最初の最新の新兵に各部門を確認し、テーブルのクエリでプレス部門対応

選択t1.id、t1.name、t1.hire_date、T1 。.post、T2 *からT1 AS EMP
内部結合
T2 AS(POSTでMAX_DATE AS EMPグループからのPOST、MAX(入社年月日)を選択)
= t2.post t1.post ON
WHERE t1.hire_date = t2.max_date
;


#のギブエイリアステーブル
#は別名仮想テーブルをチェックアウトすることができます
#フィールドにエイリアスを再生することができます

おすすめ

転載: www.cnblogs.com/zhangchaocoming/p/11391987.html