0% encontró este documento útil (0 votos)
165 vistas16 páginas

Consultas SQL: Fundamentos y Ejemplos

El documento muestra ejemplos de consultas SQL para seleccionar, filtrar, agrupar y ordenar datos de varias tablas. Incluye el uso de funciones, condiciones, joins, subconsultas y más. Los ejemplos van desde consultas básicas hasta más complejas que involucran varias tablas y operaciones.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
165 vistas16 páginas

Consultas SQL: Fundamentos y Ejemplos

El documento muestra ejemplos de consultas SQL para seleccionar, filtrar, agrupar y ordenar datos de varias tablas. Incluye el uso de funciones, condiciones, joins, subconsultas y más. Los ejemplos van desde consultas básicas hasta más complejas que involucran varias tablas y operaciones.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

// Primera consulta

SELECT IdCliente, NombreCompaa FROM Neptuno.dbo.Clientes

// Multiplicacin entre campos // en este caso lo presenta en un una sola columna

SELECT NombreProducto, PrecioUnidad * UnidadesEnExistencia FROM Neptuno.dbo.Productos

// Uso de alias, esto es mediante la palabra reservada AS

SELECT NombreProducto AS Producto, PrecioUnidad * UnidadesEnExistencia AS Total FROM Neptuno.dbo.Productos

// Mediante [] (Corchetes), o "" (Comillas), se pueden tomar como una sola palabra varias, ya sea nombre de una tabla o para dar un alias, cabe mencionar que las "" (comillas no aplican para todas Manejadores de DB)

SELECT IdPedido,IdProducto AS "Codigo del Producto" FROM Neptuno.dbo.[Detalles de pedidos]

//UPPER, LOWER y SUBSTRING, son funciones tiene una sintaxis similar a la de programacin lineal, existen mas y diferentes por cada manejador

SELECT UPPER (NombreCompaa)AS [Nombre de la compaia], LOWER (NombreContacto) AS [Nombre del Contacto], SUBSTRING (NombreCompaa, 1, 4) FROM Neptuno.dbo.Clientes

//WHERE se utiliza para delimitar las bsquedas respecto al contenido de las columnas

SELECT NombreProducto, IdCategora, IdProveedor, CantidadPorUnidad FROM Neptuno.dbo.Productos WHERE IdCategora=1

//Para evaluar campos diferentes a nmeros, se tiene que utilizar comillas para incluir el valor

SELECT NombreProducto, IdCategora, IdProveedor, CantidadPorUnidad FROM Neptuno.dbo.Productos WHERE CantidadPorUnidad = '24 - bot. 12 l'

//los operadores para evaluar en SQL son <,>,=,<>

SELECT NombreProducto, IdCategora, IdProveedor, CantidadPorUnidad FROM Neptuno.dbo.Productos WHERE IdCategora<2

//Like es la palabra clave que acta como operador cuando no se conoce el texto en concreto y solo se sabe una parte, y % sirve para posicionarlo e indicar donde debe encajar la palabra, %palabra, palabra%, %palabra%

SELECT NombreProducto, IdCategora, IdProveedor, CantidadPorUnidad FROM Neptuno.dbo.Productos WHERE NombreProducto LIKE 'pan%'

//Para buscar registros con campo nulo se le agrega a WHERE las palabras IS NULL y cuando no IS NOT NULL

SELECT NombreCompaa, Regin FROM Clientes WHERE Regin IS NULL

SELECT NombreCompaa, Regin FROM Clientes WHERE Regin IS NOT NULL

// IN se ocupa para una bsqueda mltiple, WHERE Regin IN ('BC','SP','RJ') buscara que encuentre los que colindan con BC o SP o RJ y NOT IN los que no estn en la lista

SELECT NombreCompaa, Regin FROM Clientes WHERE Regin IN ('BC','SP','RJ')

SELECT NombreCompaa, Regin FROM Clientes WHERE Regin NOT IN ('BC','SP','RJ')

//AND y OR conectan dos condiciones en WHERE reducir bsquedas

SELECT NombreProducto, IdCategora, IdProveedor FROM Productos WHERE IdCategora=1 OR IdProducto=10

SELECT NombreProducto, IdCategora, IdProveedor FROM Productos WHERE IdCategora=1 AND IdProducto=1

//Funciones de Fila Mltiple AVG - Genera el promedio de la fila seleccionada

SELECT AVG(PrecioUnidad) FROM Productos

SELECT COUNT (*) FROM Clientes

SELECT COUNT(*) FROM Clientes WHERE Pas = 'Mxico'

SELECT AVG(PrecioUnidad)

FROM Productos WHERE IdCategora = 1

/* AVG - Promedio SUM - Suma MAX - Valor Mximo MIN - Valor Mnimo COUNT - cantidad de registros // no cuenta los valores nulos, para esto en se ocupa esta esta instruccin con * */

