SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
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
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.
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.
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.
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 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
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
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
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.
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) )
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:
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).
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.
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] [,...]]
[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][,...]]
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
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
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)
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
   –   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.
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.
FUENTES DE INFORMACIÓN




–   www.monografías.com
–   www.abcdatos.com
–   www.espanol.yahoo.com
–   www.ibm.com

Más contenido relacionado

La actualidad más candente

Fundamentos de Telecomunicaciones Unidad 2 medios de transmisión y caracterís...
Fundamentos de Telecomunicaciones Unidad 2 medios de transmisión y caracterís...Fundamentos de Telecomunicaciones Unidad 2 medios de transmisión y caracterís...
Fundamentos de Telecomunicaciones Unidad 2 medios de transmisión y caracterís...José Antonio Sandoval Acosta
 
Funciones de un DBA y un operador de BD - Tecnologías de website ORAA
Funciones de un DBA y un operador de BD - Tecnologías de website ORAAFunciones de un DBA y un operador de BD - Tecnologías de website ORAA
Funciones de un DBA y un operador de BD - Tecnologías de website ORAAAndy Sanchez Agramonte
 
Requerimientos funcionales y no funcionales de la aplicación
Requerimientos funcionales y no funcionales de la aplicaciónRequerimientos funcionales y no funcionales de la aplicación
Requerimientos funcionales y no funcionales de la aplicaciónYare LoZada
 
Segmetación de instrucciones
Segmetación de instruccionesSegmetación de instrucciones
Segmetación de instruccionesLely
 
Funciones y Componente de un Sistema de Gestión de Base de Datos
Funciones y Componente de un Sistema de Gestión de Base de DatosFunciones y Componente de un Sistema de Gestión de Base de Datos
Funciones y Componente de un Sistema de Gestión de Base de DatosJesus Parra
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMicky Jerzy
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPUIvan Porras
 
Implementacion de bases de datos en mysql
Implementacion de bases de datos en mysqlImplementacion de bases de datos en mysql
Implementacion de bases de datos en mysqlPipe Muñoz
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosjosecuartas
 
Cuadro comparativo de manejadores de la base de datos
Cuadro comparativo de manejadores de la base de datos Cuadro comparativo de manejadores de la base de datos
Cuadro comparativo de manejadores de la base de datos Maria Garcia
 
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESSINTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESSitsl
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos josecuartas
 

La actualidad más candente (20)

Fundamentos de Telecomunicaciones Unidad 2 medios de transmisión y caracterís...
Fundamentos de Telecomunicaciones Unidad 2 medios de transmisión y caracterís...Fundamentos de Telecomunicaciones Unidad 2 medios de transmisión y caracterís...
Fundamentos de Telecomunicaciones Unidad 2 medios de transmisión y caracterís...
 
Funciones de un DBA y un operador de BD - Tecnologías de website ORAA
Funciones de un DBA y un operador de BD - Tecnologías de website ORAAFunciones de un DBA y un operador de BD - Tecnologías de website ORAA
Funciones de un DBA y un operador de BD - Tecnologías de website ORAA
 
Casos de uso
Casos de usoCasos de uso
Casos de uso
 
Requerimientos funcionales y no funcionales de la aplicación
Requerimientos funcionales y no funcionales de la aplicaciónRequerimientos funcionales y no funcionales de la aplicación
Requerimientos funcionales y no funcionales de la aplicación
 
Segmetación de instrucciones
Segmetación de instruccionesSegmetación de instrucciones
Segmetación de instrucciones
 
Funciones y Componente de un Sistema de Gestión de Base de Datos
Funciones y Componente de un Sistema de Gestión de Base de DatosFunciones y Componente de un Sistema de Gestión de Base de Datos
Funciones y Componente de un Sistema de Gestión de Base de Datos
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWARE
 
Ejercicios uml
Ejercicios umlEjercicios uml
Ejercicios uml
 
UML
UMLUML
UML
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPU
 
Bases de datos orientadas a objetos
Bases de datos orientadas a objetosBases de datos orientadas a objetos
Bases de datos orientadas a objetos
 
Implementacion de bases de datos en mysql
Implementacion de bases de datos en mysqlImplementacion de bases de datos en mysql
Implementacion de bases de datos en mysql
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datos
 
UNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICAUNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICA
 
Metodologia rup
Metodologia rupMetodologia rup
Metodologia rup
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
Lenguaje SQL
Lenguaje SQLLenguaje SQL
Lenguaje SQL
 
Cuadro comparativo de manejadores de la base de datos
Cuadro comparativo de manejadores de la base de datos Cuadro comparativo de manejadores de la base de datos
Cuadro comparativo de manejadores de la base de datos
 
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESSINTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos
 

Destacado

10 sistemas gestores de base de datos
10 sistemas gestores de base de datos10 sistemas gestores de base de datos
10 sistemas gestores de base de datosGusttavo Nipas
 
Motores de bases de datos
Motores de bases de datosMotores de bases de datos
Motores de bases de datosstill01
 
SQL 2016 Mejoras en InMemory OLTP y Column Store Index
SQL 2016 Mejoras en InMemory OLTP y Column Store IndexSQL 2016 Mejoras en InMemory OLTP y Column Store Index
SQL 2016 Mejoras en InMemory OLTP y Column Store IndexEduardo Castro
 
Actividad extra ansi sql
Actividad extra ansi sqlActividad extra ansi sql
Actividad extra ansi sqlKARY
 
Muestreo estadístico basado en ANSI
Muestreo estadístico basado en ANSIMuestreo estadístico basado en ANSI
Muestreo estadístico basado en ANSINombre Apellidos
 
188513832 ansi-asq-z1-9-2003-百度文库
188513832 ansi-asq-z1-9-2003-百度文库188513832 ansi-asq-z1-9-2003-百度文库
188513832 ansi-asq-z1-9-2003-百度文库andik002
 
Diagrama de casos y usos hospital i santa teresita de jesus[2]
Diagrama de casos y usos hospital i santa teresita de jesus[2]Diagrama de casos y usos hospital i santa teresita de jesus[2]
Diagrama de casos y usos hospital i santa teresita de jesus[2]JENHITZA
 
Introducción a los Modelos De Datos
Introducción a los Modelos De DatosIntroducción a los Modelos De Datos
Introducción a los Modelos De Datosesacre
 
Bases de Datos NoSQL - Riak
Bases de Datos NoSQL - Riak Bases de Datos NoSQL - Riak
Bases de Datos NoSQL - Riak Andrei Amador
 

Destacado (20)

10 sistemas gestores de base de datos
10 sistemas gestores de base de datos10 sistemas gestores de base de datos
10 sistemas gestores de base de datos
 
Motores de bases de datos
Motores de bases de datosMotores de bases de datos
Motores de bases de datos
 
SQL 2016 Mejoras en InMemory OLTP y Column Store Index
SQL 2016 Mejoras en InMemory OLTP y Column Store IndexSQL 2016 Mejoras en InMemory OLTP y Column Store Index
SQL 2016 Mejoras en InMemory OLTP y Column Store Index
 
Actividad extra ansi sql
Actividad extra ansi sqlActividad extra ansi sql
Actividad extra ansi sql
 
Ansi Sql
Ansi SqlAnsi Sql
Ansi Sql
 
Indice Iso 9001
Indice Iso 9001Indice Iso 9001
Indice Iso 9001
 
Historia del lenguaje sql
Historia del lenguaje sqlHistoria del lenguaje sql
Historia del lenguaje sql
 
Historia del sql
Historia del sqlHistoria del sql
Historia del sql
 
Historia del sql
Historia del sqlHistoria del sql
Historia del sql
 
Sqlite3 ejercicio
Sqlite3 ejercicioSqlite3 ejercicio
Sqlite3 ejercicio
 
21 casos de cooperativas de viviendas
21 casos de cooperativas de viviendas21 casos de cooperativas de viviendas
21 casos de cooperativas de viviendas
 
Muestreo estadístico basado en ANSI
Muestreo estadístico basado en ANSIMuestreo estadístico basado en ANSI
Muestreo estadístico basado en ANSI
 
Versiones de sql
Versiones de sqlVersiones de sql
Versiones de sql
 
188513832 ansi-asq-z1-9-2003-百度文库
188513832 ansi-asq-z1-9-2003-百度文库188513832 ansi-asq-z1-9-2003-百度文库
188513832 ansi-asq-z1-9-2003-百度文库
 
