Ricerca…


Database del negozio automatico

Nell'esempio seguente - Database per un'azienda di auto shop, abbiamo un elenco di reparti, dipendenti, clienti e auto clienti. Utilizziamo le chiavi esterne per creare relazioni tra i vari tavoli.

Esempio dal vivo: violino SQL


Relazioni tra tabelle

  • Ogni dipartimento può avere 0 o più dipendenti
  • Ogni Dipendente può avere 0 o 1 Manager
  • Ogni cliente può avere 0 o più automobili

dipartimenti

Id Nome
1 HR
2 I saldi
3 Tech

Istruzioni SQL per creare la tabella:

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')
;

I dipendenti

Id FName LName Numero di telefono ManagerID DepartmentID Stipendio Data di assunzione
1 Giacomo fabbro 1234567890 NULLO 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 fabbro 1212121212 2 1 500 24-07-2016

Istruzioni SQL per creare la tabella:

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')
;

Clienti

Id FName LName E-mail Numero di telefono PreferredContact
1 William Jones [email protected] 3347927472 TELEFONO
2 David Mugnaio [email protected] 2137921892 E-MAIL
3 Richard Davis [email protected] NULLO E-MAIL

Istruzioni SQL per creare la tabella:

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')
;

Macchine

Id Identificativo del cliente Numero Identità dell'impiegato Modello Stato Costo totale
1 1 2 Ford F-150 PRONTO 230
2 1 2 Ford F-150 PRONTO 200
3 2 1 Ford Mustang IN ATTESA 100
4 3 3 Toyota Prius LAVORO 1254

Istruzioni SQL per creare la tabella:

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')
;

Database delle biblioteche

In questo database di esempio per una libreria, abbiamo tabelle Autori , Libri e LibriAutori .

Esempio dal vivo: violino SQL

Gli autori e i libri sono noti come tabelle di base , poiché contengono la definizione di colonna e i dati per le entità effettive nel modello relazionale. BooksAuthors è noto come tabella delle relazioni , poiché questa tabella definisce la relazione tra la tabella Libri e Autori .


Relazioni tra tabelle

  • Ogni autore può avere 1 o più libri
  • Ogni libro può avere 1 o più autori

autori

(guarda la tabella )

Id Nome Nazione
1 JD Salinger Stati Uniti d'America
2 F. Scott. Fitzgerald Stati Uniti d'America
3 Jane Austen UK
4 Scott Hanselman Stati Uniti d'America
5 Jason N. Gaylord Stati Uniti d'America
6 Pranav Rastogi India
7 Todd Miranda Stati Uniti d'America
8 Christian Wenz Stati Uniti d'America

SQL per creare la tabella:

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')
;

Libri

(guarda la tabella )

Id Titolo
1 Il cacciatore nella segale
2 Nove storie
3 Franny e Zooey
4 Il grande Gatsby
5 Tender id the Night
6 Orgoglio e pregiudizio
7 Professional ASP.NET 4.5 in C # e VB

SQL per creare la tabella:

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

(guarda la tabella )

BookID AuthorID
1 1
2 1
3 1
4 2
5 2
6 3
7 4
7 5
7 6
7 7
7 8

SQL per creare la tabella:

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)
;

Esempi

Visualizza tutti gli autori ( vedi l'esempio dal vivo ):

SELECT * FROM Authors;

Visualizza tutti i titoli dei libri ( vedi esempio dal vivo ):

SELECT * FROM Books;

Visualizza tutti i libri e i loro autori ( vedi l'esempio dal vivo ):

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
;

Tabella Paesi

In questo esempio, abbiamo una tabella Paesi . Una tabella per i paesi ha molti usi, specialmente nelle applicazioni finanziarie che riguardano valute e tassi di cambio.

Esempio dal vivo: violino SQL

Alcune applicazioni software di dati di mercato come Bloomberg e Reuters richiedono di fornire alla propria API un codice paese a 2 o 3 caratteri insieme al codice valuta. Quindi questa tabella di esempio ha sia la colonna del codice ISO 2 caratteri che le colonne del codice ISO3 3 caratteri.


paesi

(guarda la tabella )

Id ISO ISO3 ISONumeric Nome del paese Capitale ContinentCode Codice valuta
1 AU AUS 36 Australia Canberra OC AUD
2 DE DEU 276 Germania Berlino Unione Europea euro
2 NEL IND 356 India Nuova Delhi COME INR
3 LA LAO 418 Laos Vientiane COME LAK
4 NOI Stati Uniti d'America 840 stati Uniti Washington N / A Dollaro statunitense
5 Z W ZWE 716 Zimbabwe Harare AF ZWL

SQL per creare la tabella:

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')
;


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow