库数据库

在这个库的示例数据库中,我们有 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
;