ansi sql db elaboraron todos eq8

26
UNIVERSIDAD VERACRUZANA CATEDRÁTICO: CARLOS ARTURO TORRES GASTELU EQUIPO NUMERO 8 INTEGRANTES: CARRION MENDIOLA ALINA LETICIA HERRERA NIETO MAYRA YAZMIN MONTALVO SACRAMENTO AMAYRANI SAMANTAHA RIVERA MENDEZ SANDRA GRUPO: C002 SISTEMAS COMPUTACIONALES ADMINISTRATIVOS ANSI-SQL Y SUS VARIACIONES EE: BASE DE DATOS 26 DE OCTUBRE DEL 2009 Facultad de

Upload: alinacarrion

Post on 26-Jun-2015

1.146 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ansi Sql Db Elaboraron Todos Eq8

UNIVERSIDAD VERACRUZANA

CATEDRÁTICO:

CARLOS ARTURO TORRES GASTELU

EQUIPO NUMERO 8

INTEGRANTES:

CARRION MENDIOLA ALINA LETICIA HERRERA NIETO MAYRA YAZMIN MONTALVO SACRAMENTO AMAYRANI SAMANTAHA RIVERA MENDEZ SANDRA

GRUPO:

C002

SISTEMAS COMPUTACIONALES ADMINISTRATIVOS

ANSI-SQL Y SUS VARIACIONES

EE:

BASE DE DATOS

26 DE OCTUBRE DEL 2009

Facultad de Administración

Page 2: Ansi Sql Db Elaboraron Todos Eq8

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.

Page 3: Ansi Sql Db Elaboraron Todos Eq8

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.

Page 4: Ansi Sql Db Elaboraron Todos Eq8

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.

Page 5: Ansi Sql Db Elaboraron Todos Eq8

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.

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

Page 6: Ansi Sql Db Elaboraron Todos Eq8

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 EXACTOSInteger EnterosSmall integer Enteros pequeñosNumeric p, e P: precisión: total de números o digitos

en el numeroDecimal p, e Precisión y escala

NUMEROS APROXIMADOSRealDoublé precisión Float

CADENA DE CARACTERESCarácter Carácter

Page 7: Ansi Sql Db Elaboraron Todos Eq8

Character varying Carácter variable

CADENA DE BITSBitBit varying

FECHAS Y HORASDate FechaTime HoraTimestamp Sello de tiempoTimestamp con tiempo zonalTime con tiempo zonal

INTERVALOSYear-month Año-mesDay-time Día-hora

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

Page 8: Ansi Sql Db Elaboraron Todos Eq8

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

LA EVOLUCION DE ANSI-SQL

AÑO NOMBRE ALIAS COMENTARIO1986 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.

Page 9: Ansi Sql Db Elaboraron Todos Eq8

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.

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 DESCRIPCIONCREATE Utilizado para crear nuevas tablas,

campos e índicesDROP Empleado para eliminar tablas e índiceALTER Utilizado para modificar las tablas

agregando campos.TRUNCATE Trunca todo el contenido de una tabla

Page 10: Ansi Sql Db Elaboraron Todos Eq8

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) )

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

Page 11: Ansi Sql Db Elaboraron Todos Eq8

TRUCATE

Por ejemplo:

TRUNCATE TABLE ''TABLA_NOMBRE1''

COMANDOS DML

Comando INSERT

Este comando se utiliza para agregar uno o mas 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:

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 DESCRIPCIONDestino 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.

Page 12: Ansi Sql Db Elaboraron Todos Eq8

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).

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 DESCRIPCIONTabla 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 campoN.

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 articulos SET precio = precio * 1.2;

Page 13: Ansi Sql Db Elaboraron Todos Eq8

Esta instrucción incrementa los precios de todos los artículos en un 20 por ciento.

2) UPDATE articulos 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.

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 DESCRIPCIONTabla Nombre de la tabla cuyos registros se van

a eliminarCondició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.

Page 14: Ansi Sql Db Elaboraron Todos Eq8

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] [,...]]

[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 DESCRIPCIONALL 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.

Page 15: Ansi Sql Db Elaboraron Todos Eq8

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][,...]]

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.

Page 16: Ansi Sql Db Elaboraron Todos Eq8

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

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] ][,...];

Page 17: Ansi Sql Db Elaboraron Todos Eq8

Por ejemplo:

SELECT art AS Numero_Art, Pv.prov AS Numero_prov,

Nombre, Precio_Venta

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:

Page 18: Ansi Sql Db Elaboraron Todos Eq8

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)

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

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

Page 19: Ansi Sql Db Elaboraron Todos Eq8

– 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.

Page 20: Ansi Sql Db Elaboraron Todos Eq8

CONCLUSION

Como vimos en este apartado, 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.

Page 21: Ansi Sql Db Elaboraron Todos Eq8

FUENTES DE INFORMACIÓN

– www.monografías.com– www.abcdatos.com– www.espanol.yahoo.com– www.ibm.com – USO DEL SQL PARA EL MANEJO DE BASES DE DATOS– Dpto. de Organización y Estructura de la Información (EUI-UPM)

Asignatura de Bases de Datos Pedro Pablo Alarcón Cavero