Introducción
En la actualidad, la gestión y análisis de datos se ha vuelto cada vez más importante para las empresas y organizaciones en todo el mundo. El modelado de datos es un proceso fundamental para lograr una gestión efectiva de la información, y se utiliza en una gran variedad de campos, desde la gestión de inventarios hasta la investigación médica.
En este artículo, nos enfocaremos en el modelado de datos para un sistema de ventas de vehículos de la marca Toyota utilizando SQL Server como gestor de base de datos. A través de este ejemplo, aprenderemos cómo diseñar una base de datos relacional, cómo crear tablas y relaciones, cómo agregar índices y cómo extraer información para análisis y visualización de datos.
Además, exploraremos la importancia del análisis de datos en el proceso de toma de decisiones empresariales, y cómo podemos utilizar las herramientas de análisis de datos para identificar tendencias, patrones y oportunidades. En última instancia, veremos cómo el modelado y análisis de datos pueden contribuir al desarrollo de software y sistemas empresariales más efectivos y rentables.
Acompáñanos en este recorrido por el fascinante mundo del modelado y análisis de datos, y descubre cómo puedes utilizar esta herramienta para impulsar tu negocio hacia el éxito.
Propuesta de modelo de base de datos relacional en SQL Server:
Se propone un modelo de base de datos para un sistema de ventas de vehículos de la marca Toyota utilizando un modelo relacional en SQL Server. La base de datos se creó mediante el uso del lenguaje de programación T-SQL y consta de siete tablas: Vehiculos, PAIS, Clientes, vendedor, Ventas, Fotos_vendedor y Modelos_URL.
La tabla Vehiculos almacena información básica sobre los vehículos, como el modelo, año, precio de compra, precio de venta y stock disponible en inventario. La tabla PAIS almacena información sobre los países disponibles en el sistema. La tabla Clientes almacena información sobre los clientes, como nombre, dirección, teléfono y país de origen. La tabla vendedor almacena información sobre los empleados de la empresa encargados de las ventas, como nombre, dirección y teléfono. La tabla Ventas almacena información sobre las ventas realizadas, como el vehículo vendido, el cliente que realizó la compra, el vendedor asignado a la venta, la fecha de venta, la cantidad vendida y el precio de venta. La tabla Fotos_vendedor almacena información sobre las fotos de los vendedores. La tabla Modelos_URL almacena información sobre las imágenes de los modelos de vehículos disponibles en el sistema.
Cada vehículo puede tener varias ventas, y cada venta está asociada a un solo vehículo, un solo cliente y uno o varios vendedores. Cada vendedor puede tener varias fotos en la tabla Fotos_vendedor. Además, se crearon índices en las columnas de las tablas para mejorar el rendimiento en las consultas. Este modelo propuesto es un ejemplo básico y puede ser mejorado o modificado según las necesidades específicas del sistema.
Roadmap SQL

En este caso, veremos algunos conceptos catalogados en SQL como roadmap, definiendo una variedad de funcionalidades que se pueden utilizar en la creación y gestión de bases de datos. Vamso a describirlas brevemente:
SELECT: se utiliza para recuperar datos específicos de una o varias tablas.
ORDER BY: se utiliza para ordenar los resultados de la consulta por una o varias columnas.
WHERE: se utiliza para filtrar los resultados de la consulta en función de una o varias condiciones.
GROUP BY: se utiliza para agrupar los resultados de la consulta en función de una o varias columnas.
JOIN: se utiliza para combinar datos de dos o más tablas en función de una o varias columnas comunes.
INSERT: se utiliza para agregar nuevos datos a una tabla.
UPDATE: se utiliza para actualizar los datos existentes en una tabla.
DELETE: se utiliza para eliminar filas de una tabla.
SUBQUERIES: se utiliza para realizar una consulta dentro de otra consulta.
TRIGGER: se utiliza para definir acciones que se deben realizar automáticamente cuando ocurre un evento específico en una tabla.
STORED PROCEDURE: se utiliza para almacenar una secuencia de instrucciones SQL que se pueden llamar varias veces.
VIEWS: se utiliza para crear vistas personalizadas a partir de una o varias tablas.
FUNCTIONS: se utiliza para crear funciones personalizadas que se pueden utilizar en una consulta.
TRANSACTION: se utiliza para agrupar varias operaciones de base de datos en una sola transacción, lo que garantiza que todas las operaciones se completen con éxito o se deshagan si algo sale mal.
Estas funcionalidades son útiles para la creación y gestión de bases de datos, y su aplicación dependerá de las necesidades específicas del proyecto y la situación. Es importante tener en cuenta que estas son solo algunas de las funcionalidades disponibles en SQL, y que existen muchas otras que se pueden utilizar según sea necesario.
Modelo de Base de Datos para la Venta de Vehículos de la Marca Toyota.
Aquí te presento el código SQL para crear una Base de Datos y las tablas, así como también las relaciones en una base de datos de SQL Server, de acuerdo a la propuesta anterior y agregando la nueva tabla «Modelos_URL» para almacenar las URLs de los modelos de vehículos según la marca:
--CREAR LA BASE DE DATOS VENTAS_VEHICULOS_TOYOTA CREATE DATABASE VENTAS_VEHICULOS_TOYOTA_2023_V4; GO --USAR LA BASE DE DATOS: USE VENTAS_VEHICULOS_TOYOTA_2023_V4; GO --CREAR TABLA Vehiculos CREATE TABLE Vehiculos ( ID INT PRIMARY KEY IDENTITY(1,1), Modelo VARCHAR(255) NOT NULL, Anio INT NOT NULL, Precio_compra DECIMAL(18,2) NOT NULL, Precio_ventas DECIMAL(18,2) not null, Stock int not null ); --CREAR TABLA PAIS: CREATE TABLE PAIS( ID_PAIS INT PRIMARY KEY IDENTITY(1,1), NOMBRE_PAIS VARCHAR(50) NOT NULL ) --CREAR TABLA Clientes CREATE TABLE Clientes ( ID INT PRIMARY KEY IDENTITY(1,1), Nombre VARCHAR(255) NOT NULL, Direccion VARCHAR(255) NOT NULL, Telefono VARCHAR(255) NOT NULL, ID_pais INT FOREIGN KEY REFERENCES PAIS(ID_PAIS) ON UPDATE CASCADE ON DELETE CASCADE, ); --CREAR TABLA Empleados: CREATE TABLE vendedor ( ID INT PRIMARY KEY IDENTITY(1,1), Nombre VARCHAR(255) NOT NULL, Direccion VARCHAR(255) NOT NULL, Telefono VARCHAR(255) NOT NULL ); --CREAR TABLA Ventas CREATE TABLE Ventas ( ID INT PRIMARY KEY IDENTITY(1,1), ID_Vehiculo INT FOREIGN KEY REFERENCES Vehiculos(ID) ON UPDATE CASCADE ON DELETE CASCADE, ID_Cliente INT FOREIGN KEY REFERENCES Clientes(ID) ON UPDATE CASCADE ON DELETE CASCADE, ID_Vendedor INT FOREIGN KEY REFERENCES vendedor(ID) ON UPDATE CASCADE ON DELETE CASCADE, Fecha_Venta DATE NOT NULL, Cantidad int , Precio_Venta DECIMAL(18,2) NOT NULL, Total AS Cantidad * Precio_Venta ); --CREAR TABLA AGREGAR EL CAMPO TOTAL CALCULO: --SELECCIONAR TABLA PARA VER ESTRUCTURA: SELECT * FROM vendedor --CREAR TABLA FOTOS DE VENDEDOR: create table Fotos_vendedor ( ID_Foto int primary key not null, foto_Vendedor_url varchar (255) not null, ID_vendedor int not null, FOREIGN KEY (ID_vendedor) REFERENCES vendedor (ID) ); go --SELECCIONAR TABLA PARA VER ESTRUCTURA: SELECT * FROM Fotos_vendedor -- CREAR LA TABLA MODELOS_URL QUE ALMACENA LA IMAGEN: CREATE TABLE Modelos_URL ( ID INT PRIMARY KEY IDENTITY(1,1), ID_Vehiculo INT FOREIGN KEY REFERENCES Vehiculos(ID) ON UPDATE CASCADE ON DELETE CASCADE, URL VARCHAR(255) NOT NULL ); --SELECCIONAMOS TODAS LAS TABLAS PARA VER COMO HAN QUEDADO: SELECT * FROM PAIS SELECT * FROM Clientes SELECT * FROM Vehiculos SELECT * FROM Ventas SELECT * FROM vendedor SELECT * FROM Fotos_vendedor SELECT * FROM Modelos_URL
Diagrama de la Base de Datos Resultante
El diagrama de base de datos es una representación gráfica de la estructura de una base de datos. Permite visualizar las tablas, sus columnas, relaciones y restricciones entre ellas. Los diagramas de base de datos son utilizados por desarrolladores, administradores de bases de datos y analistas de datos para entender y trabajar con la estructura de una base de datos. Además, también pueden ser utilizados para documentar la base de datos y comunicar su diseño a otros miembros del equipo o a los stakeholders del proyecto.

Para crear un diagrama de base de datos en SQL Server, puedes seguir los siguientes pasos:
- Abrir SQL Server Management Studio (SSMS).
- Conectarse a la instancia de SQL Server donde se encuentra la base de datos que deseas diagramar.
- Expandir la base de datos y hacer clic derecho en la opción «Diagramas de base de datos».
- Seleccionar la opción «Nuevo diagrama de base de datos».
- Seleccionar las tablas que deseas incluir en el diagrama y arrastrarlas al área de diseño.
- Configurar las relaciones entre las tablas utilizando la herramienta de «Relaciones».
- Añadir títulos y descripciones para las tablas y relaciones utilizando las herramientas de «Propiedades» y «Notas».
- Guardar el diagrama de base de datos.
Tipos de lenguajes de consultas

