1. ORGANISMOS Y GRUPOS QUE SE OCUPAN DE LA ESTANDARIZACIÓN DE LOS LENGUAJES DE BASES DE DATOS

Tamaño: px
Comenzar la demostración a partir de la página:

Download "1. ORGANISMOS Y GRUPOS QUE SE OCUPAN DE LA ESTANDARIZACIÓN DE LOS LENGUAJES DE BASES DE DATOS"

Transcripción

1 CAPÍTULO 6 EL LENGUAJE SQL De los distintos lenguajes que presentaban los primeros SGBDR (Sistemas de Gestión de Bases de Datos Relacionales), ha acabado imponiéndose como estándar, tanto de iure como de facto, el SQL, lenguaje que actualmente ofrecen, aunque con variaciones, la mayor parte de los productos comerciales y que viene siendo objeto, desde hace varios años, de un intenso proceso de normalización. En este capítulo presentaremos la evolución que ha experimentado este lenguaje, describiendo con detalle las principales sentencias del SQL-92, clasificándolas según afecten a la estática, la dinámica o a otras características del sistema. 1. ORGANISMOS Y GRUPOS QUE SE OCUPAN DE LA ESTANDARIZACIÓN DE LOS LENGUAJES DE BASES DE DATOS Debido a la importancia de los lenguajes de bases de datos, existen numerosos organismos que se ocupan de su estandarización. Como ya señalamos en el capítulo 2, en el comité conjunto JTC1, establecido por los organismos ISO e IEC para las Tecnologías de la Información, existe el subcomité 21 que engloba al WG3 que se dedica a las bases de datos. En Estados Unidos, además del grupo H2 de ANSI, también el NIST (National Institute of Standards and Technology) se ocupa de la estandarización del SQL. Por otra parte, hay que destacar el denominado SQL Access Group, un consorcio formado por varias decenas de fabricantes de productos con el fin de definir especificaciones técnicas que permitan a distintos SGBDR y herramientas de aplicación trabajar conjuntamente"; para ello se propone acelerar los esfuerzos de estandarización del lenguaje SQL aportando propuestas a los grupos RDA y SQL. La Unión Europea, siguiendo las recomendaciones del proyecto EWOS (European Workshop on Open Systems), ha creado en abril de 1991 el EG DBE (Expert Group on Database Enquiry), en el que también desempeña un papel muy relevante el SQL. Además existen otras asociaciones como X/OPEN, la OSF (Open Software Foundation) o la Asociación Europea de Fabricantes de Ordenadores, que han adoptado extensiones del lenguaje. Por último, cabe destacar que existen distintos vendedores que han definido sus propios estándares basándose en los aprobados por ANSI e ISO.

2 2. EVOLUCIÓN DEL LENGUAJE SQL Como vimos en el capítulo 5, el modelo relacional surge a finales de los años sesenta como resultado de las investigaciones de E.F. Codd en los laboratorios de IBM en San José (California); los trabajos de Codd dieron lugar a una serie de estudios teóricos y prototipos que se extienden a partir de El lenguaje SQL surge originariamente con el nombre de SEQUEL (Structured English QUEry Language) implementado en un prototipo de IBM, el SEQUEL-XRM, durante los años Este prototipo evolucionó durante los años , pasándose a denominar su lenguaje SEQUEL/2, y cambiando posteriormente este nombre por SQL, debido a motivos legales. Poco después, el SISTEMA R de IBM implementó un subconjunto de este lenguaje. En 1979 aparece el primer SGBDR comercial basado en SQL -ORACLE-, posteriormente van surgiendo otros productos basados en SQL como son el SQL/DS, DB2, DG/SQL, SYBASE, INTERBASE, INFORMIX, UNIFY, etc. E incluso otros productos que no poseían el SQL como lenguaje base -v.g. INGRES, DATACOM, ADABAS, SUPRA, IDMS/R- ofrecen interfaces SQL; por lo que este lenguaje se convierte en un estándar de facto, aunque con múltiples variantes según los distintos fabricantes. En 1982 el Comité de bases de datos X3H2 de ANSI presenta un lenguaje relacional estándar basado principalmente en el SQL propio de los productos IBM; en 1986 este organismo aprueba el lenguaje como norma pasando a denominarse SQL/ANS, que también es aprobado, al año siguiente, como norma ISO -ISO (l987)-. En esta norma se especifican dos niveles (I y II) a cumplir, siendo el nivel I un subconjunto de las funcionalidades proporcionadas por el nivel II. Este estándar ha recibido numerosas críticas, ya que resulta ser "una intersección de las instrumentaciones existentes", concebido primordialmente para proteger los intereses de los fabricantes. Así, por ejemplo, en CODD(1985) se afirma que "... desafortunadamente el SQUANS es muy débil, fallando en el soporte de numerosas características que los usuarios realmente necesitan si quieren aprovechar todas las ventajas del enfoque relacional... El SQUANS es incluso menos fiel al modelo relacional que el SQL de algunos suministradores.... En 1989 se revisa la versión 1 del estándar -ISO(1989)-, revisión conocida como Addendum, que añade cierta integridad referencial, que se denomina integridad referencial básica, ya que sólo permite definir la opción de modificación y borrado restringidos y no proporciona cambios en cascada. Por otra parte, ya que la norma ISO de 1989 no estandariza las definiciones para SQL embebido en lenguajes de programación -que sólo figuraban en apéndices recomendados-, ANSI define, ese mismo año, un estándar para el lenguaje SQL embebido -ANS1(1989)-. En este mismo año Apple Computer libera el Data Access Language (DAL) para sus ordenadores, (DAL es un dialecto del SQL que soporta varios gestores de bases de datos). En junio de 1990, IBM anuncia su estándar DRDA (Distributed Relational Database Access) como parte de su arquitectura SAA (System Application Architecture). En abril de 1991 el SAG (SQL Access Group) completa la 1ª Fase de especificaciones técnicas, que define un estándar para intercambiar mensajes SQL sobre una red OSI, basado en la especialización SQL del RDA de ISO. En junio de 1991 este

3 grupo realizó una demostración -que constituyó todo un éxito- con más de veinte SGBDR que se intercambiaban datos y consultas. En el mes de noviembre de este mismo año Microsoft anunció ODBC (Open Database Connectivity) basado en el estándar del SAG. En 1992 este grupo completó su segunda fase, que especificaba un IPA (Interfaz para la Programación de Aplicaciones) CLI (Call Level Interface) y que ampliaba el estándar a más instalaciones cliente/servidor, en la que además de las especificaciones OSI se incluye otros protocolos de red como, por ejemplo, TCP/IP. En noviembre de ese año Borland relanzó el estándar ODAPI (Open Database Application Programming Interface) como IDAPI (Integrated Database Application Programming Interface), con el patrocinio de IBM, Novell y WordPerfect. En 1992 también se aprueba como norma internacional una nueva versión del SQL, conocida como SQL2 o SQL-92 -ISO(1992)-, en la que se incrementa substancialmente la capacidad semántica del esquema relacional, se añaden nuevos operadores, se mejora el tratamiento de errores y se incluyen normas para el SQL embebido. En esta nueva norma se definen tres niveles de conformidad distintos: Entry SQL, Intermediate SQL y Full SQL, siendo este último -como su nombre indica- el que ofrece mayores funcionalidades, mientras que el primer nivel es un subconjunto del segundo y éste, a su vez, del tercero. Este estándar ha sido complementado recientemente con dos nuevas partes que abordan la interfaz de nivel de llamadas (Call-Level Interface), ISO (1995) y la definición de módulos almacenados persistentes (Persistent Stored Modules) ISO (1996). Esta última norma internacional convierte al SQL en un lenguaje computacionalmente completo añadiéndole estructuras de control, manejo de excepciones, etc. En la actualidad se acaban de aprobar nuevas propuestas para extender el SQL -el llamado SQL3, (véase apartado 9)-, dotándolo, además, de una mayor capacidad semántica, de ciertos principios del paradigma de la orientación al objeto. También se está trabajando sobre una extensión del SQL3 para soportar bases de datos multimedia, conocida como SQL/MM (SQL Multimedia). Debido al tamaño que posee el SQL3 ya se ha empezado a hablar del SQL4, en el que se incluyen aquellas características del lenguaje que no se encuentran todavía definidas completamente o que necesitan una mayor profundización. 3. CONCEPTOS SQL Aunque el lenguaje SQL se basa en el modelo relacional, incorpora algunos elementos adicionales que facilitan la gestión de datos. En este sentido se introduce el concepto de catálogo, entendido como un conjunto de esquemas, que proporciona un mecanismo adicional para calificar nombres de elementos (catálogo.esquerna.elemento), facilitando así la gestión del espacio de nombres. Un entorno SQL puede contener cero o varios catálogos y, a su vez, un catálogo uno o varios esquemas. En cada catálogo existe un DEFINITION_SCHEMA que contiene las tablas base sobre las que se define un conjunto de vistas denominado INFORMATION_SCHEMA, esquemas que son autodescriptivos. Las tablas base definidas en el estándar son las siguientes:

4 USERS, SCHEMATA, DATA_TYPE_DESCRIPTOR, DOMAINS, DOMAINS_CONSTRAINTS, TABLES, VIEWS, COLUMNS, VIEW_TABLE_USAGE, VIEW_COLUMN_USAGE, TABLE_CONSTRAINTS, KEY_COLUMN_USAGE, REFERENTIAL_CONSTRAINTS, CHECK_CONSTRAINTS, CHECK_TABLE_USAGE, CHECK_COLUMN_USAGE, ASSERTIONS, TABLE_PRIVILEGES, COLUMN_PRIVILEGES, USAGE_PRIVILEGES, CHARACTER_SETS, COLLATIONS, TRANSLATIONS, SQL_LANGUAGES Los nombres de estas tablas son autoexplicativos y se parecen a las presentes en los catálogos de los productos existentes. El lenguaje introduce también el concepto de agrupamiento (cluster), que sirve para referenciar el conjunto de catálogos a los que se puede acceder en un momento dado. Por otra parte, merece la pena destacar que en el esquema SQL se puede encontrar, además de tablas, dominios, aserciones, vistas o la concesión y revocación de privilegios, la definición de conjuntos de caracteres (Character Set), así como secuencias de ordenación (Collation) y traducción (Translation) para estos conjuntos de caracteres. Esto permite soportar lenguajes como el japonés, coreano o chino, que superan los 256 caracteres y que pueden obtenerse con una extensión de 8 bits del código ASCII. 4. SENTENCIAS DE DEFINICIÓN El estándar SQL2 presenta muchas novedades respecto a las versiones anteriores, que no pueden ser tratadas ampliamente en este libro -obsérvese que el estándar tiene alrededor de 500 páginas-; por lo que nos centraremos en los aspectos que nos parecen más interesantes, al contribuir al incremento de la semántica. Utilizaremos una extensión de la Forma Normal de Backus (BNF) para especificar las cláusulas del lenguaje donde: < > representa los símbolos no terminales del lenguaje ::= es el operador de definición [] indica elementos opcionales {} agrupa elementos en una fórmula indica una alternativa... indica repetición De los distintos elementos que puede contener un esquema relacional en SQL2, estudiaremos los dominios, aserciones y tablas; tenemos que advertir que presentaremos las opciones y posibilidades que resultan, a nuestro juicio, más interesantes, remitiendo al lector a las referencias bibliográficas para un estudio más exhaustivo de los distintos elementos del lenguaje Esquemas La creación de esquemas se lleva a cabo mediante la sentencia: <definición de esquemas>::= CREATE SCHEMA <cláusula de nombre del esquema> [<especificación del conjunto de caracteres del esquema>] [<elemento de esquema>... ] <cláusula de nombre del esquema>::= <nombre del esquema> AUTHORIZATION <id. autorización del esquema>

