はじめに
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');
以上だ。
テーブルの状態
今の状態で、各テーブルの状態は以下のようになっている。
今日はこれくらいで。
コメント