15
7/26/2019 BD_clase3 http://slidepdf.com/reader/full/bdclase3 1/15 Diseño de Sistemas y Base de datos - 1 - UPN – Ingeniería Empresarial Docente: Mg. Ing. Dávila Rodríguez Víctor [email protected] Trujillo – Perú [email protected] SEMANA N° 3 SENTENCIA SELECT: La sentencia SELECT nos permite consultar los datos almacenados en una tabla de la base de datos. SINTAXIS: SELECT [ALL | TOP n | DISTINCT] <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla>|<nombre_vista> [{,<nombre_tabla>|<nombre_vista>}] [WHERE <condicion> [{ AND|OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND|OR <condicion>}]] [ ORDER BY  <nombre_campo> [ ASC  | DESC ] [{,<nombre_campo> [ASC | DESC ]}]] Donde: Significado SELECT Palabra clave que indica que la sentencia de SQL que queremos ejecutar es de selección.  ALL Indica que queremos seleccionar todos los valores. Es el valor por defecto y no suele especificarse casi nunca. TOP n Indica que queremos seleccionar “n” primeros registros.  DISTINCT Indica que queremos seleccionar sólo los valores distintos. FROM Indica la tabla (o tablas) desde la que queremos recuperar los datos. En el caso de que exista más de una tabla se denomina a la consulta "consulta combinada" o "join". En las consultas combinadas es necesario aplicar una condición de combinación a través de una cláusula WHERE. WHERE Especifica una condición que debe cumplirse para que los datos sean devueltos por la consulta. Admite los operadores lógicos  AND y OR . También IN y LIKE. GROUP BY  Especifica la agrupación que se da a los datos. Se usa siempre en combinación con funciones agregadas (SUM, MAX, MIN, AGV). HAVING Especifica una condición que debe cumplirse para que los datos sean devueltos por la consulta. Su funcionamiento es similar al de WHERE pero aplicado al conjunto de resultados devueltos por la consulta. Debe aplicarse siempre junto a GROUP BY  y la condición debe estar referida a los campos contenidos en ella. ORDER BY  Presenta el resultado ordenado por las columnas indicadas. El orden puede expresarse con  ASC (orden ascendente) y DESC (orden descendente). El valor predeterminado es  ASC. 

BD_clase3

Embed Size (px)

Citation preview

Page 1: BD_clase3

7/26/2019 BD_clase3

http://slidepdf.com/reader/full/bdclase3 1/15

Diseño de Sistemas y Base de datos - 1 - UPN – Ingeniería Empresarial

Docente: Mg. Ing. Dávila Rodríguez Víctor [email protected] 

Trujillo – Perú [email protected] 

SEMANA N° 3

SENTENCIA SELECT:

La sentencia SELECT nos permite consultar los datos almacenados en una tabla de la

base de datos.SINTAXIS:

SELECT [ALL | TOP n | DISTINCT]

<nombre_campo> [{,<nombre_campo>}]

FROM <nombre_tabla>|<nombre_vista>

[{,<nombre_tabla>|<nombre_vista>}]

[WHERE <condicion> [{ AND|OR <condicion>}]]

[GROUP BY <nombre_campo> [{,<nombre_campo >}]]

[HAVING <condicion>[{ AND|OR <condicion>}]]

[ORDER BY <nombre_campo> [ASC | DESC][{,<nombre_campo> [ASC | DESC ]}]]

Donde:

Significado

SELECT Palabra clave que indica que la sentencia de SQL que queremos ejecutar es deselección.

 ALL Indica que queremos seleccionar todos los valores. Es el valor por defecto y no sueleespecificarse casi nunca.

TOP n Indica que queremos seleccionar “n” primeros registros. 

DISTINCT Indica que queremos seleccionar sólo los valores distintos.

FROM 

Indica la tabla (o tablas) desde la que queremos recuperar los datos. En el caso de queexista más de una tabla se denomina a la consulta "consulta combinada" o "join". En lasconsultas combinadas es necesario aplicar una condición de combinación a través de unacláusula WHERE.