Ansi sql
Ansi sqlAnsi sql
Ansi sql
 
Diagrama de casos y usos hospital i santa teresita de jesus[2]
Diagrama de casos y usos hospital i santa teresita de jesus[2]Diagrama de casos y usos hospital i santa teresita de jesus[2]
Diagrama de casos y usos hospital i santa teresita de jesus[2]
 
Introducción a los Modelos De Datos
Introducción a los Modelos De DatosIntroducción a los Modelos De Datos
Introducción a los Modelos De Datos
 
SQLite3
SQLite3SQLite3
SQLite3
 
Mapa conceptual sql
Mapa conceptual sqlMapa conceptual sql
Mapa conceptual sql
 
Bases de Datos NoSQL - Riak
Bases de Datos NoSQL - Riak Bases de Datos NoSQL - Riak
Bases de Datos NoSQL - Riak
 

Similar a ANSI SQL

Similar a ANSI SQL (20)

Ansi Sql Db Elaboraron Todos Eq8
Ansi Sql Db Elaboraron Todos Eq8Ansi Sql Db Elaboraron Todos Eq8
Ansi Sql Db Elaboraron Todos Eq8
 
Ansi Sql
Ansi SqlAnsi Sql
Ansi Sql
 
Act4 screencast-bdatos cmch
Act4 screencast-bdatos cmchAct4 screencast-bdatos cmch
Act4 screencast-bdatos cmch
 
Ansi Sql
Ansi SqlAnsi Sql
Ansi Sql
 
Ansi Sql
Ansi SqlAnsi Sql
Ansi Sql
 
introduccion a sql
introduccion a sql introduccion a sql
introduccion a sql
 
Base de datos
Base de datosBase de datos
Base de datos
 
Datos
DatosDatos
Datos
 
Datos
DatosDatos
Datos
 
SQL Server
SQL ServerSQL Server
SQL Server
 
Modulo2 tema 3-lenguaje sql-ddl
Modulo2 tema 3-lenguaje sql-ddlModulo2 tema 3-lenguaje sql-ddl
Modulo2 tema 3-lenguaje sql-ddl
 
Colegio de bachillerato cariamanga
Colegio de bachillerato cariamangaColegio de bachillerato cariamanga
Colegio de bachillerato cariamanga
 
Mi lenguaje preferido- SQL
Mi lenguaje preferido- SQLMi lenguaje preferido- SQL
Mi lenguaje preferido- SQL
 
SQL (Structured Query Language): Informe de Lectura Unidad 3
SQL (Structured Query Language): Informe de Lectura Unidad 3SQL (Structured Query Language): Informe de Lectura Unidad 3
SQL (Structured Query Language): Informe de Lectura Unidad 3
 
Sql
SqlSql
Sql
 
Introducci n sql
Introducci n sqlIntroducci n sql
Introducci n sql
 
Versiones Microsoft SQL
Versiones Microsoft SQLVersiones Microsoft SQL
Versiones Microsoft SQL
 
Clase de investigacion presentacion 1
Clase de investigacion presentacion 1Clase de investigacion presentacion 1
Clase de investigacion presentacion 1
 
6. sql structured query language
6. sql   structured query language6. sql   structured query language
6. sql structured query language
 
6. sql structured query language
6. sql   structured query language6. sql   structured query language
6. sql structured query language
 

Más de Martha

The Proyect Management
The Proyect ManagementThe Proyect Management
The Proyect ManagementMartha
 
Administracion de Proyectos
Administracion de ProyectosAdministracion de Proyectos
Administracion de ProyectosMartha
 
Conceptos Administración de Proyectos
Conceptos Administración de ProyectosConceptos Administración de Proyectos
Conceptos Administración de ProyectosMartha
 
L1_U1 Mapa Mental
L1_U1 Mapa MentalL1_U1 Mapa Mental
L1_U1 Mapa MentalMartha
 
Analysis Services
Analysis ServicesAnalysis Services
Analysis ServicesMartha
 
Exposición Enterprise Security
Exposición Enterprise SecurityExposición Enterprise Security
Exposición Enterprise SecurityMartha
 
