【SQLServer】データベース作成~データ挿入。一通りのSQL文(外部キー)

はじめに

SQL Serverを作ったので、一通りSQL文を実行してみることにした。

実行したSQL文は以下の通りだ。

  • CREATE DATABASE
  • CREATE TABLE
  • ALTER TABLE [テーブル名] ADD CONSTRAINT
  • INSERT INTO

GUIでもできるようだが、SQL文の勉強という意味合いもかねて、強引にCUIでやってみた。

テーブルのデザイン

テーブルのデザインはあらかじめ決めてやってみた。

[Users]テーブル

カラム名 制約
UserID char(5) Primary Key
GivenName varchar(10) Not Null
FamilyName varchar(10) Not Null
Age int Check(※18以上)
JoinDate Date
FactoryID char(5) References
※[Factories]テーブルの[FactoryID]を参照

[Factories]テーブル

カラム名 制約
FactoryID char(5) Primary Key
FactoryName varchar(20) Not Null
FactoryProduct varchar(30)
CountryID char(5) References
※[Countries]テーブルの[CountryID]を参照

[Countries]テーブル

カラム名 制約
CountryID char Primary Key
CountryName varchar Not Null
Area varchar




SSMS起動してSQL文を流す

SSMS(SQL Server Management Studio)を起動して、SQL Serverに接続するところまでは、下の記事を参考にしてくれ。

SQL Server Express 2017をインストールしリモート接続を可能にする

[オブジェクトエクスプローラー]のトップを選択した状態で、「新しいクエリ」をクリックする。
下の図のように、SQL文を流すウィンドウが開いたはずだ。ここにどんどんSQL文を流していくからよろしく。

まず、データベースを作成する。「Masters」という名前にした。

CREATE DATABASE Masters;

テーブルを3つ作る。それぞれ名前は、「Users」、「Factories」、「Countries」だ。

CREATE TABLE Users ( UserID CHAR(5) PRIMARY KEY, GivenName VARCHAR(10) NOT NULL, FamilyName VARCHAR(10) NOT NULL, Age INT CHECK (Age >= 18), JoinDate DATE, FactoryID CHAR(5) );
CREATE TABLE Factories ( FactoryID CHAR(5) PRIMARY KEY, FactoryName VARCHAR(20) NOT NULL, FactoryProduct VARCHAR(30), CountryID CHAR(5) );
CREATE TABLE Countries ( CountryID CHAR(5) PRIMARY KEY, CountryName VARCHAR(100) NOT NULL, Continent VARCHAR(20) );

[Users]テーブルの「FactoryID」に外部キーを設定し、[Factories]テーブルの「FactoryID」を参照するようにする。

ALTER TABLE Users ADD CONSTRAINT FK_FactoryID FOREIGN KEY (FactoryID) REFERENCES Factories (FactoryID) ON DELETE CASCADE ON UPDATE CASCADE;

[Factories]テーブルの「CountryID」に外部キーを設定し、[Countries]テーブルの「CountryID」を参照するようにする。

ALTER TABLE Factories ADD CONSTRAINT FK_CountryID FOREIGN KEY (CountryID) REFERENCES Countries (CountryID) ON DELETE CASCADE ON UPDATE CASCADE;

[Countries]テーブルにデータを入れる。

INSERT INTO Countries (CountryID, CountryName, Continent) VALUES ('C001', 'Japan', 'Asia'); INSERT INTO Countries (CountryID, CountryName, Continent) VALUES ('C002', 'Phillipines', 'Asia'); INSERT INTO Countries (CountryID, CountryName, Continent) VALUES ('C003', 'Haiti', 'North America');

[Factories]テーブルにデータを入れる。

INSERT INTO Factories (FactoryID, FactoryName, CountryID) VALUES ('F001', 'FA', 'C001'); INSERT INTO Factories (FactoryID, FactoryName, CountryID) VALUES ('F002', 'FB', 'C002'); INSERT INTO Factories (FactoryID, FactoryName, CountryID) VALUES ('F003', 'FC', 'C003');

[Users]テーブルにデータを入れる。

INSERT INTO Users (UserID, GivenName, FamilyName, Age, FactoryID) VALUES ('U001', 'John', 'Smith', 33, 'F001'); INSERT INTO Users (UserID, GivenName, FamilyName, Age, FactoryID) VALUES ('U002', 'Raymond', 'Non', 45, 'F002'); INSERT INTO Users (UserID, GivenName, FamilyName, Age, FactoryID) VALUES ('U003', 'Bob', 'Cruise', 23, 'F003');

以上だ。




テーブルの状態

今の状態で、各テーブルの状態は以下のようになっている。

今日はこれくらいで。



この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント

コメントする

CAPTCHA