Getting Started with SQL Server: 1. シンプルなSELECTクエリ

この一連のレッスンでは、SQL SELECTステートメントを使用してMicrosoft SQL Serverにクエリを実行する方法について学習します。 このレッスンを読めば、次のことができるようになります。

  • SQL Server SSMS(SQL Server Management Studio)データベース内のすべてのテーブルを識別する。
  • 列を表示し、テキストと数学の結果を作成し、個別の値を設定するには、SQL SELECT文を使用します。
  • コマンドをデバッグし、間違いを修正するいくつかのテクニックを学びます。

重要! データベースの例に従って、実行してください。 まだの方は、私の SQL Server を始めるためのガイドにサインアップしてください。 無料ソフトウェアとサンプル データベースのダウンロードに関するガイダンスを受けることができます。

Understanding Your Database

A simple select statement consists of two parts.これは、2つの部分から構成される単純なselect文です。 最初の部分は、どの列を表示したいかを記述し、2番目の部分は、どのテーブルを表示するのかを記述します。 selectステートメントは次のようになります:

SELECT LastName FROM Person.Person

この例では、LastNameが列で、Personがテーブルです。 列は SELECT キーワードの後に、テーブルは FROM の前に記述します。

テーブル名

なぜ Person テーブルが Person.Person と呼ばれるのか不思議に思われるかもしれません。 Person として参照されているのか不思議に思うかもしれません。 これは、サーバー上でオブジェクトが組織化される方法と関係があります。 データベースは、入れ子になった一連のコンテナとして考えることができます。 コンテナとは、

  • Server/Instance – コンピュータ上で動作する SQL Server のインスタンス。
  • Databases – インスタンス上に作成された 1 つまたは複数のデータベース。
  • Schemas – テーブルおよびその他のデータベース オブジェクトを論理的にグループ化する方法。

テーブルに対する完全修飾名は …。 したがって、本当に明示的にしたい場合は、

SELECT LastName FROM ...

のようなものを使用してクエリを実行することができます。 幸運なことに、私たちは通常 1 つのデータベースのコンテキストでクエリを作成するため、スキーマとテーブル名を次のように指定するだけです:

SELECT LastName FROM Person.Person

しかし、括弧はどうでしょうか? これは、テーブルの名前にスペースが含まれている場合に使用されます。 つまり、

SELECT Last NameFROM Person.Person Table

はエラー

SELECT FROM Person.

はOKです。 私のアドバイス? もし、自分のテーブルに名前を付けるなら、スペースは使わないでください。 どうしてもつけたいなら、Oracleの人たちと同じようにアンダースコアを使いましょう。 Person_Table は、個人的には PersonTable よりも読みやすいです。

Using the Object Explorer

クエリーを作成するには、データベースで使用できるテーブルとカラムが何であるかを知る必要があります。 SSMS (SQL Server Management Studio) を使用している場合、データベースのテーブル フォルダーを展開するだけで、データベースで見つかったすべてのテーブルを一覧表示できます。 さらに詳しく知りたいテーブルを見つけたら、そのテーブル名をクリックして展開し、次に列フォルダをクリックしてすべての列をリストアップします。

SSMS でクエリーを実行する

先に進む前に、SSMS でクエリーを実行する方法を説明します。 これは実に簡単です。 SQL Server Management Studio を起動したら、データベースを選択します。 次に、上部のツールバーにある[新しいクエリ]ボタンをクリックします。 すると、右側にクエリウィンドウが表示されます。 このウィンドウは基本的にテキストエディタなので、好きなものを入力することができます。 SQLステートメントをカット&ペーストするか、タイプして、[実行]をクリックするとステートメントが実行されます。 結果はウィンドウの下部に表示され、エラーなどのメッセージはメッセージタブに表示されます。

Select Multiple Columns

複数の列を選択する場合は、カンマで区切ります。 たとえば、

SELECT FirstName, LastNameFROM Person.Person

では、姓と名の両方が結果として返されます。 ちなみに、クエリを書くときに大文字と小文字を混在させることができます。 つまり、

SELECT FirstName, LastNameFROM Person.Person

select FirstName, LastNamefrom Person.Person

と同じように動作します。 一般的な慣例として、キーワードはすべて大文字にします。 DBAの中には、この方法で書かれたコマンドを読みやすいと感じる人もいる。 個人的には、私はそうしませんが、このブログではそうしてみます。)

Rename SQL Columns

SELECT 文の結果のカラムの名前を変更することができます。 これを行うには、ASステートメントを次のように使用します:

SELECT LastName as SirNameFROM Person.Person

