1. UNIVERSIDAD VERACRUZANA
SISTEMAS COMPUTACIONALES ADMINISTRATIVOS
CATEDRÁTICO:
DR. CARLOS ARTURO TORRES GASTELU
ALUMNA:
MARTHA TERESA LECHUGA GONZALEZ
ANSI-SQL Y SUS VARIACIONES
EE:
BASE DE DATOS
16 DE SEPTIEMBRE DEL 2011
2. INTRODUCCIÓN
ANSI SQL ah sufrido diversas modificaciones a lo largo del tiempo, obteniendo
aportaciones a sus diferentes versiones, en el siguiente documento se muestran
las distintas características que se han agregado, así como las que han
desaparecido, ya que se incluyeron nuevas y mejores, para tener los resultados
deseados de una manera más fácil.
Entre las muchas características con las que cuentan ANSI SQL se pueden
clasificar de acuerdo a su modo de utilización el cual tiene divisiones tales como
SQL interactivo donde ocurre una ejecución directa, modos SQL-cliente aquí se
muestran procedimientos almacenados, entre otros modos que nos pueden
ayudar a utilizar el SQL prácticamente.
ANSI SQL cuenta con una variada gama de elementos los cuales nos permiten
realizar las ordenes SQL, abarcando palabras predefinidas, nombre de los objetos,
constantes, delimitadores, operadores, datos nulos, entre otros, pudiendo nosotros
como administradores tener una sintaxis donde se entienda de manera clara y
concisa lo que necesita obtener de la base de datos.
Además de contar con las características mencionadas anteriormente, ANSI SQL
soporta una amplia variedad de datos, ya sea de tipo carácter, numérica o cadena
de caracteres por mencionar algunos, esto nos permite poder ingresar un mayor
numero de datos, de diferente tipo.
ANSI SQL tiene un grupo de subconjuntos SQL con los que podemos trabajar de
acuerdo a las necesidades que tengamos, se pueden desglosar de la siguiente
manera, encontrando DQL (lenguaje de consulta de datos), DML (lenguaje de
manipulación de datos), DDL (lenguaje de definición de datos), DCL (lenguaje de
control de datos), entre otros.
A continuación se detallaran las características mencionadas anteriormente, y
también se efectuara una actualización de los datos aquí mencionados, aportando
nuevas características y mejoras que se han incluido en ANSI SQL de nuevas
versiones.
3. ANSI SQL
HISTORIA
Los orígenes del SQL están ligados a los de las bases de datos relacionales. En
1970 E. F. Codd propone el modelo relacional y asociado a este un sublenguaje
de acceso a los datos basado en el cálculo de predicados. Basándose en estas
ideas, los laboratorios de IBM definen el lenguaje SEQUEL (Structured English
QUEry Language) que más tarde sería ampliamente implementado por el SGBD
(Sistemas Gestores de Bases de Datos) experimental System R, desarrollado en
1977 también por IBM. Sin embargo, fue Oracle quien lo introdujo por primera vez
en 1979 en un programa comercial.
El SEQUEL terminaría siendo el predecesor de SQL, siendo éste una versión
evolucionada del primero. El SQL pasa a ser el lenguaje por excelencia de los
diversos SGBD relacionales surgidos en los años siguientes y es por fin
estandarizado en 1986 por el ANSI, dando lugar a la primera versión estándar de
este lenguaje, el "SQL-86" o "SQL1". Al año siguiente este estándar es también
adoptado por la ISO.
En 1986, el ANSI adoptó SQL (sustancialmente adoptó el dialecto SQL de IBM)
como estándar para los lenguajes relacionales y en 1987 se transfomó en
estándar ISO. Esta versión del estándar va con el nombre de SQL/86. En los años
siguientes, éste ha sufrido diversas revisiones que han conducido primero a la
versión SQL/89 y, posteriormente, a la actual SQL/92.
El hecho de tener un estándar definido por un lenguaje para bases de datos
relacionales abre potencialmente el camino a la intercomunicabilidad entre todos
los productos que se basan en él. Desde el punto de vista práctico, por desgracia
las cosas fueron de otro modo. Efectivamente, en general cada productor adopta e
implementa en la propia base de datos sólo el corazón del lenguaje SQL (el así
llamado Entry level o al máximo el Intermediate level), extendiéndolo de manera
individual según la propia visión que cada cual tenga del mundo de las bases de
datos.
Actualmente, está en marcha un proceso de revisión del lenguaje por parte de los
comités ANSI e ISO, que debería terminar en la definición de lo que en este
momento se conoce como SQL3. Las características principales de esta nueva
encarnación de SQL deberían ser su transformación en un lenguaje stand-alone
(mientras ahora se usa como lenguaje hospedado en otros lenguajes) y la
introducción de nuevos tipos de datos más complejos que permitan, por ejemplo,
el tratamiento de datos multimediales.
4. CARACTERÍSTICAS GENERALES
Las características generales de ANSI SQL no han sido modificadas de manera
muy significativa a lo largo de sus versiones ya que, siguen el mismo patrón de
funcionamiento, con algunos cambios pero todo sin afectar su estructura, siempre
con la intención de mejorar el producto.
El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y
potencia de los sistemas relacionales permitiendo gran variedad de operaciones
en éstos últimos.
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 utilizas en un lenguaje de bajo nivel orientado a registro.
OPTIMIZACIÓN
Como ya se dijo arriba, y suele ser común en los lenguajes de acceso a bases de
datos de alto nivel, el SQL es un lenguaje declarativo. O sea, que especifica qué
es lo que se quiere y no cómo conseguirlo, por lo que una sentencia no establece
explícitamente un orden de ejecución.
El orden de ejecución interno de una sentencia puede afectar gravemente a la
eficiencia del SGBD, por lo que se hace necesario que éste lleve a cabo una
optimización antes de su ejecución. Muchas veces, el uso de índices acelera una
instrucción de consulta, pero ralentiza la actualización de los datos. Dependiendo
del uso de la aplicación, se priorizará el acceso indexado o una rápida
actualización de la información. La optimización difiere sensiblemente en cada
motor de base de datos y depende de muchos factores.
Existe una ampliación de SQL conocida como FSQL (Fuzzy SQL, SQL difuso) que
permite el acceso a bases de datos difusas, usando la lógica difusa. Este lenguaje
ha sido implementado a nivel experimental y está evolucionando rápidamente.
A continuación se mostrara una breve historia de las versiones que han venido
construyendo ANSI SQL a lo largo de su historia.
5. SQL-89
En 1986, el ANSI adopto SQL (sustancialmente adopto el dialecto SQL de IBM)
como estándar para los lenguajes relacionales y en 1987 se transformo en el
estándar ISO. Esta versión estándar tenía el nombre de SQL-86. En 1989 ANSI
definió SQL-89 basada en la anterior pero con una serie de mejoras entre las que
destacan:
Definición de clave primarias
Integridad de datos
Una característica importante de esta versión era la posibilidad de utilizarse a
través de dos interfaces, de manera interactiva y por medio de programas de
aplicación.
En la primera versión de SQL-89 se tienen tres partes esenciales:
Lenguaje de Definición de Datos DDL
Contiene todas las instrucciones para definir el esquema de una base de datos,
como son CREATE (para la creación de tablas), ALTER (sirve para modificar los
datos o las tablas) y DROP (para eliminar las tablas o registros de una BD).
Lenguaje de Manipulación de Datos DML
Contiene las instrucciones de manejo de tablas como son:
insert (insertar nuevos registros dentro de la BD)
select (mostrar los datos requeridos dentro de una BD)
update (modifica los datos dentro de una base de datos)
delete (borra de manera total o parcial los datos)
También contiene instrucciones como commit y rollback para el control de
concurrencia de los datos.
Lenguaje de Control de Datos DCL
Contiene aquellas instrucciones para dar y revocar y permisos de acceso a los
datos de la base de datos, como GRANT para otorgar permisos a los
administradores y REVOKE para quitar dichos permisos.
6. Todas estas instrucciones pueden ir embebidas en programas escritos en
diferentes lenguajes de programación tales como: COBOL, FORTRAN, PASCAL t
PL/1.
Para completar la sentencia es necesaria una clausula, la cual especifica los datos
sobre los que debe actuar la sentencia, o proporcionar mas detalles acerca de lo
que la sentencia debe hacer. Todas las clausulas comienzan con palabras clave
como: WHERE, FROM, INTO y HAVING.
SQL-92
SQL además de permitirnos consultas en la base de datos, contiene primitivas de
definición de tablas, actualización de la base de datos, definición de vistas de
otorgamiento de privilegios, etc. A continuación se muestran algunos aspectos del
estándar ANSI-SQL92.
Definición de esquemas
La definición de un esquema es simple. Solo se necesita identificar el comienzo de
la definición con una instrucción CREATE SCHEMA y una clausula adicional de
AUTHORIZATION y a continuación definir cada dominio, tabla, vista, etc., en el
esquema.
El dueño o propietario del esquema puede otorgar privilegios de acceso y
actualización de la base de datos definida en el esquema a otros usuarios.
Tipo de datos y dominio
Un dominio es el conjunto del cual toma sus valores una columna de una relación.
Según este concepto, los tipos de datos predefinidos son dominios.
Adicionalmente ANSI-SQL92 permite la definición de dominios por parte de los
usuarios.
NUMEROS EXACTOS
Integer Enteros
Small integer Enteros pequeños
Numeric p, e P: precisión: total de números o dígitos
en el numero
Decimal p, e Precisión y escala
7. NUMEROS APROXIMADOS
Real
Doublé precisión
Float
CADENA DE CARACTERES
Carácter Carácter
Character varying Carácter variable
CADENA DE BITS
Bit
Bit varying
FECHAS Y HORAS
Date Fecha
Time Hora
Timestamp Sello de tiempo
Timestamp con tiempo zonal
Time con tiempo zonal
INTERVALOS
Year-month Año-mes
Day-time Día-hora
8. Definición de dominios
Los tipos de datos con restricciones (constraints) y valores por defecto (default
values) se pueden combinar en la definición de dominios. Una definición de
dominio es un tipo de datos especializado que puede estar definido dentro de una
esquema y usado en la definición de columnas.
Por ejemplo:
CREATE DOMAIN IDENTIFICADOR NUMERIC (4) DEFAULT 0 CHECK
(VALUES IS NOT NULL)
Lo anterior expresa que un dominio llamado IDENTIFICADOR cuenta con las
siguientes características:
Su tipo de datos es numérico de cuatro dígitos
Su valor por defecto es cero
Nunca podrá ser nulo
Definición de tablas
Las tablas se definen en tres sencillos pasos:
Dar un nombre a la tabla
Definir cada columna, posiblemente incluyendo restricciones de columna
Definir las restricciones de la tabla
9. LA EVOLUCION DE ANSI-SQL
AÑO NOMBRE ALIAS COMENTARIO
1986 SQL-86 SQL-87 Primera publicación hecha por ANSI.
Confirmada por ISO en 1987.
1989 SQL-89 Revisión menor.
1992 SQL-92 SQL2 Revisión mayor.
1999 SQL:1999 SQL2000 Se agregaron expresiones regulares,
consultas recursivas (para relaciones
jerárquicas), triggers y algunas
características orientadas a objetos.
2003 SQL:2003 Introduce algunas características de
XML, cambios en las funciones,
estandarización del objeto sequence y
de las columnas auto numéricas.
2006 SQL:2006 ISO/IEC 9075-14:2006 Define las
maneras en las cuales el SQL se puede
utilizar conjuntamente con XML. Define
maneras importar y guardar datos XML
en una base de datos SQL,
manipulándolos dentro de la base de
datos y publicando el XML y los datos
SQL convencionales en forma XML.
Además, proporciona facilidades que
permiten a las aplicaciones integrar
dentro de su código SQL el uso de
XQuery, lenguaje de consulta XML
publicado por el W3C (World Wide Web
Consortium) para acceso concurrente a
datos ordinarios SQL y documentos
XML.
2008 SQL:2008 Permite el uso de la cláusula ORDER
BY fuera de las definiciones de los
cursores. Incluye los disparadores del
tipo INSTEAD OF. Añade la sentencia
TRUNCATE.
En la tabla anterior se muestran algunas de las variaciones que se le han hecho al
lenguaje de SQL a lo largo de los años y de las versiones que han surgido. Como
se puede observar son cambios muy pequeños, aunque significativos, ya que
aportan nuevas sentencias, soportan un mayor tipo de datos, y el lenguaje tanto
de manipulación DML como de definición de datos DDL han crecido a través del
tiempo.
10. Aún cuando se describe a SQL como un lenguaje de consulta, en realidad es
mucho más que eso, ya que dispone de otras funciones además de las de
consultar una Base de Datos. Entre éstas se incluyen las relativas a:
definición de datos.
manipulación de los datos de la Base de Datos.
especificar restricciones de acceso y seguridad.
Cada función tiene su conjunto propio de instrucciones, que se expresan
respectivamente en:
Lenguaje de Definición de Datos (LDD)
Lenguaje de Manipulación de Datos (LMD)
Lenguaje de Control de Datos (LCD)
COMANDOS DDL
COMANDO DESCRIPCION
CREATE Utilizado para crear nuevas tablas,
campos e índices
DROP Empleado para eliminar tablas e índice
ALTER Utilizado para modificar las tablas
agregando campos.
TRUNCATE Trunca todo el contenido de una tabla
A continuación se muestran los comandos con sus respectivas sintaxis así como
algunos ejemplos para dejar más clara la explicación.
CREATE
CREATE TABLE Nombre-Tabla
(Definición de columna [, definición de columna
...
)
Por ejemplo:
CREATE TABLE Alumnos ( Nombre CHAR(35), Sexo CHAR(1), Telefono
INTEGER, FechaNac DATE, CuotaMes DECIMAL(7,2) )
11. ALTER
ALTER TABLE Nombre-Tabla ADD columna tipo de dato
Por ejemplo:
ALTER TABLE Prueba ADD Descuento SMALLINT
DROP
DROP TABLE
También es posible eliminar en cualquier momento una tabla existente. Se pierde
todo.
DROP TABLE Nombre-Tabla
Por ejemplo:
DROP TABLE Pruebas
TRUCATE
Por ejemplo:
TRUNCATE TABLE ''TABLA_NOMBRE1''
COMANDOS DML
Comando INSERT
Este comando se utiliza para agregar uno o más registros (filas). Se puede utilizar
para efectuar dos tipos de operaciones:
Insertar un único registro
Insertar en una tabla los registros contenidos en otra.
• Comando INSERT para un registro:
12. INSERT INTO destino [(campo1 [, campo2[, ...]])]VALUES (valor1[, valor2[,
...])
• Comando INSERT para insertar más de un registro:
INSERT INTO destino {[(campo1[, campo2[, ...]])] selección
ARGUMENTO DESCRIPCION
Destino El nombre de la tabla donde se van a
añadir registros.
Campo N Los nombres de los campos donde se
van a añadir los datos, si está a
continuación del argumento destino, o
los nombres de los campos de donde
se obtienen los datos, si está a
continuación de un argumento origen.
Selección Es una expresión de selección que
debe tener el mismo número de
columnas y tipos que las columnas a
insertar. Los registros que de cómo
resultado la expresión SELECT serán
agregados en la tabla destino (ver
comando SELECT). Esto permite
insertar en una tabla varios registros.
Valor N Los valores que se van a insertar en los
campos específicos del nuevo registro.
Cada valor se inserta en el campo que
corresponde a la posición del valor en
la lista: valor1 se inserta en campo1 del
nuevo registro, valor2 dentro de
campo2, y así sucesivamente. Debe
separar los valores con una coma y
escribir los campos de texto entre
apóstrofos ( „ ) y las fechas indicarlas
en formato dd/mm/aa y entre
apóstrofos.
Ejemplo INSERT
INSERT INTO articulos (art,Descripcion,precio,Stock_max,Stock_min) VALUES (5,
'Vino x1L', 1.5,90,20);
En este ejemplo se agrega un nuevo registro a la tabla artículos, pero en el campo
cantidad no se pone ningún valor (Valor nulo).
13. Comando UPDATE
Para cambiar uno o más valores de campos de registros en una tabla, se utiliza el
comando UPDATE.
Su sintaxis es:
UPDATE tabla SET campo1 = valor1 [, campo2 = valor2 [, ...]] WHERE
condición;
ARGUMENTO DESCRIPCION
Tabla Nombre de la tabla cuyos datos desea
modificar.
Campo N Nombre del campo cuyo valor se
actualizará.
Valor N Expresión cuyo valor tomara el campo
N. La expresión debe ser del tipo del
campo.
Condición Una expresión que determina qué
registros se actualizarán. Sólo se
actualizan los registros que satisfacen
la expresión.
Ejemplo UPDATE
1) UPDATE artículos SET precio = precio * 1.2;
Esta instrucción incrementa los precios de todos los artículos en un 20 por ciento.
2) UPDATE artículos SET precio = precio * 1.2
WHERE precio <2;
La ejecución de este comando incrementa los precios de los artículos cuyo precio
es menor a $2, en un 20 por ciento.
14. Comando DELETE
El comando DELETE se utiliza para borrar uno o varios registros de una tabla
particular.
Su sintaxis es:
DELETE FROM tabla [WHERE condicion];
ARGUMENTO DESCRIPCION
Tabla Nombre de la tabla cuyos registros se
van a eliminar
Condición Expresión que determina que registros
se van a eliminar
En caso de omitir la condición WHERE se eliminaran todos los registros.
Ejemplo de DELETE
DELETE FROM proveedores;
La ejecución de este comando producirá que la tabla proveedores quede vacía.
DELETE FROM proveedores WHERE prov=200;
Este comando elimina el registro correspondiente al proveedor número 200.
Comando SELECT
El comando más usado en SQL es la instrucción SELECT, que se utiliza para
recuperar datos de diferentes tablas de una base de datos.
Consta de seis cláusulas: las dos primeras (SELECT y FROM) obligatorias y las
cuatro restantes, opcionales.
Su sintaxis es:
SELECT [ALL|DISTINCT] { * | expr_columna_1 [AS c_alias_1] [, expr_columna_2
[AS c_alias_2][,...]]}
FROM nombre_tabla_1 [t_alias_1][, table_name_n [t_alias_n][,...]]
[WHERE condicionWhere]
[GROUP BY expr_columna_group1 [,expr_columna_group2] [,...]]
15. [HAVING condicionHaving]] [{UNION [ALL] | INTERSECT | EXCEPT} SELECT ...]
[ORDER BY nombre_campo_i1 [ASC|DESC] [, nombre_campo_j1
[ASC|DESC]][,...]]];
La cláusula SELECT lista los datos a recuperar por la sentencia SELECT. Los
elementos o datos a seleccionar, pueden ser columnas de la base de datos o
columnas a calcular por SQL cuando efectúa la consulta.
Su sintaxis es:
SELECT [ALL|DISTINCT] { * | expr_columna_1 [AS c_alias_1] [,
expr_columna_2 [AS c_alias_2][,...]]}
ARGUMENTO DESCRIPCION
ALL Si hay registros repetidos en la consulta
también son devueltos.
DISTINCT Si hay registros repetidos en la
consulta, solo devuelve uno de los
repetidos. Valor por omision.
* La tabla resultante de la consulta tendrá
todas las columnas de las tablas
involucradas.
Expr_columna_N Define una columna, que será parte del
resultado de la consulta, puede ser el
nombre de una columna de las tablas
participantes en la consulta, o una
expresión que la involucre (por Ej.:
Precio * 2). También puede ser una
función agregada de SQL
c_alias_N Nombres que se van a utilizar como
encabezados de columnas en la tabla
resultante, en vez de los nombres de
las expresiones de columnas.
Clausula FROM
La cláusula FROM lista las tablas que contienen los datos a recuperar por la
consulta.
La sintaxis de esta cláusula es:
FROM nombre_tabla_1 [t_alias_1][, nombre_tabla _n [t_alias_n][,...]]
16. Por ejemplo:
Devolver un listado de artículos con el número, Descripción y precio de cada
artículo.
SELECT art, Desc, precio FROM articulos;
Cláusula WHERE
En cláusula WHERE se define la condicion que deben cumplir las filas o registros
de datos, que estaran en el resultado de la consulta.
Su sintaxis es:
WHERE condicionWhere
Por ejemplo:
Devolver un listado con todos los campos de los artículos a reponer.
SELECT * FROM articulos WHERE stock_min > cant
OPERADORES DE COMPARACIÓN
• < , >, <>, <=, >=, =
• BETWEEN: Utilizado para especificar un intervalo de valores.
Utilizado en tipos String, numéricos y de fechas.
• LIKE: Utilizado en la comparación de un patrón. El carácter “%” se
utiliza como comodín y el “_”, de comodín posicional
• IN: Utilizado para saber si el valor de un campo se encuentra en una
lista de valores
• IS: Para verificar si un atributo tiene un valor nulo (NULL)
En una condicion, se pueden cotejar con operadores de comparación, columnas
con otras columnas o con expresiones del tipo de la columna, las expresiones se
pueden conectar con otras por medio de operadores lógicos.
OPERADORES LÓGICOS
• AND Concatena dos condiciones con Y
• OR Vincula dos condiciones con O
• NOT Niega la expresion que precede
• XOR Enlaza dos condiciones con O Exclusiva
17. Por ejemplo:
SELECT * FROM articulos WHERE desc like „A%‟ AND desc like „%K‟
Listados de artículos cuya descripción empieza con la letra A y termina con la letra
K
SELECT * FROM articulos WHERE stock_min < 15 OR stock_max > 40
Devuelve los artículos cuyo stock mínimo sea menor a 15 o el máximo sea mayor
a 40
FUNCIONES AGREGADAS
SQL proporciona funciones agregadas que toma el nombre de una columna como
argumento. El valor del operador agregado se calcula sobre todos los valores de la
columna especificada en la tabla completa.
Estas funciones se pueden combinar con la cláusula GROUP BY que se vera mas
adelante.
Las funciones agregadas son:
o AVG (Calcula el promedio)
o COUNT (Cuenta la cantidad de registros)
o SUM (Suma los valores de una columna)
o MIN (Calcula el mínimo valor de una columna)
o MAX (Calcula el máximo valor de una columna)
Cláusula ORDER BY
Ordena los resultados de la consulta, en base a los datos de una o más columnas.
Si se omite, los resultados saldrán ordenados conforme estan alojados fisicamente
Su sintaxis es:
ORDER BY expresión_orden1 [ASC|DESC] [, expresión_orden2
[ASC|DESC] ][,...];
Por ejemplo:
SELECT art AS Numero_Art, Pv.prov AS Numero_prov,
Nombre, Precio_Venta
18. FROM Proveedores Pd, Provee Pv
WHERE Pd.prov = Pv.prov
ORDER BY art
Esta consulta devuelve un listado con los artículos, que proveedores lo
suministran y su respectivo precio de venta. El listado esta ordenado
ascendentemente por el número de artículo. También se puede observar la
utilización de alias tanto en el nombre de tablas como en el de columnas.
Cláusula GROUP BY
La cláusula GROUP BY especifica una consulta sumaria. En vez de producir una
fila de resultados por cada fila de datos de la base de datos, agrupa todas las filas
similares y luego produce una fila sumaria de resultados para cada grupo.
Su sintaxis:
[GROUP BY expr_columna_group1 [,expr_columna_group2] [,...]]
Donde:
expr_columna_groupN deben coincidir con las expresión de columna utilizada en
la cláusula SELECT.
Cláusula Having
La cláusula HAVING trabaja muy similarmente a la cláusula WHERE, y se utiliza
para considerar sólo aquellos grupos que satisfagan la condición dada en la
cláusula HAVING.
Su sintaxis es:
HAVING condicionHaving
Donde condicionHaving es la condición que deben cumplir los grupos. Las
expresiones permitidas en la cláusula HAVING deben involucrar funciones
agregadas
Por ejemplo:
Retornar un listado con los números de artículos y el precio promedio de venta de
los artículos cuyo precio promedio de venta de los proveedores es menor a $2.
SELECT art, AVG(precio_venta)
19. FROM Provee
GROUP BY art
Having AVG(precio_venta) < 2;
Reuniones (JOIN)
Se utilizan para vincular dos o más tablas, y proporcionar información como si se
tratara de una sola.
Para ello, se expresan los nombres de las tablas en la cláusula FROM y su
sintaxis es:
FROM Tabla1, Tabla2
Además, en la cláusula WHERE se escribe la ecuación que indica, a través de que
atributos se vinculan
WHERE Tabla1.Atributo k = Tabla2.Atributo j
Mostrar el nombre del cliente y el de los artículos que ha comprado.
- SELECT clientes.nombre, articulos.desc
- FROM clientes, compran, articulos
- WHERE clientes.cli = compran.cli
- AND compran.art = articulos.art
- SELECT C.nombre, A.desc
- FROM clientes C, compran C1, articulos A
- WHERE C.cli = C1.cli
- AND C1.art = A.art
20. SUBQUERY
Condiciones
– Entrega una sola columna
– Esta debe proporcionar un valor compatible con el usado en la cláusula
WHERE ó HAVING
– En ocasiones, puede entregar una lista de valores, en cuyo caso, los
comparadores a usar son: IN, ANY, ALL
– Se pueden anidar hasta 16 subqueries
– Ésta facilidad puede sustituir al JOIN en algunos casos
Comparadores especiales
IN Se usa para comparar con igualdad una serie de valores
ANY Se aplica para comparar con CUALESQUIER valor de una lista
ALL Se usa para comparar con TODOS los valores de una serie
Estas son las principales características con las que cuenta el lenguaje ANSI SQL,
su uso y las ventajas que nos ofrece si lo usamos.
21. CONCLUSION
El lenguaje de consulta estructurado de ANSI nos permite manejar nuestra base
de datos de manera rápida y confiable, con la seguridad de recibir los informes tal
y como sean requeridos por los usuarios.
Con la ayuda de los sublenguajes que contienen las distintas versiones se nos
hace mas practico el uso de esta herramienta. El uso de los comandos DML,
conforman la base para una preparación adecuada, en la construcción de
aplicaciones con BD. Las aplicaciones manejan comandos de insert, delete,
update y select, contra la base de datos.
Con lo anteriormente mencionado, podemos darnos cuenta que aun pasando los
años este lenguaje es y seguirá siendo una ayuda incomparable para el manejo de
la base de datos, y también podemos decir que aunque sí, ha tenido diversas
variaciones a lo largo de los años, todas han sido para mejorar el rendimiento del
mismo.