WHERE Especifica una condición que debe cumplirse para que los datos sean devueltos por laconsulta. Admite los operadores lógicos AND y OR . También IN y LIKE. 

GROUP BY  Especifica la agrupación que se da a los datos. Se usa siempre en combinación confunciones agregadas (SUM, MAX, MIN, AGV).

HAVING 

Especifica una condición que debe cumplirse para que los datos sean devueltos por laconsulta. Su funcionamiento es similar al de WHERE  pero aplicado al conjunto deresultados devueltos por la consulta. Debe aplicarse siempre junto a GROUP BY   y la

condición debe estar referida a los campos contenidos en ella.

ORDER BY  

Presenta el resultado ordenado por las columnas indicadas. El orden puede expresarsecon  ASC (orden ascendente) y DESC (orden descendente). El valor predeterminado es ASC. 

Page 2: BD_clase3

7/26/2019 BD_clase3

http://slidepdf.com/reader/full/bdclase3 2/15

Diseño de Sistemas y Base de datos - 2 - UPN – Ingeniería Empresarial

Docente: Mg. Ing. Dávila Rodríguez Víctor [email protected] 

Trujillo – Perú [email protected] 

DIAGRAMA DE BASE DE DATOS VENTAS:

TABLA: CATEGORIAS

TABLA: UNIDADES

Page 3: BD_clase3

7/26/2019 BD_clase3

http://slidepdf.com/reader/full/bdclase3 3/15

Diseño de Sistemas y Base de datos - 3 - UPN – Ingeniería Empresarial

Docente: Mg. Ing. Dávila Rodríguez Víctor [email protected] 

Trujillo – Perú [email protected] 

TABLA: PRODUCTOS

TABLA: DISTRITOS

TABLA: CLIENTES:

Page 4: BD_clase3

7/26/2019 BD_clase3

http://slidepdf.com/reader/full/bdclase3 4/15

Diseño de Sistemas y Base de datos - 4 - UPN – Ingeniería Empresarial

Docente: Mg. Ing. Dávila Rodríguez Víctor [email protected] 

Trujillo – Perú [email protected] 

TABLA: EMPLEADOS

TABLA: PEDIDOS

TABLA: DETALLE_PEDIDOS

Page 5: BD_clase3

7/26/2019 BD_clase3

http://slidepdf.com/reader/full/bdclase3 5/15

Diseño de Sistemas y Base de datos - 5 - UPN – Ingeniería Empresarial

Docente: Mg. Ing. Dávila Rodríguez Víctor [email protected] 

Trujillo – Perú [email protected] 

EJEMPLOS DE LA SENTENCIA SELECT:

Debe abrir una venta para consultas

Considerando la base de datos VENTAS: 

USE ventas

Realizar las siguientes consultas:

LISTAR A TODAS LAS CATEGORÍAS

SELECT * FROM categorias 

El resultado es el siguiente:

LISTAR A TODAS LAS UNIDADES

SELECT * FROM unidades 

El resultado es el siguiente:

LISTAR A TODOS LOS PRODUCTOS

SELECT * FROM productos 

El resultado es el siguiente:

Page 6: BD_clase3

7/26/2019 BD_clase3

http://slidepdf.com/reader/full/bdclase3 6/15

Diseño de Sistemas y Base de datos - 6 - UPN – Ingeniería Empresarial

Docente: Mg. Ing. Dávila Rodríguez Víctor [email protected] 

Trujillo – Perú [email protected] 

LISTAR CODIGO, NOMBRE Y PRECIO DE TODOS LOS PRODUCTOS:

SELECT Cod_Producto, Nom_Producto, Pre_Producto  FROM productos 

El resultado es el siguiente:

LISTAR CODIGO, NOMBRES, APELLIDOS Y CORREO DE TODOS LOS EMPLEADOSSELECT  Cod_Empleado,  Nom_Empleado,   Ape_Empleado,  Ema_Empleado 

FROM empleados 

El resultado es el siguiente:

LISTAR A LOS 5 PRIMEROS PRODUCTOS

SELECT TOP 5 * FROM PRODUCTOS 

El resultado es el siguiente:

Page 7: BD_clase3