これは、結果を “LastName” ではなく “SirName” として表示します。 これは、見栄えの点からも良い機能ですが、計算結果を返したいときに名前を付ける必要がある場合にも便利です。 例えば、LastNameをすべて大文字で返したいとします。 その場合、

SELECT UPPER(LastName) AS SirNameFROM Customers

UPPER と書くことになるが、これは関数と呼ばれるものである。 SQL Server には、さまざまな種類の計算を実行するために使用できる関数がたくさんあります。 SQL Server には、さまざまな種類の計算を実行するために使用できる関数が多数あります。それらすべてについて後で調べますが、今のところ、いくつかの関数を結び付けて、必要な方法でデータを出力する複雑な式を作成できることを知っておいてください。 人事部門が大文字のフルネームを見る必要があるとします。 この場合、どうすればよいでしょうか。 簡単です。

SELECT UPPER(FirstName) + ' ' + UPPER(LastName) AS FullNameFROM Person.Person

このステートメントは複雑に見えますが、一度分解してみると、単純な要素の束で構成されていることがわかります。

  • 先ほど学んだように、UPPER は列の大文字を返すために使用します。 この場合、’ ‘はスペースを1つ出力することを意味します。 この式を英語で読むと、”Take the uppercase of the FirstName combine it with a space and then add the uppercase of LastName to it.”

    Do Math with SQL!

    SQL に数学のトリックをさせることもできます。 SQL に許可すれば、かなり複雑な演算を行うことができます。 今日は、2 つの数値を乗算する方法を紹介しますが、同様に簡単に加算、減算、または除算を行うことができます。 後でもっと複雑にして、代数IIのころを思い出してください。) 以下は、SQL で使用できる一般的な数学演算子です。

    • * 乗算
    • / 除算
    • + 追加
    • – 減算

    OrderDetails テーブルを使って、単価に量を掛けて合計価格を計算することにします。

    SELECT UnitPrice, OrderQty, UnitPrice * OrderQty AS TotalFROM Purchasing.PurchaseOrderDetail

    「UnitPrice * OrderQty」というビットは、UnitPriceにQuantityを掛けるという意味です。

    Be Distinct and Debug

    これまで、いくつかの値が繰り返されているかどうかにかかわらず、テーブル内のすべてのレコードを取得するselect文を使用しました。 必要であれば、DISTINCT キーワードを使用して、結果から重複を取り除くことができます。 たとえば、従業員の肩書きの一意なリストだけを返したい場合は、次の SQL 文を使用します:

    SELECT DISTINCT JobTitleFROM HumanResources.Employee

    DISTINCT 文は、複数の列に対しても機能します。 必要であれば、

    SELECT DISTINCT JobTitle, GenderFROM HumanResources.Employee

    と入力することで、役職と性別の個別のリストを得ることができます!トリビア:ALLキーワードはDISTINCTの対応するもので、デフォルトの動作です。

    Finding and Correcting Errors

    遅かれ早かれ、コマンドラインの select 文をタイプミスして、コンピューターに「構文エラー!」または「無効な列名!」と叫ばれるでしょう。 select文は、SELECT部分とFROM部分の2つの主要な部分から構成されていることを覚えておいてください。 一般に、データベースはまずこれらのキーワードが存在するかどうかを確認し、存在しない場合は構文エラーを引き起こします。

    これは、「キーワードのスペルが間違っているか、順序が正しくない」(たとえば、DISTINCT SELECT のように、Distinct を Select の前に持っている)という意味を持つ単なる空想上のフレーズです。 キーワードがチェックされると、文はテーブルが指定されていることを確認するために検査されます。 テーブルが確認されると、カラムをチェックすることができます。 つまり、最初にキーワードをチェックし、次にテーブルをチェックし、最後にカラムが正しいかどうかをチェックするという順序になります。 エラーが表示されたら、それをよく読んでください。 スペルを間違えている可能性があります。 コンピュータは、あなたがスペルを間違えた箇所を引用符で囲んで教えてくれます。

    1. どのようにAdventureWorks2012データベースのすべてのテーブル名を見つけることができますか?
    2. Personのすべての列の名前を取得するための2つの方法は何ですか?Personテーブル?
    3. すべての従業員のJobTitleとBirthDateを選択します。
    4. 半額セールがあった場合、各PurchaseOrderDetailアイテムの単価はどうなりますか?

    回答はこちら

    おめでとうございます! あなたは今、selectコマンドを使用してデータベースに問い合わせる方法を学びました。 このチュートリアルでは、数学的な演算子や関数など、今日説明した内容をさらに掘り下げていきます。 覚えておいてください。 もし、他に聞きたいことがあれば、コメントやツイートをしてください。 私はあなたの力になります

コメントを残す

メールアドレスが公開されることはありません。