Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

comandos de la pc2

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 15

1.

CREATE (Crear)

 Descripción: Crea una nueva tabla, vista, índice, etc.

CREATE TABLE Empleados (

ID INT PRIMARY KEY,

Nombre NVARCHAR(50),

Edad INT,

Departamento NVARCHAR(50)

);

2. ALTER (Modificar)

 Descripción: Modifica una tabla existente agregando, eliminando o cambiando


columnas.

ALTER TABLE Empleados

ADD FechaContratacion DATE;

3. DROP (Eliminar)

 Descripción: Elimina una tabla, vista, índice, etc.

DROP TABLE Empleados;

4. RENAME (Renombrar)

 Descripción: Cambia el nombre de una tabla.

EXEC sp_rename 'Empleados', 'Trabajadores';

5. TRUNCATE (Vaciar tabla)

 Descripción: Elimina todos los registros de una tabla sin eliminar su estructura.

TRUNCATE TABLE Empleados;

6. INSERT (Insertar datos)

 Descripción: Inserta nuevas filas en una tabla.

INSERT INTO Empleados (ID, Nombre, Edad, Departamento)

VALUES (1, 'Juan Pérez', 30, 'IT');


7. UPDATE (Actualizar datos)

 Descripción: Actualiza los datos existentes en una tabla.

UPDATE Empleados

SET Edad = 31

WHERE ID = 1;

8. DELETE (Eliminar datos)

 Descripción: Elimina filas de una tabla.

DELETE FROM Empleados

WHERE ID = 1;

9. SELECT (Consultar datos)

 Descripción: Consulta datos desde una tabla.

SELECT Nombre, Edad

FROM Empleados

WHERE Departamento = 'IT';

10. GRANT (Otorgar permisos)

 Descripción: Otorga permisos a un usuario.

GRANT SELECT, INSERT ON Empleados TO Usuario1;

11. REVOKE (Revocar permisos)

 Descripción: Revoca permisos de un usuario.

REVOKE SELECT, INSERT ON Empleados FROM Usuario1;

12. AND, OR, NOT (Operadores lógicos)

 AND: Devuelve verdadero si todas las condiciones son verdaderas.

 OR: Devuelve verdadero si alguna de las condiciones es verdadera.

 NOT: Devuelve verdadero si la condición es falsa.

SELECT * FROM Empleados


WHERE Edad > 30 AND Departamento = 'IT';

SELECT * FROM Empleados

WHERE Edad > 30 OR Departamento = 'HR';

SELECT * FROM Empleados

WHERE NOT Edad > 30;

13. DISTINCT (Eliminar duplicados)

 Descripción: Devuelve valores únicos.

SELECT DISTINCT Departamento

FROM Empleados;

14. ORDER BY (Ordenar resultados)

 Descripción: Ordena los resultados de una consulta.

SELECT Nombre, Edad

FROM Empleados

ORDER BY Edad DESC;

15. TOP (Limitar resultados)

 Descripción: Limita el número de filas devueltas.

SELECT TOP 5 * FROM Empleados;

16. IN (Dentro de un conjunto de valores)

 Descripción: Filtra registros que están dentro de una lista de valores.

SELECT * FROM Empleados

WHERE Departamento IN ('IT', 'HR');

17. BETWEEN (Entre un rango de valores)

 Descripción: Filtra registros que están dentro de un rango de valores.

SELECT * FROM Empleados


WHERE Edad BETWEEN 25 AND 35;

18. LIKE (Búsqueda por patrones)

 Descripción: Filtra registros que coinciden con un patrón.

SELECT * FROM Empleados

WHERE Nombre LIKE 'J%';

19. IS NULL (Verificar valores nulos)

 Descripción: Filtra registros con valores nulos.

SELECT * FROM Empleados

WHERE FechaContratacion IS NULL;

20. CASE (Condicionales)

 Descripción: Devuelve diferentes valores según condiciones.

SELECT Nombre,

CASE

