Está en la página 1de 10

UNIVERSIDAD AUTONÓMA DE NUEVO LEÓN

FACULTAD DE INGENIERÍA MECÁNICA Y ELÉCTRICA


COORDINACIÓN GENERAL DE CIENCIAS BÁSICAS

Foto Calificación
UNIDAD DE APRENDIZAJE: Lenguajes de Programación

SEMESTRE: Intersemestral Junio-Julio 2021


ACTIVIDAD FUNDAMENTAL: Act 3

CATEDRÁTICO: JOSE ANTONIO JUAREZ COVARRUBIAS

OP. MATRÍCULA NOMBRE (COMPLETO) Hora CARRERA

1 1898918 Héctor Gregorio Meza Cruz N1-N2 IAS

FECHA DE ENTREGA: 28 – Junio – 2021


Lenguajes de consulta
Básicamente, podemos decir que un lenguaje de consulta es un lenguaje usado
por el usuario para solicitar información a la base de datos.
En este tema veremos el lenguaje comercial que mayor influencia tiene, el SQL.
El lenguaje de definición de datos y el lenguaje de manipulación de datos (DML o
LMD, dentro del cual contemplábamos el lenguaje de consulta como la parte del
LMD que permitía recuperar información).
Aunque a menudo se diga que el SQL es un “lenguaje de consulta”, es necesario
recordar que esto no es exactamente cierto dado que contiene muchas otras
capacidades además de la de consultar la base de datos, como son; la definición
de la propia estructura de los datos, la manipulación de dichos datos y la
especificación de las ligaduras de seguridad. El lenguaje estructurado de
consultas SQL (Structured Query Language) es un lenguaje combinado de
manipulación y definición de datos, y que permite expresar diversas operaciones
con los datos almacenados en las bases de datos relacionales. El SQL fue
desarrollado a principios de los años 70 en E.E.U.U por I.B.M. cuando, después de
que su empleado Codd publicara su artículo sobre las Bases de Datos
Relacionales, I.B.M. decidió desarrollar el primer prototipo de BDR llamado
System R que utilizaba un lenguaje llamado SEQUEL (que posteriormente fue el
SQL).
El Instituto Nacional Americano de Normalización (ANSI, American National
Standards Institute) adoptó el lenguaje SQL como estándar, publicando y
desarrollando unas especificaciones. En 1986, la Organización Internacional de
Normalización (ISO, International Standards Organization) aceptó estas normas y
se les denominó SQL-86. Esto no significa que todos los productos sigan
estrictamente esta norma, principalmente porque el estándar no cubre todas las
necesidades planteadas. Este es el motivo por el que, en 1989, se publicó una
norma extendida para el SQL denominada SQL-89. Actualmente los sistemas de
bases de datos son en general compatibles, al menos, con las características del
SQL-89. La versión actual de la norma SQL ANSI/ISO es la norma SQL-92. Se
debe tener en cuenta que algunas implementaciones de SQL pueden ser solo
compatibles con SQL-89 y no con SQL-92.

Como ya se ha dicho, SQL es tanto un LDD como LMD por lo que existen dos
tipos de sentencias:

1. Sentencias de definición de datos (Data Definition Language) que


proporcionan las órdenes para definir o modificar esquemas de relación,
eliminar relaciones y crear índices. Algunos ejemplos de sentencias son las
de tipo CREATE y DROP.

2. Sentencias de manipulación de datos (Data Manipulation Language) que


nos permiten realizar consultas y mantener los datos es decir; insertar,

FECHA DE ENTREGA: 28 – Junio – 2021


suprimir o modificar los datos. Comienzan con las siguientes palabras del
lenguaje: SELECT, INSERT, UPDATE y DELETE.

Tipos de dominios en SQL


En SQL tenemos diferentes tipos de dominios predefinidos sobre los que se
definen los datos. Veamos algunos de ellos:

CHAR y VARCHAR: Se usan para definir cadenas de texto genéricas, y puede


contener caracteres con cualquier valor ASCII. El número máximo de caracteres
que admiten es 255.
La diferencia entre ambos es que mientras CHAR proporciona un tamaño fijo para
una cadena, VARCHAR admite una cantidad variable de caracteres.
La sintaxis para este tipo es CHAR(n) o VARCHAR(n), donde n indica la longitud.
Sus contenidos se especifican entre comillas simples. Ejemplo: ‘Hola’, ‘09-MAR-
98’, ‘Jackie’, ’s’.

