SQL Server
 Computer >> コンピューター >  >> プログラミング >> SQL Server

SQL ServerのSELECT文の使い方を徹底解説!基本構文と実践例まとめ

このチュートリアルでは、SQL Server(T-SQL)におけるSELECT文の使い方を、構文と具体的なサンプルコードとともにわかりやすく解説します。

SELECTは、SQL Serverデータベース内の1つまたは複数のテーブルからデータを取得するために使用される、最も基本的かつ重要なコマンドです。

SELECT文の基本構文

最もシンプルな形式では、SELECT文の構文は以下の通りです。

SELECT '式'
FROM 'テーブル'
[WHERE '条件'];

一方、すべての機能を含んだ完全な形式のSELECT文は次のように記述します。

SELECT [ALL | DISTINCT]
[TOP (先頭値) [PERCENT] [WITH TIES]]
'式'
FROM 'テーブル'
[WHERE '条件']
[GROUP BY '式']
[HAVING '条件']
[ORDER BY '式' [ASC | DESC]];

各パラメータの意味

ALL:省略可能。条件に一致するすべてのレコードを返します。

DISTINCT:省略可能。結果セットから重複する値を取り除きます。

TOP (先頭値):省略可能。指定した場合、結果セットの先頭から指定した件数分のレコードを返します。たとえば TOP (10) なら、最初の10行が返されます。

PERCENT:省略可能。TOPと組み合わせて使用し、結果セット全体に対する割合で先頭の行を返します。たとえば TOP (10) PERCENT なら、上位10%のレコードが返されます。

WITH TIES:省略可能。指定した場合、切り捨てられた境界行と同じ値を持つレコードも併せて返します。そのため、TOPで指定した件数よりも多くの行が返されることがあります。

:取得したい列や計算値を指定します。すべての列を取得したい場合は * を使用します。

テーブル:データを取得する対象のテーブルです。FROM句には少なくとも1つのテーブルを指定する必要があります。

WHERE '条件':省略可能。返されるレコードが満たすべき条件を指定します。

GROUP BY '式':省略可能。複数のレコードを1つ以上の列の値ごとにグループ化します。

HAVING '条件':省略可能。GROUP BY と組み合わせて使用し、条件がTRUEとなるグループだけを抽出します。

ORDER BY '式':省略可能。結果セットを並べ替えます。ASC は昇順、DESC は降順での並べ替えを意味します。

実践例1:テーブルの全カラムを取得する

SELECT *
FROM hangtonkho
WHERE soluong > 5
ORDER BY hangtonkho_id ASC;

この例では、* を使って hangtonkho(在庫)テーブルから、数量(soluong)が5より大きいすべてのレコードを取得しています。結果セットは hangtonkho_id の昇順で並べ替えられます。

実践例2:特定のカラムのみを取得する

SELECT hangtonkho_id, hangtonkho_type, soluong
FROM hangtonkho
WHERE hangtonkho_id >= 555
AND hangtonkho_type = 'phanmem'
ORDER BY soluong DESC, hangtonkho_id ASC;

上記の例では、IDが555以上かつ在庫タイプが「phanmem(ソフトウェア)」であるレコードについて、ID・タイプ・数量(hangtonkho_id、hangtonkho_type、soluong)のみを取得しています。結果は数量の降順、在庫IDの昇順で並べ替えられます。

実践例3:複数のテーブルを結合して取得する

SELECT hangtonkho.hangtonkho_id, sanpham.sanpham_ten, hangtonkho.soluong
FROM hangtonkho
INNER JOIN sanpham
ON hangtonkho.sanpham_id = sanpham.sanpham_id
ORDER BY hangtonkho_id;

この例では、hangtonkho テーブルと sanpham(商品)テーブルを INNER JOIN で結合し、両テーブルの sanpham_id が一致するレコードから hangtonkho_id、sanpham_ten、soluong を取得しています。結果は hangtonkho_id の昇順で並べ替えられます。

実践例4:TOPキーワードを使う

SELECT TOP (3)
hangtonkho_id, hangtonkho_type, soluong
FROM hangtonkho
WHERE hangtonkho_type = 'phanmem'
ORDER BY hangtonkho_id ASC;

この例では、在庫タイプが「phanmem」であるレコードのうち、先頭の3件だけが返されます。それ以降の該当レコードは取得されません。

実践例5:TOP PERCENTキーワードを使う

SELECT TOP (10) PERCENT
hangtonkho_id, hangtonkho_type, soluong
FROM hangtonkho
WHERE hangtonkho_type = 'phanmem'
ORDER BY hangtonkho_id ASC;

この例では、在庫タイプが「phanmem」であるレコード全体のうち、上位10%のみが返されます。残りの90%のレコードは結果に含まれません。

  1. SQL ServerのINTERSECT演算子とは?構文と使い方を実例付きで解説

    SQL Server(Transact-SQL)における INTERSECT演算子 は、2つのデータセット(SELECT文)の両方に共通して存在するレコードだけを返すために使用されます。片方のクエリにのみ存在し、もう片方には存在しないレコードは、INTERSECTの結果セットから自動的に除外されます。 INTERSECTクエリのイメージ INTERSECTクエリが返す結果のイメージ図 図の説明: INTERSECTクエリは、ベン図の中央にある青く塗りつぶされた領域のレコードを返します。これらは dataset1 と dataset2 の両方に存在するレコードです。 なお、INTERSECT内

  2. SQL Serverの比較演算子とは?基本構文と実用例をわかりやすく解説

    SQL Serverの比較演算子とは この記事では、SQL Serverにおいて値の一致や大小関係を確認するために使用される比較演算子と、より高度な演算子について解説します。SQLの演算子全般については、「SQLの演算子」の記事もあわせて参考にしてください。 比較演算子は、主にWHERE句の中で使用され、どのレコードを選択するかを判定する役割を担います。以下は、SQL Server(T-SQL)で利用できる主な比較演算子の一覧です。 演算子説明 =等しい <>等しくない !=等しくない >より大きい >=以上 <より小さい <=以下 !>より大