0% encontró este documento útil (0 votos)
3 vistas49 páginas

Introducción a SQL y Consultas SELECT

El documento explica el uso de SQL, un lenguaje de base de datos, y detalla la sentencia SELECT para realizar consultas en una base de datos llamada VENTAS2017. Incluye ejemplos de cómo crear la base de datos, insertar registros y realizar consultas utilizando operadores, cláusulas y combinaciones internas. También se abordan conceptos como alias, ordenamiento y operadores lógicos y relacionales en SQL.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas49 páginas

Introducción a SQL y Consultas SELECT

El documento explica el uso de SQL, un lenguaje de base de datos, y detalla la sentencia SELECT para realizar consultas en una base de datos llamada VENTAS2017. Incluye ejemplos de cómo crear la base de datos, insertar registros y realizar consultas utilizando operadores, cláusulas y combinaciones internas. También se abordan conceptos como alias, ordenamiento y operadores lógicos y relacionales en SQL.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

RECUPERACIÓN DE DATOS

¿Y QUÉ ES SQL?

Es un lenguaje de base de datos normalizado, utilizado por el motor de


base de datos de Microsoft. SQL se utiliza para crear objetos QueryDef,
como el argumento de origen del método OpenRecordSet y como la
propiedad RecordSource del control de datos
¿QUÉ ES SENTENCIA SELECT?

Es un comando que permite componer una consulta; este es


interpretado por el servidor el cual recupera los datos
especificados de las tablas. Su formato es:

SELECT
[ALL | * | DISTINCT]
[TOP VALOR [PERCENT]]
[ALIAS.] COLUMNA [AS] CABECERA]

FROM NOMBRE_TABLA [ALIAS]

[WHERE CONDICION]
[ORDER BY COLUMNA [ASC | DESC]]
DONDE:
Se tiene la base de datos VENTAS2017 y dentro de ella la tabla producto

--ABRIENDO LA BASE DE DATOS DEL


SISTEMA
USE MASTER
GO

--VALIDAR LA BASE DE DATOS


IF DB_ID('VENTAS2017') IS NOT NULL
DROP DATABASE VENTAS2017
GO

--CREANDO LA BASE DE DATOS


CREATE DATABASE VENTAS2017
GO

--ABRIENDO LA BASE DE DATOS


USE VENTAS2017
GO

--CAMBIANDO EL FORMATO DE LA FECHA


SET DATEFORMAT DMY
GO
Se cuenta con los siguientes registros, para realizar los ejemplos

INSERT INTO PRODUCTO VALUES ('PRO001','ARROZ COSTEÑO X 50 - SACO',160.0,5,200,'04/03/2017','C01')


