マイクロソフトSQL Server -エピソード4



既定では、クエリ文から返される結果セットをランダムにソートします.SSMSではデフォルトのソート順序はありません.結果セットが意味があるので、何らかの方法でソートする必要があるかもしれません.
幸いにも、このタイプの機能を実行することができるSSMで機能があります.


ソート
クエリステートメントの結果セットをソートするには、次の構文を使用します.
Select [Column Name | *]
Where [Column Name] Like [criteria]
AND | OR [Column Name] [operator] [criteria]
Order By [Column Name] (asc/desc), [Column Name] (asc/desc),...
ASCで指定された列で注文することもできますascending order またはDESCで指定された列をソートすることができますdescending order . 我々はまた、私たちが好むように多くの列として使用することができますし、好きな順序でソートします.

The Order By clause will first sort the order of the first column with the method we specify, then from that result it will order the next column, in the order that we specified for that particular column and so on and so forth...



SSMの中のOrder by節で実験することができます.

Remember to make sure that you are connected to the correct database, in this case AdventureWorks.


我々は、購入を使用します.この議論では、購入者の詳細テーブルを購入します.
までこのクエリを実行したいテーブル名を入力しています.しかし、これを行うより簡単な方法があります.左側のパネルのテーブルを選択し、クエリーウィンドウの右側のパネルにドラッグします.

我々はすべての列とレコードを購入する私たちに利用可能な表示することができます.テーブルを購入します.これでオーダーバイ節を実行できます.WHERE句を実行しているならば、それは順序By句の前に来るでしょう.

私たちはOrderqty(Order Square)で注文するつもりです.私たちはまずASCを使います.

When we use an Order By clause and choose a column name, we do not need to specify asc if we want the column to be in ascending order. SSMS will order it in ascending order by default. But if you want to be declarative in your database then you would still type asc.




追加の列と並べ替えを追加すると、SSMは最初に指定された列をソートし、次に次の列をクエリーステートメントでソートします.

この場合、最初にdescでorderqtyをソートし、unitpriceの順序をソートするためにその順序構造を使用します.


ユニークなレコードを選択
私たちは、我々の基準に合うすべての行を返すSELECT文を議論しました.場合によっては、我々は重複した記録を持っているかもしれません、そして、多分、我々はデータベースからユニークな記録を返したいだけです.我々は、ユニークなレコードのみを返すために使用できるSQLクエリステートメントを議論する予定です.

SQLクエリのステートメントは、以前と全く同じですが、唯一の違いは、SELECT文の列名の前に現れる別個のキーワードになります.
構文は次のようになります.
Select Distinct [Column Names | *]
Where [Column Name] Like [criteria]
AND | OR [Column Name] [operator] [criteria]
Order By [Column Name] (asc/desc), [Column Name] (asc/desc),...
個別のキーワードは、ユニークなレコードだけが返されることを意味します.

SSMの中で実際にこれを見ることができます.
今回は人から選択します.人物表.また、すべての列の代わりにfirstName列から選択することも選択します.

ご覧のように、データベースのfirstname値を複製しています.結果セットを一意の値だけで返すには、別のキーワードを挿入する必要があります.

FirstNameでレコードを昇順にソートすることで、すべての名前が一意かどうかを確認できます.


データモデル
我々はSQLでの質問文のかなりの量をカバーしているが、我々は将来の記事で議論される概念を完全に理解するために関係データベースのいくつかの重要な概念を議論する必要があります.
以下のデータベースモデルを見てください.

顧客
カスタマーID
顧客名
顧客住所
C 1
フレッド
...
C 2
バート
...
C 3
ジェーン
...

製品
製品ID
商品名
説明
P 1
シャツ
...
P 2
タイ
...
P 3
カラー
...

注文
オーダーID
カスタマーID
製品ID

1000
C 1
P 1
1
1001
C 2
P 1
3
1002
C 1
P 3
1
1003
C 1
P 3
2
1004
C 2
P 2
4
1005
C 1
P 2
2
1006
C 3
P 3
1


主キー
データモデルを作成することでリレーショナルデータベースを設計します.以下のモデルは、前の例からのエンティティの構造を示しています.この図では、PKがマークされた列がテーブルの主キーです.主キーは、各行を一意に識別する列(または列の組み合わせ)を示します.すべてのテーブルは主キーを持つ必要があります.

この図は、テーブル間の関係も示します.表を結ぶ行は、リレーションシップの型を示します.この場合、顧客から注文までの関係は1〜多(1人の顧客は多くの注文をすることができます、しかし、各々の注文は1人の顧客のためです).同様に、注文と製品の関係は、Many - to - 1(いくつかの注文は同じ製品のためかもしれません)です.


外部キー
FKのマークされた列は外部キー列です.これらのテーブルは、別のテーブルの主キーを参照するか、リンクし、テーブル間の関係を維持するために使用されます.外部キーは、顧客テーブルに存在しない顧客の注文などの異常を識別し、防止するのにも役立ちます.以下のモデルでは、注文された注文と注文された製品を注文した顧客へのOrder Table LinkのカスタマーIDと製品ID列


我々がデータベースを構築する方法を理解して、我々が我々のテーブルをモデル化する方法と彼らが互いに関連している方法は、SQL支配に向けた不可欠なステップです.