Leguaje SQL

Introducción al lenguaje SQL [1.1] notas previas [1.1.1]versión de SQL La pretensión de estos apuntes es la de ser guía

Views 52 Downloads 4 File size 811KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Introducción al lenguaje SQL [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 FROM tabla;

columna | expresión [alias], ...}

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 (>, 0) CONSTRAINT ingresos_ck2 CHECK (importe0 AND importe