Un lenguaje de consultas (query language) es un tipo de lenguaje de programación utilizado para interactuar con una base de datos y realizar diversas operaciones, como crear, leer, actualizar y eliminar registros.
En SQL Server, existen varios tipos de lenguajes de consultas, entre los que se incluyen:
DDL (Data Definition Language): Este tipo de lenguaje se utiliza para definir la estructura de una base de datos, incluyendo tablas, índices, vistas y restricciones. Algunas de las sentencias DDL más comunes son CREATE, ALTER y DROP.
DML (Data Manipulation Language): Este tipo de lenguaje se utiliza para manipular los datos almacenados en una base de datos, incluyendo la inserción, actualización y eliminación de registros. Algunas de las sentencias DML más comunes son SELECT, INSERT, UPDATE y DELETE.
DQL (Data Query Language): Este tipo de lenguaje se utiliza para realizar consultas a una base de datos y obtener información específica. La sentencia más común en DQL es SELECT.
DCL (Data Control Language): Este tipo de lenguaje se utiliza para administrar los permisos de acceso a una base de datos, incluyendo la creación y eliminación de usuarios y la definición de roles y permisos de acceso. Las sentencias más comunes en DCL son GRANT y REVOKE.
TCL (Transaction Control Language): Este tipo de lenguaje se utiliza para controlar las transacciones en una base de datos, incluyendo la confirmación (COMMIT) y la reversión (ROLLBACK) de las operaciones realizadas.
Un ejemplo de uso de estos lenguajes en la base de datos de vehículos podría ser:
- DDL: Utilizando la sentencia CREATE TABLE para crear la tabla de vehículos.
- DML: Utilizando las sentencias INSERT, UPDATE y DELETE para agregar, modificar y eliminar registros de la tabla de vehículos.
- DQL: Utilizando la sentencia SELECT para realizar consultas a la tabla de vehículos y obtener información específica sobre los vehículos almacenados.
- DCL: Utilizando las sentencias GRANT y REVOKE para asignar y eliminar permisos de acceso a la tabla de vehículos para diferentes usuarios y roles.
- TCL: Utilizando las sentencias COMMIT y ROLLBACK para confirmar y revertir las transacciones realizadas en la tabla de vehículos.
Funciones, Insert, Update, Delete, Drop, Trigger, Views
Funciones, Insert, Update, Delete, Drop, Trigger, y Views son elementos y características de SQL que se pueden aplicar a la base de datos de Ventas de Vehículos marca Toyota.
Funciones: Son bloques de código que realizan una tarea específica y devuelven un resultado. En SQL, existen funciones integradas en el lenguaje, como las funciones de agregado (SUM, COUNT, AVG, etc.) y las funciones de cadena (LEN, LEFT, RIGHT, etc.), así como la posibilidad de crear funciones definidas por el usuario.
Insert: Es una sentencia SQL utilizada para agregar nuevos registros a una tabla en una base de datos. Por ejemplo, se puede utilizar para agregar información sobre un nuevo modelo de vehículo a la tabla de Vehículos.
Update: Es una sentencia SQL utilizada para actualizar los registros existentes en una tabla de la base de datos. Por ejemplo, se puede utilizar para cambiar el precio de venta de un vehículo en la tabla de Vehículos.
Delete: Es una sentencia SQL utilizada para eliminar registros de una tabla en una base de datos. Por ejemplo, se puede utilizar para eliminar los registros de ventas de un vehículo específico en la tabla de Ventas.
Drop: Es una sentencia SQL utilizada para eliminar una tabla completa de una base de datos. Por ejemplo, se puede utilizar para eliminar la tabla de Clientes si se decide que ya no es necesaria.
Trigger: Es una característica de SQL que permite automatizar ciertas acciones en una base de datos, como insertar, actualizar o eliminar registros en una tabla, en respuesta a ciertos eventos o condiciones. Por ejemplo, se puede crear un trigger que actualice automáticamente la cantidad de stock disponible en la tabla de Vehículos cada vez que se realiza una venta en la tabla de Ventas.
Views: Son objetos de base de datos que proporcionan una representación virtual de los datos de una o varias tablas en una base de datos. Se pueden utilizar para simplificar las consultas complejas y mejorar la seguridad al limitar el acceso a ciertas columnas o registros en una tabla. Por ejemplo, se puede crear una vista que muestre el nombre del cliente y la fecha de venta de cada vehículo vendido en la tabla de Ventas.
Veamos algunos ejemplos aplicados a nuestra base de dato:
--INSERTAR 11 REGISTROS EN LA TABLA PAIS: INSERT INTO PAIS (NOMBRE_PAIS) VALUES ('Republica Dominicana'), ('Estados Unidos'), ('México'), ('Canadá'), ('Argentina'), ('Brasil'), ('España'), ('Francia'), ('Italia'), ('China'), ('Japón') --SELECCIONAMOS LA TABLA: SELECT * FROM PAIS --ejemplo de cómo insertar 18 registros en cada tabla: INSERT INTO Vehiculos (Modelo, Anio, Precio_compra, Precio_ventas, Stock) VALUES ('Corolla', 2020, 20000.00, 28000.00,20), ('Camry', 2020, 25000.00, 35000.00,20), ('RAV4', 2020, 30000.00, 38000.00,20), ('Highlander', 2020, 35000.00, 43000.00,20), ('Tacoma', 2020, 27000.00, 33000.00,20), ('Tundra', 2020, 35000.00, 39000.00,20), ('Prius', 2020, 24000.00, 28000.00,20), ('Yaris', 2020, 18000.00, 21000.00,20), ('Sienna', 2020, 33000.00, 37000.00,20), ('4Runner', 2020, 37000.00, 43000.00,20), ('Supra', 2020, 51000.00, 66000.00,20), ('Avalon', 2020, 38000.00, 45000.00,20), ('C-HR', 2020, 22000.00, 28000.00,20), ('Venza', 2020, 32000.00, 38000.00,20), ('Mirai', 2020, 50000.00, 65000.00,20), ('GR Supra', 2020, 55000.00, 65000.00,20), ('GR 86', 2020, 28000.00, 34000.00,20), ('Prius Prime', 2020, 28000.00, 35000.00,20) --seleccionamos para los registros: SELECT * FROM Vehiculos --INSERTAR 10 REGISTROS EN LA TABLA PAIS: INSERT INTO Clientes (Nombre, Direccion, Telefono, ID_pais) VALUES ('María García', 'Calle 2', '809-555-5556',1), ('Pedro López', 'Calle 3', '809-555-5557',2), ('Ana Martínez', 'Calle 4', '809-555-5558',3), ('Luis Hernández', 'Calle 5', '809-555-5559',4), ('Marta Gómez', 'Calle 6', '809-555-5560',5), ('Jorge Ramírez', 'Calle 7', '809-555-5561',6), ('Carla Rodríguez', 'Calle 8', '809-555-5562',7), ('Alberto Díaz', 'Calle 9', '849-555-5563',8), ('Lucía Sánchez', 'Calle 10', '829-555-5564',9), ('David Flores', 'Calle 11', '809-555-5565',10), ('Sofía Torres', 'Calle 12', '809-555-5566',11), ('Héctor Núñez', 'Calle 13', '809-555-5567',1), ('Adriana Ortiz', 'Calle 14', '809-555-5568',1), ('Raúl Vargas', 'Calle 15', '809-555-5569',1), ('Julia Fernández', 'Calle 16', '809-555-5570',5), ('Gustavo Medina', 'Calle 17', '809-555-5571', 6), ('Silvia Jiménez', 'Calle 18', '809-555-5572',1), ('Mario Aguilar', 'Calle 19', '809-555-5573', 10), ('Natalia Ruiz', 'Calle 20', '809-555-5574', 11), ('Andrés Castro', 'Calle 21', '809-555-5575', 5), ('Lidia Pineda', 'Calle 22', '809-555-5576', 1), ('Carlos Gutiérrez', 'Calle 23', '809-555-5577', 4), ('Marcela Miranda', 'Calle 24', '809-555-5578', 7), ('Federico Mendoza', 'Calle 25', '809-555-5579', 8), ('Gabriela Torres', 'Calle 26', '809-555-5580', 7), ('Diego Sánchez', 'Calle 27', '809-555-5581', 6), ('Valeria Gómez', 'Calle 28', '809-555-5582', 1), ('Ricardo Salas', 'Calle 29', '809-555-5583', 2), ('Isabel García', 'Calle 30', '809-555-5584', 2), ('Francisco Méndez', 'Calle 31', '809-555-5585', 4), ('Alejandra Vega', 'Calle 32', '809-555-5586', 2), ('Javier Ortega', 'Calle 33', '809-555-5587', 7), ('Paulina Ramírez', 'Calle 34', '809-555-5588', 1), ('Mario Hernández', 'Calle 35', '809-555-5589', 2), ('Carolina Torres', 'Calle 36', '809-555-5590', 5), ('Andrea Reyes', 'Calle 37', '809-555-5591', 10), ('Miguel Jiménez', 'Calle 38', '809-555-5592', 8), ('Sara González', 'Calle 39', '809-555-5593', 9), ('Eduardo Medina', 'Calle 40', '809-555-5594', 1), ('Renata Castellanos', 'Calle 41', '809-555-5595', 1); --VAMOS HACER UNA CONSULTA PARA LOS REGISTROS: SELECT * FROM Clientes --INSERTAMOS REGISTROS EN LA TABLA Empleados: INSERT INTO vendedor (Nombre, Direccion, Telefono) VALUES ('Juan Perez', 'Calle A', '809-555-5501'), ('Maria Vizcaino', 'Calle B', '809-555-5502'), ('Carlos Santos', 'Calle C', '809-555-5503'), ('Ana Santana', 'Calle D', '809-555-5504'), ('Luis Diaz', 'Calle E', '809-555-5505'), ('Sofia Bergara', 'Calle F', '809-555-5506'), ('Jorge Ramos', 'Calle G', '809-555-5507'), ('Juan Comila', 'Calle H', '809-555-5508'), ('Gabriela Mistral', 'Calle I', '809-555-5509'), ('Juan Gabrie;', 'Calle J', '809-555-5510'); --SELECCIONAMOS LA TABLA PARA LOS REGISTROS: SELECT * FROM vendedor SELECT * FROM Vehiculos SELECT * FROM Ventas --TGrigger que rebaja automaticamente el Stock en la Tabla de Vehiculo cada vez que se realice una venta: CREATE TRIGGER tr_Ventas_ActualizaStock_v1 ON Ventas AFTER INSERT AS BEGIN -- Actualizar stock cuando se inserta una o varias ventas UPDATE Vehiculos SET Stock = Stock - (SELECT SUM(Cantidad) FROM inserted WHERE inserted.ID_Vehiculo = Vehiculos.ID) WHERE EXISTS (SELECT * FROM inserted WHERE inserted.ID_Vehiculo = Vehiculos.ID); END --Borrar el Trigger: DROP TRIGGER tr_Ventas_ActualizaStock_v1 --Modificar el trigger anterior para validar la cantidad de stock antes de actualizarlo --y mostrar un mensaje de error si el stock es insuficiente para satisfacer la venta: CREATE OR ALTER TRIGGER tr_Ventas_ActualizaStock_v2 ON Ventas AFTER INSERT AS BEGIN -- Verificar si hay suficiente stock disponible IF EXISTS (SELECT * FROM Vehiculos v INNER JOIN inserted i ON v.ID = i.ID_Vehiculo WHERE v.Stock < i.Cantidad) BEGIN RAISERROR ('Existencia insuficiente', 16, 1) ROLLBACK TRANSACTION RETURN END -- Actualizar el stock UPDATE Vehiculos SET Stock = Stock - (SELECT SUM(Cantidad) FROM inserted WHERE inserted.ID_Vehiculo = Vehiculos.ID) WHERE EXISTS (SELECT * FROM inserted WHERE inserted.ID_Vehiculo = Vehiculos.ID); END --Borrar el Trigger: DROP TRIGGER tr_Ventas_ActualizaStock_v2 CREATE OR ALTER TRIGGER tr_Ventas_ActualizaStock_v4 ON Ventas AFTER INSERT AS BEGIN -- Verificar si hay suficiente stock disponible IF EXISTS (SELECT * FROM Vehiculos v INNER JOIN inserted i ON v.ID = i.ID_Vehiculo WHERE v.Stock < i.Cantidad) BEGIN RAISERROR ('Existencia insuficiente, Favor Contactar con Almacen', 16, 1) ROLLBACK TRANSACTION RETURN END -- Actualizar el stock UPDATE Vehiculos SET Stock = CASE WHEN (Stock - (SELECT SUM(Cantidad) FROM inserted WHERE inserted.ID_Vehiculo = Vehiculos.ID)) < 0 THEN 0 ELSE (Stock - (SELECT SUM(Cantidad) FROM inserted WHERE inserted.ID_Vehiculo = Vehiculos.ID)) END WHERE EXISTS (SELECT * FROM inserted WHERE inserted.ID_Vehiculo = Vehiculos.ID); END --INSERTAR REGISTROS EN LA TABLA DE VENTAS: 2020 INSERT INTO Ventas (ID_Vehiculo, ID_Cliente, ID_Vendedor, Fecha_Venta, Cantidad, Precio_Venta) VALUES (1, 1,1, '2020-01-01', 1, 28000.00), (2, 2,2, '2020-01-02', 1, 35000.00), (3, 3,3, '2020-01-03', 2, 38000.00), (4, 4,4, '2020-01-04', 1, 43000.00), (5, 5,5, '2020-02-05', 1, 33000.00), (6, 6,6, '2020-02-06', 1, 39000.00), (7, 7,7, '2020-02-07', 1, 28000.00), (8, 8,8, '2020-02-08', 1, 21000.00), (9, 9,9, '2020-03-09', 2, 37000.00), (10, 10,10,'2020-03-10', 1, 43000.00), (11, 11,1, '2020-03-11', 1, 66000.00), (12, 12,2, '2020-03-12', 1, 45000.00), (13, 13,3, '2020-03-13', 1, 28000.00), (14, 14,4, '2020-04-14', 1, 38000.00), (15, 15,5, '2020-04-15', 2, 65000.00), (16, 16,6, '2020-04-16', 1, 65000.00), (17, 17,7, '2020-04-17', 1, 34000.00), (18, 18,8, '2020-04-18', 1, 35000.00), (1, 19,1, '2020-01-01', 1, 28000.00), (2, 20,2, '2020-01-02', 1, 35000.00), (3, 21,3, '2020-01-03', 2, 38000.00), (4, 22,4, '2020-01-04', 1, 43000.00), (5, 23,5, '2020-02-05', 1, 33000.00), (6, 24,6, '2020-02-06', 1, 39000.00), (7, 25,7, '2020-02-07', 1, 28000.00), (8, 26,8, '2020-02-08', 1, 21000.00), (9, 27,9, '2020-03-09', 2, 37000.00), (10, 28,10,'2020-03-10', 1, 43000.00), (11, 29,1, '2020-03-11', 1, 66000.00), (12, 30,2, '2020-03-12', 1, 45000.00), (13, 31,3, '2020-03-13', 1, 28000.00), (14, 32,4, '2020-04-14', 1, 38000.00), (15, 33,5, '2020-04-15', 2, 65000.00), (16, 34,6, '2020-04-16', 1, 65000.00), (17, 35,7, '2020-04-17', 1, 34000.00), (18, 36,8, '2020-04-18', 1, 35000.00), (15, 37,5, '2020-04-15', 2, 65000.00), (16, 38,6, '2020-04-16', 1, 65000.00), (17, 39,7, '2020-04-17', 1, 34000.00), (18, 40,8, '2020-04-18', 1, 35000.00), (1, 1,1, '2020-05-01', 1, 28000.00), (2, 2,2, '2020-05-02', 1, 35000.00), (3, 3,3, '2020-05-03', 2, 38000.00), (4, 4,4, '2020-05-04', 1, 43000.00), (5, 5,5, '2020-06-05', 1, 33000.00), (6, 6,6, '2020-06-06', 1, 39000.00), (7, 7,7, '2020-06-07', 1, 28000.00), (8, 8,8, '2020-07-08', 1, 21000.00), (9, 9,9, '2020-07-09', 2, 37000.00), (10, 10,10,'2020-07-10', 1, 43000.00), (11, 11,1, '2020-08-11', 1, 66000.00), (12, 12,2, '2020-08-12', 1, 45000.00), (13, 13,3, '2020-08-13', 1, 28000.00), (14, 14,4, '2020-08-14', 1, 38000.00), (15, 15,5, '2020-09-15', 2, 65000.00), (16, 16,6, '2020-09-16', 1, 65000.00), (17, 17,7, '2020-09-17', 1, 34000.00), (18, 18,8, '2020-09-18', 1, 35000.00), (1, 19,1, '2020-09-01', 1, 28000.00), (2, 20,2, '2020-10-02', 1, 35000.00), (3, 21,3, '2020-10-03', 2, 38000.00), (4, 22,4, '2020-10-04', 1, 43000.00), (5, 23,5, '2020-10-05', 1, 33000.00), (6, 24,6, '2020-10-06', 1, 39000.00), (7, 25,7, '2020-10-07', 1, 28000.00), (8, 26,8, '2020-10-08', 1, 21000.00), (9, 27,9, '2020-11-09', 2, 37000.00), (10, 28,10,'2020-11-10', 1, 43000.00), (11, 29,1, '2020-11-11', 1, 66000.00), (12, 30,2, '2020-12-12', 1, 45000.00), (13, 31,3, '2020-12-13', 1, 28000.00), (14, 32,4, '2020-12-14', 1, 38000.00), (15, 33,5, '2020-12-15', 2, 65000.00), (16, 34,6, '2020-12-16', 1, 65000.00), (17, 35,7, '2020-12-17', 1, 34000.00), (18, 36,8, '2020-12-18', 1, 35000.00), (15, 37,5, '2020-12-25', 2, 65000.00), (16, 38,6, '2020-12-27', 1, 65000.00), (17, 39,7, '2020-12-28', 1, 34000.00), (18, 40,8, '2020-12-31', 1, 35000.00) --SELECCIONAR LA TABLA PARA VER LOS REGISTROS: SELECT * FROM Ventas SELECT * FROM Vehiculos --INSERTAR REGISTROS EN LA TABLA DE VENTAS: 2021 INSERT INTO Ventas (ID_Vehiculo, ID_Cliente, ID_Vendedor, Fecha_Venta, Cantidad, Precio_Venta) VALUES (1, 1,1, '2021-01-01', 1, 28000.00), (2, 2,2, '2021-01-02', 1, 35000.00), (3, 3,3, '2021-01-03', 2, 38000.00), (4, 4,4, '2021-01-04', 1, 43000.00), (5, 5,5, '2021-02-05', 1, 33000.00), (6, 6,6, '2021-02-06', 1, 39000.00), (7, 7,7, '2021-02-07', 1, 28000.00), (8, 8,8, '2021-02-08', 1, 21000.00), (9, 9,9, '2021-03-09', 2, 37000.00), (10, 10,10,'2021-03-10', 1, 43000.00), (11, 11,1, '2021-03-11', 1, 66000.00), (12, 12,2, '2021-03-12', 1, 45000.00), (13, 13,3, '2021-03-13', 1, 28000.00), (14, 14,4, '2021-04-14', 1, 38000.00), (15, 15,5, '2021-04-15', 2, 65000.00), (16, 16,6, '2021-04-16', 1, 65000.00), (17, 17,7, '2021-04-17', 1, 34000.00), (18, 18,8, '2021-04-18', 1, 35000.00), (1, 19,1, '2021-01-01', 1, 28000.00), (2, 20,2, '2021-01-02', 1, 35000.00), (3, 21,3, '2021-01-03', 2, 38000.00), (4, 22,4, '2021-01-04', 1, 43000.00), (5, 23,5, '2021-02-05', 1, 33000.00), (6, 24,6, '2021-02-06', 1, 39000.00), (7, 25,7, '2021-02-07', 1, 28000.00), (8, 26,8, '2021-02-08', 1, 21000.00), (9, 27,9, '2021-03-09', 2, 37000.00), (10, 28,10,'2021-03-10', 1, 43000.00), (11, 29,1, '2021-03-11', 1, 66000.00), (12, 30,2, '2021-03-12', 1, 45000.00), (13, 31,3, '2021-03-13', 1, 28000.00), (14, 32,4, '2021-04-14', 1, 38000.00), (15, 33,5, '2021-04-15', 2, 65000.00), (16, 34,6, '2021-04-16', 1, 65000.00), (17, 35,7, '2021-04-17', 1, 34000.00), (18, 36,8, '2021-04-18', 1, 35000.00), (15, 37,5, '2021-04-15', 2, 65000.00), (16, 38,6, '2021-04-16', 1, 65000.00), (17, 39,7, '2021-04-17', 1, 34000.00), (18, 40,8, '2021-04-18', 1, 35000.00), (1, 1,1, '2021-05-01', 1, 28000.00), (2, 2,2, '2021-05-02', 1, 35000.00), (3, 3,3, '2021-05-03', 2, 38000.00), (4, 4,4, '2021-05-04', 1, 43000.00), (5, 5,5, '2021-06-05', 1, 33000.00), (6, 6,6, '2021-06-06', 1, 39000.00), (7, 7,7, '2021-06-07', 1, 28000.00), (8, 8,8, '2021-07-08', 1, 21000.00), (9, 9,9, '2021-07-09', 2, 37000.00), (10, 10,10,'2021-07-10', 1, 43000.00), (11, 11,1, '2021-08-11', 1, 66000.00), (12, 12,2, '2021-08-12', 1, 45000.00), (13, 13,3, '2021-08-13', 1, 28000.00), (14, 14,4, '2021-08-14', 1, 38000.00), (15, 15,5, '2021-09-15', 2, 65000.00), (16, 16,6, '2021-09-16', 1, 65000.00), (17, 17,7, '2021-09-17', 1, 34000.00), (18, 18,8, '2021-09-18', 1, 35000.00), (1, 19,1, '2021-09-01', 1, 28000.00), (2, 20,2, '2021-10-02', 1, 35000.00), (3, 21,3, '2021-10-03', 2, 38000.00), (4, 22,4, '2021-10-04', 1, 43000.00), (5, 23,5, '2021-10-05', 1, 33000.00), (6, 24,6, '2021-10-06', 1, 39000.00), (7, 25,7, '2021-10-07', 1, 28000.00), (8, 26,8, '2021-10-08', 1, 21000.00), (9, 27,9, '2021-11-09', 2, 37000.00), (10, 28,10,'2021-11-10', 1, 43000.00), (11, 29,1, '2021-11-11', 1, 66000.00), (12, 30,2, '2021-12-12', 1, 45000.00), (13, 31,3, '2021-12-13', 1, 28000.00), (14, 32,4, '2021-12-14', 1, 38000.00), (15, 33,5, '2021-12-15', 2, 65000.00), (16, 34,6, '2021-12-16', 1, 65000.00), (17, 35,7, '2021-12-17', 1, 34000.00), (18, 36,8, '2021-12-18', 1, 35000.00), (15, 37,5, '2021-12-25', 2, 65000.00), (16, 38,6, '2021-12-27', 1, 65000.00), (17, 39,7, '2021-12-28', 1, 34000.00), (18, 40,8, '2021-12-31', 1, 35000.00) --SELECCIONAR LA TABLA PARA VER LOS REGISTROS: SELECT * FROM Ventas SELECT * FROM Vehiculos --VAMOS A INSERTAR 50 VEHICULOS: UPDATE Vehiculos SET Stock = 50 --INSERTAR REGISTROS EN LA TABLA DE VENTAS: 2022 INSERT INTO Ventas (ID_Vehiculo, ID_Cliente, ID_Vendedor, Fecha_Venta, Cantidad, Precio_Venta) VALUES (1, 1,1, '2022-01-01', 1, 28000.00), (2, 2,2, '2022-01-02', 1, 35000.00), (3, 3,3, '2022-01-03', 2, 38000.00), (4, 4,4, '2022-01-04', 1, 43000.00), (5, 5,5, '2022-02-05', 1, 33000.00), (6, 6,6, '2022-02-06', 1, 39000.00), (7, 7,7, '2022-02-07', 1, 28000.00), (8, 8,8, '2022-02-08', 1, 21000.00), (9, 9,9, '2022-03-09', 2, 37000.00), (10, 10,10,'2022-03-10', 1, 43000.00), (11, 11,1, '2022-03-11', 1, 66000.00), (12, 12,2, '2022-03-12', 1, 45000.00), (13, 13,3, '2022-03-13', 1, 28000.00), (14, 14,4, '2022-04-14', 1, 38000.00), (15, 15,5, '2022-04-15', 2, 65000.00), (16, 16,6, '2022-04-16', 1, 65000.00), (17, 17,7, '2022-04-17', 1, 34000.00), (18, 18,8, '2022-04-18', 1, 35000.00), (1, 19,1, '2022-01-01', 1, 28000.00), (2, 20,2, '2022-01-02', 1, 35000.00), (3, 21,3, '2022-01-03', 2, 38000.00), (4, 22,4, '2022-01-04', 1, 43000.00), (5, 23,5, '2022-02-05', 1, 33000.00), (6, 24,6, '2022-02-06', 1, 39000.00), (7, 25,7, '2022-02-07', 1, 28000.00), (8, 26,8, '2022-02-08', 1, 21000.00), (9, 27,9, '2022-03-09', 2, 37000.00), (10, 28,10,'2022-03-10', 1, 43000.00), (11, 29,1, '2022-03-11', 1, 66000.00), (12, 30,2, '2022-03-12', 1, 45000.00), (13, 31,3, '2022-03-13', 1, 28000.00), (14, 32,4, '2022-04-14', 1, 38000.00), (15, 33,5, '2022-04-15', 2, 65000.00), (16, 34,6, '2022-04-16', 1, 65000.00), (17, 35,7, '2022-04-17', 1, 34000.00), (18, 36,8, '2022-04-18', 1, 35000.00), (15, 37,5, '2022-04-15', 2, 65000.00), (16, 38,6, '2022-04-16', 1, 65000.00), (17, 39,7, '2022-04-17', 1, 34000.00), (18, 40,8, '2022-04-18', 1, 35000.00), (1, 1,1, '2022-05-01', 1, 28000.00), (2, 2,2, '2022-05-02', 1, 35000.00), (3, 3,3, '2022-05-03', 2, 38000.00), (4, 4,4, '2022-05-04', 1, 43000.00), (5, 5,5, '2022-06-05', 1, 33000.00), (6, 6,6, '2022-06-06', 1, 39000.00), (7, 7,7, '2022-06-07', 1, 28000.00), (8, 8,8, '2022-07-08', 1, 21000.00), (9, 9,9, '2022-07-09', 2, 37000.00), (10, 10,10,'2022-07-10', 1, 43000.00), (11, 11,1, '2022-08-11', 1, 66000.00), (12, 12,2, '2022-08-12', 1, 45000.00), (13, 13,3, '2022-08-13', 1, 28000.00), (14, 14,4, '2022-08-14', 1, 38000.00), (15, 15,5, '2022-09-15', 2, 65000.00), (16, 16,6, '2022-09-16', 1, 65000.00), (17, 17,7, '2022-09-17', 1, 34000.00), (18, 18,8, '2022-09-18', 1, 35000.00), (1, 19,1, '2022-09-01', 1, 28000.00), (2, 20,2, '2022-10-02', 1, 35000.00), (3, 21,3, '2022-10-03', 2, 38000.00), (4, 22,4, '2022-10-04', 1, 43000.00), (5, 23,5, '2022-10-05', 1, 33000.00), (6, 24,6, '2022-10-06', 1, 39000.00), (7, 25,7, '2022-10-07', 1, 28000.00), (8, 26,8, '2022-10-08', 1, 21000.00), (9, 27,9, '2022-11-09', 2, 37000.00), (10, 28,10,'2022-11-10', 1, 43000.00), (11, 29,1, '2022-11-11', 1, 66000.00), (12, 30,2, '2022-12-12', 1, 45000.00), (13, 31,3, '2022-12-13', 1, 28000.00), (14, 32,4, '2022-12-14', 1, 38000.00), (15, 33,5, '2022-12-15', 2, 65000.00), (16, 34,6, '2022-12-16', 1, 65000.00), (17, 35,7, '2022-12-17', 1, 34000.00), (18, 36,8, '2022-12-18', 1, 35000.00), (15, 37,5, '2022-12-25', 2, 65000.00), (16, 38,6, '2022-12-27', 1, 65000.00), (17, 39,7, '2022-12-28', 1, 34000.00), (18, 40,8, '2022-12-31', 1, 35000.00) --SELECCIONAR LA TABLA PARA VER LOS REGISTROS: SELECT * FROM Ventas --INSERTAR REGISTROS EN LA TABLA DE VENTAS: 2023 INSERT INTO Ventas (ID_Vehiculo, ID_Cliente, ID_Vendedor, Fecha_Venta, Cantidad, Precio_Venta) VALUES (1, 1,1, '2023-01-01', 1, 28000.00), (2, 2,2, '2023-01-02', 1, 35000.00), (3, 3,3, '2023-01-03', 2, 38000.00), (4, 4,4, '2023-01-04', 1, 43000.00), (5, 5,5, '2023-02-05', 1, 33000.00), (6, 6,6, '2023-02-06', 1, 39000.00), (7, 7,7, '2023-02-07', 1, 28000.00), (8, 8,8, '2023-02-08', 1, 21000.00), (9, 9,9, '2023-03-09', 2, 37000.00), (10, 10,10,'2023-03-10', 1, 43000.00), (11, 11,1, '2023-03-11', 1, 66000.00), (12, 12,2, '2023-03-12', 1, 45000.00), (13, 13,3, '2023-03-13', 1, 28000.00), (14, 14,4, '2023-04-14', 1, 38000.00), (15, 15,5, '2023-04-15', 2, 65000.00), (16, 16,6, '2023-04-16', 1, 65000.00), (17, 17,7, '2023-04-17', 1, 34000.00), (18, 18,8, '2023-04-18', 1, 35000.00), (1, 19,1, '2023-01-01', 1, 28000.00), (2, 20,2, '2023-01-02', 1, 35000.00), (3, 21,3, '2023-01-03', 2, 38000.00), (4, 22,4, '2023-01-04', 1, 43000.00), (5, 23,5, '2023-02-05', 1, 33000.00), (6, 24,6, '2023-02-06', 1, 39000.00), (7, 25,7, '2023-02-07', 1, 28000.00), (8, 26,8, '2023-02-08', 1, 21000.00), (9, 27,9, '2023-03-09', 2, 37000.00), (10, 28,10,'2023-03-10', 1, 43000.00), (11, 29,1, '2023-03-11', 1, 66000.00), (12, 30,2, '2023-03-12', 1, 45000.00), (13, 31,3, '2023-03-13', 1, 28000.00), (14, 32,4, '2023-04-14', 1, 38000.00), (15, 33,5, '2023-04-15', 2, 65000.00), (16, 34,6, '2023-04-16', 1, 65000.00), (17, 35,7, '2023-04-17', 1, 34000.00), (18, 36,8, '2023-04-18', 1, 35000.00), (15, 37,5, '2023-04-15', 2, 65000.00), (16, 38,6, '2023-04-16', 1, 65000.00), (17, 39,7, '2023-04-17', 1, 34000.00), (18, 40,8, '2023-04-18', 1, 35000.00) --SELECCIONAR LA TABLA PARA VER LOS REGISTROS: SELECT * FROM Ventas SELECT * FROM Clientes SELECT * FROM Vehiculos SELECT * FROM Ventas --INSERTAMOS REGISTROS EN LA TABLA Fotos_vendedor: insert into Fotos_vendedor values ('1','https://dl.dropbox.com/s/4bz1xriny7ro04g/A40.png','1'); insert into Fotos_vendedor values ('2','https://dl.dropbox.com/s/yxe96df3xrzoc4y/A44.png','2'); insert into Fotos_vendedor values ('3','https://dl.dropbox.com/s/0jkab8w6ie0h91z/A42.png','3'); insert into Fotos_vendedor values ('4','https://dl.dropboxusercontent.com/s/2lks10yyiurw2b0/A33.png','4'); insert into Fotos_vendedor values ('5','https://dl.dropbox.com/s/zgx7g0h0mxubhao/A21.png','5'); insert into Fotos_vendedor values ('6','https://dl.dropboxusercontent.com/s/id0gj57k6z3m73q/A34.png','6'); insert into Fotos_vendedor values ('7','https://dl.dropbox.com/s/1f9hzgblcmuen4a/A10.png','7'); insert into Fotos_vendedor values ('8','https://dl.dropbox.com/s/jveyj0btov87izo/A38.png','8'); insert into Fotos_vendedor values ('9','https://dl.dropbox.com/s/27oq7ocj4q8a0z8/A46.png','9'); insert into Fotos_vendedor values ('10','https://dl.dropbox.com/s/z4geyw1u2psmm47/A16.png','10'); --INSERTAMOS REGISTROS EN LA TABLA Modelos_URL: INSERT INTO Modelos_URL (ID_Vehiculo, URL) VALUES (1, 'https://di-uploads-pod20.dealerinspire.com/rickhendricktoyotaofsandysprings/uploads/2020/03/mlp-img-top-2020-camry.png'), (2, 'https://deltacomercial.com.do/cdn/modelos/corolla/4b4118996e92823d7e2b472247359fa4.png'), (3, 'https://www.autolist.com/izmo-photos/2018/18toyota/18toyotarav4leod4ra/toyota_18rav4leod4ra_angularfront.png'), (4, 'https://platform.cstatic-images.com/xlarge/in/v2/stock_photos/4512b630-7c12-44da-b3c0-70c4950b3a00/dcfa07cf-533b-4f9f-88c8-020603c44d4d.png'), (5, 'https://www.cars.com/i/large/in/v2/stock_photos/eb246eb0-bb21-4a02-983d-e6021d78c036/40ec83c6-1524-430d-8734-b45b75bd7a4a.png'), (6, 'https://i0.wp.com/www.transportelatino.com/wp-content/uploads/2017/11/tundra9.jpg?resize=850%2C560&ssl=1'), (7, 'https://file.kelleybluebookimages.com/kbb/base/evox/CP/9104/2014-Toyota-Sienna-front_9104_032_1870x848_1D6_cropped.png'), (8, 'https://www.motortrend.com/uploads/sites/10/2015/11/2013-toyota-4runner-sr5-4x4-v6-suv-angular-front.png'), (9, 'https://platform.cstatic-images.com/xlarge/in/v2/stock_photos/4ecde73e-4769-4e58-9815-d616d321c06b/a5a5cec2-a151-4f4b-aa18-440216b767a7.png'), (10, 'https://www.motortrend.com/uploads/sites/10/2015/11/2011-toyota-land-cruiser-4wd-suv-angular-front.png?fit=around%7C875:492.1875'), (11, 'https://www.buyatoyota.com/assets/img/vehicle-info/Prius/2021/hero_image_prius.png'), (12, 'https://deltacomercial.com.do/cdn/modelos/yaris/yaris-gris-plata.png'), (13, 'https://www.buyatoyota.com/assets/img/vehicle-info/Supra/2021/supra-hero.png'), (14, 'https://www.buyatoyota.com/assets/img/vehicle-compare/compare-hero/2021/avalon_hybrid_compare_hero.png'), (15, 'https://file.kelleybluebookimages.com/kbb/base/evox/CP/14668/2021-Toyota-C-HR-front_14668_032_1831x844_2TA_cropped.png'), (16, 'https://file.kelleybluebookimages.com/kbb/base/evox/CP/14600/2021-Toyota-Venza-front_14600_032_1816x855_3T3_cropped.png'), (17, 'https://www.buyatoyota.com/assets/img/vehicle-info/Mirai/2021/hero_image_mirai%20.png'), (18, 'https://www.cars.com/i/large/in/v2/stock_photos/34b4bfca-ec5a-4bec-b375-1ff695280627/3230f18e-b0e8-4b19-a7d4-06d2f9b4acc6.png');
Resultado de los Insert