WHEN Edad < 30 THEN 'Joven'

WHEN Edad BETWEEN 30 AND 50 THEN 'Adulto'

ELSE 'Mayor'

END AS CategoriaEdad

FROM Empleados;

21. Vistas (Consultas almacenadas)

 Descripción: Consulta almacenada como una tabla virtual.

CREATE VIEW Vista_Empleados_IT AS

SELECT Nombre, Edad

FROM Empleados

WHERE Departamento = 'IT';

22. CROSS JOIN (Producto cartesiano)

 Descripción: Combina cada fila de una tabla con cada fila de otra.
SELECT *

FROM Empleados CROSS JOIN Departamentos;

23. INNER JOIN (Intersección de tablas)

 Descripción: Devuelve filas que tienen coincidencias en ambas tablas.

SELECT e.Nombre, d.Nombre AS Departamento

FROM Empleados e

INNER JOIN Departamentos d ON e.DepartamentoID = d.ID;

24. LEFT JOIN (Unión externa izquierda)

 Descripción: Devuelve todas las filas de la tabla izquierda, y las coincidencias de la


derecha.

SELECT e.Nombre, d.Nombre AS Departamento

FROM Empleados e

LEFT JOIN Departamentos d ON e.DepartamentoID = d.ID;

25. RIGHT JOIN (Unión externa derecha)

 Descripción: Devuelve todas las filas de la tabla derecha, y las coincidencias de la


izquierda.

SELECT e.Nombre, d.Nombre AS Departamento

FROM Empleados e

RIGHT JOIN Departamentos d ON e.DepartamentoID = d.ID;

Funciones Agregadas

1. SUM

sql

Copiar código

SELECT SUM(salario) AS TotalSalario FROM Empleados;

Calcula la suma de todos los salarios.

2. COUNT

sql

Copiar código
SELECT COUNT(*) AS TotalEmpleados FROM Empleados;

Cuenta el número de registros en la tabla.

3. AVG

sql

Copiar código

SELECT AVG(salario) AS SalarioPromedio FROM Empleados;

Calcula el promedio de los salarios.

4. MAX

sql

Copiar código

SELECT MAX(salario) AS SalarioMaximo FROM Empleados;

Encuentra el salario más alto.

5. MIN

sql

Copiar código

SELECT MIN(salario) AS SalarioMinimo FROM Empleados;

Encuentra el salario más bajo.

Group By y Having

1. GROUP BY

sql

Copiar código

SELECT departamento, SUM(salario) AS TotalSalario

FROM Empleados

GROUP BY departamento;

Agrupa los empleados por departamento y calcula el total de salarios por cada grupo.

2. HAVING

sql

Copiar código

SELECT departamento, SUM(salario) AS TotalSalario

FROM Empleados
GROUP BY departamento

HAVING SUM(salario) > 50000;

Filtra los departamentos cuyo total de salarios es mayor a 50,000.

Subconsultas

1. IN

sql

Copiar código

SELECT nombre

FROM Empleados

WHERE departamento_id IN (SELECT id FROM Departamentos WHERE nombre = 'Ventas');

Busca empleados que pertenezcan al departamento de "Ventas".

2. EXISTS

sql

Copiar código

SELECT nombre

FROM Empleados e

WHERE EXISTS (SELECT 1 FROM Proyectos p WHERE p.empleado_id = e.id);

Devuelve los empleados que tienen proyectos asignados.

Funciones de Fecha

1. DAY, MONTH, YEAR

sql

Copiar código

SELECT DAY(fecha_contrato) AS Dia, MONTH(fecha_contrato) AS Mes, YEAR(fecha_contrato) AS


Año

FROM Empleados;

2. DATEADD

sql

Copiar código

SELECT DATEADD(DAY, 30, fecha_contrato) AS FechaFutura


FROM Empleados;

Suma 30 días a la fecha del contrato.

3. DATEDIFF

sql

Copiar código

