You are on page 1of 8

ESCUELA POLITÉCNICA NACIONAL

FACULTAD DE INGENIERÍA DE SISTEMAS


BASES DE DATOS

Nombre: Alex Francisco Carrera Alvarez

Laboratorio de: Practica 1 de SQL

Tema: Resolución de consultas usando lenguaje SQL

Objetivos:
● Creación de una base de datos en el lenguaje de SQL server
● Implementación y desenvolvimiento practico al momento de realizar los comandos en SQL server para una
comprensión básica del mismo lenguaje

Marco teórico:

SQL fue uno de los primeros lenguajes comerciales para el modelo relacional de Edgar Frank Codd como se describió
en su papel de 1970 El modelo relacional de datos para grandes bancos de datos compartidos. A pesar de no
adherirse totalmente al modelo relacional descrito por Codd, pasó a ser el lenguaje de base de datos más usado.

SQL pasó a ser el estándar del Instituto Nacional Estadounidense de Estándares (ANSI) en 1986 y de la Organización
Internacional de Normalización (ISO) en 1987. Desde entonces, el estándar ha sido revisado para incluir más
características. A pesar de la existencia de ambos estándares, la mayoría de los códigos SQL no son completamente
portables entre sistemas de bases de datos diferentes sin ajustes.

Componentes

● Lenguaje de definición de datos (LDD). El LDD de SQL proporciona comandos para la definición de esquemas
de relación, borrado de relaciones y modificación de los esquemas de relación.
● Lenguaje interactivo de manipulación de datos (LMD). El LMD de SQL incluye un lenguaje de consultas basado
tanto en el álgebra relacional como en el cálculo relacional de tuplas. También contiene comandos para
insertar, borrar y modificar tuplas.
● Integridad. El LDD de SQL incluye comandos para especificar las restricciones de integridad que deben cumplir
los datos almacenados en la base de datos. Las actualizaciones que violan las restricciones de integridad se
rechazan.
● Definición de vistas. El LDD de SQL incluye comandos para la definición de vistas.
● Control de transacciones. SQL incluye comandos para especificar el comienzo y el final de las transacciones.
● SQL incorporado y SQL dinámico. SQL incorporado y SQL dinámico definen cómo se pueden incorporar
instrucciones de SQL en lenguajes de programación de propósito general como C, C++, Java, PL/I, Cobol, Pascal
y Fortran.
● Autorización. El LDD de SQL incluye comandos para especificar los derechos de acceso a las relaciones y a las
vistas.

Estructuras Básicas de las consultas SQL

Las estructuras básicas constan de 3 cláusulas:

● La cláusula select se corresponde con la operación proyección del álgebra relacional. Se usa para obtener una
relación de los atributos deseados en el resultado de una consulta.
● La cláusula from se corresponde con la operación producto cartesiano del álgebra relacional.
Genera una lista de las relaciones que deben ser analizadas en la evaluación de la expresión.
● La cláusula where se corresponde con el predicado selección del álgebra relacional. Es un predicado que
engloba a los atributos de las relaciones que aparecen en la cláusula from.

La cláusula Select
Considérese la consulta simple basada en el ejemplo bancario “Obtener el nombre de todas las sucursales de la
relación préstamo”:
select nombre_sucursal
from préstamo
El resultado es una relación consistente en un único atributo con el encabezado nombre_sucursal.

En la práctica, la eliminación de duplicados consume tiempo. Por tanto, SQL (como la mayoría de los lenguajes de
consultas comerciales) permite duplicados en las relaciones, así como en el resultado de las expresiones SQL. Así, la
consulta anterior mostrará el valor de nombre_sucursal una vez por cada tupla de la relación préstamo en la que
aparezca.

Distinct
En los casos en los que se desea forzar la eliminación de los valores duplicados, se inserta la palabra clave distinct
después de select. Se puede reescribir la consulta anterior como
select distinct nombre_sucursal
from préstamo
si se desea eliminar los duplicados.

All
SQL permite utilizar la palabra clave all para especificar de manera explícita que no se eliminen los
duplicados:
select all nombre_sucursal
from préstamo
Dado que la retención de duplicados es la opción predeterminada no se utiliza all.

*
El símbolo asterisco “ * ” se puede usar para denotar “todos los atributos”.
Así, el uso de préstamo.* en la cláusula select anterior
select *
from préstamo
indicaría que se seleccionarán todos los atributos de préstamo.
Las cláusulas select de la forma select * indican que se deben seleccionar todos los atributos de todas las relaciones
que aparecen en la cláusula from.

