Vous êtes sur la page 1sur 7

ADMINISTRACION DE BASES DE DATOS EN ORACLE

ING. ROGER CALDERON MORENO


1

SQL LENGUAJE ESTRUCTURADO DE CONSULTA


El nacimiento del lenguaje SQL data de 1970 cuando E. F. Codd publica su libro: "Un modelo de datos
relacional para grandes bancos de datos compartidos". Ese libro dictara las directrices de las bases de
datos relacionales. Apenas dos aos despus IBM (para quien trabajaba Codd) utiliza las directrices de Codd
para crear el Standard English Query Language (Lenguaje Estndar Ingls para Consultas) al que se le
llam SEQUEL. Ms adelante se le asignaron las siglas SQL (Standard Query Language, lenguaje estndar
de consulta) aunque en ingls se siguen pronunciando secuel. En espaol se le llama esecuele.


En 1979 Oracle presenta la primera implementacin comercial del lenguaje. Poco despus se converta en un
estndar en el mundo de las bases de datos avalado por los organismos ISO y ANSI. En el ao 1986 se toma
como lenguaje estndar por ANSI de los SGBD relacionales. Un ao despus lo adopta ISO, lo que convierte a
SQL en estndar mundial.


En 1989 aparece el estndar ISO (y ANSI) llamado SQL89 o SQL1. En 1992 aparece la nueva versin estndar
de SQL (a da de hoy sigue siendo la ms conocida) llamada SQL92. En 1999 se aprueba un nuevo SQL
estndar que incorpora mejoras que incluyen triggers, procedimientos, funciones, y otras caractersticas de
las bases de datos objeto-relacionales; dicho estndar se conoce como SQL99. El ltimo estndar es el del ao
2003 (SQL2003) que aade secuencias y sobre todo el soporte para XML (un nuevo estndar en formatos de
datos).
El ANSI SQL sufri varias revisiones y agregados a lo largo del tiempo:
Ao Nombre Alias Comentarios
1986 SQL-86 SQL-87 Primera publicacin hecha por ANSI. Confirmada por ISO en 1987.
1989 SQL-89 Revisin menor.
1992 SQL-92 SQL2 Revisin mayor.
1999 SQL:1999 SQL2000 Se agregaron expresiones regulares, consultas recursivas (para relaciones jerrquicas),
triggers y algunas caractersticas orientadas a objetos.
2003 SQL:2003 Introduce algunas caractersticas de XML, cambios en las funciones, estandarizacin del
objeto sequence y de las columnas autonumericas.

SELECT XMLELEMENT ( "Employee", X
MLATTRIBUTES ( 'http://www.w3.org/2001/XMLSchema' AS
"xmlns:xsi", 'http://www.oracle.com/Employee.xsd' AS
"xsi:nonamespaceSchemaLocation" ), XMLForest(empno, ename, sal)) AS
"result"
FROM scott.emp
WHERE deptno = 100;

<Employee xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xsi:nonamespaceSchemaLocation="http://www.oracl
e.com/Employee.xsd">
<EMPNO>1769</EMPNO>
<ENAME>John</ENAME>
<SAL>200000</SAL>
</Employee>
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, manipulndolos dentro de la base de datos y publicando el XML y los datos
SQL convencionales en forma XML. Adems, proporciona facilidades que permiten a las
aplicaciones integrar dentro de su cdigo 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.




ADMINISTRACION DE BASES DE DATOS EN ORACLE

ING. ROGER CALDERON MORENO
2
Funcionamiento de SQL












EL nombre Lenguaje estructurado de consulta es realmente y en cierta medida inapropiado. En primer lugar
SQL es mucho mas que una herramienta de consulta, el SQL se utiliza para controlar todas las funciones
bsicas que SGBD pueda proporcionar a sus usuarios. El SQL cuenta con los siguientes elementos:

DDL
DML
DCL
Seleccin o de consulta
Sql no es en s mismo un sistema de gestin de base datos, ni un producto autnomo. SQL es parte
integral de un sistema de gestin de base de datos, un lenguaje y una herramienta para comunicarse
con SGBD.
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 sobre los mismos.
Es un lenguaje declarativo de "alto nivel" o "de no procedimiento", que gracias a su fuerte base terica y su
orientacin al manejo de conjuntos de registros, y no a registros individuales, permite una alta productividad en
codificacin y la orientacin a objetos. De esta forma una sola sentencia puede equivaler a uno o ms
programas que utilizas en un lenguaje de bajo nivel orientado a registro. El SQL es un lenguaje declarativo. O
sea, que especifica qu es lo que se quiere y no cmo conseguirlo, por lo que una sentencia no
establece explcitamente un orden de ejecucin.
El orden de ejecucin interno de una sentencia puede afectar gravemente a la eficiencia del SGBD, por lo que
se hace necesario que ste lleve a cabo una optimizacin antes de la ejecucin de la misma. Muchas veces, el
uso de ndices acelera una instruccin de consulta, pero ralentiza la actualizacin de los datos. Dependiendo
del uso de la aplicacin, se priorizar el acceso indexado o una rpida actualizacin de la informacin. La
optimizacin difiere sensiblemente en cada motor de base de datos y depende de muchos factores.

