サーチ…
オートショップデータベース
次の例では、オートショップ事業のデータベースに部門、従業員、顧客、および顧客の自動車のリストがあります。外部キーを使用して、さまざまなテーブル間の関係を作成しています。
実例: SQL fiddle
テーブル間の関係
- 各部門には0人以上の従業員がいるかもしれません
- 各従業員は0人または1人のマネージャーを持つことができます
- 各顧客は0台以上の車を所有している可能性があります
部署
イド | 名 |
---|---|
1 | HR |
2 | 販売 |
3 | テック |
テーブルを作成するSQLステートメント:
CREATE TABLE Departments (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(25) NOT NULL,
PRIMARY KEY(Id)
);
INSERT INTO Departments
([Id], [Name])
VALUES
(1, 'HR'),
(2, 'Sales'),
(3, 'Tech')
;
従業員
イド | FName | LName | 電話番号 | マネージャーID | DepartmentId | 給料 | HireDate |
---|---|---|---|---|---|---|---|
1 | ジェームス | スミス | 1234567890 | ヌル | 1 | 1000 | 01-01-2002 |
2 | ジョン | ジョンソン | 2468101214 | 1 | 1 | 400 | 23-03-2005 |
3 | マイケル | ウィリアムズ | 1357911131 | 1 | 2 | 600 | 12-05-2009 |
4 | ジョンナトン | スミス | 1212121212 | 2 | 1 | 500 | 24-07-2016 |
テーブルを作成するSQLステートメント:
CREATE TABLE Employees (
Id INT NOT NULL AUTO_INCREMENT,
FName VARCHAR(35) NOT NULL,
LName VARCHAR(35) NOT NULL,
PhoneNumber VARCHAR(11),
ManagerId INT,
DepartmentId INT NOT NULL,
Salary INT NOT NULL,
HireDate DATETIME NOT NULL,
PRIMARY KEY(Id),
FOREIGN KEY (ManagerId) REFERENCES Employees(Id),
FOREIGN KEY (DepartmentId) REFERENCES Departments(Id)
);
INSERT INTO Employees
([Id], [FName], [LName], [PhoneNumber], [ManagerId], [DepartmentId], [Salary], [HireDate])
VALUES
(1, 'James', 'Smith', 1234567890, NULL, 1, 1000, '01-01-2002'),
(2, 'John', 'Johnson', 2468101214, '1', 1, 400, '23-03-2005'),
(3, 'Michael', 'Williams', 1357911131, '1', 2, 600, '12-05-2009'),
(4, 'Johnathon', 'Smith', 1212121212, '2', 1, 500, '24-07-2016')
;
顧客
イド | FName | LName | Eメール | 電話番号 | PreferredContact |
---|---|---|---|---|---|
1 | ウィリアム | ジョーンズ | [email protected] | 3347927472 | 電話 |
2 | デビッド | ミラー | [email protected] | 2137921892 | Eメール |
3 | リチャード | デイビス | [email protected] | ヌル | Eメール |
テーブルを作成するSQLステートメント:
CREATE TABLE Customers (
Id INT NOT NULL AUTO_INCREMENT,
FName VARCHAR(35) NOT NULL,
LName VARCHAR(35) NOT NULL,
Email varchar(100) NOT NULL,
PhoneNumber VARCHAR(11),
PreferredContact VARCHAR(5) NOT NULL,
PRIMARY KEY(Id)
);
INSERT INTO Customers
([Id], [FName], [LName], [Email], [PhoneNumber], [PreferredContact])
VALUES
(1, 'William', 'Jones', '[email protected]', '3347927472', 'PHONE'),
(2, 'David', 'Miller', '[email protected]', '2137921892', 'EMAIL'),
(3, 'Richard', 'Davis', '[email protected]', NULL, 'EMAIL')
;
車
イド | 顧客ID | 従業員ID | モデル | 状態 | 総費用 |
---|---|---|---|---|---|
1 | 1 | 2 | フォードF-150 | READY | 230 |
2 | 1 | 2 | フォードF-150 | READY | 200 |
3 | 2 | 1 | フォードマスタング | 待ち | 100 |
4 | 3 | 3 | トヨタプリウス | ワーキング | 1254 |
テーブルを作成するSQLステートメント:
CREATE TABLE Cars (
Id INT NOT NULL AUTO_INCREMENT,
CustomerId INT NOT NULL,
EmployeeId INT NOT NULL,
Model varchar(50) NOT NULL,
Status varchar(25) NOT NULL,
TotalCost INT NOT NULL,
PRIMARY KEY(Id),
FOREIGN KEY (CustomerId) REFERENCES Customers(Id),
FOREIGN KEY (EmployeeId) REFERENCES Employees(Id)
);
INSERT INTO Cars
([Id], [CustomerId], [EmployeeId], [Model], [Status], [TotalCost])
VALUES
('1', '1', '2', 'Ford F-150', 'READY', '230'),
('2', '1', '2', 'Ford F-150', 'READY', '200'),
('3', '2', '1', 'Ford Mustang', 'WAITING', '100'),
('4', '3', '3', 'Toyota Prius', 'WORKING', '1254')
;
ライブラリデータベース
このライブラリのサンプルデータベースには、 Authors 、 Books 、およびBooksAuthorsテーブルがあります。
実例: SQL fiddle
著者と書籍は、リレーショナル・モデル内の実際のエンティティーの列定義とデータを含んでいるため、 基本表と呼ばれます。 BooksAuthorsは、 BooksテーブルとAuthorsテーブルの関係を定義するため、 Relationship テーブルと呼ばれます。
テーブル間の関係
- それぞれの著者は1冊以上の本を持つことができます
- 各本は1人以上の著者を持つことができます
著者
( ビューテーブル )
イド | 名 | 国 |
---|---|---|
1 | JDサリンジャー | 米国 |
2 | F.スコット。フィッツジェラルド | 米国 |
3 | ジェーン・オースティン | 英国 |
4 | スコットハンセルマン | 米国 |
5 | ジェイソン・N・ゲイロード | 米国 |
6 | プラナフ・ラストギ | インド |
7 | トッド・ミランダ | 米国 |
8 | クリスチャンウェンツ | 米国 |
テーブルを作成するSQL:
CREATE TABLE Authors (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(70) NOT NULL,
Country VARCHAR(100) NOT NULL,
PRIMARY KEY(Id)
);
INSERT INTO Authors
(Name, Country)
VALUES
('J.D. Salinger', 'USA'),
('F. Scott. Fitzgerald', 'USA'),
('Jane Austen', 'UK'),
('Scott Hanselman', 'USA'),
('Jason N. Gaylord', 'USA'),
('Pranav Rastogi', 'India'),
('Todd Miranda', 'USA'),
('Christian Wenz', 'USA')
;
書籍
( ビューテーブル )
イド | タイトル |
---|---|
1 | ライ麦畑でつかまえて |
2 | ナインストーリーズ |
3 | フランニーとズーイー |
4 | グレート・ギャツビー |
5 | テンダー・イット・ザ・ナイト |
6 | 高慢と偏見 |
7 | プロフェッショナルASP.NET 4.5でC#とVB |
テーブルを作成するSQL:
CREATE TABLE Books (
Id INT NOT NULL AUTO_INCREMENT,
Title VARCHAR(50) NOT NULL,
PRIMARY KEY(Id)
);
INSERT INTO Books
(Id, Title)
VALUES
(1, 'The Catcher in the Rye'),
(2, 'Nine Stories'),
(3, 'Franny and Zooey'),
(4, 'The Great Gatsby'),
(5, 'Tender id the Night'),
(6, 'Pride and Prejudice'),
(7, 'Professional ASP.NET 4.5 in C# and VB')
;
BooksAuthors
( ビューテーブル )
BookId | 著者ID |
---|---|
1 | 1 |
2 | 1 |
3 | 1 |
4 | 2 |
5 | 2 |
6 | 3 |
7 | 4 |
7 | 5 |
7 | 6 |
7 | 7 |
7 | 8 |
テーブルを作成するSQL:
CREATE TABLE BooksAuthors (
AuthorId INT NOT NULL,
BookId INT NOT NULL,
FOREIGN KEY (AuthorId) REFERENCES Authors(Id),
FOREIGN KEY (BookId) REFERENCES Books(Id)
);
INSERT INTO BooksAuthors
(BookId, AuthorId)
VALUES
(1, 1),
(2, 1),
(3, 1),
(4, 2),
(5, 2),
(6, 3),
(7, 4),
(7, 5),
(7, 6),
(7, 7),
(7, 8)
;
例
すべての著者を表示( ライブの例を表示 ):
SELECT * FROM Authors;
すべての書籍のタイトルを表示する( 実例を表示 ):
SELECT * FROM Books;
SELECT
ba.AuthorId,
a.Name AuthorName,
ba.BookId,
b.Title BookTitle
FROM BooksAuthors ba
INNER JOIN Authors a ON a.id = ba.authorid
INNER JOIN Books b ON b.id = ba.bookid
;
カントリーテーブル
この例では、 Countriesテーブルがあります。国のためのテーブルは、特に通貨や為替レートを含む金融アプリケーションでは、多くの用途があります。
実例: SQL fiddle
BloombergやReutersのようなMarketデータソフトウェアアプリケーションでは、APIに通貨コードとともに2文字または3文字の国コードを指定する必要があります。したがって、この例の表には、2文字のISO
コード列と3文字のISO3
コード列があります。
国
( ビューテーブル )
イド | ISO | ISO3 | ISONumeric | 国名 | 資本 | ContinentCode | 通貨コード |
---|---|---|---|---|---|---|---|
1 | AU | AUS | 36 | オーストラリア | キャンベラ | OC | AUD |
2 | DE | DEU | 276 | ドイツ | ベルリン | EU | ユーロ |
2 | に | インド | 356 | インド | ニューデリー | として | INR |
3 | LA | LAO | 418 | ラオス | ビエンチャン | として | LAK |
4 | 米国 | 米国 | 840 | アメリカ | ワシントン | NA | 米ドル |
5 | ZW | ZWE | 716 | ジンバブエ | ハラレ | AF | ZWL |
テーブルを作成するSQL:
CREATE TABLE Countries (
Id INT NOT NULL AUTO_INCREMENT,
ISO VARCHAR(2) NOT NULL,
ISO3 VARCHAR(3) NOT NULL,
ISONumeric INT NOT NULL,
CountryName VARCHAR(64) NOT NULL,
Capital VARCHAR(64) NOT NULL,
ContinentCode VARCHAR(2) NOT NULL,
CurrencyCode VARCHAR(3) NOT NULL,
PRIMARY KEY(Id)
)
;
INSERT INTO Countries
(ISO, ISO3, ISONumeric, CountryName, Capital, ContinentCode, CurrencyCode)
VALUES
('AU', 'AUS', 36, 'Australia', 'Canberra', 'OC', 'AUD'),
('DE', 'DEU', 276, 'Germany', 'Berlin', 'EU', 'EUR'),
('IN', 'IND', 356, 'India', 'New Delhi', 'AS', 'INR'),
('LA', 'LAO', 418, 'Laos', 'Vientiane', 'AS', 'LAK'),
('US', 'USA', 840, 'United States', 'Washington', 'NA', 'USD'),
('ZW', 'ZWE', 716, 'Zimbabwe', 'Harare', 'AF', 'ZWL')
;