//Agrupar, mediante GROUP BY, esto permite realizar operaciones respecto a grupos, por decir la media de un grupo de productos, o el total, etc.

SELECT IdCategora, COUNT(IdCategora) AS Cantidad ,AVG(PrecioUnidad) AS [Media PrecioUnidad] FROM Productos GROUP BY IdCategora

//Al agrupar se debe de incluir todos los campos a los cuales no se les est aplicando una funcin de fila mltiple

SELECT IdProveedor, IdCategora, AVG (PrecioUnidad) AS Promedio, COUNT (*) AS Cantidad FROM Productos GROUP BY IdProveedor, IdCategora

SELECT IdProveedor, IdCategora, AVG (PrecioUnidad) AS Promedio, COUNT (*) AS Cantidad FROM Productos WHERE IdProveedor=1 GROUP BY IdProveedor, IdCategora

// HAVING, es la instruccin para condicionar, dependiendo de los valores obtenidos a travs de las funciones de fila mltiple

SELECT IdCategora, AVG (PrecioUnidad) FROM Productos

GROUP BY IdCategora HAVING AVG(PrecioUnidad)>30

/* Devolver el cdigo de categora y la media del precio de sus productos, pero solo en aquellos casos en los que dicha media sea superior a 30, se ignoraran los productos desechados, (aquellos que en la columna suspendido tengan un valor de 0) */

SELECT IdCategora, AVG (PrecioUnidad) AS Promedio, Suspendido FROM Productos WHERE Suspendido=0 GROUP BY IdCategora, Suspendido HAVING AVG(PrecioUnidad)>30

//Cuando se selecciona de diferentes tablas puede haber ambigedad en las tablas si tiene columnas con el mismo nombre, para eso se le coloca el nombre de la tabla separado con un punto "." y el nombre de la columna, tambin si no se condiciona la tabla, se da una combinacin de tablas errnea, donde muestra todas las combinaciones posibles de las tablas

SELECT Pedidos.IdCliente, NombreCompaa, IdPedido FROM Clientes, Pedidos WHERE Pedidos.IdCliente=Clientes.IdCliente

/* Obtener el nombre de cada producto, su precio, su stock, el nombre de la categora a la que pertenece, excluyendo los suspendidos. */ SELECT NombreProducto, PrecioUnidad, UnidadesEnExistencia, NombreCategora FROM Productos, Categoras WHERE Categoras.IdCategora=Productos.IdCategora AND Suspendido=0

// Alias a las tablas, nos permite ahorrar cdigo, pues despus del FROM solo se necesitara escribir este para hacer referencia a la tabla

SELECT NombreProducto, PrecioUnidad, UnidadesEnExistencia, NombreCategora FROM Productos AS p, Categoras AS c WHERE c.IdCategora=p.IdCategora AND Suspendido=0

//Unin de tres tablas, , se deben de utilizar condiciones de las tablas para tener el resultado deseado, (nTablas - 1) combinaciones.

/* Obtener el nombre de cada producto, su precio, su stock, el nombre de la categora a la que pertenece y el nombre del proveedor que nos sirve dicho producto. */ SELECT p.NombreProducto, p.PrecioUnidad, p.UnidadesEnExistencia, c.NombreCategora, pr.NombreCompaa FROM Productos AS p, Categoras AS c, Proveedores pr WHERE c.IdCategora=p.IdCategora AND p.IdProveedor=pr.IdProveedor

/* Obtener el cdigo de pedido, el nombre del cliente, y el nombre y apellido del empleado, pero solo de aquellos pedidos que se realizaron durante el ao 1996 */ SELECT P.IdPedido, C.NombreCompaa, E.Nombre + ' ' + E.Apellidos AS Empleado FROM Pedidos AS P, Clientes AS C, Empleados AS E WHERE P.IdCliente=C.IdCliente AND AND AND P.IdEmpleado=E.IdEmpleado P.FechaPedido>='01-01-1996' P.FechaPedido<='31-12-1996'

// JOIN, es una sub instruccin que pertenece a FROM, que sustituye a la coma y la clausula se agrega con ON

/*

Obtener el nombre del producto y el nombre de la categora

*/

SELECT p.NombreProducto, c.NombreCategora FROM Productos AS P JOIN Categoras AS C ON p.IdCategora=c.IdCategora

// LEFT JOIN, y RIGHT JOIN, se utilizan para dar prioridad a una un otra tabla, haciendo aparecer todos los productos de una tabla y de la otra todos los que coincidan

SELECT p.NombreProducto, c.NombreCategora FROM Productos AS P LEFT JOIN Categoras AS C ON p.IdCategora=c.IdCategora