INSERT INTO PRODUCTO VALUES ('PRO002','AZUCAR RUBIA X 50 - SACO',100.0,2,80,'05/05/2017','C01')
INSERT INTO PRODUCTO VALUES ('PRO003','FIDEOS ANITA X 12 - BOLSA',30.0,3,150,'08/10/2017','C01')
INSERT INTO PRODUCTO VALUES ('PRO004','FIDEOS MOLITALIA X 12 - BOLSA',35.0,5,120,'08/08/2017','C01')
INSERT INTO PRODUCTO VALUES ('PRO005','YOGURT GLORIA X 6 - PAQUETE',26.0,5,230,'25/08/2018','C02')
INSERT INTO PRODUCTO VALUES ('PRO006','LECHE GLORIA X 48 - CAJA',98.0,5,240,'03/08/2017','C02')
INSERT INTO PRODUCTO VALUES ('PRO007','ACEITE PRIMOR X 12 - CAJA ',75.0,10,180,'10/10/2019','C01')
INSERT INTO PRODUCTO VALUES ('PRO008','LENTEJAS X 50 - SACO',230.0,5,50,'02/02/2017','C07')
INSERT INTO PRODUCTO VALUES ('PRO009','PALLARES X 50 - SACO',290.0,2,30,'02/01/2017','C07')
INSERT INTO PRODUCTO VALUES ('PRO010','ATUN A1 X 48 - CAJA',145.0,2,80,'12/12/2019','C01')
INSERT INTO PRODUCTO VALUES ('PRO011','GALLETA CHARADA X 100 - BOLSA',72.0,5,160,'30/11/2017','C10')
INSERT INTO PRODUCTO VALUES ('PRO012','GASEOSA COCACOLA X 24 - CAJA',24.0,2,50,'06/10/2017','C04')
INSERT INTO PRODUCTO VALUES ('PRO013','DETERGENTE ARIEL X KILO - BOLSA',15.0,2,40,'07/08/2018','C09')
INSERT INTO PRODUCTO VALUES ('PRO014','COMINO X 100 - CAJA',10.0,5,300,'02/03/2017','C05')
INSERT INTO PRODUCTO VALUES ('PRO015','GASEOSA PEPSI X 12 MEDIANA- PAQUETE',20.0,5,50,'02/03/2018','C04')
INSERT INTO PRODUCTO VALUES ('PRO016','DOS CABALLOS X 6 - CAJA',28.0,5,45,'02/03/2019','C11')
INSERT INTO PRODUCTO VALUES ('PRO017','CEREALES ANGEL X KILO - BOLSA',18.0,5,70,'02/03/2017','C05')
INSERT INTO PRODUCTO VALUES ('PRO018','QUAKER X KILO - BOLSA',7.00,5,300,'02/04/2017','C01')
INSERT INTO PRODUCTO VALUES ('PRO019','PEZIDURI X LITRO - POTE',8.50,5,300,'31/12/2016','C12')
INSERT INTO PRODUCTO VALUES ('PRO020','ARROZ PAISANA SUPERIOR x 5kg- Bolsa',17.0,5,80,'07/05/2017','C01')
1 • UTILIZANDO EL OPERADOR *

El operador asterisco (*) cumple dos funciones dentro de la implementación de una consulta,
la primera es mostrar todos los registros de la tabla y la segunda es mostrar todas las columnas
que la componen con el orden especificado en su creación.

Ejemplo 01: Crear el Script que permita mostrar todos los registros de la tabla producto:

Select * from producto


2 • ESPECIFICANDO COLUMNAS

La especificación de las columnas permite determinar el orden de los campos en el resultado de la


consulta, su objetivo es meramente visual; pues al final el resultado es el mismo

Ejemplo 02: Script que permita mostrar los campos ID_PRODUCTO, DESCRIPCION,
STOCK_ACTUAL y FECHA_VENC de la tabla producto.

SELECT ID_PRODUCTO, DESCRIPCION, STOCK_ACTUAL, FECHA_VENC FROM PRODUCTO


GO
3 • ESPECIFICANDO COLUMNAS Y UTILIZANDO ALIAS

El Alias se utiliza para identificar la tabla de donde se obtienen las columnas.

Ejemplo 03: Script que permita mostrar los campos ID_PRODUCTO, DESCRIPCION y
STOCK_ACTUAL de la tabla producto. Utilizar el alias “P” para la tabla producto.

SELECT P.ID_PRODUCTO, [Link], P.STOCK_ACTUAL FROM PRODUCTO P


GO
4 • ESPECIFICANDO CABECERA DE COLUMNAS

La especificación de cabeceras permita asignar títulos a las columnas mostradas en el resultado


de una consulta SELECT
Ejemplo 04: Crear un script que permita mostrar los campos ID_PRODUCTO(código),
DESCRIPCION(Producto) y STOCK_ACTUAL(EXISTENCIA) de la tabla producto. Utilizar el alias “P”
para la tabla producto.
SELECT P.ID_PRODUCTO AS CÓDIGO, [Link] AS PRODUCTO, P.STOCK_ACTUAL AS
EXISTENCIA FROM PRODUCTO P
GO
4 • ESPECIFICANDO CABECERA DE COLUMNAS

Ejemplo 05: Crear un script que permita mostrar los campos ID_PRODUCTO(CÓDIGO),
DESCRIPCION(PRODUCTO), PRECIO_VENTA(PRECIO ACTUAL), STOCK_ACTUAL(STOCK
ACTUAL), FECHA_VENC (FECHA DE VENCIMIENTO) de la tabla producto. Utilizar alias

SELECT P.ID_PRODUCTO CÓDIGO, [Link] PRODUCTO, P.PRECIO_VENTA [PRECIO ACTUAL],


P.FECHA_VENC [FECHA DE VENCIMIENTO], P.STOCK_ACTUAL [STOCK ACTUAL] FROM PRODUCTO P
GO
5 • DISTINGUIDAS

Este tipo de consulta permita mostrar solo una ocurrencia de un conjunto de valores repetidos
a partir de una columna de la tabla.

Ejemplo 06: Crear un script que permita mostrar todas las categorías con los que cuenta
la tabla producto.

SELECT DISTINCT P.COD_CATE FROM PRODUCTO P


GO
6 • ORDENADAS

Este tipo de consulta permita mostrar la información de los registros ordenados de tal
forma que podemos especificar que columnas deben ordenarse tanto de forma ascendente
como descendente.

Ejemplo 07: Crear un script que permita mostrar todos los productos ordenados por
descripcion de forma descendente
SELECT P.* FROM PRODUCTO P ORDER BY [Link] DESC
GO
6 • ORDENADAS

Ejemplo 08: Crear un script que permita mostrar todos los productos ordenados primero por
DESCRIPCION de forma ascendente y luego por STOCK_ACTUAL de forma descendente. Utilizar
números para las columnas
SELECT P.* FROM PRODUCTO P ORDER BY 2 ASC, 5 DESC
GO
7 • CLAUSULA WHERE DE LA SENTENCIA SELECT

La cláusula WHERE puede usarse para determinar qué registros de las tablas
enumeradas en la cláusula FROM aparecerán en los resultados de la instrucción
SELECT. Después de escribir esta cláusula se deben especificar las condiciones
que deben cumplir dichos resultados para su muestra

Ejemplo 09: Crear un script que permita mostrar todos los productos de la categoría
abarrotes (Utilice código de categoría) →’C01’
SELECT P.* FROM PRODUCTO P WHERE P.COD_CATE='C01'
GO
7 • CLAUSULA WHERE DE LA SENTENCIA SELECT

Ejemplo 10: Crear un script que permita mostrar todos los productos que su
stock actual sea igual a 300

SELECT P.* FROM PRODUCTO P WHERE P.STOCK_ACTUAL=300


GO
OPERADORES RELACIONALES

Operador Descripción
= Determina la igualdad entre dos valores.
> Determina si el primer valor es mayor que el segundo.
>= Determina si el primer valor es mayor o igual que el segundo.
< Determina si el primer valor es menor que el segundo.
<= Determina si el primer valor es menor o igual que el segundo.
Ejemplo 11: Crear un script que permita mostrar todos los productos que el precio de
venta sean mayores que 100

SELECT P.* FROM PRODUCTO P WHERE P.PRECIO_VENTA>100


GO
OPERADORES LÓGICOS

Los operadores lógicos soportados por SQL son: AND, OR, XOR, Eqv, Imp, Is y Not.

Ejemplo 12: Crear un script que permita mostrar todos los productos que sean de la categoría
abarrotes (utilice código de categoría) y el stock actual sea mayor a 160

SELECT P.* FROM PRODUCTO P WHERE P.COD_CATE='C01' AND P.STOCK_ACTUAL>160


GO
OPERADORES LÓGICOS

Ejemplo 13: Crear un script que permita mostrar todos los productos que
sean de categoría Lácteos (utilice su código) o Detergentes (utilice su código)

SELECT P.* FROM PRODUCTO P WHERE P.COD_CATE='C02' OR P.COD_CATE='C09'


GO
OPERADORES LÓGICOS

Ejemplo 14: Crear un script que permita mostrar todos los productos que su stock
actual estén entre 80 y 150 o su precio de venta estén entre 10 y 18