Consultas Básicas:
Las consultas básicas en SQL son aquellas que se utilizan para obtener información de una base de datos. Estas consultas se realizan mediante la sentencia SELECT, que permite seleccionar los campos que se desean mostrar en los resultados de la consulta, así como establecer criterios de búsqueda para filtrar los datos.
Las consultas básicas incluyen:
- SELECT: para seleccionar los campos que se desean mostrar en los resultados de la consulta.
- FROM: para especificar la tabla o tablas de la base de datos que se utilizarán en la consulta.
- WHERE: para establecer criterios de búsqueda y filtrar los datos de la consulta.
- ORDER BY: para ordenar los resultados de la consulta según uno o varios campos específicos.
- GROUP BY: para agrupar los resultados de la consulta según uno o varios campos específicos.
Varios ejemplos de consultas básicas serían:
/* Algunas consultas básicas para obtener todos los registros de cada tabla en el modelo de base de datos propuesto: */ --Para obtener todos los registros de la tabla "Vehiculos": SELECT * FROM Vehiculos; --Para obtener todos los registros de la tabla "Clientes": SELECT * FROM Clientes; --Para obtener todos los registros de la tabla "Ventas": SELECT * FROM Ventas; --Para obtener todos los registros de la tabla "Empleados": SELECT * FROM vendedor; --Para obtener todos los registros de la tabla "Asignaciones": SELECT * FROM Modelos_URL; --Algunas consultas utilizando funciones matemáticas, lógicas y de fecha, --con conteo, promedio (AVG), entre otras: --Conteo de vehículos vendidos por año: SELECT Anio, COUNT(Anio) as Numero_Ventas_x_Año FROM Vehiculos INNER JOIN Ventas ON Vehiculos.ID = Ventas.ID_Vehiculo GROUP BY Anio ORDER BY Anio; --Promedio de precio de venta de vehículos por año: SELECT Anio, AVG(Precio_Venta) as Promedio_Precio FROM Vehiculos INNER JOIN Ventas ON Vehiculos.ID = Ventas.ID_Vehiculo GROUP BY Anio ORDER BY Anio; --Conteo de ventas realizadas por cada modelo de vehículo: SELECT Modelo, COUNT(Ventas.ID_Vehiculo) as Numero_Ventas FROM Vehiculos INNER JOIN Ventas ON Vehiculos.ID = Ventas.ID_Vehiculo GROUP BY Modelo; --Conteo de ventas realizadas en cada mes: SELECT MONTH(Fecha_Venta) as Mes, COUNT(ID) as Numero_Ventas FROM Ventas GROUP BY MONTH(Fecha_Venta); /* La siguiente consulta te mostrará el nombre del mes junto con el número de ventas realizadas en ese mes: */ WITH months(month_number, month_name) AS ( SELECT 1, 'Enero' UNION SELECT 2, 'Febrero' UNION SELECT 3, 'Marzo' UNION SELECT 4, 'Abril' UNION SELECT 5, 'Mayo' UNION SELECT 6, 'Junio' UNION SELECT 7, 'Julio' UNION SELECT 8, 'Agosto' UNION SELECT 9, 'Septiembre' UNION SELECT 10, 'Octubre' UNION SELECT 11, 'Noviembre' UNION SELECT 12, 'Diciembre' ) SELECT months.month_name, COUNT(Ventas.ID) as Numero_Ventas FROM Ventas INNER JOIN months ON MONTH(Fecha_Venta) = months.month_number GROUP BY months.month_name, MONTH(Fecha_Venta) ORDER BY MONTH(Fecha_Venta); /* Esta consulta utiliza una tabla temporal conocida como "CTE (Common Table Expression)" que se utiliza para crear una tabla temporal, con los nombres de los meses y sus respectivos números, que luego se relaciona con la tabla "Ventas" para obtener el nombre del mes correspondiente al número de mes en la fecha de venta.*/ select * from Vehiculos --EL MISMO EJEMPLO PERO AGREGANDO CANTIDAD Y MONTO: WITH months(month_number, month_name) AS ( SELECT 1, 'Enero' UNION SELECT 2, 'Febrero' UNION SELECT 3, 'Marzo' UNION SELECT 4, 'Abril' UNION SELECT 5, 'Mayo' UNION SELECT 6, 'Junio' UNION SELECT 7, 'Julio' UNION SELECT 8, 'Agosto' UNION SELECT 9, 'Septiembre' UNION SELECT 10, 'Octubre' UNION SELECT 11, 'Noviembre' UNION SELECT 12, 'Diciembre' ) SELECT months.month_name, COUNT(Ventas.ID) as Numero_Ventas, SUM(Ventas.Cantidad) as Cantidad_Vendida, SUM(Ventas.Total) as Monto_Vendido FROM Ventas INNER JOIN months ON MONTH(Fecha_Venta) = months.month_number GROUP BY months.month_name, MONTH(Fecha_Venta) ORDER BY MONTH(Fecha_Venta); --Conteo de ventas realizadas por cada marca: SELECT Modelo, COUNT(Ventas.ID_Vehiculo) as Numero_Ventas FROM Vehiculos INNER JOIN Ventas ON Vehiculos.ID = Ventas.ID_Vehiculo GROUP BY Modelo; SELECT Modelo, COUNT(Ventas.ID_Vehiculo) as Numero_Ventas, SUM(Ventas.Cantidad) as Cantidad_Vendida, SUM(Ventas.Precio_Venta * Ventas.Cantidad) as Total_Vendido FROM Vehiculos INNER JOIN Ventas ON Vehiculos.ID = Ventas.ID_Vehiculo GROUP BY Modelo;
Resultados Consultas básicas