INTEGER: Sus valores son números enteros, positivos o negativos. Normalmente,


con este tipo se pueden definir todos los números enteros entre –2147483648 y
2147483647, aunque en realidad los límites vienen definidos por la máquina.

FLOAT: Sus valores representan números en coma flotante, es decir, números


positivos o negativos que pueden tener decimales. La sintaxis para este tipo es
FLOAT(n), donde n es la precisión que como mínimo se desea que tenga el
número.

DATE: Se usa para almacenar información de una fecha. Son validas todas las
fechas del calendario gregoriano, empezando en el día 1 de Enero del año 1 y
terminando el 31 de Diciembre del año 9999, ambos inclusive. Se representa en
formato día, mes y año

TIME: Representa una hora determinada con precisión de segundos

NULL: No se trata de un tipo de datos concreto. Es más bien un valor que indica la
ausencia de cualquier valor. Por ejemplo, en una columna de tipo numérico el
valor nulo no es lo mismo que el valor cero, o en una columna de tipo
alfanumérico, el nulo no es lo mismo que blanco o que el valor vacío (longitud
cero). Para comparar valores con NULL sólo podremos usar los operadores IS
NULL o IS NOT NULL.

Consultas simples

FECHA DE ENTREGA: 28 – Junio – 2021


Una consulta en SQL consta básicamente de dos cláusulas obligatorias (SELECT
y FROM) a las que se le pueden añadir opcionalmente otras cuatro cláusulas
(WHERE, GROUP BY, HAVING y ORDER BY).

Las cláusulas SELECT / FROM

La cláusula SELECT que inicia cada sentencia especifica la lista de atributos de


los datos que queremos recuperar en la consulta. Corresponde con la operación
de proyección del álgebra relacional. Para especificar la lista de elementos
seleccionados podemos escribir cualquiera de los elementos siguientes teniendo
en cuenta que, si hay más de uno, estarán separados por comas.

El nombre de una columna, que hará referencia a un atributo de la tabla que


especifiquemos en la cláusula FROM.
Más adelante veremos que, en determinadas ocasiones, al tener más de una tabla
en la cláusula FROM necesitaremos además especificar el nombre de la tabla a la
que pertenece dicho atributo escrito de la siguiente forma:

mi_tabla.atributo_seleccionado

El valor, para indicar que se desea información de todas las columnas que forman
la tabla.

Una constante, especificando que el valor constante va a aparecer en todas las


filas de los resultados de la consulta.

O una expresión SQL, indicando que SQL debe calcular el valor a colocar en los
resultados según el estilo especificado por la expresión, por ejemplo: AVG .Esto lo
veremos más adelante. La cláusula FROM es la que indica sobre que tabla/s se
desea recuperar información. Si hay más de una, se separan los nombres de las
tablas por comas (y esto correspondería al producto cartesiano del álgebra
relacional). El resultado de una consulta SQL es siempre una tabla de datos,
semejante a las tablas de base de datos.
Generalmente los resultados de la consulta formarán una tabla con varias
columnas y filas. Por ejemplo, si queremos saber ”el listado de los nombres,
oficinas y fechas de contrato de todos los vendedores”, la consulta sería:

SELECT nombre, oficina_rep, contrato FROM repventas ;

En algunos casos los resultados de la consulta pueden ser un único valor, como
en el caso de pedir “el promedio de ventas de los vendedores”:

SELECT AVG(ventas) FROM repventas ;

FECHA DE ENTREGA: 28 – Junio – 2021


E incluso en otros puede producir cero filas de resultados. Por ejemplo si
realizamos la consulta “el nombre y fecha de contrato de cualquier vendedor con
ventas superiores a 75000”:

SELECT nombre, contrato FROM repventas WHERE ventas>75000 ;

Por otra parte, hay que tener en cuenta que la cláusula SELECT nos va a mostrar
tantas filas como datos respondan a la consulta. Si la consulta incluye la clave
primaria de una tabla en su lista de selección, entonces cada fila de resultados
será única (ya que la clave primaria tiene un valor diferente en cada fila). Si no se
incluye la clave primaria en los resultados pueden producirse filas duplicadas.

La cláusula WHERE

Generalmente se desea seleccionar solo algunas de las tuplas de una tabla,


