庫資料庫

在這個庫的示例資料庫中,我們有 AuthorsBooksBooksAuthors 表。

例項: SQL 小提琴

作者書籍稱為基表,因為它們包含關係模型中實際實體的列定義和資料。 BooksAuthors 稱為關係表,因為此表定義了 BooksAuthors 表之間的關係。

表之間的關係

  • 每位作者可以有 1 本或更多書
  • 每本書可以有 1 位或更多位作者

作者

檢視錶

ID 名稱 國家
1 JD 塞林格 美國
2 F.斯科特。菲茨傑拉德 美國
3 簡·奧斯汀 聯合王國
4 斯科特漢塞爾曼 美國
Jason N. Gaylord 美國
6 Pranav Rastogi 印度
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')
;

圖書

檢視錶

ID 標題
1 麥田裡的守望者
2 九個故事
3 弗蘭妮和佐伊
4 了不起的蓋茨比
溫柔的夜晚
6 傲慢與偏見
7 C#和 VB 中的專業 ASP.NET 4.5

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 AUTHORID
1 1
2 1
3 1
4 2
2
6 3
7 4
7
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
;