Las consultas avanzada
Las consultas avanzadas en SQL son aquellas que involucran múltiples tablas y/o funciones de agregación para obtener resultados más complejos. Algunas de las consultas avanzadas que se pueden realizar en SQL incluyen:
- JOINs: permite combinar datos de múltiples tablas en una sola consulta.
- Subqueries: una consulta anidada dentro de otra consulta para obtener información más específica.
- Funciones de agregación: permiten realizar cálculos estadísticos y resumir datos, como AVG, SUM, COUNT, MIN y MAX.
- GROUP BY: agrupa los resultados de una consulta según una o varias columnas.
- HAVING: funciona como un filtro para las filas agrupadas en una consulta GROUP BY.
- UNION: combina los resultados de dos o más consultas en una sola tabla.
- Stored Procedures: permiten almacenar una secuencia de instrucciones SQL y ejecutarlas con un solo comando.
- Views: son consultas predefinidas que se pueden guardar en la base de datos y usar como una tabla virtual.
- Full-text search: permite buscar texto dentro de columnas que contienen texto sin necesidad de utilizar el operador LIKE.
/*Aquí te presento algunos ejemplos de consultas avanzadas que se pueden realizar en la base de datos "Ventas_Vehiculos_Toyota_2023_V4" que hemos estado trabajando: */ --Subconsultas:Obtener el modelo y el precio de venta del vehículo con el precio de venta máximo en la tabla "Vehiculos": SELECT Modelo, Precio_ventas FROM Vehiculos WHERE Precio_ventas = (SELECT MAX(Precio_ventas) FROM Vehiculos) --JOIN:--Obtener el nombre del cliente, el modelo del vehículo y la fecha de venta de todas las ventas realizadas: SELECT c.Nombre, v.ID_Vehiculo, ve.Modelo, v.Fecha_Venta FROM Ventas v INNER JOIN Clientes c ON v.ID_Cliente = c.ID INNER JOIN Vehiculos ve ON v.ID_Vehiculo = ve.ID --Funciones:--Obtener el precio de venta del vehículo con un descuento del 10%: SELECT Modelo, Precio_ventas, Precio_ventas*0.9 AS Precio_Con_Descuento FROM Vehiculos --Triggers: --Crear un trigger que inserte un registro en la tabla "Ventas" cada vez que se inserte un registro en la tabla "Vehiculos": CREATE TRIGGER Insertar_Venta_Auto ON Vehiculos AFTER INSERT AS BEGIN INSERT INTO Ventas (ID_Vehiculo, ID_Cliente, ID_Vendedor, Fecha_Venta, Cantidad, Precio_Venta) SELECT ID, 1, 1, GETDATE(), 1, Precio_ventas FROM inserted END --Vistas: --Crear una vista que muestre el nombre y la dirección de los vendedores con más de 10 ventas realizadas: CREATE VIEW Vendedores_Top_10 AS SELECT v.Nombre, v.Direccion FROM vendedor v INNER JOIN ( SELECT TOP 10 ID_Vendedor, COUNT(*) AS Total_Ventas FROM Ventas GROUP BY ID_Vendedor HAVING COUNT(*) > 10 ) vt ON v.ID = vt.ID_Vendedor --selecionamos esa vista: select * from Vendedores_Top_10