5 <nombre del esquema> AUTHORIZATION <id. autorización del esquema> Podríamos, por ejemplo, Crear el siguiente esquema: CREATE SCHEMA biblioteca AUTHORIZATION uc3m; 4.2. Dominios El SQL92 soporta la definición de dominios de la siguiente manera: <definición de dominio> ::= CREATE DOMAIN <nombre de dominio> [ AS ] <tipo de datos 1 > DEFAULT <opción por defecto> ] <restricción de dominio> ] donde la opción por defecto puede ser un literal, una función de valor tiempo o fecha, o bien USER, SYSTEM USER o NULL; mientras que se define <restricción de dominio> ::= [ <definición de nombre de restricción> ] < definición de restricción de verificación> [ <atributos de restricción> ] en la cual se puede, opcionalmente, dar un nombre a la restricción de dominio de la siguiente forma: <definición de nombre de restricción> ::= CONSTRAINT <nombre de restricción> El único elemento obligatorio de la restricción de dominio es la: <definición de restricción de verificación> ::= CHECK <parent. izq.> <condición> <parent. dcho.> Así, por ejemplo, se podría definir el siguiente dominio, en el que se quiere especificar, por intensión, que los tipos de documentos válidos en una biblioteca son artículos o libros: CREATE DOMAIN Tipos_Doc CHAR(1) CONSTRAINT Artículos_o_Libros CHECK (VALUE IN ( A, L )); Por lo que respecta a los atributos de restricción, sirven para indicar si la restricción es diferida o inmediata: <atributos de restricción> ::= <tiempo de verificación de restricción> [ [NOT] DEFERRABLE] [ [NOT] DEFERRABLE] <tiempo de verificación de restricción> <tiempo de verificación de restricción> INITIALLY DEFERRED INITIALLY INMEDIATE Así, si el modo de verificación es inmediato, la restricción se verificará al finalizar cada sentencia, mientras que si es diferido, se verificará al finalizar la transacción (véase apartado 6) Tablas Hay que recordar que existe una diferencia fundamental entre una tabla en SQL y una relación del modelo relacional, ya que mientras que ésta se define como un 1 Como tipos de datos el SQL-92 admite los siguientes: CHARACTER [VARYING] (n), BIT [VARYING] (n), NUMERIC (p,s), DECIMAL (p,s), INTEGER, SMALLINT, REAL, DOUBLE PRECISION, FLOAT (p), DATE, TIME, TIMESTAMP, INTERVAL.