SELECT P.* FROM PRODUCTO P WHERE (P.STOCK_ACTUAL>=80 AND


P.STOCK_ACTUAL<=150) OR (P.PRECIO_VENTA>=10 AND P.PRECIO_VENTA<=18)
GO
OPERADOR LIKE

Se utiliza para comparar una expresión de cadena con un modelo en una expresión
SQL

Ejemplo 15: Crear un script que permita mostrar todos los productos que su
descripcion comience con F, seguido de la letra i y el resto cualesquiera.

SELECT P.* FROM PRODUCTO P WHERE [Link] LIKE ‘F[i]%'


GO
OPERADOR LIKE

Ejemplo 16: Crear un script que permita mostrar todos los productos que la
descripcion del producto comience con A y el resto de caracteres podrá ser
cualquiera
SELECT P.* FROM PRODUCTO P WHERE [Link] LIKE 'A%'
GO
OPERADOR LIKE

Ejemplo 17: Crear un script que permita mostrar todos los productos que la
descripcion del producto tenga la letra t en la segunda posición

SELECT P.* FROM PRODUCTO P WHERE [Link] LIKE ‘_t%'


GO
OPERADOR BETWEEN

Para indicar que deseamos recuperar los registros según el intervalo de valores de
un campo

Ejemplo 18: Crear un script que permita mostrar todos los productos que su
precio de venta esté entre 10 y 25.

SELECT P.* FROM PRODUCTO P WHERE P.PRECIO_VENTA BETWEEN 10 AND 25


GO
OPERADOR IN

Este operador devuelve aquellos registros cuyo campo indicado coincide con
alguno de los valores que se encuentran en la lista

Ejemplo 19: Crear un script que permita mostrar todos los productos que su
precio de venta sea 30, 35, 100

SELECT P.* FROM PRODUCTO P WHERE P.PRECIO_VENTA IN(30,35,100)


GO
CONSULTAS COMBINADAS
¿QUÉ ES?

Es recuperar información que se encuentra en varias tablas de la


base de datos.
¿Y CÓMO RECUPERAMOS?

Utilizando Utilizando
combinación combinación
interna. externa.
CONSULTAS COMBINADAS

¿Cuáles son las combinaciones Internas y


Externas?

INTERNAS INNER JOIN


COMBINACIONES
LEFT JOIN

OUTER JOIN RIGHT JOIN


EXTERNAS
CROSS JOIN FULL JOIN

Nota: Utilizaremos sólo la combinación interna y no la externa.


CONSULTAS COMBINADAS
Ejemplo
si queremos visualizar el número de factura, la fecha de facturación, la
razón social y dirección del cliente, nos damos cuenta que dicha información
(campos) proviene de DOS tablas.

TB_CLIENTE
COD_CLI TB_FACTURA
RAZ_SOC_CLI NUM_FAC

DIR_CLI FEC_FAC

TLF_CLI COD_CLI

RUC_CLI FEC_CAN

COD_DIS EST_FAC

FEC_REG COD_VEN

TIP_CLI PORC_IGV

CONTACTO
CONSULTAS COMBINADAS

Es aquí donde combinamos a estas tablas para mostrar los datos.

TB_CLIENTE
COD_CLI TB_FACTURA
RAZ_SOC_CLI NUM_FAC

DIR_CLI FEC_FAC

TLF_CLI COD_CLI

RUC_CLI FEC_CAN

COD_DIS EST_FAC

FEC_REG COD_VEN

TIP_CLI PORC_IGV

CONTACTO
CONSULTAS COMBINADAS

En esta combinación, debemos identificar

¿Qué campos de ambas


tablas se combinan?.

TB_CLIENTE
COD_CLI PK TB_FACTURA
RAZ_SOC_CLI NUM_FAC

DIR_CLI FEC_FAC
COD_CLI FK
TLF_CLI
RUC_CLI FEC_CAN

COD_DIS EST_FAC

FEC_REG COD_VEN

TIP_CLI PORC_IGV