SELECT p.NombreProducto, c.NombreCategora FROM Productos AS P RIGHT JOIN Categoras AS C ON p.IdCategora=c.IdCategora

/*

Obtener el nombre del todos los producto, el nombre de la categora y el nombre del proveedor.

*/

SELECT p.NombreProducto, c.NombreCategora, PR.NombreCompaa FROM Productos AS P LEFT JOIN Categoras AS C ON p.IdCategora=c.IdCategora LEFT JOIN Proveedores AS PR ON p.IdProveedor=pr.IdProveedor WHERE Suspendido=0

// FULL JOIN, toma todos los datos sin excepcin,

SELECT p.NombreProducto, c.NombreCategora FROM Productos AS P FULL JOIN Categoras AS C

ON p.IdCategora=c.IdCategora

//self JOIN, se ocupa para realizar uniones en una misma tabla, no se necesita marcar un self, solo el prestar atencin a los alias que se utilizan (Alias de tabla)

/*

Obtener el Nombre de los empleados y el nombre de su jefe

*/

SELECT E.Nombre AS EMPLEADO, E1.Nombre AS JEFE FROM Empleados AS E LEFT JOIN Empleados AS E1 ON E.Jefe=E1.IdEmpleado

//ORDER BY, nos sirve para darle un orden ascendente segn una columna

/*

Obtener el nmero de productos de cada categora que nos sirva cada proveedor, discriminando los suspendidos y ordenarlo por proveedores

*/

SELECT PR.NombreCompaa AS Proveedor, C.NombreCategora AS Categora, COUNT(P.IdProducto) AS "Numero de Productos" FROM Productos AS P JOIN Categoras AS C ON P.IdCategora = C.IdCategora JOIN Proveedores AS PR ON P.IdProveedor=PR.IdProveedor WHERE P.Suspendido=0 GROUP BY PR.NombreCompaa, C.NombreCategora

ORDER BY PR.NombreCompaa

//ORDER BY - DESC y ASC, nos permite realizar ordenamientos de manera ascendente o descendente segn la instruccin, aunque por defecto sin indicarlo se ordena de forma ascendente.

SELECT PR.NombreCompaa AS Proveedor, C.NombreCategora AS Categora, COUNT(P.IdProducto) AS "Numero de Productos" FROM Productos AS P JOIN Categoras AS C ON P.IdCategora = C.IdCategora JOIN Proveedores AS PR ON P.IdProveedor=PR.IdProveedor WHERE P.Suspendido=0 GROUP BY PR.NombreCompaa, C.NombreCategora ORDER BY PR.NombreCompaa DESC

//ORDER BY mltiple, para agrupar de manera ascendente o descendente, segn la columna

SELECT PR.NombreCompaa AS Proveedor, C.NombreCategora AS Categora, COUNT(P.IdProducto) AS "Numero de Productos" FROM Productos AS P JOIN Categoras AS C ON P.IdCategora = C.IdCategora JOIN Proveedores AS PR ON P.IdProveedor=PR.IdProveedor WHERE P.Suspendido=0 GROUP BY PR.NombreCompaa, C.NombreCategora ORDER BY PR.NombreCompaa DESC, C.NombreCategora DESC

// Subconsultas, Realiza una consulta dentro de otra y se puede anidar hasta 32 subconsultas

/*

Obtener el nombre y precio de todos aquellos productos cuyo precio sea igual o superior a la media de todos los productos no suspendidos

*/

SELECT NombreProducto, PrecioUnidad FROM Productos WHERE PrecioUnidad >= (SELECT AVG(PrecioUnidad) FROM Productos WHERE Suspendido=0)

// Subconsultas con mltiple valor, se utiliza IN, para poder realizar estas comparaciones.

SELECT NombreProducto, IdCategora FROM Productos WHERE IdProducto IN ( SELECT IdProducto FROM Productos WHERE IdCategora = 1 OR IdCategora=2)

//Distinct Evita que se repitan valores en la consulta siempre y cuando tengan valores equivalentes

/*

Obtener el nombre de todos aquellos productos que se hayan facturado en el ao 1996

*/