7/26/2019 BD_clase3

http://slidepdf.com/reader/full/bdclase3 7/15

Diseño de Sistemas y Base de datos - 7 - UPN – Ingeniería Empresarial

Docente: Mg. Ing. Dávila Rodríguez Víctor [email protected] 

Trujillo – Perú [email protected] 

LISTAR A LOS 2 PRIMEROS EMPLEADOS

SELECT TOP 2 * FROM empleados 

El resultado es el siguiente:

LISTAR EL CODIGO, NOMBRES, APELLIDOS Y GENERO DE LOS 3 PRIMEROS

EMPLEADOS

SELECT TOP 3 Cod_Empleado, Nom_Empleado, 

 Ape_Empleado,Gen_Empleado  FROM empleados 

El resultado es el siguiente:

LISTAR A TODOS LOS CLIENTES ORDENADOS POR APELLIDOS EN ORDEN ASCENDENTE

SELECT * FROM clientes ORDER BY  Ape_Cliente 

El resultado es el siguiente:

SI LO ORDENADOS POR APELLIDOS EN ORDEN DESCENDENTE

SELECT * FROM clientes ORDER BY  Ape_Cliente DESC 

El resultado es el siguiente:

LISTAR A LOS 5 PRODUCTOS MÁS CAROS

SELECT TOP 5 * FROM productos ORDER BY Pre_Producto DESC 

El resultado es el siguiente:

Page 8: BD_clase3

7/26/2019 BD_clase3

http://slidepdf.com/reader/full/bdclase3 8/15

Diseño de Sistemas y Base de datos - 8 - UPN – Ingeniería Empresarial

Docente: Mg. Ing. Dávila Rodríguez Víctor [email protected] 

Trujillo – Perú [email protected] 

LISTAR A LOS 5 PRODUCTOS MÁS BARATOS

SELECT TOP 5 * FROM productos ORDER BY Pre_Producto 

El resultado es el siguiente:

LISTAR A TODOS LOS PRODUCTOS ORDENADOS POR CODIGO DE CATEGORIA

(ASCENDENTE) Y LUEGO POR NOMBRE DEL PRODUCTO (DESCENDENTE) MOSTRAR EL

NOMBRE, CODIGO_CATEGORIA, PRECIO Y STOCK

SELECT Nom_Producto, Cat_Producto, Pre_Producto, Sto_Producto FROM productos ORDER BY Cat_Producto, Nom_Producto DESC 

El resultado es el siguiente:

LISTAR LOS CODIGOS DE LAS CATEGORIAS (SIN DUPLICADOS) DE LA TABLA

PRODUCTOS.

SELECT DISTINCT Cat_Producto FROM productos 

El resultado es el siguiente:

Page 9: BD_clase3

7/26/2019 BD_clase3

http://slidepdf.com/reader/full/bdclase3 9/15

Diseño de Sistemas y Base de datos - 9 - UPN – Ingeniería Empresarial

Docente: Mg. Ing. Dávila Rodríguez Víctor [email protected] 

Trujillo – Perú [email protected] 

LISTAR A TODOS LOS PRODUCTOS CUYO STOCK ES MENOR 40

SELECT * FROM productos WHERE Sto_Producto <40 

El resultado es el siguiente:

LISTAR CODIGO, NOMBRE, PRECIO, STOCK E IMPORTE DE TODOS LOS PRODUCTOS

SELECT  Cod_Producto,  Nom_Producto,  Pre_Producto,  Sto_Producto, 

Importe=Pre_Producto*Sto_producto FROM productos 

El resultado es el siguiente:

Nota: En este ejemplo podemos observar una columna calculada (IMPORTE), también

la columna Importe=Pre_Producto*Sto_producto, se puede hacer de la siguiente

manera Pre_Producto*Sto_producto  AS Importe 

LISTAR CODIGO, NOMBRE, PRECIO, STOCK E IMPORTE DE TODOS LOS PRODUCTOS

CUYO IMPORTE ES MAYOR QUE 500