Cláusula Where
Considérese la consulta “Obtener todos los números de préstamo de los préstamos concedidos en la sucursal de
Navacerrada e importe superior a 1.200 e”. Esta consulta puede escribirse en SQL como:
select número_préstamo
from préstamo
where nombre_sucursal = ’Navacerrada’ and importe > 1200
SQL usa las conectivas lógicas and, or y not (en lugar de los símbolos matemáticos ^, _ y : ) en la cláusula where. Los
operandos de las conectivas lógicas pueden ser expresiones que contengan los operadores de comparación <, <=, >,
>=, = y <>. SQL permite utilizar los operadores de comparación para comparar cadenas y expresiones aritméticas, así
como tipos especiales, como los tipos de fecha.

Between
SQL incluye también un operador de comparación between para simplificar las cláusulas where, el
cual especifica que un valor sea menor o igual que un valor y mayor o igual que otro valor. Si se desea obtener el número de
préstamo de aquellos préstamos con importe entre 90.000 y 100.000, se puede usar la comparación between para escribir
select número_préstamo
from préstamo
where importe between 90000 and 100000
en lugar de
select número_préstamo
from préstamo
where importe >= 90000 and importe <= 100000
De forma análoga, se puede usar el operador de comparación not between.

Cláusula From
La cláusula from define por sí misma un producto
cartesiano de las relaciones que aparecen en la cláusula. Dado que la reunión natural se define en términos de un
producto cartesiano, una selección y una proyección, resulta relativamente sencillo escribir una expresión de SQL para
la reunión natural. Se escribe la expresión del álgebra relacional
𝜋𝑛𝑜𝑚𝑏𝑟𝑒_𝑐𝑙𝑖𝑒𝑛𝑡𝑒,𝑛ú𝑚𝑒𝑟𝑜_𝑝𝑟é𝑠𝑡𝑎𝑚𝑜,𝑖𝑚𝑝𝑜𝑟𝑡𝑒(𝑝𝑟𝑒𝑠𝑡𝑎𝑡𝑎𝑟𝑖𝑜 |×| 𝑝𝑟é𝑠𝑡𝑎𝑚𝑜)
para la consulta “Para todos los clientes que tienen un préstamo del banco, obtener el nombre, el número de préstamo
y su importe”. Esta consulta puede escribirse en SQL como
select nombre_cliente, prestatario.número_préstamo, importe
from prestatario, préstamo
where prestatario.número_préstamo = préstamo.número_préstamo
Desarrollo de la práctica:

1. Indica que las sentencia sql deben usar la tabla Northwind


use northwind;
2. Consultar todas las filas de la tabla Productos
select * from dbo.products;

3. Consultar el nombre de producto y el precio unitario de la tabla Productos


select productName, unitprice from dbo.products;

4. Consultar todas las filas de la tabla products donde los precios sean mayores que 30
select * from dbo.products where UnitPrice>30;
5. Consultar todos las filas de la tabla products donde los precios sean mayores que 30 y categoriaId igual a 3
select * from dbo.products where UnitPrice>30 and CategoryID=3;

6. Consultar productname, unitprice, CategoryID de la tabla products donde el precio sea mayor a 30 y categoryid
sea igual a 3
select productname, unitprice, CategoryID
from dbo.products
where UnitPrice>30 and CategoryID=3;

7. CONSULTAR categoryid distintos de productos


select distinct (categoryid) from dbo.products
8. consultar nombres de productos que empiecen con c
select productName from dbo.products where productname like ('c%');

9. consultar nombres de productos que contenga la letra e


select productName from dbo.products where productname like ('%e%');

10. consultar nombres de productos con categoría 1,2,3


select productName, CategoryID from dbo.products where CategoryID in (1,2,3);
11. Mostrar el nombre de producto y la categoría id de productos ordenados por categoria id

12. Mostrar el nombre de producto y la categoría id de productos ordenados descendentemente por categoria id

13. consultar los nombres de productos y precios que estén entre 20 y 50


select productName, unitprice
from dbo.Products
where UnitPrice
between 30 and 50;
Conclusiones y recomendaciones:

● Muchos de los comandos utilizados en la práctica son algo complejos por lo que es necesario consultarlos en
la web para conocerlos un poco más y aplicarlos adecuadamente.
● Muchos lenguajes omiten la opción de eliminar contenidos de la base de datos ya que es un proceso tardío
● Siempre para poder evitar encontrar elementos duplicados es necesario utilizar District.
● Siempre que se realiza cambios a la base de datos o que se añade una información extra es necesario
comentarlo para en un futuro poder identificar el cambio

Bibliografía:

● NA. (2016). ¿Qué es un proveedor?. 03/05/2017, de Reviso Sitio web: https://www.reviso.com/es/que-es-


un-proveedor
● Julián Pérez Porto y Ana Gardey. (2011). Orden compra. 03/05/2017, de Definicio.de Sitio web:
http://definicion.de/orden-de-compra/

You might also like