Proceso de las instrucciones SQL

El proceso de una instruccin SQL es el siguiente:

1. Se analiza la instruccin. Para comprobar la sintaxis de la misma
2. Si es correcta se valora si los metadatos de la misma son correctos. Se comprueba esto en el
diccionario de datos.
3. Si es correcta, se optimiza, a fin de consumir los mnimos recursos posibles.
4. Se ejecuta la sentencia y se muestra el resultado al emisor de la misma.

Peticin SQL

Datos

SGBD
Base de
Datos
Figura 1
ADMINISTRACION DE BASES DE DATOS EN ORACLE

ING. ROGER CALDERON MORENO
3

Normas de escritura

En SQL no se distingue entre maysculas y minsculas. Da lo mismo como se escriba.
El final de una instruccin lo determina el signo del punto y coma.
Los comandos SQL (SELECT, INSERT,...) pueden ser partidos por espacios o saltos de lnea antes de
finalizar la instruccin.
Se pueden tabular lneas para facilitar la lectura si fuera necesario.
Los comentarios en el cdigo SQL comienzan por /* y terminan por */ (excepto en algunos SGBD).


SQL tiene diferentes funcionalidades dentro de la base datos como vemos en la figura 2. De aqu podemos
deducir que:


























SQL es un lenguaje de consultas interactivas.
SQL es un lenguaje de programacin de la base de datos
SQL es un lenguaje de administracin de la base de datos
SQL es un lenguaje Cliente/Servidor
SQL es un lenguaje de base de datos distribuidas
SQL es un lenguaje pasarela de base de datos.



Caractersticas de SQL

Independiente del proveedor del SGBD.
Portabilidad a travs de sistemas informticos.
Esta estandarizado.
Fundamento relacional.
Claridad y sencillez de su sintaxis.



Base de
Datos
SGBD
Internet
Servidor Aplicaciones Consultas de Usuarios Equipo de Desarrollo DBA
Figura 2
ADMINISTRACION DE BASES DE DATOS EN ORACLE

ING. ROGER CALDERON MORENO
4

DDL - Data Definition Language (Lenguaje de definicin de datos).

Permiten modificar las estructuras internas de la base de datos (tablas, vistas, ndices, trigger, usuarios, etc.).
Lo forman las instrucciones CREATE, ALTER, DROP, RENAME y TRUNCATE.

Ejemplos:




















DML - Data Manipulation Language (Lenguaje de manipulacin de datos).

Modifica filas (registros) de la base de datos. Lo forman las instrucciones INSERT, UPDATE, MERGE (Este
comando se puede utilizar actualizar o insertar bajo una misma instruccin) y DELETE.

Ejemplos:










DCL - Data Control Language (Lenguaje de control de datos).
Administran los derechos y restricciones de los usuarios. Lo forman las instrucciones GRANT y REVOKE.














ADMINISTRACION DE BASES DE DATOS EN ORACLE

ING. ROGER CALDERON MORENO
5

SELECT - Seleccin o consulta.

Es un comando que permite realizar consultas sobre los datos de la base de datos. Obtiene datos de la base de
datos. Una consulta SQL es como una frase (escrita en ingls) con la que decimos lo que queremos obtener y
de donde obtenerlo.
Todas las sentencias empiezan con un verbo (palabra reservada que indica la accin a realizar), seguido del
resto de clusulas, algunas obligatorias y otras opcionales que completan la frase. Todas las sentencias siguen
una sintaxis para que se puedan ejecutar correctamente.

Estructura de la sentencia SELECT

select [{distinct | unique | all }] * | campo1 [,campo2,....campon]
from tablas1 [,tabla2,tabla3,,tablan]
[where condicin]
[group by]
[{union|union all|intersect|minus} (subconsulta)]
[order by]















ADMINISTRACION DE BASES DE DATOS EN ORACLE

ING. ROGER CALDERON MORENO
6
Ejemplos:




























