Creación de bases de datos SQL de ejemplo para practicar

Base de datos de tiendas de automóviles

En el siguiente ejemplo: base de datos para un negocio de taller de automóviles, tenemos una lista de departamentos, empleados, clientes y automóviles de clientes. Estamos utilizando claves externas para crear relaciones entre las distintas tablas.

Relaciones entre tablas

  • Cada Departamento puede tener 0 o más Empleados
  • Cada Empleado puede tener 0 o 1 Gerente
  • Cada Cliente puede tener 0 o más Autos

Departamentos

IdentificaciónNombre
1HORA
2Ventas
3tecnología

Sentencias SQL para crear la tabla Departamentos(Departaments):

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

Empleados

IdentificaciónFNombreLNombreNúmero de teléfonoID de administradorDepartamentoIdSalarioFecha de contratación
1JaimeHerrero1234567890NULO1100001-01-2002
2JohnJohnson24681012141140023-03-2005
3MiguelWilliams13579111311260012-05-2009
4JuanatónHerrero12121212122150024-07-2016

Sentencias SQL para crear la tabla Empleados (Employees):

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

Clientes

IdentificaciónFNombreLNombreCorreo electrónicoNúmero de teléfonoContacto preferido
1Williamjones[email protected]3347927472TELÉFONO
2DavidMolinero[email protected]2137921892EMAIL
3RicardoDavis[email protected]NULOEMAIL

Sentencias SQL para crear la tabla Clientes (Customers):

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

Coches

IdentificaciónIdentificación del clienteID de empleadoModeloEstadoCoste total
112vado f-150LISTO230
212vado f-150LISTO200
321Ford MustangESPERANDO100
433Toyota PriusLABORAL1254

Sentencias SQL para crear la tabla Coches (Cars):

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

Base de datos de la biblioteca

En esta base de datos de ejemplo para una biblioteca, tenemos las tablas Authors , Books y BooksAuthors .

Los autores y los libros se conocen como tablas base , ya que contienen definición de columna y datos para las entidades reales en el modelo relacional. BooksAuthors se conoce como la tabla de relaciones , ya que esta tabla define la relación entre la tabla Books y Authors .

Relaciones entre tablas

  • Cada autor puede tener 1 o más libros.
  • Cada libro puede tener 1 o más autores

Autores

IdentificaciónNombrePaís
1J. D. SalingerEE.UU
2F Scott. fitzgeraldEE.UU
3Jane AustenReino Unido
4scott hanselmanEE.UU
5jason n gaylordEE.UU
6Pranav RastoguiIndia
7Todd MirandaEE.UU
8cristian wenzEE.UU

SQL para crear la tabla Autores (Authors):

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

Libros

IdentificaciónTítulo
1El Guardian en el centeno
2nueve historias
3Franny y Zooey
4El gran Gatsby
5Tierna identificación de la noche
6Orgullo y prejuicio
7Profesional ASP.NET 4.5 en C# y VB

SQL para crear la tabla Libros (Books):

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

LibrosAutores

ID del libroAutorId
11
21
31
42
52
63
74
75
76
77
78

SQL para crear la tabla LibrosAutores (BooksAuthors):

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

Ejemplos de hacer peticiones SQL para traer los registros

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
;


Tabla de países

En este ejemplo, tenemos una tabla de países . Una tabla de países tiene muchos usos, especialmente en aplicaciones financieras que involucran monedas y tipos de cambio.

Algunas aplicaciones de software de datos de mercado como Bloomberg y Reuters requieren que proporcione a su API un código de país de 2 o 3 caracteres junto con el código de moneda. Por lo tanto, esta tabla de ejemplo tiene tanto la columna de código de 2 caracteres ISOcomo la columna de código de 3 caracteres ISO3.

Países

IdentificaciónYO ASIISO3ISONuméricoNombre del paísCapitalContinentCodeCódigo de moneda
1AustraliaAustralia36AustraliaCanberrajefeAUD
2DelawareDEU276AlemaniaBerlinaUEEUR
2ENINDIANA356IndiaNueva DelhiCOMOEUR
3LALAO418LaosVientiánCOMOLAK
4A NOSOTROSEE.UU840Estados UnidosWashingtonN / ADólar estadounidense
5ZWZWE716ZimbabueHarareFAZWL

SQL para crear la tabla Paises (Countries):

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