SELECT Cod_Producto, Nom_Producto, Pre_Producto, Sto_Producto, Importe=Pre_Producto*Sto_productoFROM productos WHERE  Pre_Producto*Sto_producto>500 

El resultado es el siguiente:

Page 10: BD_clase3

7/26/2019 BD_clase3

http://slidepdf.com/reader/full/bdclase3 10/15

Page 11: BD_clase3

7/26/2019 BD_clase3

http://slidepdf.com/reader/full/bdclase3 11/15

Diseño de Sistemas y Base de datos - 11 - UPN – Ingeniería Empresarial

Docente: Mg. Ing. Dávila Rodríguez Víctor [email protected] 

Trujillo – Perú [email protected] 

LISTAR SUS APELLIDOS Y NOMBRES, FECHA DE NACIMIENTO Y SU EDAD DE TODOS

LOS EMPLEADOS CUYA EDAD ES MAYOR QUE 35 

SELECT Empleado=ape_empleado+' '+nom_empleado, fna_empleado, Edad=DATEDIFF(Yy ,Fna_empleado, GETDATE() ) FROM empleados WHERE DATEDIFF(yy ,Fna_empleado, GETDATE() )>35 

El resultado es el siguiente:

LISTAR NOMBE DEL PRODUCTO, STOCK, PRECIO, NOMBRE DE LA CATEGORIA

ORDENARLOS POR NOMBRE DE PRODUCTO DE FORMA DESCENDENTE

SELECT Nom_Producto, Sto_Producto, Pre_Producto, Nom_Categoria FROM productos p, categorias c

WHERE c.Cod_Categoria=p.Cat_ProductoORDER BY Nom_Producto DESC 

El resultado es el siguiente:

LISTAR NOMBE DEL PRODUCTO, STOCK, PRECIO, NOMBRE DE LA CATEGORIA

ORDENARLOS POR STOCK DE PRODUCTO DE FORMA DESCENDENTE, MOSTRAR

TODOS AQUELLOS CUYO STOCK ES SUPERIOR A 50.

SELECT Nom_Producto, Sto_Producto, Pre_Producto, Nom_Categoria FROM productos p, categorias cWHERE c.Cod_Categoria=p.Cat_Producto  AND Sto_Producto >50

ORDER BY Sto_Producto DESC 

En esta condición se indica la

relación entre la tabla

Categorias y Productos

Page 12: BD_clase3

7/26/2019 BD_clase3

http://slidepdf.com/reader/full/bdclase3 12/15

Diseño de Sistemas y Base de datos - 12 - UPN – Ingeniería Empresarial

Docente: Mg. Ing. Dávila Rodríguez Víctor [email protected] 

Trujillo – Perú [email protected] 

El resultado es el siguiente:

FUNCIONES DE AGREGADO:

COUNT(* | NbreCampo): Cuenta registros.

SUM(NbreCampo): Calcula el total o suma el valor campo indicado.

MAX(NbreCampo): Calcula el máximo del valor campo indicado.

MIN(NbreCampo): Calcula el mínimo del valor campo indicado.AVG(NbreCampo): Calcula el promedio del valor campo indicado.

CALCULAR LA CANTIDAD DE PRODUCTOS

SELECT CANTIDAD_PRODUCTO=COUNT(*) FROM productos 

El resultado es el siguiente:

CALCULAR EL PRECIO MAXIMO DE LOS PRODUCTOSSELECT Precio_Max=MAX(Pre_Producto) FROM productos 

El resultado es el siguiente:

CALCULAR EL PRECIO MINIMO DE LOS PRODUCTOS

SELECT Precio_Min=MIN(Pre_Producto) FROM productos 

El resultado es el siguiente:

CALCULAR EL IMPORTE TOTAL DE TODOS LOS PRODUCTOS

SELECT Importe_Total=SUM(Pre_Producto*Sto_Producto) FROM productos 

El resultado es el siguiente:

Page 13: BD_clase3

7/26/2019 BD_clase3

http://slidepdf.com/reader/full/bdclase3 13/15

Diseño de Sistemas y Base de datos - 13 - UPN – Ingeniería Empresarial

Docente: Mg. Ing. Dávila Rodríguez Víctor [email protected] 