SELECT NombreProducto FROM Productos WHERE IdProducto IN ( SELECT DISTINCT D.IdProducto FROM Pedidos AS P JOIN [Detalles de pedidos] AS D ON P.IdPedido=d.IdPedido WHERE P.FechaEntrega >= '01-01-1996' AND P.FechaEntrega <= '31-12-1996'

// UNION Se utiliza para sumar los datos de dos columnas diferentes // Los datos de las columnas deben de ser del mismo tipo // El numero de campos en cada SELECT debe ser el mismo // El nombre del dato no debe ser necesariamente el mismo // Si se repiten datos en las columnas solo se presenta una vez

/*

Obtener el Nombre de la persona de contacto de los clientes y proveedores

*/

SELECT NombreContacto FROM Clientes

UNION

SELECT NombreContacto FROM Proveedores

// Vistas presenta como tabla una consulta

CREATE VIEW vTotales AS

SELECT IdPedido, SUM(Cantidad * PrecioUnidad) AS Total FROM [Detalles de pedidos] GROUP BY IdPedido

**UNA INSTRUCCIN PARA BUSCAR EN LA VISTA, SOLO PRUEBA

SELECT * FROM vTotales

** SELECT P.IdPedido, C.NombreCompaa as Cliente, P.FechaPedido, V.Total FROM Pedidos AS P JOIN Clientes AS C ON P.IdCliente = C.IdCliente JOIN vTotales AS V ON P.IdPedido = V.IdPedido

// INSERT INTO, se utiliza para agregar un nuevo registro.

**Un solo registro Sintaxis Nominal INSERT INTO table (campo1,campo2,...,campo'n') VALUES (valor1,valor2,...valor'n')

INSERT INTO Clientes (NombreCompaa, NombreContacto, Ciudad, IdCliente) VALUES ('Manifacturas S.A.', 'Jos Prez', 'Mxico', 'MANUF')

SELECT * FROM Clientes WHERE IdCliente = 'MANUF'

**Un solo registro Sintaxis posicional INSERT INTO table (valor1,valor2,...,valor'n')

INSERT INTO [Compaas de envos] VALUES (4,'Envios SA','(503) 555-1234')

** Registros mltiples Sintaxis Nominal INSERT INTO table (campo1,canpo2,...,campo'n') subconsulta

INSERT INTO ClientesMexico (IdCliente,NombreCompaa) SELECT IdCliente,NombreCompaa FROM Clientes WHERE Pas='Mxico'

SELECT * FROM ClientesMexico

** Registros Multiples Sintaxis Posicional INSERT INTO table subconsulta

SELECT * FROM ClientesBrasil

INSERT INTO ClientesBrasil SELECT IdCliente, NombreCompaa, NombreContacto FROM Clientes WHERE Pas='Brasil'

//UPDATE, SE UTILIZA PARA ACTUALIZAR REGISTROS

UPDATE Productos SET IdProveedor = 2, IdCategora = 5 WHERE IdProducto =80

SELECT * FROM Productos WHERE IdProducto=80

**

UPDATE Productos SET UnidadesEnExistencia=UnidadesEnExistencia+2 WHERE IdCategora=2

//DELETE

DELETE FROM Productos WHERE IdProducto=78

SELECT * FROM Productos

//TRANSACCIONES Son un conjunto de instrucciones que dependen mutuamente y, o se ejecutan todas o no se ejecuta ninguna

-- INICIO DE LA TRANSACCIN BEGIN TRANSACTION

--PRIMERA ACCIN FSICA DE LA TRANSACCIN UPDATE Productos SET UnidadesEnExistencia = UnidadesEnExistencia + 1 WHERE IdProducto =1 --SEGUNDA ACCIN FSICA DE LA TRANSACCIN UPDATE Productos SET UnidadesEnExistencia = UnidadesEnExistencia + 1 WHERE IdProducto = 2 --FIN DE LA TRANSACCIN

--COMMIT -- SI LA TRANSACCIN SE EJECUTA CORRECTAMENTE SE GUARDAN LOS CAMBIOS --ROLLBACK -- SI HUBO ALGN ERROR EN LA TRANSACCIN LOS DATOS SE REGRESAN A SU ESTADO ORIGINAL

SELECT UnidadesEnExistencia FROM Productos WHERE IdProducto = 1 OR IdProducto = 2

//INSTRUCCIN DDL PARA CREAR UNA TABAL

/*

CREAR UNA TABLA

*/

CREATE TABLE Controladores ( IdColaborador NUMERIC PRIMARY KEY, Nombre Apellidos Direccion Telefono PrecioHora VARCHAR(30) NOT NULL, VARCHAR(50) NOT NULL, VARCHAR(100), VARCHAR(12), NUMERIC(6,2)CHECK(PrecioHora>=0),

FechaAntiguedad )

DATETIME,

//Crear una Tabla a partir de una consulta

/*

CREAR UNA TABLA A PARTIR DE UNA CONSULTA

*/

SELECT IdCliente, NombreCompaa, NombreContacto INTO ClientesFrancia FROM Clientes WHERE Pas='Francia'

SELECT * FROM ClientesFrancia

// Modificar tablas

/*

MODIFICAR LA ESTRUCTURA DE UNA TABAL

*/

ALTER TABLE ClientesFrancia

ADD Activo CHAR (1) CHECK (Activo IN ('S','N'))

SELECT * FROM ClientesFrancia

/*

Eliminar tablas

*/

DROP TABLE ClientesFrancia

También podría gustarte