6 conjunto de tuplas (véase capítulo 5), una tabla es en realidad un multiconjunto de filas, por lo que admite filas repetidas. En el SQL92 se pueden definir tablas persistentes -que, como su nombre indica, se almacenan en memoria secundaria y permanecen allí cuando termina la sesión en la que fueron creadas- o tablas temporales -que sólo se materializan y tienen existencia en tanto dura la sesión-, tal como indica la definición siguiente: <definición de tabla> ::= CREATE [ TEMPORARY ] TABLE <nombre de tabla> <paréntesis izq.> <elemento de tabla> [{<coma> <elemento de tabla>}... ] <paréntesis dcho.> Los elementos de tabla pueden ser tanto definiciones de columnas como definiciones de restricciones de tabla. Una columna debe definirse sobre un dominio o bien directamente con un tipo de datos, pudiendo presentar además valores por defecto y restricciones de columna: <definición de columna> ::= <nombre de columna> { <tipo de datos> <nombre de dominio>} <claúsula de valor por defecto> ] <definición de restricción de columna> ] Las definiciones de restricción, tanto de columnas como de tablas, presentan, al igual que en el caso de los dominios, la posibilidad de nominar dichas restricciones y de indicar si son inmediatas o diferidas mediante los atributos de restricción: <definición de restricción de columna> ::= [ <definición de nombre de restricción> ] <restricción de columna> [ <atributos de restricción> <definición de restricción de tabla> ::= [ <definición de nombre de restricción> <restricción de tabla> [ <atributos de restricción> ] Las restricciones de columna pueden indicar la obligatoriedad de un valor -escribiendo NOT NULL-, si una columna es clave primaria de la tabla -mediante PRIMARY KEY-, si es clave alternativa, esto es, que sus valores no pueden repetirse en toda la tabla -especificando UNIQUE-, o cualquier otra condición (véase siguiente apartado). En caso de que la clave primaria o las claves alternativas estuviesen compuestas por varios atributos, habría que establecer restricciones de tabla de forma análoga a las de columna anteriormente descritas. En general, podemos considerar las restricciones de columnas como un caso especial de restricciones de tablas, con lo que, por ejemplo, la definición de clave primaria -cuando está compuesta sólo por un atributo- puede realizarse tanto al lado de la columna correspondiente como al finalizar la descripción de atributos. Un ejemplo de tabla puede ser el siguiente, en la que se definen las editoriales, con una serie de atributos: CREATE TABLE Editorial (Código_E Códigos, Nombre_E Nombres NOT NULL, Dirección Dirs NOT NULL, Ciudad Lugares NOT NULL, PRIMARY KEY (Código_E), UNIQUE (Nombre_E));

7 4.4. Restricciones y reglas de integridad Como hemos comentado, en el lenguaje SQL-92 no se cumple la restricción inherente al modelo relacional teórico -CODD (1970)- de que en una tabla no existan dos filas iguales, ya que es opcional la definición de clave primaria, debido a motivos de compatibilidad con versiones anteriores; esta característica es causa de numerosas críticas [véase, por ejemplo, CODD (1990)]. Por otro lado, el SQL92 sí soporta la regla de integridad de entidad, ya que se asume la definición NOT NULL para las columnas que forman parte de la clave primaria. En cuanto a la integridad referencial, el SQL92 permite definir claves ajenas, especificando, ya sea a nivel de columna o de tabla, la siguiente restricción: <definición de restricción referencial> ::= FOREIGN KEY <parent.izq.> <columnas que ref.> <parent.dcho.> REFERENCES <columnas y tabla referenciadas> [ MATCH <tipo de correspondencia> [ <acción referencial disparada> donde <columnas y tabla referenciadas> ::= <nombre de tabla> [ <parent.izq.> <lista de columnas de referencia> <parent. dcho.> ] Es importante destacar que si se especifica sólo el nombre de la tabla referenciada, las columnas referenciadas serán aquellas que componen la clave primaria de dicha tabla -que en este caso tiene, obligatoriamente, que tener definida una clave primaria-. Pero es interesante observar que el SQL92 permite referenciar una columna o grupo de columnas, sin que sean necesariamente la clave primaria, y sólo se exige que estén definidas como UNIQUE. De esta forma se pueden definir dependencias de inclusión más amplias que las recogidas por la integridad referencial, tal como la propone Codd al presentar el modelo relacional. La cláusula MATCH permite precisar si se admiten valores nulos en la clave ajena cuando ya existen otros valores no nulos en dicha clave (véase apartado H de este capítulo). Por lo que respecta a la acción a tomar en caso de borrado o modificación de los valores de las columnas referenciadas, el SQL92 admite cuatro posibilidades: operación restringida (en caso de no especificar la acción referencial disparada o poner NO ACTION), operación con transmisión en cascada (CASCADE), operación con puesta a nulos (SET NULL), operación con puesta a valor por defecto (SET DEFAULT), tal como se indica a continuación: <acción referencial disparada> ::= <regla de modificación> [ <regla de borrado> ] <regla de borrado> [ <regla de modificación> ] <regla de modificación> ::= ON UPDATE <acción referencial> <regla de borrado> ::= ON DELETE <acción referencial> <acción referencial> CASCADE SET NULL SET DEFAULT NO ACTION

8 En la siguiente tabla, Documento, se ha definido, además de la clave primaria compuesta (Tipo, Cod_Doc), una clave alternativa (ISBN), dos restricciones de integridad (la de columna sobre año, y la de tabla, que afecta a los atributos Tipo, ISBN y Nombre_E 2 ) y una clave ajena que referencia a la tabla Editorial: CREATE TABLE Documento (Tipo Tipos_Doc, Cod_Doc CHAR(4), Titulo CHAR(25) NOT NULL, Idioma Idiomas, Nombre_E Nombres, Año INTEGER(4) CHECK (Año > 1950), Isbn INTEGER(10), PRIMARY KEY (Tipo, Cod_Doc), UNIQUE (Isbn), CHECK ((Tipo = A AND Isbn IS NULL AND Nombre_E IS NULL) OR ( Tipo = L AND Isbn IS NOT NULL AND Nombre_E IS NOT NULL)), FOREIGN KEY (Nombre_E) REFERENCES TO Editorial ON UPDATE CASCADE ON DELETE NO ACTION)); Otra posibilidad para definir restricciones que afecten a varias tablas la constituyen las aserciones: <definición de aserción> ::= CREATE ASSERTION <nombre de restricción> <verificación de aserción> [<atributos de restricción>] <verificación de aserción> ::= CHECK <parent. izq.> <condición> <parent. dcho.> Por ejemplo, si suponemos que no puede haber editoriales cuya sede se encuentre en Madrid que editen libros en francés o en alemán, deberíamos construir la siguiente aserción: CREATE ASSERTION Idiomas_No_Usados_Por_Editoriales_En_Madrid CHECK (NOT EXISTS (SELECT * FROM Documento NATURAL JOIN Editorial WHERE Idioma IN ('F', 'A') AND Ciudad = 'Madrid')); 4.5. Actualización de esquemas La actualización de esquemas se lleva a cabo mediante las sentencias ALTER (que permiten la modificación de dominios o de tablas) y las sentencias DROP (para borrar esquemas, tablas, dominios o vistas). Algunos ejemplos de sentencias de este estilo son: DROP SCHEMA biblioteca; que borraría todo el esquema (y sus elementos). DROP DOMAIN Tipos_Doc; 2 La restricción de tabla asegura que los artículos no posean ISBN ni editorial, mientras que obliga a que todos los documentos que sean libros tengan un ISBN y una editorial.

9 que elimina el dominio. ALTER DOMAIN Tipos_Doc DROP CONSTRAINT Articulos_o_Libros que permite eliminar una restricción del dominio (lo que también es aplicable a tablas). DROP TABLE Editorial; que eliminaría la tabla del esquema (evidentemente, junto con todas las filas que tuviera). ALTER TABLE EDITORIAL ADD COLUMN Director VARCHAR (30); que añadiría una columna a la tabla Editorial que permite especificar quién es su director. ALTER TABLE Editorial ALTER COLUMN Ciudad SET DEFAULT 'Madrid'; que fija un valor por defecto para la columna Ciudad. ALTER TABLE Editorial DROP COLUMN Dir; que borra la columna Dir Vistas Como ya hemos señalado, una vista consta de una expresión de consulta sobre otras vistas y/o tablas: <definición de vista>::= CREATE VIEW <nombre de tabla> [<parent. izq.> <lista de columna> <parent. dcho.>] AS <expresión de consulta> [WITH CHECK OPTION] Así podríamos definir sobre la tabla Documento una vista que sólo contuviese los libros de la siguiente manera: CREATE VIEW Libro AS SELECT * FROM Documento WHERE Tipo = L ; La cláusula WITH CHECK OPTION permite controlar que sólo se admiten operaciones de inserción y modificación que no atenten contra la expresión de consulta que define la vista. Así, por ejemplo, si en el caso anterior hubiésemos utilizado esta cláusula, no se permitiría cambiar el valor del atributo tipo. Otro aspecto a tener en cuenta es que, en la actualidad, sólo son actualizables las vistas que proceden de una única tabla (en cuya definición no aparezcan las cláusulas GROUP BY o HAVING). 5. SENTENCIAS DE MANIPULACIÓN Existen tres maneras de manipular bases de datos SQL: Interactivamente, esto es, invocando directamente las sentencias SQL.

10 Por medio de SQL embebido 3, en el que se insertan sentencias SQL como huéspedes de un lenguaje anfitrión 4. Por módulos, agrupando sentencias SQL en módulos, que son llamados desde lenguajes anfitriones. ANSI denomina esta forma de manipulación como llamadas explícitas a procedimientos 5. En este apartado presentaremos las principales sentencias de manipulación que permiten actuar de forma interactiva, mientras que en el siguiente resumiremos as características del SQL embebido. En cuanto a la aproximación por módulos, que se proponía ya en el estándar de 1986, no ha tenido mucha repercusión en el mercado, siendo muy pocos los fabricantes que la soportan Recuperación de datos: Sentencia SELECT PARTES BÁSICAS Para llevar a cabo consultas sobre una base de datos relacional, el lenguaje SQL propone la sentencia SELECT 6, que consta de las siguientes cláusulas: <especificación de consulta>::= SELECT [<cuantificador de conjunto>] <lista de selección> <expresión de tabla> El cuantificador de conjunto permite determinar si en el resultado de la consulta se mantienen filas repetidas (la opción por defecto, ALL) o si se eliminan los duplicados (DISTINCT): <cuantificador de conjunto>::= DISTINCT ALL En cuanto a la lista de selección: <lista de selección> ::= <asterisco> <sublista de selección> [ {<coma> <sublista de selección>}...] <sublista de selección> ::= <columna derivada> <calificador><punto><asterisco> <columna derivada> ::= <expresión de valor> [<cláusula as>] <cláusula as> ::= [AS]<nombre de columna> Una expresión de valor en SQL se refiere a expresiones de valor numéricas, de tira de caracteres, de fecha/tiempo o de intervalo. En todas ellas se pueden combinar referencias a columnas con distintos operadores y funciones que ofrece el lenguaje. Se pueden seleccionar, por tanto, todas las columnas (mediante el asterisco) o alguna de ellas, o bien derivar nuevas columnas a partir de las existentes aplicando diversas funciones u operadores (por ejemplo, sumando el valor de dos columnas). 3 Denominado también por ANSI, en su modelo de referencia, 1lamadas implícitas a procedimientos". 4 El estándar actual admite como lenguajes anfitriones los siguientes: COBOL, BASIC, MUMPS, PASCAL, FORTRAN, ADA, C y PL/I. 5 No debe confundirse con los llamados procedimientos almacenados, que se han estandarizado en el denominado SQL/PSM. 6 Que no se debe confundir con la selección del álgebra relacional, ya que con la sentencia SELECT podemos llevar a cabo cualquier operación del álgebra.

11 Por otra parte, las cláusulas fundamentales de la sentencia SELECT se encuentran en la expresión de tabla: <expresión de tabla> ::= <cláusula from> [<cláusula where>] [<cláusula group by>] [<cláusula having>1 la primera permite especificar de dónde se obtienen los datos: <cláusula from> ::= FROM <referencia de tabla> [{<coma><referencia de tabla>}...] <referencia de tabla> ::= <nombre de tabla> [ [AS] <nombre de correlación> [<parent.izq.> <lista de columnas derivadas> <parent.dcho.>]] <tabla derivada> [AS] <nombre de correlación> [<parent.izq.> <lista de columnas derivadas> <parent.dcho.>]] <tabla combinada> Así, en el caso más sencillo podríamos recuperar todas las filas de la tabla Documento con la siguiente sentencia: SELECT * FROM Documento; cuyo resultado se puede observar en la figura 7. l. DOCUMENTO TIPO CÓD-DOC TÍTULO IDIOMA NOMBRE_E AÑO ISBN L 001 CONCEPCIÓN BD E RAMA S L 002 AN INTRODUCTION DBS I ADDISON-WESLEY X L 003 A GUIDE TO SQL I ADDISON-WESLEY L 004 RELATIONAL DB I AMISON-WESLEY X L 005 ANÁLISIS SI E RAMA L 006 ANÁLISIS DE SI E ANAYA L 007 COMPILADORES E PARANINFO A 001 ER MODEL A 002 RELATIONAL MODEL A 003 LENGUAJE SQL3 E 1995 A 004 SQL3 TR.ADEOFFS A 005 BASES DE DATOS E 1996 Figura 7.1 Selección de todas las filas de una tabla El caso de una tabla derivada se trata de una subconsulta, que puede ser: <subconsulta> ::= <parent.izq.><expresión de consulta><parent. dcho.> <expresión de consulta> ::= <expresión de consulta de no combinación> <expresión de consulta de combinación> Las consultas que no son combinaciones de tablas incluyen, además de tablas simples, la unión (UNION), intersección (INTERSECT) y diferencia (EXCEPT) de tablas. Así, por ejemplo, si suponemos que existen dos tablas: Editorial (definida anteriormente, véase figura 7.2 a) y otra denominada Librería, que posee los mismos atributos (véase figura 7.2 b), podríamos consultar por aquellas editoriales que no son librerías mediante la sentencia siguiente: SELECT * FROM Editorial EXCEPT SELECT FROM Librería;

12 A) EDITORIAL CÓDIGO NOMBRE DIRECCIÓN CIUDAD 001 RAMA CARRETERA DE CANILLAS 144 MADRID 002 ADDISON-WESLEY SUNSET ST. 4 READING 003 McGRAW-HILL 181AVENUE NEW YORK 004 PARANINFO SOL 3 MADRID 005 ANAYA GOYA 8 MADRID B) LIBRERÍA CÓDIGO NOMBRE DIRECCIÓN CIUDAD 001 RAMA CARRETERA DE CANILLAS 144 MADRID 002 ADDISON-WESLEY SUNSET ST. 4 READING 004 PARANINFO SOL 3 MADRID C) EDITORIAL-LIBRERÍA CÓDIGO NOMBRE DIRECCIÓN CIUDAD 003 McGRAW-HILL 181 AVENUE NEW YORK 005 ANAYA GOYA 8 MADRID Figura 7.2. Ejemplo de diferencia en SQL Como indicamos en el capítulo anterior, este tipo de operaciones requiere que las tablas sean compatibles en dominio. En caso de que sólo algunas columnas de las tablas coincidan en dominio, se puede aplicar una: <especificación de correspondencia> ::= CORRESPONDING [BY <parent.izq.><lista de columnas de correspondencia><parent.dcho.> ] En caso de tener una tabla Proyectos como la definida en la figura 7.3a, se podría unir con la tabla documento mediante la siguiente sentencia: SELECT * FROM Proyecto UNION CORRESPONDING (titulo, idioma, año) SELECT * FROM Documento; dando como resultado el que aparece en la figura 7.3 b. A) PROYECTOS TÍTULO IDIOMA AÑO mimo E 1996 ENEAS E 1996 HERÁCLITO I 1995 B) PROYECTOS UNION DOCUMENTO TÍTULO IDIOMA AÑO CONCEPCIÓN Y DISEÑO DE BD E 1993 AN INTRODUCTION TO DATABSE SYSTEMS I 1995 A GUIDE TOSQL STANDARD I 1996 RELATIONAL DATABASE : SELECTED WRITINGS I 1995 ANÁLISIS Y DISEÑO DE APLICACIONES E 1996 ANÁLISIS DE SI E 1993 COMPILADORES E INTÉRPRETES E 1992 ENTITY RELATIONSHIP MODEL I 1976 THE RELATIONAL MODEL I 1970 LENGUAJE SQL3 E 1995 SQL3 TRADEOFFS I 1995 BASES DE DATOS E 1996 mimo E 1996 ENEAS E 1996 HERÁCLITO Figura 7.3. Ejemplo de unión en SQL COMBINACIÓN DE TABLAS Por lo que respecta a la combinación de tablas, el lenguaje SQL permite todas las opciones que hemos discutido en el capítulo anterior; así, se define: <tabla combinada> ::= <combinación cruzada> <combinación calificada> <parent. izq.><tabla combinada><parent. dcho.> donde <combinación cruzada> ::=

13 <referencia a tabla> CROSS JOIN <referencia a tabla> que corresponde al producto cartesiano. En la figura 7.4 se muestra el resultado de la siguiente sentencia: SELECT * FROM Documento CROSS JOIN Editorial; lo que sería equivalente a realizar (como en el SQL-89) la siguiente consulta: SELECT Documento.*, Editorial.* FROM Documento, Editorial; TIPO CÓD-DOC TÍTULO IDIOMA NOMBRE E AÑO ISBN CÓD NOMBRE-E DIR CIUDAD L 001 CONCEPCIÓN BD E RAMA S 001 RAMA CTRA CANILLAS 144 MADRID L 002 INTRODUCTION DBS I ADDISON X 002 ADDISON SUNSET 4 READING L 003 A GUIDE TO SQL I ADDISON McGRAW 181 AV NEW YORK L 004 RELATIONAL, DB I ADDISON X 004 PARANINFO SOL 3 MADRID Figura 7.4. Ejemplo de combinación cruzada en SQL Otro tipo de combinación es la siguiente: <combinación calificada> ::= <referencia a tabla> [NATURAL] [<tipo de combinación>] JOIN <referencia a tabla> [<especificación de combinación>] donde <tipo de combinación> ::= INNER <tipo de combinación externa> [OUTER] UNION <tipo de combinación externa> ::= LEFT RIGHT FULL <especificación de combinación> ::= <condición de combinación <combinación de columnas nominadas> <condición de combinación> ::= ON <condición de búsqueda> <combinación de columnas nominadas>::= USING <parent.izq.><lista de columnas de combinación> <parent.dcho.> Así, por ejemplo, podemos realizar la combinación natural de las tablas Documento y Editorial de la siguiente manera: SELECT * FROM Documento NATURAL JOIN Editorial ON Documento.Nombre_E = Editorial. Nombre; que también puede hacerse como en el SQL-89 mediante la sentencia:

14 SELECT Documento.*, Codigo, Dir, Ciudad FROM Documento, Editorial WHERE Documento.Nombre_E = Editorial.Nombre; y cuyo resultado se presenta en la figura 7.5. TIPO CÓD_DOC TÍTULO IDIOMA NOMBRE-E AÑO ISBN CÓDIGO DIRECCIÓN CIUDAD L 001 CONCEPCIÓN BD E RA-MA S 001 CTRA CANILLAS, 14 MADRID L 002 INTRODUCTION DBS I ADDISON X 002 SUNSET ST., 4 READING L 003 A GUIDE TO SQL I ADDISON SUNSET ST., 4 READING L 004 RELATIONAL DB I ADDISON X 002 SUNSET ST., 4 READING L 005 ANÁLISIS SI E RA-MA CTRA CANILLAS, 144 MADRID L 006 ANÁLISIS DE Si E ANAYA GOYA, 8 MADRID L 007 COMPILADORES E PARANINFO SOL, 3 MADRID Figura 7.5. Ejemplo de combinación natural Cabe destacar que si las dos columnas que representan nombre de editorial (Documento.Nombre_E y Editorial.Nombre) se llamaran igual, podríamos haber usado la siguiente sentencia: SELECT * FROM Documento NATURAL JOIN Editorial; Cuando se emplea NATURAL JOIN sin la cláusula ON, se combinan las tablas igualando todas las columnas que tienen el mismo nombre en las tablas; si sólo se quiere utilizar algunas de ellas se emplea la cláusula USING. Por la que respecta a las combinaciones externas podemos ver en la figura 7.6 distintas posibilidades. En el primer caso (a), se ha aplicado la siguiente sentencia: SELECT * FROM Documento LEFT OUTER JOIN Editorial ON Documento. Nombre_E = Editorial. Nombre; en el caso b) se ha aplicado una combinación externa derecha: SELECT * FROM Documento RIGHT OUTER JOIN Editorial ON Documento. Nombre_E = Editorial. Nombre; y en el último caso, una combinación externa completa: SELECT * FROM Documento FULL OUTER JOIN Editorial ON Documento. Nombre_E = Editorial. Nombre;

15 a) b) c) TIPO CÓD_DOC TÍTULO IDIOMA NOMBRE_E AÑO ISBN CÓDIGO NOMBRE_E DIR CIUDAD L 001 CONCEPCIÓN BD E RAMA S 001 RAMA CTRA. CANILLAS, 144 MADRID L 002 AN INTRODUCTION DBS I ADDISON-WESLEY X 002 ADDISON SUNSETST---4 READING L 003 A GUIDE TO SQL I ADDISON-WESLEY ADDISON SUNSET ST,. 4 PEADING L 004 RELATIONAL DB I ADDISON-WESLEY X 002 ADDISON SUNSET ST., 4 KEADING L 005 ANÁLISIS SI E RAMA RAMA CTRA. CANILLAS, 4 MADRID L 006 ANÁLISIS DE SI E ANAYA ANAYA GOYA, 8 MADRID L 007 COMPILADORES E PARANINFO PARANINFO SOL, 3 MADRID A 001 ER MODEL I A 002 RELATIONAL MODEL I A 003 LENGUAJE SQL3 E A 004 SQL3 TRADEOFFS I A 005 BASES DE DATOS E TIPO CÓD_DOC TÍTULO IDIOMA NOMBRE_E AÑO ISBN CÓDIGO NOMBRE_E DIR CIUDAD L 001 CONCEPCIÓN BD E RAMA S 001 RAMA CTRA. CANILLAS, 144 MADRID L 002 AN INTRODUCTION DBS I ADDISON-WESLEY X 002 ADDISON SUNSET ST--- 4 READING L 003 A GUIDE TO SQL I ADDISON-WESLEY ADDISON SUNSET ST- 4 READING L 004 RELATIONAL DB I ADDISON-WESLEY X 002 ADOISON SUNSET ST., 4 READING L 005 ANÁLISIS SI E RAMA RAMA CTRA. CANILLAS, 4 MADRID L 006 ANÁLISIS DE SI E ANAYA ANAYA GOYA, 8 MADRID L 007 COMPILADORES E PARANINFO PARANINFO SOL, 3 MADRID 003 McGRAW 181 AVENUE NEW YORK TIPO CÓD_DOC TÍTULO IDIOMA NOMBRE_E AÑO ISBN CÓDIGO NOMBRE_E DIR CIUDAD L 001 CONCEPCIÓN BD RAMA S 001 RAMA CTRA. CANILLAS, 144 MADRID L 002 AN INTRODUCTION DBS I ADDISON-WESLEY X 002 ADDISON SUNSET ST,. 4 READING L 003 A GUIDE TO SQL I ADDISON-WESLEY ADDISON SUNSET ST,. 4 READING L 004 RELATIONAL DB I ADDISON-WESLEY X 002 ADDISON SUNSET ST., 4 READING L 005 ANÁLISIS SI E RAMA RAMA CTRA. CANILLAS, 4 MADRID L 006 ANÁLISIS DE SI E ANAYA ANAYA GOYA, 8 MADRID L 007 COMPILADORES E PARANINFO PARANINFO SOL, 3 MADRID A 001 ER MODEL I A 002 R-ELATIONAL MODEL I A 003 LENGUAJE SQL3 E A 004 SQL3 TRADEOFFS I A 005 BASES DE DATOS E McGRAW 181 AVENUE NEW YORK Figura 7.6 Ejemplos de combinaciones externas

16 CLÁUSULA WHERE La cláusula WHERE se define de la siguiente manera: <cláusula WHERE>: : = WHERE <condición de búsqueda> y sirve para filtrar el resultado de la consulta, ya que en éste no aparecerán las filas que no cumplan la condición de búsqueda, que se define así: <condición de búsqueda> ::= <término booleano> <condición de búsqueda> OR <término booleano> <término booleano> ::= <factor booleano> <término booleano> AND <factor booleano> <factor booleano> ::= [NOT] <test booleano> <test booleano> ::=. <primario booleano> [ IS [NOT] <valor de verdad 7 > ] <primario booleano> ::= <predicado> <parent. izq.><condición de búsqueda><parent. dcho.> El SQL admite distintos tipos de predicados, los más utilizados son los siguientes: A) Predicado de comparación Es parecido al de los lenguajes de programación, y utiliza los símbolos tradicionales: igual ( = ), distinto menor que ( < ), mayor que ( > ), menor o igual a ( <= ) y mayor o igual a ( >= ) En la figura 7.7 se obtiene el resultado de aplicar a la tabla Documento la siguiente consulta: SELECT Titulo, Idioma, Nombre_E, Año FROM Documento WHERE Año > = 1995; B) Predicado Between TÍTULO IDIOMA NOMBRE AÑO AN INTRODUCTION TO DBS I ADDISON-WESLEY 1995 A GUIDE TO SQL I ADDISON-WESLEY 1996 RELATIONAL DB I ADDISON-WESLEY 1995 ANÁLISIS SI E RAMA 1996 LENGUAJE SQL3 E 1995 SQL3 TRADEOFFS I 1995 BASES DE DATOS E 1996 Figura 7.7. Ejemplo de predicado de comparación Es un predicado de comparación especial que permite obtener los valores que se encuentran dentro de un intervalo (extremos inclusive). Por ejemplo, en la figura 7.8 se ejecuta la siguiente consulta sobre la tabla Documento: SELECT Titulo, Idioma, Nombre_E, Año FROM Documento WHERE Año BETWEEN 1976 AND 1993; TÍTULO IDIOMA NOMBRE AÑO CONCEPCION BD E RAMA 1993 ANÁLISIS DE SI E ANAYA 1993 COMPILADORES E PARANINFO 1992 E/R MODEL I RELATIONAL MODEL I Figura 7.8. Ejemplo de predicado Between 7 Recordemos que el lenguaje SQL soporta lógica multivaluada, con los valores de verdad TRUE (cierto), FALSE (falso) y UNKNO" (quizás).

17 C) Predicado In Permite comparar un valor con una lista (de valores) o con una subconsulta. Por ejemplo, si quisiéramos consultar los documentos publicados en las editoriales Ra-Ma o Paraninfo, podríamos escribir la siguiente consulta: SELECT * FROM Documento WHERE Nombre_E IN ('Ra-Ma', 'Paraninfo'); Otro ejemplo podría ser la consulta relativa a los libros publicados por editoriales que se encuentren en Madrid: SELECT * FROM Documento WHERE Nombre_E IN (SELECT Nombre FROM Editorial WHERE Ciudad = 'Madrid'); en la que podemos ver cómo se ha anidado una sentencia SELECT dentro de otra. Hay que destacar que esta sentencia puede hacerse de múltiples formas distintas, por ejemplo mediante una combinación de tablas. Autores como DATE (1995) señalan como inconveniente para los usuarios que una misma consulta pueda expresarse de formas distintas, puesto que los productos pueden dar tiempos de respuesta distintos según se lleve a cabo la consulta. Por ejemplo suele ser más eficiente realizar una consulta combinando tablas que anidando sentencias SELECT. D) Predicado Like Permite utilizar comodines a la hora de consultar la base de datos, para lo que utiliza el carácter % para Indicar cero o más caracteres en el patrón de búsqueda, y el carácter - para indicar exactamente un carácter. Así, podríamos consultar por Documentos en cuyo título aparezca BD mediante la sentencia siguiente: SELECT * FROM Documento WHERE Titulo LIKE '%DB %'; y obtendríamos el resultado que se muestra en la figura 7.9. TIPO CÓD-DOC TÍTULO IDIOMA NOMBRE AÑO ISBN L 002 INTRODUCTION TO DBS I ADDISON-WESLEY X L 004 RELATIONAL DB I ADDISON-WESLEY X Figura 7.9. Utilización del predicado Like E) Predicado Null Sirve para determinar si una columna tiene valores nulos. Así, por ejemplo, si quisiéramos consultar aquellos documentos que no poseen ISBN 8, haríamos lo siguiente: SELECT* FROM Documento WHERE Isbn IS NULL; 8 Obtendríamos sólo los artículos que son los únicos documentos que no poseen ISBN.