Trujillo – Perú [email protected] 

CALCULAR EL PROMEDIO DE PRECIOS DE TODOS LOS PRODUCTOS

SELECT Promedio_Precio= AVG(Pre_Producto) FROM productos 

El resultado es el siguiente:

MOSTRAR EL NOMBRE DE LA CATEGORIA Y LA CANTIDAD DE PRODUCTOS PARA

CADA CATEGORIA

SELECT Nom_Categoria, Cantidad_Productos=COUNT(*) FROM categorias c, productos pWHERE c.Cod_Categoria = p.Cat_Producto GROUP BY Nom_categoria 

El resultado es el siguiente:

MOSTRAR EL NOMBRE DE LA CATEGORIA Y IMPORTE TOTAL PARA CADA CATEGORIA  

SELECT Nom_Categoria, Importe_Total=SUM(Pre_Producto*Sto_Producto) FROM categorias c, productos pWHERE c.Cod_Categoria = p.Cat_Producto GROUP BY Nom_categoria 

El resultado es el siguiente:

MOSTRAR EL NOMBRE DE LA CATEGORIA Y EL PRECIO MAXIMO DE LOS PRODUCTOS

PARA CADA CATEGORIA 

SELECT Nom_Categoria, Precio_Max=MAX(Pre_Producto) FROM categorias c, productos pWHERE c.Cod_Categoria = p.Cat_Producto GROUP BY Nom_categoria 

Page 14: BD_clase3

7/26/2019 BD_clase3

http://slidepdf.com/reader/full/bdclase3 14/15

Diseño de Sistemas y Base de datos - 14 - UPN – Ingeniería Empresarial

Docente: Mg. Ing. Dávila Rodríguez Víctor [email protected] 

Trujillo – Perú [email protected] 

El resultado es el siguiente:

MOSTRAR EL NOMBRE DE LA CATEGORIA Y EL PRECIO MINIMO DE LOS PRODUCTOS

PARA CADA CATEGORIA 

SELECT Nom_Categoria, Precio_Min=Min(Pre_Producto) FROM categorias c, productos pWHERE c.Cod_Categoria = p.Cat_Producto GROUP BY Nom_categoria 

El resultado es el siguiente:

MOSTRAR EL NOMBRE DE LA CATEGORIA Y EL PRECIO PROMEDIO DE LOS

PRODUCTOS PARA CADA CATEGORIA 

SELECT Nom_Categoria, Precio_Prom= AVG(Pre_Producto) FROM categorias c, productos pWHERE c.Cod_Categoria = p.Cat_Producto GROUP BY Nom_categoria 

El resultado es el siguiente:

MOSTRAR EL NOMBRE DE LA CATEGORIA Y IMPORTE TOTAL PARA CADA CATEGORIA,

DE TODAS AQUELLAS CUYO IMPORTE TOTAL ES MENOR QUE 1000 Y ORDENARLO

POR EL IMPORTE TOTAL DE FORMA DESCENDENTE. 

SELECT Nom_Categoria, Importe_Total=SUM(Pre_Producto*Sto_Producto) FROM categorias c, productos p

WHERE c.Cod_Categoria = p.Cat_Producto GROUP BY Nom_categoria

Page 15: BD_clase3

7/26/2019 BD_clase3

http://slidepdf.com/reader/full/bdclase3 15/15

Diseño de Sistemas y Base de datos - 15 - UPN – Ingeniería Empresarial

Docente: Mg. Ing. Dávila Rodríguez Víctor [email protected] 

Trujillo – Perú [email protected] 

HAVING  SUM(Pre_Producto*Sto_Producto)<1000ORDER BY SUM(Pre_Producto*Sto_Producto) DESC 

El resultado es el siguiente:

URLS:

Ejemplos de SELECT

http://msdn.microsoft.com/es-es/library/ms187731.aspx 

Manual de SELECT

http://www.devjoker.com/contenidos/Tutorial-SQL/14/Consultar-datos-

SELECT.aspx 

Funciones integradas (Transact SQL)

http://msdn.microsoft.com/es-es/library/ms174318