Cuadro Comparativo
Cuadro ComparativoCuadro Comparativo
Cuadro ComparativoMartha
 
Cuadro Comparativo
Cuadro ComparativoCuadro Comparativo
Cuadro ComparativoMartha
 
Bd_Ac1_Eq6_Anteproyecto
Bd_Ac1_Eq6_AnteproyectoBd_Ac1_Eq6_Anteproyecto
Bd_Ac1_Eq6_AnteproyectoMartha
 
Bd p1 eq6_anteproyecto
Bd p1 eq6_anteproyectoBd p1 eq6_anteproyecto
Bd p1 eq6_anteproyectoMartha
 
Bd p1 eq6_anteproyecto
Bd p1 eq6_anteproyectoBd p1 eq6_anteproyecto
Bd p1 eq6_anteproyectoMartha
 
Bd p1 eq6_anteproyecto
Bd p1 eq6_anteproyectoBd p1 eq6_anteproyecto
Bd p1 eq6_anteproyectoMartha
 
Que es sql server express 2008
Que es sql server express 2008Que es sql server express 2008
Que es sql server express 2008Martha
 
Que es sql server express 2008
Que es sql server express 2008Que es sql server express 2008
Que es sql server express 2008Martha
 
Que es sql server express 2008
Que es sql server express 2008Que es sql server express 2008
Que es sql server express 2008Martha
 
Ejemplo de Normalización
Ejemplo de Normalización Ejemplo de Normalización
Ejemplo de Normalización Martha
 
Definición de Integridad
Definición de IntegridadDefinición de Integridad
Definición de IntegridadMartha
 

Más de Martha (20)

The Proyect Management
The Proyect ManagementThe Proyect Management
The Proyect Management
 
Administracion de Proyectos
Administracion de ProyectosAdministracion de Proyectos
Administracion de Proyectos
 
Conceptos Administración de Proyectos
Conceptos Administración de ProyectosConceptos Administración de Proyectos
Conceptos Administración de Proyectos
 
L1_U1 Mapa Mental
L1_U1 Mapa MentalL1_U1 Mapa Mental
L1_U1 Mapa Mental
 
L1_U1
L1_U1L1_U1
L1_U1
 
Analysis Services
Analysis ServicesAnalysis Services
Analysis Services
 
Exposición Enterprise Security
Exposición Enterprise SecurityExposición Enterprise Security
Exposición Enterprise Security
 
Cuadro Comparativo
Cuadro ComparativoCuadro Comparativo
Cuadro Comparativo
 
Cuadro Comparativo
Cuadro ComparativoCuadro Comparativo
Cuadro Comparativo
 
Sql
SqlSql
Sql
 
Bd_Ac1_Eq6_Anteproyecto
Bd_Ac1_Eq6_AnteproyectoBd_Ac1_Eq6_Anteproyecto
Bd_Ac1_Eq6_Anteproyecto
 
Bd p1 eq6_anteproyecto
Bd p1 eq6_anteproyectoBd p1 eq6_anteproyecto
Bd p1 eq6_anteproyecto
 
Bd p1 eq6_anteproyecto
Bd p1 eq6_anteproyectoBd p1 eq6_anteproyecto
Bd p1 eq6_anteproyecto
 
Bd p1 eq6_anteproyecto
Bd p1 eq6_anteproyectoBd p1 eq6_anteproyecto
Bd p1 eq6_anteproyecto
 
Que es sql server express 2008
Que es sql server express 2008Que es sql server express 2008
Que es sql server express 2008
 
Que es sql server express 2008
Que es sql server express 2008Que es sql server express 2008
Que es sql server express 2008
 
Que es sql server express 2008
Que es sql server express 2008Que es sql server express 2008
Que es sql server express 2008
 
Ejemplo de Normalización
Ejemplo de Normalización Ejemplo de Normalización
Ejemplo de Normalización
 
Definición de Integridad
Definición de IntegridadDefinición de Integridad
Definición de Integridad
 
SMBD
SMBDSMBD
SMBD
 

ANSI SQL

  • 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.
  • 22. FUENTES DE INFORMACIÓN – www.monografías.com – www.abcdatos.com – www.espanol.yahoo.com – www.ibm.com