18 F) Predicado Exists Este predicado es cierto si la cardinalidad de la consulta que tiene asociada es mayor que cero y falso en caso contrario. En el apartado 4.3 lo utilizamos para definir una aserción, y remitimos al lector a MELTON y SIMON (1992) para una mayor explicación sobre este predicado y los que se enuncian a continuación. También nos parece muy interesante consultar las referencias DATE (1990) y DATE (1995) para adentrarse en algunos de los problemas que puede causar la utilización de estos predicados. G) Predicado UNIQUE Sirve para determinar si existen filas duplicadas en la subconsulta que lleva asociado. H) Predicado Overlaps Se emplea para contrastar si dos intervalos de tiempo se solapan. I) Predicado de comparación cuantificado El lenguaje SQL permite también aplicar cuantificadores existenciales y universales en las consultas por medio de las partículas SOME, ANY y ALL. J) Predicado Match Este predicado, que también se emplea como ya hemos señalado en la definición de clave ajena, se define de la siguiente manera: <predicado match> ::= <constructor de valor de fila> MATCH [UNIQUE ] [PARTIAL FULL] <subconsulta de tabla> En el caso de que no se especifique ningún tipo de correspondencia (ni PARTIAL ni FULL), el predicado es cierto si: algún valor del valor de fila (del constructor) es nulo, o ningún valor del valor de fila (del constructor) es nulo y todo valor del valor de fila es igual al valor correspondiente en alguna fila de la subconsulta de tabla (o exactamente a una fila si se especifica UNIQUE), en caso contrario el predicado es falso. Si se especifica correspondencia total (FULL), el predicado es cierto si: todo valor del valor de fila es nulo, o ningún valor del valor de fila es nulo y todo valor del valor de fila es igual al correspondiente valor en alguna fila de la subconsulta, en caso contrario es falso. Si se especifica correspondencia parcial (PARTIAL), el predicado es cierto si: todo valor del valor de fila es nulo, o todo valor del valor de fila no nulo es igual al correspondiente valor en alguna fila de la subconsulta, en caso contrario es falso. Para explicar el funcionamiento del predicado vamos a aplicarlo al ejemplo de la figura 7.10, en la que suponemos que la clave primaria de la tabla Libro está compuesta por las columnas Título y Año. En la tabla Escribe tenemos una clave ajena compuesta

19 por estas mismas columnas que referencia a la tabla Libro. El predicado Match nos serviría para refinar esta referencia, especificando si admitimos o no que una de las columnas que forman la clave ajena, por ejemplo, Año, tomen valores nulos. LIBRO TÍTULO AÑO EDITORIAL SELECTED WRITINGS 1990 ADDISON-WESLEY SELECTED WRITINGS 1992 ADDISON-WESLEY CONCEPCIÓN BD 1993 RAMA ANÁLISIS SI 1996 RAMA CLAVE AJENA (TÍTULO, AÑO) ESCRIBE AUTOR TÍTULO AÑO DATE SELECTED WRITINGS 1990 DATE SELECTED WRITINGS 1992 DE MIGUEL CONCEPCIóN DE BD 1993 PIATTINI CONCEPCIóN DE BD 1993 PIATTINI ANÁLISIS SI 1996 Figura Ejemplo de utilización de Match En caso de querer insertar la fila <DATE, Selected Writings, nulo> en la tabla Escribe, si se especifica el tipo de correspodencia total (FULL) siempre daría falso al tener un valor del valor de fila nulo; mientras que si no se especificara ninguna correspondencia o si ésta fuera parcial, el predicado sería cierto. Si se quiere introducir la fila <DATE, Concepción y Diseño de BD, nulo>, con correspondencia total sería falso, así como con correspondencia parcial, mientras que si no se especifica correspondencia daría cierto. Por supuesto que si se quiere insertar la fila <DATE, Concepción y Diseño de BD, l889>, daría falso en los tres casos CLÁUSULA GROUP BY Esta cláusula permite particionar una tabla en grupos (denominados tablas agrupadas), de acuerdo a los valores de ciertas columnas: <cláusula group by> ::= GROUP BY <lista de referencia de columnas de agrupación> Se suele utilizar en combinación con funciones de agregación como el número de filas de una tabla (COUNT), el valor máximo (MAX), el valor mínimo (MIN), la suma de valores (SUM), la media de valores (AVG). Ejemplos de utilización de esta cláusula podrían ser los siguientes: SELECT Tipo, MIN (Año) FROM Documento GROUP BY Tipo; cuyo resultado se muestra en la figura TIPO AÑO L 1992 A 1976 Figura Ejemplo de utilización de la cláusula group by Si quisiéramos saber cuántas editoriales existen en cada ciudad, podríamos hacer: SELECT Ciudad, COUNT (*) FROM Editorial GROUP BY Ciudad;

20 5.1.5 CLÁUSULA HAVING Esta cláusula va asociada a la anterior y juega un papel análogo al de la cláusula WHERE, pero aplicado a tablas agrupadas. <cláusula having> ::= HAVING <condición de búsqueda> Así, por ejemplo, si quisiéramos consultar las ciudades en las que se encuentran ubicadas por lo menos dos editoriales, podríamos agrupar las editoriales por ciudades y establecer la condición de que fueran más de dos en la cláusula Having: SELECT Ciudad, FROM Editorial GROUP BY Ciudad HAVING COUNT (*) >= 2; 5.2. Inserción de datos: Sentencia INSERT La inserción de datos se lleva a cabo mediante la sentencia INSERT: <sentencia de inserción> ::= INSERT INTO <nombre de tabla> VALUES <columnas y fuente de inserción> <columnas y fuente de inserción> ::= [<parent. izq.><lista de columnas de inserción> <parent.dcho.>] <expresión de consulta> DEFAULT VALUES Así, por ejemplo, si queremos insertar un nuevo documento en la biblioteca podríamos hacer: INSERT INTO Documento VALUES ( L, 030, 'Una visión actual de CASE', 'E', TAMA', 1995, ); pudiendo también especificar el nombre de las columnas, lo que es muy recomendable, ya que nos permite conseguir una mayor independencia de cara a una posib e reorganización del orden de las columnas o una inclusión de nuevas columnas en la tabla Borrado de datos: Sentencia DELETE La sentencia DELETE permite borrar datos de la tabla: <sentencia de borrado>::= DELETE FROM <nombre de tabla> [WHERE <condición de búsqueda>] Así, por ejemplo, Podemos borrar los libros publicados por Addison-Wesley de la siguiente manera: DELETE FROM Documento WHERE Nombre_E = Addison-Wesley'; 5.4. Modificación de datos: Sentencia UPDATE La modificación de datos se lleva a cabo mediante la sentencia UPDATE: <sentencia de actualización> ::= UPDATE <nombre de tabla> SET <lista de cláusula de set> [WHERE <condición de búsqueda>] <lista de cláusula de set>::=

SINTAXIS DE SQL-92. ::= CREATE SCHEMA [ ... ]

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ] SINTAXIS DE SQL-92 Introducción: Se presenta brevemente un resumen de la sintaxis de SQL según el estándar ISO 9075 (SQL- 92), dividido en tres partes: - Lenguaje de Definición de Daots (LDD), - Lenguaje

Más detalles

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid Índice V.1 Introducción V.1 SQL como Lenguaje de V.1.1 Definición del esquema V.1.2 Evolución del esquema V.2 SQL como Lenguaje de Manipulación

Más detalles

Tema 33. El lenguaje SQL

Tema 33. El lenguaje SQL Tema 33. El lenguaje SQL Introducción... 1 Modos de uso... 2 Ejecución de las sentencias SQL... 2 Instrucciones DDL Data Definition Language-... 3 Instrucciones DML Data Manipulation Language-... 4 Instrucciones

Más detalles

Tema 4. SQL. Juan Ignacio Rodríguez de León

Tema 4. SQL. Juan Ignacio Rodríguez de León Tema 4. SQL Juan Ignacio Rodríguez de León Resumen Este tema se centra exclusivamente en el estudio del lenguaje de consultas SQL (Structured Query Language). SQL usa una combinación de álgebra relacional

Más detalles

Introducción a las bases de datos.

Introducción a las bases de datos. Introducción a las BBDD 1 Centro de Referencia Linux UAM-IBM Introducción a las bases de datos. Carmen B. Navarrete Navarrete carmen_navarrete@telefonica.net Introducción a las BBDD 2 Qué vamos a ver?

Más detalles

INDICE Primera Parte. Panorámica general de SQL 2. Rápido repaso de SQL 3. SQL en Perspectiva

INDICE Primera Parte. Panorámica general de SQL 2. Rápido repaso de SQL 3. SQL en Perspectiva INDICE Prólogo XXIII Por qué este libro es para usted XXVII Primera Parte. Panorámica general de SQL 1 1. Introducción 3 El lenguaje SQL 3 El papel de SQL 6 Características y beneficios de SQL 7 Independencia

Más detalles

PARTE II. MODELO RELACIONAL. ESTÁTICA

PARTE II. MODELO RELACIONAL. ESTÁTICA Índice PARTE II. MODELO RELACIONAL. ESTÁTICA III.4 INTRODUCCIÓN AL MODELO RELACIONAL III.5 ESTRUCTURA DEL MODELO III.6 RESTRICCIONES III.7 EL MODELO RELACIONAL Y LA ARQUITECTURA ANSI III.8 LAS 12 REGLAS

Más detalles

Temario Curso Bases de Datos

Temario Curso Bases de Datos Temario Curso Bases de Datos TEMA 1. INTRODUCCION A LAS BASES DE DATOS 1. Cualidades De La Información 2. Sistemas de Información 2.1. Componentes de un Sistema de Información 3. Niveles de Gestión de

Más detalles

8 SQL SERVER 2008 RA-MA

8 SQL SERVER 2008 RA-MA ÍNDICE Capítulo 1. Características, novedades y entorno de trabajo... 17 1.1 Novedades en SQL Server 2008... 17 1.2 Instalación de Microsoft SQL Server 2008... 19 1.3 Versiones de Microsoft SQL Server

Más detalles

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo - 2011

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo - 2011 Structured Query Language () Fundamentos de Bases de Datos InCo - Un poco de historia Lenguajes de consulta relacionales: SEQUEL (IBM-1970) QUEL (Ingres-1970) QBE (IBM-1970) es el lenguaje comercial más

Más detalles

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA ÍNDICE CAPÍTULO 1. CARACTERÍSTICAS, NOVEDADES Y ENTORNO DE TRABAJO...17 1.1 NOVEDADES EN SQL SERVER 2008 R2...17 1.2 INSTALACIÓN DE MICROSOFT SQL SERVER 2008 R2...18 1.3 VERSIONES DE MICROSOFT SQL SERVER

Más detalles

2.5.- El lenguaje estándar SQL

2.5.- El lenguaje estándar SQL 25- El lenguaje estándar SQL El SQL es un lenguaje estándar de definición y manipulación (y consulta) de bases de datos relacionales El SQL estándar incluye: Características del Álgebra Relacional Características

Más detalles

Temario. Índices simples Árboles B Hashing