-- AHORA VAMOS A VER OTRAS CONSULTAS MÁS AVANZADAS DONDE VEREMOS EL PODER DEL ANÁLISIS DE DATOS -- Y CÓMO PODEMOS SACAR EL MÁXIMO PROVECHO A LAS CONSULTAS AVANZADAS QUE TIENE SQL SERVER: --HACER UNA CONSULTA QUE MUESTRE EL ID, MODELO, AÑO, PRECIO DE COMPRA, CLIENTE, DIRECCION, TELEFONO, FECHA, PRECIO_VENTAS, VENDEDOR,IMAGEN URL: SELECT Vehiculos.ID,Vehiculos.Modelo, Vehiculos.Anio as Fecha_Entrada_Almacen, Vehiculos.Precio_compra, Clientes.Nombre as Nombre_Cliente, Clientes.Direccion, Clientes.Telefono, Ventas.Fecha_Venta, Ventas.Precio_Venta, vendedor.Nombre as Nombre_Empleado, Modelos_URL.URL AS Image_Modelo FROM Vehiculos INNER JOIN Ventas ON Vehiculos.ID = Ventas.ID_Vehiculo INNER JOIN Clientes ON Ventas.ID_Cliente = Clientes.ID INNER JOIN vendedor ON vendedor.ID= ventas.ID_Vendedor INNER JOIN Modelos_URL ON Vehiculos.ID = Modelos_URL.ID_Vehiculo /* Esta consulta utiliza JOIN para relacionar las tablas "Vehiculos", "Clientes", "Ventas", "Empleados" y "Modelos_URL" mediante las claves foráneas en cada tabla. La consulta devuelve todos los campos de cada tabla relacionada, incluyendo el modelo, el año, el precio, la marca del vehículo, el nombre del cliente, la dirección, el teléfono, la fecha de venta, el precio de venta, el nombre del empleado, la dirección, el teléfono, y la URL del modelo de vehículo. */ SELECT Vehiculos.ID, Vehiculos.Modelo, YEAR(Ventas.Fecha_Venta) as Año_Venta, Vehiculos.Precio_compra, Clientes.Nombre as Nombre_Cliente, Clientes.Direccion, Clientes.Telefono, Ventas.Fecha_Venta, Ventas.Precio_Venta, vendedor.Nombre as Nombre_Empleado, Modelos_URL.URL AS Image_Modelo FROM Vehiculos INNER JOIN Ventas ON Vehiculos.ID = Ventas.ID_Vehiculo INNER JOIN Clientes ON Ventas.ID_Cliente = Clientes.ID INNER JOIN vendedor ON vendedor.ID = ventas.ID_Vendedor INNER JOIN Modelos_URL ON Vehiculos.ID = Modelos_URL.ID_Vehiculo; CREATE or alter VIEW vw_Ventas_Totales AS SELECT ID, Fecha_Venta, Cantidad, Precio_Venta, Cantidad * Precio_Venta AS Total FROM Ventas; select * from vw_Ventas_Totales select * from Vehiculos select * from Ventas CREATE OR ALTER VIEW vw_Ventas_Totales_v4 AS SELECT V.ID, V.Fecha_Venta, V.Cantidad, V.Cantidad * VE.Precio_compra as Total_Precio_Compra, V.Cantidad * V.Precio_Venta AS Total_Precio_Ventas, (V.Cantidad * (V.Precio_Venta - VE.Precio_compra)) AS Margen_Bruto FROM Ventas V INNER JOIN Vehiculos VE ON VE.ID = V.ID_Vehiculo; select * from vw_Ventas_Totales_v4 CREATE OR ALTER VIEW vw_Ventas_Totales_v5 AS SELECT V.ID, V.Fecha_Venta, V.Cantidad, V.Cantidad * VE.Precio_compra as Total_Precio_Compra, V.Cantidad * V.Precio_Venta AS Total_Precio_Ventas, (V.Cantidad * (V.Precio_Venta - VE.Precio_compra)) AS Margen_total, ((V.Cantidad * (V.Precio_Venta - VE.Precio_compra)) / (V.Cantidad * V.Precio_Venta)) * 100 AS "%_Margen" FROM Ventas V INNER JOIN Vehiculos VE ON VE.ID = V.ID_Vehiculo; select * from vw_Ventas_Totales_v5 --Vista para ventas de vehículos Toyota por ID: CREATE VIEW ventas_por_id AS SELECT Ventas.ID, Vehiculos.Modelo, Ventas.Fecha_Venta, Clientes.Nombre AS Nombre_Cliente, Clientes.Direccion, Clientes.Telefono, vendedor.Nombre AS Nombre_Empleado, Vehiculos.Precio_compra, Ventas.Precio_Venta, Ventas.Cantidad, Ventas.Total, Modelos_URL.URL AS Modelo_URL, Fotos_vendedor.foto_Vendedor_url FROM Ventas JOIN Vehiculos ON Ventas.ID_Vehiculo = Vehiculos.ID JOIN Clientes ON Ventas.ID_Cliente = Clientes.ID JOIN vendedor ON Ventas.ID_Vendedor = vendedor.ID JOIN Modelos_URL ON Ventas.ID_Vehiculo = Modelos_URL.ID_Vehiculo JOIN Fotos_vendedor ON Ventas.ID_Vendedor = Fotos_vendedor.ID_vendedor; --SELECCIONAMOS LA VISTA ventas_por_id SELECT * FROM ventas_por_id --Vista para ventas de vehículos Toyota por modelo: CREATE or alter VIEW ventas_por_modelo AS SELECT Ventas.ID, pais.NOMBRE_PAIS, Vehiculos.Modelo, Ventas.Fecha_Venta, Clientes.Nombre AS Nombre_Cliente, Clientes.Direccion, Clientes.Telefono, vendedor.Nombre AS Nombre_Empleado, Vehiculos.Precio_compra, Ventas.Precio_Venta, Ventas.Cantidad, Ventas.Total, Modelos_URL.URL AS Modelo_URL, Fotos_vendedor.foto_Vendedor_url FROM Ventas JOIN Vehiculos ON Ventas.ID_Vehiculo = Vehiculos.ID JOIN Clientes ON Ventas.ID_Cliente = Clientes.ID JOIN vendedor ON Ventas.ID_Vendedor = vendedor.ID JOIN Modelos_URL ON Ventas.ID_Vehiculo = Modelos_URL.ID_Vehiculo JOIN Fotos_vendedor ON Ventas.ID_Vendedor = Fotos_vendedor.ID_vendedor JOIN PAIS ON PAIS.ID_PAIS= Clientes.ID_pais --SELECCIONAMOS LA VISTA ventas_por_id SELECT * FROM ventas_por_modelo --Vista para ventas de vehículos Toyota por fecha de venta: CREATE OR ALTER VIEW ventas_por_fecha AS SELECT Ventas.ID, Vehiculos.Modelo, Ventas.Fecha_Venta, Clientes.Nombre AS Nombre_Cliente, Clientes.Direccion, Clientes.Telefono, vendedor.Nombre AS Nombre_Empleado, Vehiculos.Precio_compra, Ventas.Precio_Venta, Ventas.Cantidad, Ventas.Total, Modelos_URL.URL AS Modelo_URL, Fotos_vendedor.foto_Vendedor_url FROM Ventas JOIN Vehiculos ON Ventas.ID_Vehiculo = Vehiculos.ID JOIN Clientes ON Ventas.ID_Cliente = Clientes.ID JOIN vendedor ON Ventas.ID_Vendedor = vendedor.ID JOIN Modelos_URL ON Ventas.ID_Vehiculo = Modelos_URL.ID_Vehiculo JOIN Fotos_vendedor ON Ventas.ID_Vendedor = Fotos_vendedor.ID_vendedor --SELECCIONAMOS LA VISTA: SELECT * FROM ventas_por_fecha -- VAMOS A CREAR UN TRIGGER QUE ACTUALICE EL INVENTARIO SEGUN SE REALICEN VENTAS: CREATE TRIGGER tr_Ventas_ActualizaStock ON Ventas AFTER INSERT, UPDATE, DELETE AS BEGIN -- Actualizar stock cuando se inserta o actualiza una venta IF EXISTS (SELECT * FROM inserted) BEGIN UPDATE Vehiculos SET Stock = Stock - (SELECT Cantidad FROM inserted WHERE inserted.ID_Vehiculo = Vehiculos.ID) WHERE EXISTS (SELECT * FROM inserted WHERE inserted.ID_Vehiculo = Vehiculos.ID); END -- Actualizar stock cuando se elimina una venta IF EXISTS (SELECT * FROM deleted) BEGIN UPDATE Vehiculos SET Stock = Stock + (SELECT Cantidad FROM deleted WHERE deleted.ID_Vehiculo = Vehiculos.ID) WHERE EXISTS (SELECT * FROM deleted WHERE deleted.ID_Vehiculo = Vehiculos.ID); END END DROP TRIGGER tr_Ventas_ActualizaStock --VAMOS A PROBAR EL TRIGGER: INSERT INTO Ventas (ID_Vehiculo, ID_Cliente, ID_Vendedor, Fecha_Venta, Cantidad, Precio_Venta) VALUES (1, 1,1, '2023-04-28', 4, 28000.00); SELECT * FROM Vehiculos --CREAR UNA VISTA CON EL STOCK: CREATE OR ALTER VIEW VentasToyotaPorFecha AS SELECT V.ID AS ID_Venta, V.Fecha_Venta, C.Nombre AS Nombre_Cliente, C.Direccion AS Direccion_Cliente, C.Telefono AS Telefono_Cliente, E.Nombre AS Vendedor, VH.Modelo, VH.Precio_compra, VH.Precio_ventas, VH.Stock AS Stock_Inicial, V.Cantidad, (VH.Stock - SUM(V.Cantidad)) AS Stock_Actual, V.Total, M.URL AS URL_Modelo, F.foto_Vendedor_url AS Foto_Vendedor FROM Ventas V INNER JOIN Vehiculos VH ON V.ID_Vehiculo = VH.ID INNER JOIN Clientes C ON V.ID_Cliente = C.ID INNER JOIN vendedor E ON V.ID_Vendedor = E.ID INNER JOIN Modelos_URL M ON VH.ID = M.ID_Vehiculo INNER JOIN Fotos_vendedor F ON V.ID_Vendedor = F.ID_vendedor GROUP BY V.ID, V.Fecha_Venta, V.Cantidad, V.Precio_Venta, V.Total, C.Nombre, C.Direccion, C.Telefono, E.Nombre, VH.Modelo,VH.Precio_compra, VH.Precio_ventas, M.URL, F.foto_Vendedor_url, VH.Stock; SELECT * FROM VentasToyotaPorFecha select * from vendedor select * from Fotos_vendedor select * from Vehiculos CREATE OR ALTER VIEW VentasToyotaPorFecha_v2 AS SELECT V.ID AS ID_Venta, V.Fecha_Venta, p.NOMBRE_PAIS as Pais, C.Nombre AS Nombre_Cliente, C.Direccion AS Direccion_Cliente, C.Telefono AS Telefono_Cliente, E.Nombre AS Vendedor, VH.Modelo, VH.Precio_compra, VH.Precio_ventas, VH.Stock AS Stock_Inicial, V.Cantidad, (VH.Stock - SUM(V.Cantidad)) AS Stock_Actual, V.Total, (V.Cantidad * (VH.Precio_ventas - VH.Precio_compra)) AS Margen_bruto, ((V.Cantidad * (VH.Precio_ventas - VH.Precio_compra)) / (V.Cantidad * VH.Precio_ventas)) * 100 AS "%_Margen", M.URL AS URL_Modelo, F.foto_Vendedor_url AS Foto_Vendedor FROM Ventas V INNER JOIN Vehiculos VH ON V.ID_Vehiculo = VH.ID INNER JOIN Clientes C ON V.ID_Cliente = C.ID INNER JOIN vendedor E ON V.ID_Vendedor = E.ID INNER JOIN PAIS P ON c.ID_pais=p.ID_PAIS INNER JOIN Modelos_URL M ON VH.ID = M.ID_Vehiculo INNER JOIN Fotos_vendedor F ON V.ID_Vendedor = F.ID_vendedor GROUP BY V.ID, V.Fecha_Venta, p.NOMBRE_PAIS,V.Cantidad, V.Precio_Venta, V.Total, C.Nombre, C.Direccion, C.Telefono, E.Nombre, VH.Modelo,VH.Precio_compra, VH.Precio_ventas, M.URL, F.foto_Vendedor_url, VH.Stock; SELECT * FROM VentasToyotaPorFecha_v2 --Clientes que no han comprado: CREATE OR ALTER VIEW ClientesSinCompras AS SELECT C.ID, C.Nombre, C.Direccion, C.Telefono, P.NOMBRE_PAIS as Pais FROM Clientes C INNER JOIN PAIS P ON C.ID_pais = P.ID_PAIS WHERE C.ID NOT IN (SELECT DISTINCT V.ID_Cliente FROM Ventas V); SELECT * FROM ClientesSinCompras --Vehículos que no se han vendido: CREATE OR ALTER VIEW VehiculosSinVentas AS SELECT VH.ID, VH.Modelo, VH.Precio_compra, VH.Precio_ventas, VH.Stock, M.URL AS URL_Modelo FROM Vehiculos VH INNER JOIN Modelos_URL M ON VH.ID = M.ID_Vehiculo WHERE VH.ID NOT IN (SELECT DISTINCT ID_Vehiculo FROM Ventas); SELECT * FROM VehiculosSinVentas --Países sin ventas: CREATE OR ALTER VIEW PaisesSinVentas AS SELECT P.ID_PAIS, P.NOMBRE_PAIS FROM PAIS P WHERE P.ID_PAIS NOT IN (SELECT DISTINCT C.ID_pais FROM Clientes C INNER JOIN Ventas V ON C.ID = V.ID_Cliente); SELECT * FROM PaisesSinVentas --Para crear la tabla categoría y relacionarla con la tabla Vehiculos, podemos utilizar el siguiente código: --CREAR TABLA Categoria CREATE TABLE Categoria ( ID INT PRIMARY KEY IDENTITY(1,1), Nombre VARCHAR(255) NOT NULL ); -- CREAR TABLA Vehiculo_Categoria CREATE TABLE Vehiculo_Categoria ( ID_Vehiculo INT FOREIGN KEY REFERENCES Vehiculos(ID) ON UPDATE CASCADE ON DELETE CASCADE, ID_Categoria INT FOREIGN KEY REFERENCES Categoria(ID) ON UPDATE CASCADE ON DELETE CASCADE, PRIMARY KEY (ID_Vehiculo, ID_Categoria) ); /* La tabla Categoria tiene un campo de ID autoincrementable y un campo de Nombre para el nombre de la categoría. La tabla Vehiculo_Categoria tiene dos campos de clave foránea que se relacionan con la tabla Vehiculos y la tabla Categoria, respectivamente. Esta tabla funciona como una tabla de unión entre Vehiculos y Categoria, ya que permite relacionar varios vehículos con una o varias categorías. La clave primaria se compone de los campos de clave foránea ID_Vehiculo y ID_Categoria. */ /* Ahora podemos insertar las categorías correspondientes a cada modelo en la tabla Categoria y relacionarlos en la tabla Vehiculo_Categoria. Por ejemplo: */ -- Insertar las categorías correspondientes a cada modelo INSERT INTO Categoria (Nombre) VALUES ('Sedán'), ('SUV'), ('Pickup'), ('Híbrido'), ('Deportivo'); -- Asignar categorías a cada vehículo en la tabla Vehiculo_Categoria INSERT INTO Vehiculo_Categoria (ID_Vehiculo, ID_Categoria) VALUES (1, 1), -- Corolla -> Sedán (2, 1), -- Camry -> Sedán (3, 2), -- RAV4 -> SUV (4, 2), -- Highlander -> SUV (5, 3), -- Tacoma -> Pickup (6, 3), -- Tundra -> Pickup (7, 4), -- Prius -> Híbrido (8, 1), -- Yaris -> Sedán (9, 2), -- Sienna -> SUV (10, 2), -- 4Runner -> SUV (11, 5), -- Supra -> Deportivo (12, 1), -- Avalon -> Sedán (13, 2), -- C-HR -> SUV (14, 2), -- Venza -> SUV (15, 4), -- Mirai -> Híbrido (16, 5), -- GR Supra -> Deportivo (17, 5), -- GR 86 -> Deportivo (18, 4); -- Prius Prime -> Híbrido /*
Resultados consulta avanzada




Vamos a crear una vista que muestre información de las tablas Categoria, Vehiculos, Ventas, Clientes y Vendedor, podemos unir las tablas mediante las claves foráneas y seleccionar los campos que deseamos mostrar. Aquí te dejo un ejemplo de cómo crear una vista: */ CREATE OR ALTER VIEW vista_ventas AS SELECT v.ID AS ID_Vehiculo, v.Modelo, v.Anio, cat.Nombre AS Categoria, v.Precio_ventas, v.Stock, c.Nombre AS Nombre_Cliente, c.Telefono, c.Direccion, vd.Nombre AS Nombre_Vendedor, ven.Fecha_Venta, ven.Cantidad, ven.Precio_Venta, ven.Total FROM Vehiculos v INNER JOIN Vehiculo_Categoria vc ON v.ID = vc.ID_Vehiculo INNER JOIN Categoria cat ON vc.ID_Categoria = cat.ID INNER JOIN Ventas ven ON v.ID = ven.ID_Vehiculo INNER JOIN Clientes c ON ven.ID_Cliente = c.ID INNER JOIN vendedor vd ON ven.ID_Vendedor = vd.ID; --SELECCIONAMOS LA VISTA: select * from vista_ventas SELECT * FROM Vehiculos /* Vamos a agregar la categoría a la vista "VentasToyotaPorFecha_v2" utilizando la tabla "Vehiculo_Categoria". Aquí te dejo el código actualizado para que puedas utilizarlo: */ CREATE OR ALTER VIEW VentasToyotaPorFecha_v_2023 AS SELECT V.ID AS ID_Venta, V.Fecha_Venta, p.NOMBRE_PAIS as Pais, C.Nombre AS Cliente, C.Direccion AS Direccion_Cliente, C.Telefono AS Telefono_Cliente, E.Nombre AS Vendedor, CT.Nombre AS Categoria, VH.Modelo, VH.Precio_compra, VH.Precio_ventas, VH.Stock AS Stock_Inicial, V.Cantidad, (VH.Stock - SUM(V.Cantidad)) AS Stock_Actual, V.Total, (V.Cantidad * (VH.Precio_ventas - VH.Precio_compra)) AS Margen_bruto, ((V.Cantidad * (VH.Precio_ventas - VH.Precio_compra)) / (V.Cantidad * VH.Precio_ventas)) * 100 AS "%_Margen", M.URL AS URL_Modelo, F.foto_Vendedor_url AS Foto_Vendedor FROM Ventas V INNER JOIN Vehiculos VH ON V.ID_Vehiculo = VH.ID INNER JOIN Vehiculo_Categoria VH_Cat ON VH.ID = VH_Cat.ID_Vehiculo INNER JOIN Categoria CT ON VH_Cat.ID_Categoria = CT.ID INNER JOIN Clientes C ON V.ID_Cliente = C.ID INNER JOIN vendedor E ON V.ID_Vendedor = E.ID INNER JOIN PAIS P ON c.ID_pais=p.ID_PAIS INNER JOIN Modelos_URL M ON VH.ID = M.ID_Vehiculo INNER JOIN Fotos_vendedor F ON V.ID_Vendedor = F.ID_vendedor GROUP BY V.ID, V.Fecha_Venta, p.NOMBRE_PAIS,V.Cantidad, V.Precio_Venta, V.Total, C.Nombre, C.Direccion, C.Telefono, E.Nombre, VH.Modelo,VH.Precio_compra, VH.Precio_ventas, CT.Nombre, M.URL, F.foto_Vendedor_url, VH.Stock; --SELECCIONAMOS LA VISTA: select * from VentasToyotaPorFecha_v_2023


