記事ディレクトリ
SQL構文
1.注文(注文順)
SELECT * FROM 表名 ORDER BY 排序字段 ASC(升序)|DESC(降序);
- データベースクエリ(並べ替え:並べ替え)は、デフォルトでは昇順で配置されますが、昇順のASCが最適であり、コードは読み取り可能です。
- 重複を削除するために明確
select distinct * from 表名 order by column1,column2,column3 desc;
(重複排除) - 並べ替え列の値が同じ場合は、条件を追加して並べ替えに別の列を追加できます
select * from 表名 order by column1,column2,column3 desc;
降順で検索し、最初にcolumn1の列名で並べ替え、column1の値が同じ場合は、column2で並べ替えます。
特徴:
-
指定された列(1つの条件に対して1つの列、複数の条件に対して複数の列、優先度が高い)
-
昇順または降順を指定します
-
並べ替えによる順序は、数字と英語の文字列に対してのみ有効であり、並べ替えは中国語の文字に対しては無効であり、辞書の順序(文字、番号の順序)に準拠しています。
並べ替えの解決策は、中国語の文字には無効です->中国語の文字からピンインを生成し、ピンイン(辞書)の順序に従います
2.集計機能
集約関数(Javaのメソッドに類似:関数名())
5つの一般的に使用される集約関数
集計関数名 | 説明 |
---|---|
カウント | 指定された列がNULLでないレコード行の数をカウントします(NULL値がある場合、カウントされません)。 |
和 | 指定された列の数値の和を計算する、指定された列型が数値型ではない場合、演算結果が0であります |
最大 | 指定された列の最大値を計算します。指定された列が文字列タイプの場合は、文字列の並べ替え操作を使用します。 |
分 | 指定された列の最小値を計算します。指定された列が文字列タイプの場合は、文字列の並べ替え操作を使用します。 |
平均 | 指定された列の平均値を計算します。指定された列タイプが数値タイプでない場合、計算結果は0です。 |
ステートメントの実行順序
SELECT COUNT(*)FROM product WHERE price> 200;
実行順序:from-> where- > aggregate関数
3.グループ化(条件は持つことのみを使用できます)
SELECT 字段1,字段2… FROM 表名 GROUP BY 分组字段 HAVING 分组条件;
- 特定のルールまたは特定の特性に従ってデータをN個のグループに分割します(通常、IDは一意であるため、グループ化されません。グループ化は1つまたはゼロであり、意味がありません)。
- グループ化の役割を果たすだけで、統計はありません(通常、結果をカウントするための集計関数カウントを使用します)
- グループ化後に結果をフィルタリングする場合は、whereの代わりにhaveを使用する必要があります
ステートメントの実行順序
から->グループ化->集計関数(カウント)->持つ->選択
4.ページング表示(制限[***])
SELECT 字段1,字段2... FROM 表名 LIMIT M,N
SELECTフィールド1、フィールド2 ... FROMテーブル名LIMITM、N
M:表示を開始する行インデックス(0から開始)を
示しますN:表示する行数を示します
ページ1:M = N *(1-1)ページ2:M = N *(2-1)
ページページ:M = N *(ページ-1)開始(ページは通常、読みやすいようにURLアドレスに表示されます)
データベースページングは、データベースにクエリステートメントも書き込みます。違いは、クエリが一度にすべてのデータではなく、指定された数のデータに対して行われることです。
マルチテーブル関係
実際の開発では、プロジェクトは複数のテーブルで構成されている必要があり、これらのテーブル間には対応する関係があります。
テーブルとテーブルの関係は主に次のとおりです。
- 1対1の関連付け(テーブルAの行はテーブルBの行に対応し、その逆も同様です。この時点で、2つのテーブルを1つのテーブルにマージできます)
- 1対多の関連付け(テーブルAの行はテーブルBの複数の行に対応し、その逆は当てはまりません)
1対多の関連付け、テーブルAの行はテーブルBの複数の行に対応し、テーブルBの外部キーはテーブルAのプライマリキーに対応します。- 多対多の関連付け(テーブルAの行はテーブルBの複数の行に対応し、テーブルBの行はテーブルAの複数の行に対応します)多
対多の関連付けの場合、外部キーとしてテーブルAおよびBのプライマリキーに対応する中間テーブルを作成する必要があります。
マルチテーブルクエリ
1.クロスコネクトクエリ
相互結合クエリは、カルテシアンセットである2つのテーブルを乗算することです。(AおよびB-> A * B)
マルチテーブルクエリは、カルテシアンセットに基づく条件付きフィルタリングとして理解できます。
2.内部結合(内部結合条件の場合はオン)
何求めていることはある交差点の複数のテーブル-the本質はデカルトセットに条件を追加することです
2つの実装方法:
-
暗黙の内部結合:*をA、Bから選択します。
-
明示的な内部結合:条件に応じてA内部結合Bから*を選択します;(より効率的)(内部結合キーワードが使用されているため、内部結合クエリを直接識別できるため、明示的内部結合と呼ばれます)
2つの違い:
暗黙の内部結合は、カルテシアンセットに基づいてフィルタリングされます(カルテシアンセットを最初に見つける必要があります)。
明示的な内部結合は、元のテーブルで直接フィルタリングされるため、より効率的です。
3.外部参加
select * from tableA left outer join tableB tableA.id = tableB.id_fk;
外部結合では、2つのテーブルの1つを選択してすべてのデータを出力し、対応するデータがない場合、もう1つのテーブルはNULLを出力します。
2つの外部接続方法があります。
- 左外部結合は主に左テーブルに基づいており、左テーブルのすべてのデータが出力され、右テーブルに同等のデータがない場合はNULLが追加されます(左外部結合)
- 右外部結合は主に右テーブルに基づいており、右テーブルのすべてのデータが出力され、左テーブルに同等のデータがない場合はNULL(右外部結合)
4.サブクエリ
サブクエリはselectステートメントのネストです。1つのselectのクエリ結果は、別のselectクエリの構文の一部として使用されます。
select *from User where cid = (select cid from category where cname='电子')