SELECT DATEDIFF(DAY, fecha_contrato, GETDATE()) AS DiasTrabajados

FROM Empleados;

Calcula la diferencia en días entre la fecha del contrato y la fecha actual.

4. GETDATE

sql

Copiar código

SELECT GETDATE() AS FechaActual;

Funciones de Cadena

1. CONCAT

sql

Copiar código

SELECT CONCAT(nombre, ' ', apellido) AS NombreCompleto FROM Empleados;

2. LEN

sql

Copiar código

SELECT LEN(nombre) AS LongitudNombre FROM Empleados;

3. SUBSTRING

sql

Copiar código

SELECT SUBSTRING(nombre, 1, 3) AS Iniciales FROM Empleados;

4. LOWER, UPPER

sql

Copiar código

SELECT LOWER(nombre) AS NombreMinuscula, UPPER(nombre) AS NombreMayuscula FROM


Empleados;
5. LTRIM, RTRIM

sql

Copiar código

SELECT LTRIM(RTRIM(nombre)) AS NombreSinEspacios FROM Empleados;

Funciones de Conversión

1. CAST

sql

Copiar código

SELECT CAST(salario AS FLOAT) AS SalarioDecimal FROM Empleados;

2. CONVERT

sql

Copiar código

SELECT CONVERT(VARCHAR, fecha_contrato, 103) AS FechaFormateada FROM Empleados;

Transact SQL

1. Creación de Funciones

sql

Copiar código

CREATE FUNCTION fn_CalculaAntiguedad(@fecha_contrato DATE)

RETURNS INT

AS

BEGIN

RETURN DATEDIFF(YEAR, @fecha_contrato, GETDATE());

END;

2. Creación de Procedimientos Almacenados

sql

Copiar código

CREATE PROCEDURE sp_ActualizarSalario

@EmpleadoID INT,

@NuevoSalario DECIMAL(10, 2)
AS

BEGIN

UPDATE Empleados

SET salario = @NuevoSalario

WHERE id = @EmpleadoID;

END;

3. Manejo de Variables y Condicional IF

sql

Copiar código

DECLARE @SalarioActual DECIMAL(10, 2);

SELECT @SalarioActual = salario FROM Empleados WHERE id = 1;

IF @SalarioActual < 5000

UPDATE Empleados SET salario = 5000 WHERE id = 1;

4. Cursores

sql

Copiar código

DECLARE EmpleadosCursor CURSOR FOR

SELECT id, nombre FROM Empleados;

OPEN EmpleadosCursor;

FETCH NEXT FROM EmpleadosCursor INTO @id, @nombre;

WHILE @@FETCH_STATUS = 0

BEGIN

PRINT @nombre;

FETCH NEXT FROM EmpleadosCursor INTO @id, @nombre;

END;

CLOSE EmpleadosCursor;

DEALLOCATE EmpleadosCursor;
5. Transacciones: Commit y Rollback

sql

Copiar código

BEGIN TRANSACTION;

UPDATE Empleados SET salario = 6000 WHERE id = 1;

IF @@ERROR = 0

COMMIT TRANSACTION;

ELSE

ROLLBACK TRANSACTION;

Pregunta 1: Usando la base de datos Northwind, realizar un procedimiento almacenado que


reciba como parámetro el año. Aplicar una consistencia del 25% en caso que la cantidad de
órdenes supere el promedio de ese año. Proveedor (Cantidad de órdenes/Número de
Empleados) de lo contrario solo aplicar el 10%.

CREATE PROCEDURE sp_AplicarConsistencia

@Anio INT

AS

BEGIN

SET NOCOUNT ON;

-- Calcular el promedio de órdenes para el año

DECLARE @PromedioOrdenes DECIMAL(10, 2);

SELECT @PromedioOrdenes = AVG(CantidadOrdenes)

FROM Ordenes

WHERE YEAR(FechaOrden) = @Anio;

-- Actualizar la consistencia de los proveedores

UPDATE p

SET Consistencia =