CONTACTO
COMBINACIÓN INTERNA
(INNER JOIN)

¿Para qué se utiliza INNER JOIN?

Para combinar 02 tablas en base a los campos de ambas tablas y así


mostrar sólo los registros que coinciden en dicha combinación de los
campos, excluyendo a los registros que no coincide.
COMBINACIÓN INTERNA
(INNER JOIN)
Nota: Se cuenta con las siguientes tablas: TB_FACTURA y TB_CLIENTE

TB_CLIENTE TB_FACTURA
COD_CLI RAZ_SOC_CLI NUM_FAC FEC_FAC COD_CLI
C001 Finseth FA001 07/06/2013 C001
C002 Orbi FA003 09/01/2013 C003
C003 Serviemsa FA009 10/03/2013 C008
C004 Issa FA019 02/07/2013 C008
C005 Mass FA006 08/01/2013 C009
C006 Berker FA013 12/01/2013 C011
C007 Fidenza FA008 10/04/2013 C012
C008 Intech
C009 Prominent
C010 Landu
C011 Filasur
C012 Sucerte
C013 Hayashi
C014 Kadia
COMBINACIÓN INTERNA (INNER JOIN)
Ejemplo 01: Seleccionar los campos número de factura, fecha de factura,
razón social del cliente y dirección del cliente.

SELECT F.NUM_FAC,
F.FEC_FAC,
C.RAZ_SOC_CLI,
C.DIR_CLI
FROM TB_FACTURA AS F INNER JOIN TB_CLIENTE AS C
ON F.COD_CLI = C.COD_CLI
NUM_FAC FEC_FAC RAZ_SOC_CLI DIR_CLI
FA001 07/06/2013 Finseth Av. Los Viñedos 150
FA002 07/06/2013 Corefo Av. Canada 3894 - 3898
FA003 09/01/2013 Serviemsa Jr. Collagate 522
FA004 09/06/2013 Cardeli Jr. Bartolome Herrera 451
FA005 10/01/2013 Meba Av. Elmer Faucett 1638
FA006 08/01/2013 Prominent Jr. Iquique 132
FA007 10/05/2013 Corefo Av. Canada 3894 - 3898
FA008 10/04/2013 Sucerte Jr. Grito de Huaura 114
FA009 10/03/2013 Intech Av. San Luis 2619 5to P
FA010 10/01/2013 Payet Calle Juan Fanning 327
FA011 09/10/2013 Corefo Av. Canada 3894 - 3898
FA012 12/01/2013 Kadia [Link] Cruz 1332 Of.201
FA013 12/01/2013 Filasur Av. El Santuario 1189
FA014 12/01/2012 Cramer Jr. Mariscal Miller 1131
FA015 12/08/2012 Meba Av. Elmer Faucett 1638
FA016 01/06/2013 Cardeli Jr. Bartolome Herrera 451
FA017 01/06/2013 Meba Av. Elmer Faucett 1638
FA018 02/03/2013 Cardeli Jr. Bartolome Herrera 451
COMBINACIÓN INTERNA
(INNER JOIN)

Ejemplo 02: El siguiente Script muestra cómo podría combinar las tablas
CLIENTES y PAISES basándose en el campo “Idpais”

Select [Link], [Link], [Link], [Link]


From Cliente c INNER JOIN Pais p
ON [Link] = [Link]

Idcliente Nombre Direccion NombrePais


0001 Juan Velasco Calle 1, # 1 Perú
0002 Raquel Salinas Av. los álamos 561 Argentina
0003 Irma Rosales Av. La Marina 566 Chile
0004 Pedro Porras Jr. Ica 655 Perú
COMBINACIÓN INTERNA
(INNER JOIN)
Ejemplo 03: Utilizando las siguientes tablas.

Script
Vistas
¿QUÉ ES?

a) Es una tabla virtual o una consulta almacenada, donde los