Conclusión
En este artículo hemos explorado de manera detallada el uso de bases de datos en SQL Server y las funciones más destacadas que ofrece este sistema de gestión de bases de datos.
En primer lugar, hemos seguido un mapa de pasos detallado para crear una base de datos en SQL Server. Este mapa nos ha llevado desde la creación de una nueva base de datos hasta la creación de tablas, relaciones entre ellas y la inserción de datos.
Posteriormente, hemos aprendido cómo utilizar consultas básicas, tales como SELECT, FROM y WHERE, para recuperar información de las tablas creadas anteriormente. Además, hemos explorado consultas avanzadas que nos han permitido obtener información más específica y compleja, tales como JOIN, GROUP BY y HAVING.
Asimismo, hemos explorado el uso de las funciones INSERT, UPDATE, DELETE y DROP para agregar, modificar, eliminar y eliminar completamente datos y tablas en nuestra base de datos.
Además, hemos explorado el uso de los TRIGGER, que nos permiten automatizar ciertas acciones en nuestra base de datos, y las VIEWS, que nos permiten crear vistas personalizadas de los datos almacenados en nuestras tablas.
Es importante señalar que todo este proceso de creación de una base de datos en SQL Server y el uso de las funciones más destacadas que ofrece, es una herramienta poderosa para el análisis de datos y toma de decisiones. Por lo tanto, es recomendable seguir practicando y descargando el modelo de base de datos para realizar nuestras propias consultas y crear nuestros propios modelos.
No olviden suscribirse al blog para estar al tanto de nuevas publicaciones y al canal de Youtube para acceder al contenido en video. Los comentarios, likes y compartidas son la mejor forma de apoyar el crecimiento del blog y canal, ¡así que no duden en hacerlo!
Les deseo mucho éxito en su aprendizaje y práctica de SQL Server. ¡Vamos por más!