SQL
Esempi di database e tabelle
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 | Numero di telefono | PreferredContact | |
---|---|---|---|---|---|
1 | William | Jones | [email protected] | 3347927472 | TELEFONO |
2 | David | Mugnaio | [email protected] | 2137921892 | |
3 | Richard | Davis | [email protected] | NULLO |
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')
;