Manual de SQL (Oracle SQL)
[1]
Introducción al lenguaje
SQL
PUBLICIDAD
[1.1] notas previas
[1.1.1]versión de SQL
La pretensión de estos apuntes es la de ser guía para el
aprendizaje del lenguaje SQL. Aunque SQL posee un estándar
aprobado por la agencia ISO, la realidad es que cada producto
comercial de base de datos utiliza su propia variante.
En este sentido todo el SQL del libro se ha probado en la versión
11g R2 del sistema Oracle Database. Aunque en algunos
apartados se hacen ciertos comentarios sobre las diferencias
sobre el SQL estándar aprobado por la agencia ISO, el manual
se basa en el aprendizaje del SQL de la empresa Oracle.
La realidad es que Oracle ha sido puntero en incorporar nuevas
funcionalidades al lenguaje SQL y por ello, aprendiendo el SQL
de Oracle es fácil aprender cualquier otro dialecto de SQL y
también el estándar y esa es para mí la razón fundamental para
elegir Oracle como sistema de aprendizaje de SQL.
A fin de probar el SQL hay que tener en cuenta que existe una
versión de Oracle que es gratuita para un uso sin ánimo de lucro
llamada Oracle 11g Express Edition1.
La razón de utilizar Oracle como base de trabajo se debe a su
respeto por SQL estándar, aunque, desde luego, lejos del
estricto respeto del estándar de otros sistemas (por ejemplo el
que hace el sistema PostgreSQL) y porque Oracle sigue siendo
el Sistema Gestor de Bases de Datos (SGBD) más importante e
influyente.
[1.1.2]formato de las instrucciones en
los apuntes
En este manual en muchos apartados se indican sintaxis para
saber la forma y posibilidades de las instrucciones SQL. En el
presente manual, dicha sintaxis, se escribe en párrafos
sombreados con el reborde de color marrón.
Ejemplo:
SELECT * | {[DISTINCT columna | expresión [alias], ...}
FROM tabla;
Otras veces se describen códigos de ejemplo de un comando.
Los ejemplos se escriben también con fondo naranja claro, pero
sin el reborde. Ejemplo:
SELECT nombre FROM cliente;
Los ejemplos sirven para escenificar una instrucción concreta, la
sintaxis se utiliza para indicar las forma de utilizar un comando.
Para indicar la sintaxis de un comando se usan símbolos
especiales. Los símbolos que utiliza este libro (de acuerdo con
la sintaxis que se utiliza normalmente en cualquier
documentación de este tipo) son:
PALABRA. Cuando en la sintaxis se utiliza una palabra
coloreada en azul y en negrita, significa que es una palabra
que hay que escribir literalmente (aunque sin importar si en
mayúsculas o minúsculas).
texto. El texto que aparece en color normal sirve para
indicar que no hay que escribirle literalmente, sino que se
refiere a un tipo de elemento que se puede utilizar en el
comando. Ejemplo:
SELECT columna FROM tabla;
El texto columna hay que cambiarlo por un nombre
concreto de columna (como edad, apellidos,...), al igual
que tabla se refiere a un nombre de tabla concreto.
símbolos. Los símbolos coloreados en azul y negrita, hay
que escribirles de forma literal, aunque no sean palabras
reservadas del lenguaje.
[ ] (corchetes). Los corchetes (en color rojo) sirven para
encerrar texto que no es obligatorio en la instrucción. Es
decir, para indicar una parte opcional de la instrucción.
| (barra vertical). Este símbolo (|), la barra vertical, indica
opción. Cuando hay diferentes palabras o secciones en la
instrucción separadas por la barra, se está indicando que
solo podremos elegir una de las opciones (son opciones,
por lo tanto, excluyentes).
... (puntos suspensivos) Indica que la sección anterior a
los puntos suspensivos, se puede repetir una y otra vez.
{} (llaves) Las llaves sirven para indicar secciones
obligatorias. Normalmente se usa con la barra vertical para
indicar que solo se puede elegir una opción, pero es
obligatorio elegir una. Ejemplo:
SELECT { * | columna | expresión }
FROM tabla;
El ejemplo anterior indicaría que se debe elegir
obligatoriamente el asterisco o un nombre de columna o
una expresión. Si las llaves del ejemplo fueran corchetes,
entonces indicarían que incluso podría no aparecer
ninguna opción.
[1.2] introducción a SQL
[1.2.1]objetivos
SQL es el lenguaje fundamental de los SGBD relacionales. Se
trata de uno de los lenguajes más utilizados de la historia de la
informática y sigue siendo de aprendizaje casi obligatorio para
cualquier profesional relacionado con la computación.
SQL es un lenguaje declarativo, lo que implica que se centra
en definir qué se desea hacer, por encima de cómo hacerlo
(que es la forma de trabajar de los lenguajes de programación
de aplicaciones como C o Java). La razón de este matiz, es que
los lenguajes declarativos se parecen más al lenguaje natural
humano y parecen más apropiados para trabajar con bases de
datos (especialmente con las relacionales).
Se trata de un lenguaje que intenta agrupar todas las funciones
que se le pueden pedir a una base de datos, por lo que es el
lenguaje utilizado tanto por administradores como por
programadores o incluso usuarios avanzados.
Pretende cumplir la quinta regla de Codd, que dicta que el
lenguaje de la base de datos debe de ser capaz de realizar
cualquier instrucción sobre la misma. En sistemas gestores
como Oracle esta regla se cumple completamente: toda la
gestión y administración del sistema de bases de datos se puede
realizar utilizando solo lenguaje SQL.
[1.2.2]historia del lenguaje SQL
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 dictaría las
direcrices de las bases de datos relacionales. Apenas dos años
después IBM (para quien trabajaba Codd) utiliza las directrices
de Codd para crear el Standard English Query
Language (Lenguaje Estándar Inglés para Consultas) al que
se le llamó SEQUEL. Más adelante se le asignaron las
siglas SQL (Standard Query Language, lenguaje estándar de
consulta) aunque en inglés se siguen pronunciando secuel. En
español se pronuncia esecuele.
En 1979 Oracle presenta la primera implementación comercial
del lenguaje. Poco después se convertía en un estándar en el
mundo de las bases de datos avalado por los
organismos ISO y ANSI. En el año 1986 se toma como lenguaje
estándar por ANSI de los SGBD relacionales. Un año después
lo adopta ISO, lo que convierte a SQL en estándar mundial como
lenguaje de bases de datos relacionales.
En 1989 aparece el estándar ISO (y ANSI)
llamado SQL89 o SQL1. En 1992 aparece la nueva versión
estándar de SQL (a día de hoy sigue siendo la más conocida)
llamada SQL92. En 1999 se aprueba un nuevo SQL estándar
que incorpora mejoras que incluyen triggers, procedimientos,
funciones,… y otras características de las bases de datos objeto-
relacionales; dicho estándar se conoce
como SQL99 o SQL2000.
Tras ese estándar, se publicaron nuevos estándares en los años
2003, 2006, 2008 y 2011. Por lo tanto, el último estándar es el
del año 2011 (SQL2011). Pero la mayoría de las mejoras
añadidas en los últimos estándares se refieren al uso de otros
lenguajes (especialmente los referentes a XML) con el propio
SQL o a la incorporación de elementos orientados a objetos.
[1.2.3]funcionamiento
componentes de un entorno de ejecución SQL
Según la normativa ANSI/ISO cuando se ejecuta SQL, existen
los siguientes elementos a tener en cuenta en todo el entorno
involucrado en la ejecución de instrucciones SQL:
Un agente SQL. Entendido como cualquier elemento que
cause la ejecución de instrucciones SQL que serán
recibidas por un cliente SQL. Puede ser el software que
utiliza el cliente, sobre el que se realiza una acción que
requiere enviar código SQL al servidor de bases de datos.
Una implementación SQL. Se trata de el software
encargado de procesar, enviar y recibir instrucciones SQL.
Una implementación está compuesta por:
o Un cliente SQL. Es el software conectado al agente
(se le suele llamar controlador o driver) que
proporciona una interfaz entre el agente SQL y el
servidor SQL. Es decir, la comunicación entre el
agente y el servidor SQL debe de pasar por este
elemento, que se encarga de enviar las instrucciones
SQL correspondientes a la acción del usuario y de
recibir los resultados del servidor.
o Un servidor SQL (puede haber varios). Software
encargado de procesar las instrucciones SQL y de
enviar los resultados al cliente.
En el caso de Oracle al cliente SQL se le suele llamar proceso
de usuario y al servidor SQL, proceso servidor.
modos de ejecución SQL. tipos de agentes SQL
ejecución directa. SQL interactivo
Las instrucciones SQL se introducen directamente en el software
del cliente. Las instrucciones se traducen sin intermediarios,
pasan tal cual al servidor SQL.
Normalmente es un modo de trabajo incómodo, pero permite
tener acceso a todas las capacidades del lenguaje SQL de la
base de datos a la que estamos conectados. Es la forma habitual
en la que trabajan los administradores y muchos desarrolladores
y operadores.
ejecución incrustada o embebida
Las instrucciones SQL se colocan como parte del código de otro
lenguaje que se considera anfitrión (C, Java, Pascal, Visual
Basic,...). El código anfitrión se debe de compilar o interpretar
mediante software adecuado, el cual detectará el código SQL y
podrá lanzarle hacia el servidor SQL a través de una interfaz
especial, como JDBC u ODBC por ejemplo.
ejecución a través de clientes gráficos
Se trata de software que permite conectar a la base de datos a
través de un software que permite abstraerse del lenguaje SQL.
El software permite manejar de forma gráfica la base de datos y
las acciones realizadas son traducidas a SQL y enviadas al
servidor. Los resultados recibidos vuelven a ser traducidos de
forma gráfica para un manejo más cómodo
ejecución dinámica
Se trata de SQL almacenado en procedimientos y funciones que
se almacenan junto con la base de datos. Cuando se invoca a
estos procedimientos y funciones, el código que contienen se
ejecuta en el servidor.
[1.2.4]proceso de las instrucciones
SQL
Normalmente, el proceso de una instrucción SQL consta de
estos pasos:
[1]Se analiza la instrucción. 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 mínimos
recursos posibles.
[4]Se ejecuta la sentencia y se muestra el resultado al emisor
de la misma.
[1.3] elementos del lenguaje SQL
[1.3.1]código SQL
El código SQL consta de los siguientes elementos:
Comandos. Son las distintas instrucciones que se pueden
realizar desde SQL
o DDL, Data Definition Language (Lenguaje de
definición de datos). Lo forman los comandos que
permiten modificar la estructura de la base de datos.
Más claramente, son los comandos que modifican los
metadatos. Lo forman las
instrucciones CREATE, ALTER, DROP, RENAME y
TRUNCATE.
o Con estos comandos se crean, por ejemplo, tablas
(CREATE TABLE), usuarios (CREATE USER),
vistas (CREATE VIEW), etc. Otros comandos
permiten modificar (ALTER) y borrar (DROP) estos
elementos.
o DCL, Data Control Language (Lenguaje de control
de datos). Administran los derechos y restricciones
de los usuarios. Lo forman las
instrucciones GRANT y REVOKE.
o DML, Data Manipulation Language (Lenguaje de
manipulación de datos). Lo forman los comandos
que modifican filas (y por lo tanto datos) de las tablas.
Lo forman las instrucciones INSERT, UPDATE,
MERGE y DELETE.
o SELECT. Se trata del comando que permite realizar
consultas sobre los datos de la base de datos.
Aunque esta operación forma parte de la función de
manipulación (y por lo tanto del lenguaje DML) , es
tan importante que, en la actualidad, se le asocia toda
una función: la función de consulta. Por ello, se
entiende que forma parte del lenguaje DQL (Data
Query Language, Lenguaje de consulta de datos).
o Instrucciones de control de transacciones
(DTL). Aunque, también, son parte del lenguaje DML,
son tan importantes que se las considera que forman
un lenguaje aparte. Las transacciones se controlan
con las
instrucciones ROLLBACK y COMMIT (Oracle añade
también el comando SAVEPOINT).
Cláusulas. Son palabras especiales que permiten
modificar el funcionamiento de un comando.
Ejemplos: WHERE, ORDER BY, etc.
Operadores. Permiten crear expresiones complejas.
Pueden ser aritméticos (+,-,*,/,...) o lógicos (>, <,
!=,<>, AND, OR,...)
Funciones. Son elementos que reciben parámetros y
devuelven resultados que facilitan crear instrucciones
complejas. Ejemplos: SUM(), SYSDATE, etc.
Literales. Valores concretos para las consultas: números,
textos, caracteres,... Ejemplos: 2, 12.34, ‘Avda Cardenal
Cisneros’
Metadatos. Es información de la estructura de la base de
datos. Por ejemplo: nombres de tablas, nombres de
columnas, etc.
[1.3.2]normas de escritura
En SQL no se distingue entre mayúsculas y minúsculas
(salvo en los textos literales; es decir, en los datos).
Las instrucciones finalizan con el signo de punto y coma
Cualquier comando SQL (SELECT, INSERT,...) puede ser
partidos por espacios o saltos de línea antes de finalizar la
instrucción. Se usa para mejorar la legibilidad de las
instrucciones.
También se pueden tabular líneas para facilitar la lectura si
fuera necesario.
Lo que no podemos es partir en varias líneas una palabra.
Los comentarios en el código SQL comienzan por /* y
terminan por */ (excepto en algunos SGBD). En Oracle,
como en otros sistemas, existe también el comentario de
una línea mediante los símbolos --:
/*
Comentario
que ocupa varias
líneas */
--Comentario de una línea
SELECT * FROM personas; --Instrucción
1
Disponible en.
[Link]
technologies/express-edition/overview/[Link]