Consultas simples
Tipo Estructura Ejemplo
select
select "nom_de_columna"
from "nombre_tabla"
select nombres from estudiante
distinct
select distinct "nombre_columna"
from "nombre_tabla"
select distinct tipo_documento
from estudiante
where
select "nombre_columna"
from "nombre_tabla"
where "condition"
select documento, nombres
from estudiante
where tipo_documento=CC
condicionales
select "nombre_columna"
from "nombre_tabla"
where "condicin simple" {[and|or] "condicin simple"}
select documento, nombres
from estudiante
where tipo_documento=CC and edad>18
in y not in
select "nombre_columna"
from "nombre_tabla"
where "nombre_columna" {[not | in] "(v1[,v2,vn])"}
select documento, nombres
from estudiante
where edad in (18,20,25,30)
is null
is not null
select "nombre_columna"
from "nombre_tabla"
where where "nombre_columna" {[is null | is not null]}
select documento, nombres
from estudiante
where telfono is null
between
select "nombre_columna"
from "nombre_tabla"
where "nombre_columna" between 'valor1' and 'valor2'
select documento, nombres
from estudiante
where edad between 18 and 20
like
select "nombre_columna"
from "nombre_tabla"
where "nombre_columna" like {patrn}
select documento, nombres
from estudiante
where nombres like Car%
order by
select "nombre_columna"
from "nombre_tabla"
[where "condicin"]
order by "nombre_columna" [asc, desc]
select documento, nombres
from estudiante
where tipo_documento=CC
order by documento asc
Consultas para totalizar y agrupar datos
count, sum, avg,min,max
select count("nombre_columna")
from "nombre_tabla"
select count(*)
from estudiante
group by
select "nombre_columna 1", sum("nombre_columna 2")
from "nombre_tabla"
group by "nombre_columna 1"
select colegio , count(*)
from estudiante
where tipo_documento=CC
group by colegio
having
select "nombre_columna 1", sum("nombre_columna 2")
from "nombre_tabla"
group by "nombre_columna 1"
having (condicin de funcin aritmtica)
select colegio , count(*)
from estudiante
where tipo_documento=CC
group by colegio
having edad>16
ADMINISTRACION DE BASES DE DATOS EN ORACLE

ING. ROGER CALDERON MORENO
7


Consultas adicionales
union. El propsito del comando
union es el de combinar dos
resultados de dos consultas distinta.
Se utilizan para informacin
relacionada en mltiples tablas. Una
restriccin de union es que todas
las columnas correspondientes
necesitan ser del mismo tipo de
datos. Tambin, cuando utilizamos
union , slo se seleccionan valores
distintos.
[Instruccin SQL 1]
union
[Instruccin SQL 2]
select codigo, nombre
from estudiantes
union
select codigo, nombres
from aspirantes
union all. El propsito del
comando union all es tambin
combinar los resultados de dos
consultas juntas. La diferencia entre
union all y union es que,
mientras union slo selecciona
valores distintos, union all
selecciona todos los valores.
[Instruccin SQL 1]
union all
[Instruccin SQL 2]
select codigo, nombre
from estudiantes
union all
select codigo, nombres
from aspirantes
intersect. Parecido al comando
union , intersect tambin opera
en dos instrucciones SQL. La
diferencia es que, mientras union
acta fundamentalmente como un
operador OR (O) (el valor se
selecciona si aparece en la primera
o la segunda instruccin), el
comando intersect acta como un
operador AND (Y) (el valor se
selecciona si aparece en ambas
instrucciones).
[Instruccin SQL 1]
intersect
[Instruccin SQL 2]
select codigo, nombre,fecha_n
from estudiantes
intersect
select codigo, nombres, fecha_n
from aspirantes
minus. minus opera en dos
instrucciones SQL. Toma todos los
resultados de la primera instruccin
SQL, y luego sustrae aquellos que
se encuentran presentes en la
segunda instruccin SQL para
obtener una respuesta final. Si la
segunda instruccin SQL incluye
resultados que no estn presentes
en la primera instruccin SQL,
dichos resultados se ignoran.
[Instruccin SQL 1]
minus
[Instruccin SQL 2]
select codigo, nombre
from estudiantes
minus
select codigo, nombres
from aspirantes
Case <expresion>
when <valor1> then
<valor_retorno> when <valor2>
then <valor_retorno> when
<valor3> then <valor_retorno>


[else <valor_retorno>] end


select "nombre_columna"
case "nombre_columna"
when <valor1> then <valor_retorno> end
from "nombre_tabla"
select documento, nombres , sexo
case sexo
when F then Femenino
when M then Masculino
else Indefinido
end
from estudiante


select documento, nombres , procedencia,
valor
case procedencia
when Region then v_matricula * 0.05
when Indigena then v_matricula * 0.15
when Desplazado then v_matricula * 0.20
else Indefinido then v_matricula * 1
end
from estudiante