Temario. Índices simples Árboles B Hashing Temario Introducción y fundamentos Introducción a SQL Modelo Entidad / Relación Modelo relacional Diseño relacional: formas normales Consultas Cálculo relacional Álgebra relacional Implementación de bases

Más detalles

Integridad en sistemas de bases de datos relacionales

Integridad en sistemas de bases de datos relacionales Integridad en sistemas de bases de datos relacionales Competencias específicas a adquirir Asegurar la integridad de los datos mediante la aplicación de los mecanismos soportados por los SGBDs. Identificar

Más detalles

Tema 6. Transacciones y seguridad

Tema 6. Transacciones y seguridad Tema 6. Transacciones y seguridad Las aplicaciones de bases de datos a gran escala, con bases de datos de gran tamaño y con cientos de usuarios concurrentes, como los sistemas de reservas, los bancos,

Más detalles

SQL SQL. Índice. Componentes. Objetivos

SQL SQL. Índice. Componentes. Objetivos Estándar En 1986, ANSI (American National Standard Institute) definión un estándar para (Structured Query Language) que fue posteriormente adoptado en 1987 como estándar internacional por ISO (International

Más detalles

ÍNDICE. Introducción... Capítulo 1. Novedades de Access 2013... 1

ÍNDICE. Introducción... Capítulo 1. Novedades de Access 2013... 1 Introducción... XIII Capítulo 1. Novedades de Access 2013... 1 Nuevas posibilidades de cifrado, compactación y reparación de archivos... 1 Trabajo en la nube... 2 Compartir la información... 3 Guardar

Más detalles

Integridad y Seguridad. Integridad y Seguridad. Restricción de Dominio. Protección. Índice. create domain. Dominios

Integridad y Seguridad. Integridad y Seguridad. Restricción de Dominio. Protección. Índice. create domain. Dominios Protección Integridad y Seguridad Las Restricciones de Integridad aseguran que las modificaciones realizadas por usuarios autorizados no provocan perdidas de Consistencia Semántica El Control de Acceso

Más detalles

A.1. Definiciones de datos en SQL

A.1. Definiciones de datos en SQL A.1. Definiciones de datos en SQL Las Sentencias del lenguaje de definición de datos (DDL) que posee SQL operan en base a tablas. Las Principales sentencias DDL son las siguientes: CREATE TABLE DROP TABLE

Más detalles

SERVICIO NACIONAL DE APRENDIZAJE SENA

SERVICIO NACIONAL DE APRENDIZAJE SENA SERVICIO NACIONAL DE APRENDIZAJE SENA GUÍA DE APRENDIZAJE SISTEMA INTEGRADO DE GESTIÓN Proceso Gestión de la Formación Profesional Integral Procedimiento Ejecución de la Formación Profesional Integral

Más detalles

Bases de Datos 2. Teórico

Bases de Datos 2. Teórico Bases de Datos 2 Teórico Structured Query Language (SQL) Características de SQL Standard Opera sobre conjuntos de tuplas: incluso para las operaciones de inserción, borrado y actualización. No elimina

Más detalles

BASES DE DATOS AVANZADAS Tema 2. Repaso de SQL y Lenguajes Relacionales. Univ. Cantabria Fac. de Ciencias Francisco Ruiz, Marta Zorrilla

BASES DE DATOS AVANZADAS Tema 2. Repaso de SQL y Lenguajes Relacionales. Univ. Cantabria Fac. de Ciencias Francisco Ruiz, Marta Zorrilla BASES DE DATOS AVANZADAS Tema 2 Repaso de SQL y Lenguajes Relacionales Univ. Cantabria Fac. de Ciencias Objetivos Conocer los tipos de lenguajes para el modelo relacional de datos. Conocer los conceptos

Más detalles

SQL. Orígenes y Evolución

SQL. Orígenes y Evolución SQL 1 SQL. Orígenes y Evolución 2 SQL: Estándar oficial 3 Funciones de SQL DDL Data Definition Language Creación n de estructuras de la base de datos Integridad de los datos DML Data Manipulation Language

Más detalles

Base de Datos Oracle 10g: Introducción a SQL Código: D17216 - Duración: 5 días (40 horas)

Base de Datos Oracle 10g: Introducción a SQL Código: D17216 - Duración: 5 días (40 horas) Base de Datos Oracle 10g: Introducción a SQL Código: D17216 - Duración: 5 días (40 horas) Lo que aprenderá Esta clase es aplicable para los usuarios de Oracle8i, Oracle9i y Oracle Database 10g. En este

Más detalles

CURSO DE SQL SERVER 2005

CURSO DE SQL SERVER 2005 CURSO DE SQL SERVER 2005 Una vez finalizado el curso, el alumno estará preparado para: Instalar y configurar SQL Server 2005. Comprender los conceptos más importantes del diseño de bases de datos. Crear

Más detalles

Lenguaje para descripción de datos

Lenguaje para descripción de datos Amparo López Gaona tación Fac. Ciencias, UNAM Mayo 2012 Definición de Datos El lenguaje para definición de datos permite especificar: Esquema de cada relación. El dominio de cada atributo. Restricciones

Más detalles

6. Integridad en Sistemas de Bases de Datos Relacionales

6. Integridad en Sistemas de Bases de Datos Relacionales 6. Integridad en Sistemas de Bases de Datos Relacionales Objetivos Apreciar la necesidad de garantizar la integridad o corrección de la información almacenada en una base de datos Distinguir e identificar

Más detalles

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl Resumen demandas de almacenamiento y procesamiento de datos. Es el conjunto de estas dos capacidades

Más detalles

ÍNDICE INTRODUCCIÓN...13

ÍNDICE INTRODUCCIÓN...13 ÍNDICE INTRODUCCIÓN...13 CAPÍTULO 1. EL MODELO RELACIONAL. LENGUAJE SQL...17 1.1 INTRODUCCIÓN AL MODELO RELACIONAL...17 1.2 RELACIONES...19 1.2.1 Definición formal de relación...21 1.2.2 Propiedades y

Más detalles

Base de datos relacional

Base de datos relacional Base de datos relacional Una base de datos relacional es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para modelar problemas reales y administrar

Más detalles

1.- Etapas del diseño lógico Diseño lógico estándar Diseño lógico específico 2.- Transformación del esquema conceptual al lógico estándar

1.- Etapas del diseño lógico Diseño lógico estándar Diseño lógico específico 2.- Transformación del esquema conceptual al lógico estándar 1.- Etapas del diseño lógico Diseño lógico estándar Diseño lógico específico 2.- Transformación del esquema conceptual al lógico estándar 3.- 4.- Reglas concernientes a las extensiones del modelo E/R Transformación

Más detalles

Unidad. Lenguaje SQL. (Structured Query Language)

Unidad. Lenguaje SQL. (Structured Query Language) Unidad Lenguaje SQL (Structured Query Language) 1 SQL Definición DDL Consulta y Actualización DML Create Alter Drop Select Insert Update Delete 2 SQL DDL CREATE TABLE nombre_tabla (nombre_columna tipo_dato/dominio

Más detalles

Pequeños apuntes de SQL *

Pequeños apuntes de SQL * Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo 1 SQL Pequeños apuntes de SQL * En estas hojas se exponen de manera concisa algunos aspectos adicionales del SQL, así como ejemplos

Más detalles

El rol del lenguaje SQL en los SGBDR y en la implementación del Modelo Relacional.

El rol del lenguaje SQL en los SGBDR y en la implementación del Modelo Relacional. Página 1 de 13 El rol del lenguaje SQL en los SGBDR y en la implementación del Modelo Relacional. Claudia Jiménez, Thomas Armstrong cjimenez@inf.udec.cl, tamrstro@inf.udec.cl Resumen El presente artículo

Más detalles

PROGRAMAS DE ESTUDIO FORMATO 7 INTRODUCCIÓN A SQL. Área de Formación Profesional

PROGRAMAS DE ESTUDIO FORMATO 7 INTRODUCCIÓN A SQL. Área de Formación Profesional PROGRAMAS DE ESTUDIO FORMATO 7 NOMBRE DE LA ASIGNATURA INTRODUCCIÓN A SQL CICLO, AREA O MODULO Área de Formación Profesional CLAVE DE LA ASIGNATURA IT222 OBJETIVOS GENERALES DE LA ASIGNATURA Al final del

Más detalles

Tema 4. Lenguajes de consulta comerciales

Tema 4. Lenguajes de consulta comerciales Tema 4. Lenguajes de consulta comerciales 4.1. Introducción En el tema anterior hemos estudiado las operaciones del álgebra relacional y el cálculo relacional, imprescindibles para entender las consultas

Más detalles

Tema 1. Bases de datos activas

Tema 1. Bases de datos activas Tema 1. Bases de datos activas Diseño de Sistemas de Bases de Datos Merche Marqués 18 de marzo de 2002 Índice 1. Introducción 1 2. El modelo evento condición acción 1 2.1. Definición y uso de disparadores

Más detalles

Bases de Datos: Structured Query Language (SQL)

Bases de Datos: Structured Query Language (SQL) Structured Query Language (SQL): Introducción Bases de Datos: Structured Query Language (SQL) Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile

Más detalles

: COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería de Redes y Comunicaciones : Administración de Bases de Datos I : T-INF127

: COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería de Redes y Comunicaciones : Administración de Bases de Datos I : T-INF127 I. DATOS INFORMATIVOS Carrera Especialidad Curso Código Ciclo : Tercero Requisitos Duración Horas Semana : 06 horas Versión : v.0110 II. SUMILLA : COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería

Más detalles

Permite definir cada relación que pertenece a la base de datos relacional, incluyendo:

Permite definir cada relación que pertenece a la base de datos relacional, incluyendo: TEMA 7.- EL ESTANDAR SQL. El Sublenguaje de Manipulación. El Sublenguaje de Definición. El Sublenguaje de Control. El Sublenguaje Huésped. 1. El Sublenguaje de Manipulación. (Se verá en la clase de problemas)

Más detalles

Grupo Kybele, http://www.kybele.es/ Pág. 1

Grupo Kybele, http://www.kybele.es/ Pág. 1 Bases de Datos APUNTES PARA EL MANEJO DE SQL*Plus Para cualquier consulta a la sintaxis de las órdenes SQL o SQL*PLUS puede consultarse cualquier libro de ORACLE, o los manuales gratuitos en pdf o en línea

Más detalles

TRANSFORMACIÓN DE ESQUEMAS E/R A ESQUEMAS RELACIONALES

TRANSFORMACIÓN DE ESQUEMAS E/R A ESQUEMAS RELACIONALES TRANSFORMACIÓN DE ESQUEMAS E/R A ESQUEMAS RELACIONALES 1. REGLAS DE TRANSFORMACIÓN DEL ESQUEMA CONCEPTUAL AL LÓGICO ESTÁNDAR Las tres reglas básicas para convertir un esquema en el modelo E/R al relacional

Más detalles

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros La sentencia INSERT permite agregar nuevas filas de datos a las tablas existentes. Está sentencia

Más detalles

SQL Los fundamentos del lenguaje

SQL Los fundamentos del lenguaje Introducción 1. Un poco de historia 11 2. Las normas SQL 12 3. Descripción rápida del modelo relacional 14 3.1 Principales conceptos del modelo relacional 15 3.2 Principales reglas 16 4. Los operadores

Más detalles

2.6.2.- Aplicaciones de las vistas. 2.6.1.- Concepto de vista. 2.6.3.- Vistas en SQL. 2.6.3.- Vistas en SQL.

2.6.2.- Aplicaciones de las vistas. 2.6.1.- Concepto de vista. 2.6.3.- Vistas en SQL. 2.6.3.- Vistas en SQL. 2.6.1.- Concepto de vista. Una vista es una tabla derivada de otras tablas (básicas o virtuales). Una vista se caracteriza porque: Se considera que forma parte del esquema externo. Una vista es una tabla

Más detalles

Consultas con combinaciones

Consultas con combinaciones UNIDAD 1.- PARTE 2 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES Xochitl Clemente Parra Armando Méndez Morales Consultas con combinaciones Usando combinaciones (joins), se pueden

Más detalles

BASE DE DATOS - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL)

BASE DE DATOS - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL) OBJETIVOS: Enseñar al alumno las sentencias que forman el lenguaje de definición de datos de SQL, es decir, el subconjunto de órdenes que nos permitirán crear o editar esquemas de bases de datos. MATERIAL:

Más detalles

1. DML. Las subconsultas

1. DML. Las subconsultas 1.1 Introducción 1. DML. Las subconsultas Una subconsulta es una consulta que aparece dentro de otra consulta o subconsulta en la lista de selección, en la cláusula WHERE o HAVING, originalmente no se

Más detalles

ACERCA DE LOS AUTO RES... III AGRADECIMIENTOS... xi INTRODUCCION... Xl

ACERCA DE LOS AUTO RES... III AGRADECIMIENTOS... xi INTRODUCCION... Xl Contenido ACERCA DE LOS AUTO RES..................................... III AGRADECIMIENTOS........................................... xi INTRODUCCION............................................... Xl Introduccion

Más detalles

El Manejador de Bases de Datos Relacionales ORACLE

El Manejador de Bases de Datos Relacionales ORACLE El Manejador de Bases de Datos Relacionales ORACLE Como la segunda empresa vendedora de software a nivel mundial, ORACLE provee una plataforma completa para desarrollar aplicaciones que utilicen el recurso

Más detalles

Acceso a bases de datos MySQL con PHP

Acceso a bases de datos MySQL con PHP GESTIÓN Y ADMINISTRACIÓN WEB Acceso a bases de datos MySQL con PHP Ing. CIP Fabián Silva Alvarado fsilvasys@hotmail.com DEFINICIÓN DE BASE DE DATOS Base de Datos es un conjunto de datos relacionados entre

Más detalles

Restricciones de Integridad

Restricciones de Integridad Restricciones de Integridad Amparo López Gaona México, D.F. Semestre 2000-I Restricciones de Integridad Las principales restricciones de integridad que pueden indicarse son: La clave primaria. Claves candidatas.

Más detalles

PROGRAMANDO BASES DE DATOS PostgreSQL INTRODUCCIÓN INTRODUCCIÓN A LAS BASES DE DATOS (L1)

PROGRAMANDO BASES DE DATOS PostgreSQL INTRODUCCIÓN INTRODUCCIÓN A LAS BASES DE DATOS (L1) A LAS BASES DE DATOS (L1) VENTAJAS TECNOLOGÍA BASE DE DATOS DISPONIBILIDAD Y VISIBILIDAD ALMACENAMIENTO CONSULTAS INFORMACIÓN RESPALDOS Y RESTAURACIÓN CONCEPTOS DE INTEGRIDAD DE LOS DATOS ELIMINACIÓN REDUNDANCIA

Más detalles

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES Xochitl Clemente Parra Armando Méndez Morales Práctica preliminar Crear la siguiente base de datos de prácticas

Más detalles

EL LENGUAJE DE BASES DE DATOS SQL (DDL, DML, TRIGGERS Y STORE PROCEDURES)

EL LENGUAJE DE BASES DE DATOS SQL (DDL, DML, TRIGGERS Y STORE PROCEDURES) EL LENGUAJE DE BASES DE DATOS SQL (DDL, DML, TRIGGERS Y STORE PROCEDURES) Por qué son importantes las Bases de Datos? Las Bases de Datos son el método preferido para el almacenamiento estructurado de datos.

Más detalles

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006 Bases de Datos SQL 1 SQL Jorge Pérez R. Universidad de Talca, II Semestre 2006 Bases de Datos SQL 2 Structured Query Language Lenguaje de consulta para bases de datos comerciales. Originalmente llamado

Más detalles

Bases de Datos Relacionales

Bases de Datos Relacionales 2da. Parte Bases de Datos Relacionales Objetivos de la Clase SQL. Tipos de sentencias SQL Describir los tipos de dato que se pueden utilizar al especificar la definición de columnas. Sentencias SQL Select.

Más detalles

Sistemas Informáticos I Resumen

Sistemas Informáticos I Resumen Sistemas Informáticos I Resumen Alejandro Bellogín Kouki 20 de enero de 2007 1. Modelo Entidad-Relación y tablas 1.1. Modelo E-R Entidad rectángulo Relaciones rombos Uno a uno! Uno a muchos! Muchos a muchos

Más detalles

EXPLOTACIÓN DE BASES DE DATOS CON ACCESS

EXPLOTACIÓN DE BASES DE DATOS CON ACCESS EXPLOTACIÓN DE BASES DE DATOS CON ACCESS Por qué son importantes las Bases de Datos? Las Bases de Datos son el método preferido para el almacenamiento estructurado de datos. Desde las grandes aplicaciones

Más detalles

BASES DE DATOS TEMA 4. SQL. UN LENGUAJE DE CONSULTA COMERCIAL PARA BASES DE DATOS RELACIONALES Contenidos generales

BASES DE DATOS TEMA 4. SQL. UN LENGUAJE DE CONSULTA COMERCIAL PARA BASES DE DATOS RELACIONALES Contenidos generales BASES DE DATOS TEMA 4. SQL. UN LENGUAJE DE CONSULTA COMERCIAL PARA BASES DE DATOS RELACIONALES Contenidos generales * Definición de datos en SQL * Consulta de datos en SQL - Estructura básica de una sentencia

Más detalles

LENGUAJE SQL. Bárbula, Febrero de 2007. Historia y Definición

LENGUAJE SQL. Bárbula, Febrero de 2007. Historia y Definición LENGUAJE Integrantes: Ceci Vanessa Paredes Oswaldo Rodríguez Aury Bárbula, Febrero de 2007 : Es una herramienta para organizar, gestionar y recuperar datos almacenados en una base de datos. funciona con

Más detalles

ADMINISTRACION DE BASES DE DATOS EN ORACLE

ADMINISTRACION DE BASES DE DATOS EN ORACLE 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

Más detalles

Tema 6. Restricciones a la Base de Datos: Integridad y seguridad

Tema 6. Restricciones a la Base de Datos: Integridad y seguridad Tema 6. Restricciones a la Base de Datos: Integridad y seguridad Juan Ignacio Rodríguez de León Resumen Las restricciones desde el punto de vista de integridad de bases de datos. se presentan dependencias

Más detalles

ÍNDICE PRIMERA PARTE... 17

ÍNDICE PRIMERA PARTE... 17 ÍNDICE PREFACIO... xv PRIMERA PARTE... 17 CAPÍTULO 1. BASES DE DATOS... 19 BASE DE DATOS RELACIONAL... 20 ESTRUCTURA MÍNIMA DE ALMACENAMIENTO... 21 EJEMPLO DE TABLA... 22 RESUMEN... 23 CAPÍTULO 2. CONSULTAS

Más detalles

3. El catálogo 26. Laboratorio de Bases de Datos

3. El catálogo 26. Laboratorio de Bases de Datos ÍNDICE Continuación SQL Índice 1. Continuación del SQL como DML (Lenguaje de Manipulación de Datos) 1 1.1. Inserción de datos................................. 1 1.2. Borrado de datos..................................

Más detalles

EL ENTORNO DE TRABAJO SQL ORACLE

EL ENTORNO DE TRABAJO SQL ORACLE PREVIO 2 EL ENTORNO DE TRABAJO SQL ORACLE Y LENGUAJE DE DEFINICIÓN DE DATOS DDL) INTRODUCCIÓN A ORACLE Oracle10g es de las últimas versiones de esté manejador de base de datos, incorpora la tecnología

Más detalles

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DDL. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DDL. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com. Maestría en Bioinformática Bases de Datos y Sistemas de Información SQL: DDL Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy Agenda SQL DDL Lenguaje SQL Sub-lenguajes Dialectos Agenda SQL DDL Esquemas

Más detalles

LENGUAJE SQL. En Mysql se utiliza un subconjunto de SQL (update, insert into, delete, select, truncate,etc).

LENGUAJE SQL. En Mysql se utiliza un subconjunto de SQL (update, insert into, delete, select, truncate,etc). LENGUAJE SQL Un manejador de base de datos debe de contener lenguajes que permitan definir el modelos de los datos, este mismo es que permite crear la estructura de la base de datos. Lenguaje de Definicion

Más detalles

Bases de Datos. Tema 3 Modelo Relacional. Francisco Ruiz oct-2000. UCLM-ESI (F.Ruiz)

Bases de Datos. Tema 3 Modelo Relacional. Francisco Ruiz oct-2000. UCLM-ESI (F.Ruiz) Bases de Datos Tema 3 Modelo Relacional Francisco Ruiz oct-2000 documentación preparada con ayuda de Esperanza Marcos (Universidad Rey Juan Carlos) y Mario Piattini (Universidad de Castilla-La Mancha)

Más detalles

Base de datos I Facultad de Ingeniería. Escuela de computación.

Base de datos I Facultad de Ingeniería. Escuela de computación. Base de datos I Facultad de Ingeniería. Escuela de computación. Introducción Este manual ha sido elaborado para orientar al estudiante de Bases de datos I en el desarrollo de sus prácticas de laboratorios,

Más detalles

INTRODUCCIÓN AL SQL. TRANSACT-SQL SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

INTRODUCCIÓN AL SQL. TRANSACT-SQL SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE INTRODUCCIÓN AL SQL. TRANSACT-SQL SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE INTRODUCCIÓN AL SQL. TRANSACT SQL CONCEPTOS BÁSICO DE SQL SQL (Structured Query Language),

Más detalles

Bases de Datos - 2006. SQL - Ejemplos

Bases de Datos - 2006. SQL - Ejemplos Bases de Datos - 2006 SQL - Ejemplos Consideramos la siguiente base de datos relacional: persona(dni,primer-nombre,apellido) biblioteca(nombre-biblioteca,calle,número) libro(título,isbn,editorial,edición)

