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

SQLServer2017でクエリを作成する

    SQLServer2017データベースでクエリを作成する方法。

    実行できる最も基本的なクエリの1つは、次のようになります。

    SELECT * 
    FROM TableName;

    このクエリは、指定されたテーブルからすべてのデータを返します。 TableName クエリするテーブルの名前です。データベース内のテーブルの名前に置き換えてクエリを実行するだけで、そのテーブルの内容が表示されます。

    私たちのデータベースは3つのテーブルで構成されています。それぞれにデータが含まれています。各テーブルの内容を見てみましょう。

    Artists 表:

    SELECT * 
    FROM Artists;
    結果
    ArtistId  ArtistName              ActiveFrom              
    --------  ----------------------  ------------------------
    1         Iron Maiden             1975-12-25T00:00:00.000Z
    2         AC/DC                   1973-01-11T00:00:00.000Z
    3         Allan Holdsworth        1969-01-01T00:00:00.000Z
    4         Buddy Rich              1919-01-01T00:00:00.000Z
    5         Devin Townsend          1993-01-01T00:00:00.000Z
    6         Jim Reeves              1948-01-01T00:00:00.000Z
    7         Tom Jones               1963-01-01T00:00:00.000Z
    8         Maroon 5                1994-01-01T00:00:00.000Z
    9         The Script              2001-01-01T00:00:00.000Z
    10        Lit                     1988-06-26T00:00:00.000Z
    11        Black Sabbath           1968-01-01T00:00:00.000Z
    12        Michael Learns to Rock  1988-03-15T00:00:00.000Z
    13        Carabao                 1981-01-01T00:00:00.000Z
    14        Karnivool               1997-01-01T00:00:00.000Z
    15        Birds of Tokyo          2004-01-01T00:00:00.000Z
    16        Bodyjar                 1990-01-01T00:00:00.000Z
    
    16 row(s) returned
    
    Executed in 1 ms

    Albums 表:

    SELECT * 
    FROM Albums;
    結果
    AlbumId  AlbumName                 ReleaseDate               ArtistId  GenreId
    -------  ------------------------  ------------------------  --------  -------
    1        Powerslave                1984-09-03T00:00:00.000Z  1         1      
    2        Powerage                  1978-05-05T00:00:00.000Z  2         1      
    3        Singing Down the Lane     1956-01-01T00:00:00.000Z  6         3      
    4        Ziltoid the Omniscient    2007-05-21T00:00:00.000Z  5         1      
    5        Casualties of Cool        2014-05-14T00:00:00.000Z  5         1      
    6        Epicloud                  2012-09-18T00:00:00.000Z  5         1      
    31       Somewhere in Time         1986-09-29T00:00:00.000Z  1         1      
    32       Piece of Mind             1983-05-16T00:00:00.000Z  1         1      
    33       Killers                   1981-02-02T00:00:00.000Z  1         1      
    34       No Prayer for the Dying   1990-10-01T00:00:00.000Z  1         1      
    35       No Sound Without Silence  2014-09-12T00:00:00.000Z  9         4      
    36       Big Swing Face            1967-06-01T00:00:00.000Z  4         2      
    37       Blue Night                2000-11-01T00:00:00.000Z  12        4      
    38       Eternity                  2008-10-27T00:00:00.000Z  12        4      
    39       Scandinavia               2012-06-11T00:00:00.000Z  12        4      
    40       Long Lost Suitcase        2015-10-09T00:00:00.000Z  7         4      
    41       Praise and Blame          2010-06-26T00:00:00.000Z  7         4      
    42       Along Came Jones          1965-05-21T00:00:00.000Z  7         4      
    43       All Night Wrong           2002-05-05T00:00:00.000Z  3         2      
    44       The Sixteen Men of Tain   2000-03-20T00:00:00.000Z  3         2      
    
    20 row(s) returned
    
    Executed in 1 ms

    Genres 表:

    SELECT * 
    FROM Genres;
    結果
    GenreId  Genre  
    -------  -------
    1        Rock   
    2        Jazz   
    3        Country
    4        Pop    
    5        Blues  
    6        Hip Hop
    7        Rap    
    8        Punk   
    
    8 row(s) returned
    
    Executed in 1 ms

    3つのケースすべてで、クエリは同じでした。変更されたのはテーブル名だけでした。

    これは、私たちが実行できる最も基本的なクエリの1つです。単一のテーブルからすべての行とすべての列を返すだけです。

    このクエリをさまざまな方法で変更して、表示したいデータのみを返すことができます。以下は、必要な結果を正確に返すようにクエリを変更する一般的な方法です。

    列を指定する

    アスタリスクを使用する代わりに(* )すべての列を返すには、返したい列のみを明示的に指定できます。

    SELECT AlbumId, AlbumName, ArtistId 
    FROM Albums;
    結果
    AlbumId  AlbumName                 ArtistId
    -------  ------------------------  --------
    1        Powerslave                1       
    2        Powerage                  2       
    3        Singing Down the Lane     6       
    4        Ziltoid the Omniscient    5       
    5        Casualties of Cool        5       
    6        Epicloud                  5       
    31       Somewhere in Time         1       
    32       Piece of Mind             1       
    33       Killers                   1       
    34       No Prayer for the Dying   1       
    35       No Sound Without Silence  9       
    36       Big Swing Face            4       
    37       Blue Night                12      
    38       Eternity                  12      
    39       Scandinavia               12      
    40       Long Lost Suitcase        7       
    41       Praise and Blame          7       
    42       Along Came Jones          7       
    43       All Night Wrong           3       
    44       The Sixteen Men of Tain   3       
    
    20 row(s) returned
    
    Executed in 1 ms

    基準を狭める

    WHEREを追加できます 提供された基準に一致する行のみを返す句。

    SELECT AlbumId, AlbumName, ArtistId 
    FROM Albums 
    WHERE ArtistId = 1;
    結果
    AlbumId  AlbumName                ArtistId
    -------  -----------------------  --------
    1        Powerslave               1       
    31       Somewhere in Time        1       
    32       Piece of Mind            1       
    33       Killers                  1       
    34       No Prayer for the Dying  1       
    
    5 row(s) returned
    
    Executed in 1 ms

    別のテーブルに参加

    結合を使用して、データを共有する複数のテーブルから結果を返すことができます。これが関係のすべてです。特に、結合は通常、あるテーブルの外部キーが別のテーブルの主キーと一致する場合に使用されます。

    SELECT AlbumId, AlbumName, ArtistName 
    FROM Albums 
    	INNER JOIN Artists 
    	ON Albums.ArtistId = Artists.ArtistId 
    WHERE ReleaseDate < '1980-01-01';
    結果
    AlbumId  AlbumName              ArtistName
    -------  ---------------------  ----------
    2        Powerage               AC/DC     
    3        Singing Down the Lane  Jim Reeves
    36       Big Swing Face         Buddy Rich
    42       Along Came Jones       Tom Jones 
    
    4 row(s) returned
    
    Executed in 1 ms

    WHERE 句は、実際には出力に含まれていない列でも機能します。この場合、ReleaseDateに適用されました 結果にその列を含めていなくても、列。

    また、2つのArtistIdを修飾していることもわかります。 テーブルの名前が付いた列(例:Albums.ArtistId およびArtists.ArtistId )。 SQL Serverがその列を参照するときに参照しているテーブルを認識できるようにするには、これを行う必要があります。一部のデータベース開発者は、すべてのSQLクエリですべての列名を修飾することをお勧めしますが、これは個人的な好みやプロジェクト固有のコーディング規則の場合です。

    エイリアスの追加

    コードをより簡潔にするために、クエリにテーブルエイリアスを追加することもできます。たとえば、Artistsを指定できます。 arのエイリアス およびAlbums alのエイリアス (または他の好きな文字列)

    これらのエイリアスを使用して、列名を修飾できます。上記と同じクエリですが、すべての列名がテーブルエイリアスで修飾されています:

    SELECT al.AlbumId, al.AlbumName, ar.ArtistName 
    FROM Albums al
    	INNER JOIN Artists ar
    	ON al.ArtistId = ar.ArtistId 
    WHERE al.ReleaseDate < '1980-01-01';
    結果
    AlbumId  AlbumName              ArtistName
    -------  ---------------------  ----------
    2        Powerage               AC/DC     
    3        Singing Down the Lane  Jim Reeves
    36       Big Swing Face         Buddy Rich
    42       Along Came Jones       Tom Jones 
    
    4 row(s) returned
    
    Executed in 1 ms

    (テーブルだけでなく)列にエイリアスを割り当てることもできます。次の例でこれを行います。

    日付をフォーマットする

    データベースで日付と時刻を処理する方法はたくさんあります。 SQL Serverには、日付を格納するためのさまざまなデータ型があります(dateなど)。 、timedatetimesmalldatetime など)、日付を処理するためのさまざまな関数があります(たとえば、SYSDATETIME()GETDATE( )CURRENT_TIMESTAMP など)。

    この例では、YEAR()を使用します 日付の年の部分だけを返す関数。

    SELECT AlbumName, YEAR(ReleaseDate) AS Year 
    FROM Albums;
    結果
    AlbumName                 Year
    ------------------------  ----
    Powerslave                1984
    Powerage                  1978
    Singing Down the Lane     1956
    Ziltoid the Omniscient    2007
    Casualties of Cool        2014
    Epicloud                  2012
    Somewhere in Time         1986
    Piece of Mind             1983
    Killers                   1981
    No Prayer for the Dying   1990
    No Sound Without Silence  2014
    Big Swing Face            1967
    Blue Night                2000
    Eternity                  2008
    Scandinavia               2012
    Long Lost Suitcase        2015
    Praise and Blame          2010
    Along Came Jones          1965
    All Night Wrong           2002
    The Sixteen Men of Tain   2000
    
    20 row(s) returned
    
    Executed in 1 ms

    この例では、列にエイリアスも割り当てます。具体的には、YEAR()の結果にエイリアスを割り当てます。 ReleaseDateを渡す関数。 引数としての列。

    この例のもう1つのポイントは、ASを使用したことです。 エイリアスを割り当てるときのキーワード。これはオプションであり、ASを使用することもできます。 前の例でテーブルにエイリアスを割り当てるときのキーワード。

    SQLとTransact-SQLについて

    上記のクエリ(およびこのチュートリアルの他のクエリ)は、構造化クエリ言語(SQL)で記述されています。具体的には、SQLServerはTransact-SQLを使用します ( T-SQLに短縮されることもあります )、これはMicrosoftおよびSybase独自のSQL拡張機能です。

    SQLは、ほとんどのリレーショナルデータベース管理システムで使用される標準のクエリ言語です。これは、米国規格協会(ANSI)および国際標準化機構(ISO)の規格です。

    ほとんどの基本的なクエリはほとんどのリレーショナルデータベースで機能しますが、あるデータベースシステムと別のデータベースシステム間で移植する場合、一部のクエリを少し変更する必要がある場合があります。たとえば、SQLServerで実行されるスクリプトがあるとします。 MySQLでそのスクリプトを使用することもできますが、正常に実行される前にいくつかの変更が必要になる場合があります。

    このチュートリアルのSQLスクリプトは、SQLで実行できることのほんの一部を示しています。詳細については、SQLチュートリアルを確認するか、MicrosoftTransact-SQLリファレンスにアクセスしてください。


    1. プリペアドステートメントを使用しないのはいつですか?

    2. Oracle SQL Developerでジョブをスケジュールする方法は?

    3. 組織にMicrosoftAccessを導入することの真の価値は何ですか?

    4. Oracle.DataAccess.Clientの依存関係