aquellas que, por ejemplo, cumplan unas determinadas condiciones (al igual que
el operador restricción o selección del álgebra relacional). La cláusula WHERE se
emplea para especificar las condiciones que nos restringen a un determinado
número de filas, las que se desean recuperar.

Por ejemplo, veamos la consulta ”decir las oficinas donde las ventas exceden al
objetivo”:

SELECT ciudad, ventas, objetivo FROM oficinas WHERE ventas>objetivo ;

O “listar el nombre, ventas y cuota del empleado número 105”:

SELECT nombre, ventas, cuota FROM repventas WHERE num_empl=105 ;

En la cláusula WHERE indicamos la condición de búsqueda que especifica las


filas a recuperar. Conceptualmente, SQL recorre cada fila de la tabla
seleccionada, una a una, y aplica la condición de búsqueda produciendo uno de
los siguientes resultados:

• Si la condición de búsqueda es cierta, la fila se incluye en los resultados de


la consulta.

• Si la condición de búsqueda es falsa, la fila se excluye de los resultados de


la consulta.

• Si la condición de búsqueda tiene un valor NULL (desconocido), la fila se


excluye de los resultados de la consulta.

FECHA DE ENTREGA: 28 – Junio – 2021


Para restringir los resultados de una búsqueda, el SQL ofrece un variado conjunto
de condiciones de búsqueda que nos van a permitir especificar muchos tipos
diferentes de consultas. Las condiciones de búsqueda son cinco según el estándar
ANSI/ISO:

• Condiciones de comparación. Compara el valor de una expresión con el


valor de otra.

• Condiciones de rango. Examina si el valor de una expresión cae dentro de


un rango especificado de valores.

• Condiciones de pertenencia a un conjunto. Comprueba si el valor de una


expresión se corresponde con alguno de los valores especificados en
conjunto determinado de valores.

• Condiciones de correspondencia con patrón. Comprueba si el valor de una


columna, que contiene datos de cadena de caracteres, se corresponde con
un patrón especificado.

• Condiciones de valor nulo. Comprueba si una columna tiene un valor NULL


(desconocido). Veamos como se expresan estas condiciones en SQL.

Condiciones de comparación

La condición de búsqueda más común utilizada en una consulta SQL es la de


comparación. SQL calcula y compara los valores de dos expresiones SQL por
cada fila de datos. Las expresiones pueden ser tan simples como un nombre de
columna o una constante, o pueden ser expresiones aritméticas más complejas.
Hay seis modos de comparar dos expresiones (=, <>, <=, >, >=).

Ejemplo:

Lista de los vendedores contratados antes de 1998:


SELECT nombre FROM repventas WHERE contrato

Lista de las oficinas cuyas ventas están por debajo del 75% del objetivo:
SELECT ciudad, ventas, objetivo FROM oficinas WHERE ventas

Condiciones de rango (BETWEEN)


La condición BETWEEN de SQL comprueba si el valor del dato se encuentra entre
dos valores especificados, incluyendo en el resultado los valores de los extremos.

FECHA DE ENTREGA: 28 – Junio – 2021


Condiciones de pertenencia a un conjunto (IN)
La condición IN examina si un valor de un dato coincide con uno de una lista de
valores dados.

Condiciones de correspondencia con un patrón (LIKE)


Se puede utilizar una condición de comparación simple para recuperar las filas en
donde el contenido de una columna de texto se corresponde con un cierto texto
particular.

Operadores para las búsquedas (AND / OR / NOT)


Cuando queremos realizar búsquedas teniendo en cuenta más de un criterio,
tendremos que combinar las condiciones de búsqueda mediante los operadores
AND u OR.
El operador AND se utiliza para combinar dos condiciones de búsqueda que
deban ser ciertas simultáneamente.

La cláusula ORDER BY
La cláusula ORDER BY sirve para perdir a SQL que ordene los resultados de una
consulta según unos criterios que se especifiquen (dado que los resultados de una
consulta no están dispuestos en ningún orden particular). Si tenemos más de un
criterio de ordenación, se escribirán separados por comas. Por ejemplo, si
queremos saber:

Las ventas de cada oficina, ordenadas en orden alfabético por región y dentro de
cada región por ciudad (deberemos ordenar la consulta por región y ciudad):

SELECT ciudad, region, ventas FROM oficinas ORDER BY region, ciudad ;

Si la columna de resultados de la consulta (que se utiliza para ordenación) es una