Más detalles

TEMA 10. INTRODUCCCIÓN A SQL. CONSULTAS BASADAS EN UNA TABLA

TEMA 10. INTRODUCCCIÓN A SQL. CONSULTAS BASADAS EN UNA TABLA 1 TEMA 10. INTRODUCCCIÓN A SQL. CONSULTAS BASADAS EN UNA TABLA 1. Definición de SQL. Características 2. Selección del origen de los datos. Cláusula FROM 3. Selección de columnas. Columnas calculadas 4.

Más detalles

Base de Datos LSI y PI Lic. Paola Daniela Budán Lic. Federico Rosenzvaig

Base de Datos LSI y PI Lic. Paola Daniela Budán Lic. Federico Rosenzvaig Base de Datos LSI y PI Lic. Paola Daniela Budán Lic. Federico Rosenzvaig Motores de Bases de Datos MySQL (Oracle) SQL Server (Microsoft) PostgreSQL Oracle (Oracle) DB2 (IBM) Informix (IBM) Instalación

Más detalles

BASES DE DATOS - SQL. Javier Enciso

BASES DE DATOS - SQL. Javier Enciso BASES DE DATOS - SQL Javier Enciso AGENDA Conceptos Básicos de Bases de Datos Manejo de Bases de Datos y Tablas SQL Inserción, Actualización y Borrado Consultas usando SELECT AGENDA Conceptos Básicos de

Más detalles

BASES DE DATOS curso 2002/3

BASES DE DATOS curso 2002/3 3º Ingeniero en Informática BASES DE DATOS curso 2002/3 Anexos del tema 14.- Control de la concurrencia Algunas notas interesantes acerca del significado y propósito de los niveles de aislamiento de transacciones

Más detalles

1. Introducción: Qué es un Modelo de Datos? 2. Estática del modelo de datos relacional

1. Introducción: Qué es un Modelo de Datos? 2. Estática del modelo de datos relacional Tema 7: Modelo Relacional 1. Introducción: Qué es un Modelo de Datos? 2. Estática del modelo de datos relacional Dominios, Atributos, Relaciones Representación del esquema relacional Características de

Más detalles

Bases de datos: Sistemas de bases de datos:

Bases de datos: Sistemas de bases de datos: Bases de datos: Sistemas de bases de datos: Un sistema de bases de datos es básicamente un sistema para archivar en computador, es decir, es un sistema computarizado cuyo propósito general es mantener

Más detalles

6- Combinación de tablas

6- Combinación de tablas Objetivos: 6- Combinación de tablas Utiliza sentencias para unir los datos de diferentes tablas. Recursos: Microsoft SQL Server Management Studio Guías prácticas. Script de bases de datos. Introducción

Más detalles

Si queremos modificar la contraseña de sys, una vez que accedamos al sistema como sys, escribiremos la sentencia:

Si queremos modificar la contraseña de sys, una vez que accedamos al sistema como sys, escribiremos la sentencia: TRABAJANDO CON SQL*PLUS El objetivo de este tema es simplemente, hacer una revisión de los conceptos avanzados de SQL, para ello, empezaremos por ver como se accede a SQL*PLUS y como crear usuarios, para

Más detalles

PARTE I LENGUAJE SQL. GESTION DE DATOS

PARTE I LENGUAJE SQL. GESTION DE DATOS PARTE I LENGUAJE SQL. GESTION DE DATOS Tema 1. EL LENGUAJE DE GESTIÓN DE BASES DE DATOS... 3 1 Bases de datos... 3 1.1 - Lenguaje de gestión de bases de datos... 3 1.2 - Qué es una Base de Datos?... 3

Más detalles

Tema 3 Modelo relacional

Tema 3 Modelo relacional Contenido: Bases de Datos y Sistemas de Información Ing. Informática GRUPO A Tema 3 Modelo relacional 3.1 Terminología del modelo relacional 3.2 Paso del modelo ER al modelo relacional 3.3 Creación de

Más detalles

Se considera a Oracle como uno de los sistemas de bases de datos más completos, destacando su:

Se considera a Oracle como uno de los sistemas de bases de datos más completos, destacando su: CURSO DE ORACLE DESCRIPCIÓN Oracle es un sistema de gestión de base de datos relacional (o RDBMS por el acrónimo en inglés de Relational Data Base Management System), desarrollado por Oracle Corporation.

Más detalles

Introducción a los Sistemas de Gestión de Bases de Datos

Introducción a los Sistemas de Gestión de Bases de Datos a los Sistemas de Gestión de Bases de Datos Servicios y Aplicaciones Telemáticas gsyc-profes@gsyc.escet.urjc.es Noviembre de 2008 c 2008 Grupo de Sistemas y Comunicaciones. Algunos derechos reservados.

Más detalles

Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos:

Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos: Bases de Datos Introducción a ORACLE Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos: o Tradicionales como INTEGER, VARCHAR2, DATE,..., etc. o Nuevos y complejos:

Más detalles

LAS SUBCONSULTAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

LAS SUBCONSULTAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE LAS SUBCONSULTAS SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE LAS SUBCONSULTAS Una subconsulta es una consulta que aparece dentro de otra consulta o subconsultas, en

Más detalles

T13 - LENGUAJES DE INTERROGACIÓN DE BASES DE DATOS.

T13 - LENGUAJES DE INTERROGACIÓN DE BASES DE DATOS. - LENGUAJES DE INTERROGACIÓN DE BASES DE DATOS. 1. LENGUAJES DE INTERROGACION DE BASES DE DATOS... 2 1.1 EL ÁLGEBRA RELACIONAL... 2 1.1.1 OPERACIONES FUNDAMENTALES... 2 1.1.1.1 LA OPERACIÓN SELECCIÓN...

Más detalles

[CASI v.0110] Pág. 1

[CASI v.0110] Pág. 1 I. DATOS INFORMATIVOS II. SUMILLA Carrera Especialidad Curso Código : T-INF105 Ciclo : Segundo Requisitos : Ninguno Duración : 12 Semanas Horas Semana : 06 horas Versión : v.0110 : COMPUTACIÓN E INFORMATICA

Más detalles

Sumario... 5 Prólogo... 7. Unidad didáctica 1. Modelos y sistema de información... 9. Objetivos de la Unidad... 11

Sumario... 5 Prólogo... 7. Unidad didáctica 1. Modelos y sistema de información... 9. Objetivos de la Unidad... 11 ÍNDICE SISTEMÁTICO PÁGINA Sumario... 5 Prólogo... 7 Unidad didáctica 1. Modelos y sistema de información... 9 Objetivos de la Unidad... 11 1. Introducción... 12 2. Dato e información... 13 2.1. Dato...

Más detalles

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h Creación B.D. y Constraints

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h Creación B.D. y Constraints Crear Una Base De Datos (L12) A TRAVÉS DE LA CONSOLA DE ADMINISTRACIÓN A TRAVÉS DEL ASISTENTE DE BASES DE DATOS (DATABASE WIZARD) A TRAVÉS DE COMANDOS SQL (CREATE DATABASE, CREATE TABLE) Crear Un Grupo

Más detalles

Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento

Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento Laboratorio Informix Stored Procedures Triggers Repaso A partir del ER, hicimos las tablas de la base de datos. Creamos en MySql las base de datos y las tablas Hicimos una aplicación que se comunica con

Más detalles

5 Objetos de base de datos

5 Objetos de base de datos 5 Objetos de base de datos Una consulta SQL, restringiendo las filas resultantes, agrupando valores a nivel de grupos de datos, realizando conversiones de datos, etc., puede ser almacenada en la base de

Más detalles

11. Seguridad en sistemas de bases de datos

11. Seguridad en sistemas de bases de datos 11. Seguridad en sistemas de bases de datos Objetivos Comprender la necesidad de controlar el acceso a la información almacenada por parte de usuarios no autorizados Conocer las posibilidades que puede

Más detalles

Bases de Datos I. Cursada 2008. Clase 3: Restricciones de Integridad (de tablas y generales)

Bases de Datos I. Cursada 2008. Clase 3: Restricciones de Integridad (de tablas y generales) Bases de Datos I Cursada 2008 Clase 3: Restricciones de Integridad (de tablas y generales) Facultad de Ciencias Exactas Universidad Nac. Centro de la Pcia. de Bs. As. RESTRICCIONES DE INTEGRIDAD (RI) Una

Más detalles

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas.

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas. Vistas. El resultado de una consulta en el caso de SQL siempre es una tabla, ésta se puede hacer permanente dentro de la base de datos. En este caso se dice que esta tabla resultado es una vista o una

Más detalles

Laboratorio Informix. Stored Procedures Triggers

Laboratorio Informix. Stored Procedures Triggers Laboratorio Informix Stored Procedures Triggers Repaso A partir del ER, hicimos las tablas de la base de datos. Creamos en MySql las base de datos y las tablas Hicimos una aplicación que se comunica con

Más detalles

CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIERÍAS DIVISIÓN DE ELECTRÓNICA Y COMPUTACIÓN

CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIERÍAS DIVISIÓN DE ELECTRÓNICA Y COMPUTACIÓN DATOS DE IDENTIFICACIÓN DEL CURSO DEPARTAMENTO: CIENCIAS COMPUTACIONALES ACADEMIA A LA QUE PERTENECE: SISTEMAS DE INFORMACION NOMBRE DE LA MATERIA: BASES DE DATOS CLAVE DE LA MATERIA: CC302 CARÁCTER DEL

Más detalles

SQL: Lenguaje de acceso a bases de datos

SQL: Lenguaje de acceso a bases de datos SQL: Lenguaje de acceso a bases de datos Israel Herraiz Universidad Politécnica de Madrid Israel Herraiz, UPM SQL: Lenguaje de acceso a bases de datos 1/88 Contenidos 1 Introducción a las bases de datos

Más detalles

MANUAL BÁSICO DEL LENGUAJE SQL

MANUAL BÁSICO DEL LENGUAJE SQL MANUAL BÁSICO DEL LENGUAJE SQL ESCUELA COLOMBIANA DE INGENIERÍA JULIO GARAVITO LABORATORIO DE INFORMÁTICA BOGOTÁ D. C. 2007-2 TABLA DE CONTENIDO INTRODUCCIÓN... 3 1. COMANDOS... 4 1.1 Comandos DLL... 4

Más detalles

Contenido Manejo de Concurren en Mysql... 2 Modos de bloqueo InnoDB... 2 InnoDB y AUTOCOMMIT... 3

Contenido Manejo de Concurren en Mysql... 2 Modos de bloqueo InnoDB... 2 InnoDB y AUTOCOMMIT... 3 Manejo de Concurrencia en Mysql Contenido Manejo de Concurren en Mysql... 2 Modos de bloqueo InnoDB... 2 InnoDB y AUTOCOMMIT... 3 InnoDB y TRANSACTION ISOLATION LEVEL... 3 Lecturas consistentes que no

Más detalles