sql >> データベース >  >> RDS >> Database

SQLの基本コマンド:例を使用して単純なクエリを作成する方法

    この記事では、最も基本的なSQLクエリから簡単なSQLクエリを作成し、スクリプトを徐々に改善して、数学や日付に関連する問題を解決する方法について説明します。さらに、SQLクエリを取り巻く概念を明確にします。

    この記事は主に初心者を対象としていますが、あらゆる経験レベルに役立つヒントが含まれています。

    データベースのSQLクエリとは何ですか?

    執筆を実際に体験する前に、まずSQLクエリについて少し話して、SQLクエリを正しく理解しましょう。

    SQLは構造化クエリ言語の略です これは、リレーショナルデータベースのクエリに使用される必須の言語です。

    T-SQLとSQL–違いは何ですか?

    T-SQLまたはTransact-SQLは、ANSISQLとも呼ばれる従来のSQL言語よりも多くの機能と機能を備えたMicrosoftバージョンのSQLです。

    したがって、 T-SQLは従来のSQL言語に加えて、Microsoftによって追加されたものです。 SQLについて話すときに、より一般的に使用され、言及されます。

    この記事では、SQLという単語を使用するかT-SQLという単語を使用するかにかかわらず、MicrosoftSQLのバージョンについて説明します。

    リレーショナルデータベースでSQLクエリを使用する理由

    リレーショナルデータベースは、テーブルを物理的に接続するのではなく、テーブルを接続するために使用されるキーを備えたデータベースです。

    たとえば、 Bookというテーブルがあります。 BookTypeという別のテーブルにリンクします キーを使用して、レコードにさらに意味を追加します。

    図の表は、キーを介してリンクされています。それらを物理的に接続する必要はありません。これがリレーショナルデータベースの基本的なルールです。キーを使用して2つのテーブル間にリレーションを作成します。

    リレーショナルデータベースとNoSQLの比較もお読みください–ビッグデータ管理のために何を選択しますか?

    データベースのクエリとは何ですか?

    データベースにクエリを実行して、そのデータベースに関連する質問への回答を取得します。つまり、データベースに対してクエリを記述して、データベースに含まれるデータに関する情報を取得します。

    たとえば、特定のデータベース内のすべての書籍レコードとそのタイプを表示することに関心があります。必要なデータを表示するには、そのデータベースにクエリを実行する必要があります。そのためには、データベースに対してスクリプトを作成して実行する必要があります。

    クエリを実行するために何が必要ですか?

    データベースをクエリするには、いくつかの前提条件が存在する必要があります。これは、どこに対してもクエリを記述して実行することはできないためです。

    データベースのクエリには、次のものが必須です。

    1. データベースを保存するSQLServer(ローカルまたはリモートにインストール)などのデータベースサーバー。
    2. クエリの作成と実行に使用するSQLServerManagementStudioやdbForgeStudioforSQLServerなどのデータベース管理ツール
    3. クエリを実行するデータベース。学習目的で任意のサンプルデータベースを作成できます。

    また、どのテーブルに必要な情報が含まれているかなど、データベースの基本を理解している必要があります。リレーショナルデータベースの概念を理解することもプラスです。

    上記の要件をすでに満たしていることを前提としています。ただし、詳細については、次の記事を参照することもできます。

    SQL Server Management Studio(SSMS)の基本–パート1

    SQLでクエリを作成する前に行うべきこと

    ここから、簡単なSQLクエリを作成します。

    SQLクエリの記述を開始するための環境を設定してください。ツールを準備します。 dbForge Studio forSQLServerまたはSQLServerManagement Studioを開き、SQLインスタンスに接続します。ここからSQLの旅を始めます:

    接続に成功したら、 CTRL + Nを押します。 または、ファイル>新規>現在の接続でクエリに移動します

    これで、現在接続されているサーバーのマスター(システムデータベース)に正常に接続されました。

    重要なヒント: 常にサンプルデータベースを作成して、それに対してクエリ(スクリプト)を実行します。システムデータベースに対してクエリを実行することは、次の3つの場合を除いて、適切な方法ではありません。

    1. サンプルデータベースを操作すると、そのために作成されたスクリプトがシステム(マスター)データベースに対して実行されます。
    2. マスターデータベースに意図的にクエリを実行して、そこから情報を取得します。
    3. クエリはシステム(マスター)データベースに対して安全に実行できます。

    サンプルデータベースのセットアップ

    BookSimpleというサンプルデータベースを作成しましょう テーブルなし。マスターデータベースに対して次のスクリプトを記述してサンプルデータベースを作成し、 F5を押します。 クエリを実行するには:

    -- Create sample database BookSimple
    USE MASTER
    GO
    
    CREATE DATABASE BookSimple
    GO
    
    USE BookSimple
    

    SQLクエリの背後にあるセットベースの概念

    最も単純なSQLクエリを作成する直前に、SQLがセットベースの言語であることを理解する必要があります。

    つまり、SQLを使用してデータベースにクエリを実行する場合は、セットまたはグループの観点から考える必要があります。

    SQLは設計によるものであり、デフォルトではセットベースの要求を処理するのに非常に効率的です。セットベースのロジックを念頭に置いてスクリプト(クエリ)を設計すると、SQLを理解し、一般的な学習パス(独自の利点があります)に従うものよりも迅速に実装できます。

    クラスやグループなど、自然に発生するセットについて考えてみましょう。クラスを指すときは、そのクラスのすべての生徒を指します。 SQLは、そのクラス全体のクエリに役立ちます。

    同様に、 本の表です。書籍のすべてのレコードが含まれています。まるで1冊の本について話しているかのようにそのテーブルにクエリを実行できますが、実際には、 Bookで表される本のテーブル全体にクエリを実行しています。 テーブル。

    後でいくつかの基本的な例を検討するときに、セットベースの概念のより多くの利点がわかります。

    単純なSQLSELECTステートメント

    SELECTは、データベースから(基準に基づいて)すべてまたは選択された行と列を取得するT-SQLステートメントです。

    つまり、 SELECT 特定の基準に基づいて、テーブルまたはテーブルの数からデータを表示(選択)できます。一般的に言及されていない場合は、すべてのデータが表示されます。

    したがって、SELECTは、データベースから行と列を取得する場合に検索する最初のステートメントです。 SELECT構文の最も単純な形式は次のとおりです。

    SELECT * FROM <Table>

    学習プロセスを徐々に改善するために、時間とともに構文を変更することを忘れないでください。

    SELECTステートメントを使用する別の方法は次のとおりです。

    SELECT <Expression>

    式には、次のようなさまざまなものがあります。

    1. 一定(1などの固定数など)。
    2. 変数(任意の数に変更できる@Xなど)。
    3. 定数または変数の組み合わせ(1 +2や@[email protected]など)。

    ただし、SELECT<式>またはSELECT* FROM

    のどちらを使用する場合でも、セットの観点から考える必要があります。

    簡単なSQLクエリの書き方

    BookSimpleにクエリを実行してみましょう データベースを更新してデータベースを更新します オブジェクトエクスプローラーの下のノード。 BookSimpleを右クリックします >新しいクエリ

    最も単純なSQLクエリを書き留めます–サンプルデータベースに対して次のスクリプトを記述して実行します。

    -- Display 1
    SELECT 1
    

    クエリを実行すると(F5キーを押す)、次の結果が表示されます。

    したがって、SELECT 1は1を返しますが、名前のない列(列名なし)が含まれます。

    1は定数です。 1のままなので、結果も1になると予想されます。ただし、理解しておくべきもう1つの重要な点があります。それは、出力が1列と1行のセットに変換されることです。列に名前を指定しておらず、(名前を取得するための)テーブルが含まれていないため、名前のないテーブル(セット)の名前のない列の1の値を取得しています。

    セットベースの言語は、指定された値を、1行の名前のないテーブルの名前のない列に自動的に返しました。

    次のようにスクリプトを変更して、列に名前を付けましょう。

    -- Show value 1 for the column Number of an unnamed table (set)
    SELECT 1 AS Number
    

    スクリプトを実行して、今回は次の結果セットを確認します。

    このクエリは常に入力(供給)と同じ値(数値)を返すため、クエリがどのように機能するかを理解するためにセットベースの考え方が不可欠である理由を理解する以外に、議論することはあまりありません。

    Selectステートメントでの計算

    上記のケースを使用して、SQLですばやく計算します。つまり、単一の値を式に変換します。

    たとえば、1000と200の2つの数値をすばやく追加したい場合、SELECTステートメントのみを使用して、テーブルについて言及せずに次のクエリを記述できます。

    -- Adding two numbers 1000 and 200 
    SELECT 1000+200 AS [Sum Of 1000 And 200]
    

    結果は以下のとおりです。

    同様に、数値の加算、乗算、除算、減算を行うことができます。

    数値を含むテーブルの2つの列を追加すると便利です。ただし、このアプローチを使用して2つの変数を追加することもできます。変数を使用すると、それらの変数を目的の値で初期化することにより、任意の2つの数値を追加できるため有益です。これは、次のスクリプトで示されています。

    -- SQL script to add any two numbers
    DECLARE @X INT, @Y INT, @Addition INT
    
    SET @X=550 -- Initialise variable X with a value (number)
    SET @Y=350 -- Initialise variable Y with a value (number)
     
    SET @[email protected]@sqldat.com -- SUM X and Y
    
    SELECT @X AS FirstNumber_X,@Y as SecondNumber_Y,@Addition as SumOfNumbers
    

    スクリプトを実行すると、次の出力が表示されます。

    このクエリを保存して、いつでも再利用して任意の2つの数値を追加できます(@Xと@Yの値を変更することにより)。これをセットの観点から考えると、出力は1行と次の3列の名前のないテーブル(セット)として返されると言えます。

    1. FirstNumber_X
    2. SecondNumber_Y
    3. SumOfNumbers

    ただし、空のデータベース(テーブルがない)を使用したSELECT を使用すると、さらに多くのことができます。

    もう1つのデータ計算例

    ここでは、GETDATE()関数を使用して、テーブルにまだ含まれていない不明な注文の現在の日付と配信予定日を取得します。

    まだ注文テーブルがないとしますが、製品の注文の予定納期をすばやく計算したいとします。 GETDATE()関数に任意の数値を追加すると、追加された日付と指定された日数が通知されます。

    つまり、注文の納期が注文から2日後になると予想される場合は、SELECTとGETDATE()+2を使用して計算できます。

    実際の動作を確認するには、次のSQLスクリプトを実行します。

    -- Calculating order date and expected delivery date
    SELECT GETDATE() AS [Order Date],GETDATE()+2 as [Expected Delivery Date]
    

    結果セットは次のとおりです。

    今回は、テーブルがない場合にGETDATE()関数を指定したSELECTステートメントを使用して、注文の配達予定日を直接計算できます。

    ただし、テーブルがあれば、そのテーブル内のすべての注文の配達予定日を取得できたはずです。

    繰り返しになりますが、この出力をSet Logicの観点から分析すると、2つの列と1つの行を持つ1つの名前のないテーブル(セット)があります。 SQLはセットベースの言語であり、テーブルなどのセットで非常に高速に動作します。テーブルがない場合は、(処理される)入力値を名前のないセットとして扱います。

    つまり、SQLクエリでは、空白のデータベース(テーブルがない)に対しても数値または日付ベースの計算を実行するために、SELECTステートメントの後に式が続く必要があります。

    おめでとう! SQLクエリの基本を学び、サンプルデータベースに対するSELECTステートメントを使用していくつかの簡単なクエリを作成しました。

    データベーステーブルに対する単純なSQLクエリの記述はまだ行われていないため、連絡を取り合ってください。

    SQLクエリをより適切に作成する方法を学ぶためのこと

    基本的なSQLクエリを作成できるようになったので、次の演習を試してください。

    1. サンプルデータベースBookSimple2を作成します。
    2. 任意の2つの数値を変数として定義して、それらを乗算するクエリを作成します。
    3. 現在の日付として注文日、注文日の2日後の出荷日、出荷日の2日後の配達予定日を作成するクエリを記述します。

    1. onUpgradeメソッドが呼び出されたことはありますか?

    2. カスタム型配列をPostgres関数に渡す方法

    3. NOTIN句内のNULL値

    4. SQLite Node.js