ここでは、SQL Serverで3つのテーブルを作成し、それらを作成したスクリプトを分析します。また、別のスクリプトを実行して、テーブルが作成されたことを確認します。
以前は、スクリプトからデータベースを作成していました。ただし、データベースは空のデータベースであり、テーブルやデータは含まれていません。
次に、データベース用にいくつかのテーブルを作成します。
まず、復習として、これまでに行ったことは次のとおりです。
CREATE DATABASE Music;
それは空のデータベースを作成しました。まだ実行していない場合は、そのスクリプトを実行してください。
次に、次のスクリプトを実行します。
USE Music; CREATE TABLE Artists ( ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY, ArtistName nvarchar(255) NOT NULL, ActiveFrom date ); GO CREATE TABLE Genres ( GenreId int IDENTITY(1,1) NOT NULL PRIMARY KEY, Genre nvarchar(50) NOT NULL ); CREATE TABLE Albums ( AlbumId int IDENTITY(1,1) NOT NULL PRIMARY KEY, AlbumName nvarchar(255) NOT NULL, ReleaseDate date NOT NULL, ArtistId int NOT NULL, GenreId int NOT NULL CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId) REFERENCES dbo.Artists (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION );
このスクリプトは、データベースに3つのテーブルを追加します。テーブルはArtists
と呼ばれます 、Genres
、およびAlbums
。
SQL Operations Studio / AzureDataStudioでの結果は次のとおりです。
どのGUIツールでも、ほぼ同じ方法でテーブルが表示されます。各テーブルを展開して、その列、インデックス、トリガー、キーなどを表示できます。列を展開することもできます。 ノードを表示して、列とそのデータ型のリスト、および指定されている制約を表示します。
CREATE TABLE
の説明 ステートメント
実行したスクリプトは、3つのCREATE TABLE
で構成されています。 ステートメント—それぞれが異なるテーブルを作成します。スクリプトは外部キー制約も追加しますが、それについては後で説明します。
とりあえず、最初のCREATE TABLE
を分析しましょう スクリプト内のステートメント:
USE Music; CREATE TABLE Artists ( ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY, ArtistName nvarchar(255) NOT NULL, ActiveFrom date ); GO
このSQLステートメントは、Artists
というテーブルを作成します ArtistId
と呼ばれる3つの列があります 、ArtistName
、およびActiveFrom
。各列の定義はその名前で始まり、そのデータ型とその列に適用される制約が続きます。
「行ごと」の詳細な説明は次のとおりです。
USE Music;
- この部分は実際には
CREATE TABLE
の一部ではありません 声明。 音楽 に切り替えるためだけにあります データベース。サーバーには多くのデータベースが存在する可能性があり、正しいデータベースにテーブルを作成していることを確認する必要があります。すでに正しいデータベースで作業している場合は、この行は必要ありません。 -
CREATE TABLE Artists (
- これは
CREATE TABLE
の始まりです 声明。その後にテーブル名(この場合はArtists
)が続きます )の後に、テーブル定義を囲む最初の括弧が続きます。 -
ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
- 次に、最初の列を定義します。この場合、これを
ArtistId
と呼びます。 、データ型を整数として指定します(int
)、それをインデント列として設定します(この列はテーブルの一意のIDを提供し、値は行が追加されるたびに増加します)、(1,1)
値が1から始まり、1ずつ増加することを意味しますNOT NULL
フィールドにnull値、およびPRIMARY KEY
を含めることができないことを意味します この列をテーブルの主キーとして設定します。 主キー テーブルの一意の識別子フィールドとして構成されている列です。 -
ArtistName nvarchar(255) NOT NULL,
- 次の列は
ArtistName
と呼ばれます そのデータ型はnvarchar(255)
です。 、これは、最大長が255文字の可変長Unicode文字列データを受け入れることを意味します。また、この列をNOT NULL
に設定します nullエントリを含めることができないようにします。 -
ActiveFrom date
- 最後の列は
ActiveFrom
と呼ばれますdate
のデータ型を受け入れるように設定します -
);
- 次に
)
を使用します 定義を閉じるには、;
ステートメントを終了します(セミコロンはステートメントターミネーターです)。 -
GO
- Transact-SQLステートメントのバッチの終わりを通知します。これは実際にはTransact-SQLステートメントではありません。これは、sqlcmdおよびosqlユーティリティとSQL Server Management Studioコードエディタによって認識されるコマンドであり、Transact-SQLステートメントのバッチの終了を通知します。
コマンドラインツールを使用するときにテーブル情報を取得する方法
コマンドラインツールを使用する場合、データベーステーブルがサイドパネルにあり、シングルクリックで展開されるのを待っているのを見る余裕はありません。ただし、それは、テーブルやその他のデータベースオブジェクトに関する情報を表示できないという意味ではありません。
コマンドラインツールを使用する場合は、次のステートメントを実行して、上記のデータベースのテーブルに関する情報を表示できます。
USE Music; SELECT column_name, data_type, character_maximum_length, is_nullable FROM information_schema.columns;結果
column_name data_type character_maximum_length is_nullable ----------- --------- ------------------------ ----------- ArtistId int null NO ArtistName nvarchar 255 NO ActiveFrom date null YES GenreId int null NO Genre nvarchar 50 NO AlbumId int null NO AlbumName nvarchar 255 NO ReleaseDate date null NO ArtistId int null NO GenreId int null NO 10 row(s) returned Executed in 1 ms
問題のテーブルは、 Musicというデータベースにあります そのため、最初に切り替えます。
WHERE
を使用して、特定のテーブルに絞り込むこともできます 条項:
USE Music; SELECT column_name, data_type, character_maximum_length, is_nullable FROM information_schema.columns WHERE table_name = 'Artists';結果
column_name data_type character_maximum_length is_nullable ----------- --------- ------------------------ ----------- ArtistId int null NO ArtistName nvarchar 255 NO ActiveFrom date null YES 3 row(s) returned Executed in 1 ms
information_schema.columns
によって返されるフィールドは他にもたくさんあります。 。 SELECT *
を使用できます 必要に応じてすべてを返却します。
テーブル情報を取得するためのコマンドラインメソッドは、GUIツールを使用する場合にも機能します(結局のところ、これらは単なるSQLステートメントです)。 sql-cli、sqlcmd、SSMS、Azure Data Studio、DBeaver、またはその他のSQL Server管理ツールを使用しているかどうかに関係なく、同じSQLステートメントを入力して同じデータを取得できます。
GO
コマンド
GO
を追加する必要がある場合があります スクリプトの最後まで(たとえば、sqlcmdを使用する場合)。
複数行
コマンドラインツールを使用して上記のスクリプトを複数行に広げようとすると、エラーが発生する場合があります。
この場合は、各行の末尾に円記号を追加してみてください。このように:
USE Music; \ SELECT column_name, data_type, character_maximum_length, is_nullable \ FROM information_schema.columns;
バックスラッシュを追加する必要がない場合は、複数行のスクリプトを.sqlファイルに保存し、コマンドプロンプトから実行することもできます。
コマンドプロンプトからスクリプトを実行する方法は、使用するコマンドラインユーティリティによって異なります。
sqlcmdを使用してWindowsマシンに保存されたファイルを実行する方法は次のとおりです。
sqlcmd -S myServer\instanceName -i C:\myScript.sql
また、sql-cliを使用してMacに保存されたファイルを実行する方法は次のとおりです。
.run /myScript.sql
明らかに、フルパスとファイル名はファイル名と保存場所によって異なります。