CASE
WHEN (SELECT COUNT(*)

FROM Ordenes o

WHERE o.ProveedorID = p.ProveedorID AND YEAR(o.FechaOrden) = @Anio) >


@PromedioOrdenes

THEN 25.0 / p.NumeroEmpleados

ELSE 10.0 / p.NumeroEmpleados

END

FROM Proveedores p;

END;

GO

EXEC sp_AplicarConsistencia @Anio = 2024;

Pregunta 2: Usando la base de datos Northwind que calcule la edad de un empleado (Tabla
Employees, campo BirthDate) y por medio de una sentencia CASE deberá calcular y mostrar si
el empleado es jubilado (mayores a 70) o si le falta otros años para trabajar (menores a 60) y si
el código del empleado (EmployeeID) se encontró al empleado

SELECT

EmployeeID,

FirstName,

LastName,

DATEDIFF(YEAR, BirthDate, GETDATE()) AS Edad,

CASE

WHEN DATEDIFF(YEAR, BirthDate, GETDATE()) > 70 THEN 'Jubilado'

WHEN DATEDIFF(YEAR, BirthDate, GETDATE()) < 60 THEN CONCAT('Le faltan ', 60 -


DATEDIFF(YEAR, BirthDate, GETDATE()), ' años para jubilarse')

ELSE 'En rango de jubilación'

END AS Estado,

CASE

WHEN EmployeeID IS NOT NULL THEN 'Empleado encontrado'

ELSE 'Empleado no encontrado'

END AS Resultado

FROM Employees;

Pregunta 3: Crear una transacción para un procedimiento almacenado que permita registrar un
PRODUCTO controlando dicha inserción por medio de una transacción, enviando un mensaje
en cada ocasión, caso contrario enviar PRODUCTO REGISTRADO CON ÉXITO, caso contrario
OCURRIÓ UN ERROR AL isertar.

CREATE PROCEDURE sp_RegistrarProducto

@NombreProducto NVARCHAR(100),

@Precio DECIMAL(10, 2),

@Stock INT

AS

BEGIN

BEGIN TRY

BEGIN TRANSACTION; -- Inicia la transacción

-- Inserta el producto

INSERT INTO Productos (NombreProducto, Precio, Stock)

VALUES (@NombreProducto, @Precio, @Stock);

-- Confirma la transacción

COMMIT TRANSACTION;

PRINT 'PRODUCTO REGISTRADO CON ÉXITO';

END TRY

BEGIN CATCH

-- Reversa la transacción en caso de error

ROLLBACK TRANSACTION;

PRINT 'OCURRIÓ UN ERROR AL INSERTAR';

END CATCH

END;

GO

EXEC sp_RegistrarProducto @NombreProducto = 'Producto A', @Precio = 50.00, @Stock = 100;

Pregunta 4: Crear una transacción para actualizar el precio de un producto


CREATE PROCEDURE sp_ActualizarPrecioProducto

@ProductoID INT,

@NuevoPrecio DECIMAL(10, 2)

AS

BEGIN

BEGIN TRY

BEGIN TRANSACTION; -- Inicia la transacción

-- Actualiza el precio del producto

UPDATE Productos

SET Precio = @NuevoPrecio

WHERE ProductoID = @ProductoID;

-- Verifica si se actualizó algún registro

IF @@ROWCOUNT = 0

BEGIN

THROW 50001, 'El ProductoID no existe.', 1;

END

-- Confirma la transacción

COMMIT TRANSACTION;

PRINT 'PRECIO ACTUALIZADO CON ÉXITO';

END TRY

BEGIN CATCH

-- Reversa la transacción en caso de error

ROLLBACK TRANSACTION;

PRINT 'OCURRIÓ UN ERROR AL ACTUALIZAR EL PRECIO';

END CATCH

END;
GO

EXEC sp_ActualizarPrecioProducto @ProductoID = 1, @NuevoPrecio = 75.00;

También podría gustarte