columna calculada, no tiene nombre de columna que se pueda emplear en una
especificación de ordenación. En este caso, debe especificarse un número de
columna en lugar de un nombre o bien darle un nombre a la columna mediante la
palabra clave AS.

La cláusula UNION y la cláusula INTERSECT


Estas cláusulas sirven para “combinar” resultados de dos o más consultas en una
única tabla de resultados totales. En el estándar ANSI de SQL esta capacidad está

FECHA DE ENTREGA: 28 – Junio – 2021


soportada gracias a la cláusula UNION que devuelve como resultado todas las
tuplas que estaban en una u otra consulta. Fuera del estándar podemos encontrar
también la cláusula INTERSECT.

Puede observarse que la UNION combina las filas de los dos conjuntos de
resultados eliminando por defecto las filas duplicadas. Si se desean mantener las
filas duplicadas en una operación UNION, se puede especificar la palabra clave
ALL a continuación de la palabra UNION.

La cláusula INTERSECT nos permite combinar resultados de varias consultas


devolviendo como resultado aquellas tuplas que pertenecen a todas las consultas.
Como ya hemos comentado, esta cláusula no es estándar pero se le aplican las
mismas consideraciones que a la UNION excepto en que no elimina los
duplicados.

Subconsultas y subconsultas anidadas


La característica de subconsulta de SQL permite utilizar los resultados de una
consulta como parte de otra. La capacidad de utilizar una consulta dentro de otra
fue la razón original para la palabra “estructurada” en el nombre Lenguaje de
Consultas Estructuradas (Structured Query Language SQL). Esta característica
juega un papel importante por tres razones:

• Una sentencia SQL con una subconsulta es frecuentemente el modo más


natural de expresar una consulta, ya que se asemeja más estrechamente a
la descripción de la consulta en lenguaje natural.

• Las subconsultas hacen más fácil la escritura de sentencias SELECT, ya


que permiten “descomponer una consulta en partes” (la consulta y sus
subconsultas) y luego “recomponerlas”.

• Hay algunas consultas que no pueden ser expresadas en el lenguaje SQL


sin utilizar una subconsulta.

Una subconsulta es una consulta que aparece dentro de la cláusula WHERE o


HAVING de otra sentencia SQL.

-Carácteristicas

Lenguaje de definición de datos: El LDD de SQL proporciona comandos para la


definición de esquemas de relación, borrado de relaciones y modificaciones de los
esquemas de relación.

FECHA DE ENTREGA: 28 – Junio – 2021


Lenguaje interactivo de manipulación de datos: El LMD de SQL incluye lenguajes
de consultas basado tanto en álgebra relacional como en cálculo relacional de
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.

Definición de vistas: El LDD incluye comandos para definir las vistas.

Control de transacciones: SQL tiene comandos para especificar el comienzo y el


final de una transacción.

SQL incorporado y dinámico: Esto quiere decir que se pueden incorporar


instrucciones de SQL en lenguajes de programación como: C++, C, Java, PHP,
Cobol, Pascal y Fortran.
Autorización: El LDD incluye comandos para especificar los derechos de acceso a
las relaciones y a las vistas.

Características Generales
SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y
potencia de los sistemas relacionales y permite así gran variedad de operaciones.

Es un lenguaje declarativo de "alto nivel" o "de no procedimiento" que, gracias a


su fuerte base teórica y su orientación al manejo de conjuntos de registros y no a
registros individuales permite una alta productividad en codificación y la
orientación a objetos. De esta forma, una sola sentencia puede equivaler a uno o
más programas que se utilizarían en un lenguaje de bajo nivel orientado a
registros.

FECHA DE ENTREGA: 28 – Junio – 2021


ejemplos

QL: lenguaje de consulta propietario orientado a objetos para consultar bases de


datos relacionales.

EPL: lenguaje de consulta para el procesado de eventos complejos en tiempo real.

LDAP: protocolo de aplicación para consultar y modificar servicios de directorios


corriendo sobre TCP/IP.

OQL: lenguaje de consulta de objetos.

SPARQL: lenguaje de consulta para grafos RDF.

SQL: es el lenguaje de consulta más empleado y conocido para bases de datos


relacionales.

XQuery: lenguaje de consulta para fuentes de datos XML.

FECHA DE ENTREGA: 28 – Junio – 2021

También podría gustarte