datos accesibles no están almacenados en la vista
b) Lo que se almacena es una instrucción SELECT y el resultado
forma la tabla virtual
c) El usuario puede utilizar dicha tabla virtual haciendo
referencia al nombre de la vista en instrucciones SQL
d) Restringe el acceso a filas y columnas
e) Combina columnas de varias tablas en una sola tabla
f) Agrega información en lugar de presentar los detalles
Vistas
¿CUÁLES SON LAS RAZONAES PARA
CREAR UNA VISTA?

• Seguridad, nos pueden interesar que los usuarios


tengan acceso a una parte de la información que hay
en una tabla, pero no a toda la tabla.
• Comodidad, como hemos dicho el modelo relacional
no es el más cómodo para visualizar los datos, lo que
nos puede llevar a tener que escribir complejas
sentencias SQL, tener una vista nos simplifica esta
tarea.
Vistas
Vistas
¿CÓMO CREAMOS UNA VISTA?

Para crear una vista utilice la sentencia CREATE VIEW,


proporcionando un nombre a la vista y una sentencia SQL
SELECT válida.

CREATE VIEW <nombre_vista>


AS
(<sentencia_select>);
Vistas
Crear una vista sobre la tabla Productos, en la que se nos
muestre los datos de los productos y el nombre de categoría en
lugar de su código.
Vistas
La vista se guarda en el servidor
Vistas
¿CÓMO EJECUTAR UNA VISTA?

SELECT * FROM <Nombre_Vista>

Ejemplo:

Procederemos a ejecutar la vista creada en el Ejemplo 01

SELECT * FROM V_PRODUCTOSCAT


Vistas
A continuación veremos el contenido de la vista creada en el Ejemplo 01 utilizando
la función SP_HELPTEXT

SP_HELPTEXT VProductosCat

Resultado de la vista:

1 CREATE VIEW v_ProductosCat as


2 Select p.id_producto, p.nom_producto,
3 p.pre_unidad, c.nom_categoria
4 from productos p
5 inner join categorias c
6 on p.id_categoria = c.id_categoria

Nota: El uso de SP_HELPTEXT no es posible para vista encriptadas


Vistas
¿CÓMO MODIFICAMOS UNA VISTA?

Si queremos, modificar la definición de nuestra vista


podemos utilizar la sentencia ALTER VIEW, de
forma muy parecida de cómo se realiza con las tablas.

ALTER VIEW <nombre_vista>


AS
(<sentencia_select>);
Vistas
Modificar la vista V_ProductosCat, en la que se nos muestre los
datos de los productos, el nombre de categoría en lugar de su
código y el nombre del Proveedor.

ALTER VIEW V_PRODUCTOSCAT


AS
SELECT
[Link],[Link],[Link],
[Link], [Link], [Link]
FROM TB_PRODUCTOS P INNER JOIN TB_CATEGORIAS C
ON [Link]=[Link] INNER JOIN TB_PROVEEDORES PROV
ON [Link] = [Link]
Vistas
¿CÓMO ELIMINAMOS UNA VISTA?

Si queremos, eliminar una vista podemos


utilizar la sentencia DROP VIEW

DROP VIEW <nombre_vista>


Crear un vista con el nombre VALUMNO que permita mostrar datos de la relación de tablas
TALUMNO, TMATRICULA y TCURSO.

CREATE VIEW VALUMNO


AS
SELECT A.C_ALUMNO,
A.X_NOMBRE,
A.X_PATERNO,
A.X_MATERNO,
M.C_CURSO,
M.X_CURSO
FROM TALUMNO A JOIN TMATRICULA M
ON A.C_ALUMNO = M.C_ALUMNO JOIN
TCURSO C
ON M.C_CURSO = C.C_CURSO
Ejemplo

Crear una vista que liste NombreProducto, NombreCategoría,


PrecioUnidad, Suspendido

Create view v_productos


as
select NombreProducto, NombreCategoría, PrecioUnidad, Suspendido from Productos p
inner join Categorías c on [Link]ía =[Link]ía
go

Ejecutando

select * from v_productos order by NombreCategoría, NombreProducto


go

También podría gustarte