Actualizado el 13 de Julio del 2020 (Publicado el 15 de Enero del 2017)
3.068 visualizaciones desde el 15 de Enero del 2017
400,4 KB
62 paginas
Creado hace 18a (30/01/2007)
El lenguaje SQL
Carme Martín Escofet
P06/M2109/02149
© FUOC • P06/M2109/02149
Índice
El lenguaje SQL
Introducción............................................................................................... 5
Objetivos ...................................................................................................... 10
1. Sentencias de definición .................................................................... 11
1.1. Creación y borrado de una base de datos relacional......................... 12
1.2. Creación de tablas ............................................................................. 13
1.2.1. Tipos de datos ........................................................................ 13
1.2.2. Creación, modificación y borrado de dominios .................... 14
1.2.3. Definiciones por defecto ........................................................ 16
1.2.4. Restricciones de columna....................................................... 17
1.2.5. Restricciones de tabla ............................................................. 17
1.2.6. Modificación y borrado de claves primarias con claves
foráneas que hacen referencia a éstas .................................... 18
1.2.7. Aserciones............................................................................... 19
1.3. Modificación y borrado de tablas...................................................... 19
1.4. Creación y borrado de vistas ............................................................. 20
1.5. Definición de la base de datos relacional BDUOC............................ 23
2. Sentencias de manipulación ............................................................. 26
2.1. Inserción de filas en una tabla........................................................... 26
2.2. Borrado de filas de una tabla ............................................................. 27
2.3. Modificación de filas de una tabla .................................................... 27
2.4. Introducción de filas en la base de datos relacional BDUOC ........... 28
2.5. Consultas a una base de datos relacional.......................................... 29
2.5.1. Funciones de agregración....................................................... 31
2.5.2. Subconsultas........................................................................... 32
2.5.3. Otros predicados .................................................................... 32
2.5.4. Ordenación de los datos obtenidos
en respuestas a consultas ....................................................... 35
2.5.5. Consultas con agrupación de filas de una tabla .................... 36
2.5.6. Consultas a más de una tabla ................................................ 38
2.5.7. La unión ................................................................................. 43
2.5.8. La intersección ....................................................................... 44
2.5.9. La diferencia ........................................................................... 45
3. Sentencias de control .......................................................................... 48
3.1. Las transacciones ............................................................................... 48
3.2. Las autorizaciones y desautorizaciones ............................................. 49
© FUOC • P06/M2109/02149
El lenguaje SQL
4. Sublenguajes especializados .............................................................. 51
4.1. SQL hospedado .................................................................................. 51
4.2. Las SQL/CLI ....................................................................................... 52
Resumen....................................................................................................... 53
Actividad ..................................................................................................... 55
Ejercicios de autoevaluación .................................................................. 55
Solucionario................................................................................................ 56
Bibliografía................................................................................................. 58
Anexos .......................................................................................................... 59
© FUOC • P06/M2109/02149
Introducción
5
El lenguaje SQL
Recordad que el álgebra relacional,
que hemos visto en la unidad
“El modelo relacional y el álgebra
relacional”, es un lenguaje
procedimental.
El SQL es el lenguaje estándar ANSI/ISO de definición, manipulación y control
de bases de datos relacionales. Es un lenguaje declarativo: sólo hay que indicar
qué se quiere hacer. En cambio, en los lenguajes procedimentales es necesario
especificar cómo hay que hacer cualquier acción sobre la base de datos. El SQL
es un lenguaje muy parecido al lenguaje natural; concretamente, se parece al
inglés, y es muy expresivo. Por estas razones, y como lenguaje estándar, el SQL
es un lenguaje con el que se puede acceder a todos los sistemas relacionales
comerciales.
Empezamos con una breve explicación de la forma en que el SQL ha llegado a
ser el lenguaje estándar de las bases de datos relacionales:
1) Al principio de los años setenta, los laboratorios de investigación Santa Te-
resa de IBM empezaron a trabajar en el proyecto System R. El objetivo de este
proyecto era implementar un prototipo de SGBD relacional; por lo tanto, tam-
bién necesitaban investigar en el campo de los lenguajes de bases de datos rela-
cionales. A mediados de los años setenta, el proyecto de IBM dio como resultado
un primer lenguaje denominado SEQUEL (Structured English Query Language), que
por razones legales se denominó más adelante SQL (Structured Query Language).
Al final de la década de los setenta y al principio de la de los ochenta, una vez
finalizado el proyecto System R, IBM y otras empresas empezaron a utilizar el
SQL en sus SGBD relacionales, con lo que este lenguaje adquirió una gran po-
pularidad.
2) En 1982, ANSI (American National Standards Institute) encargó a uno de sus co-
mités (X3H2) la definición de un lenguaje de bases de datos relacionales. Este co-
mité, después de evaluar diferentes lenguajes, y ante la aceptación comercial del
SQL, eligió un lenguaje estándar que estaba basado en éste prácticamente en su
totalidad. El SQL se convirtió oficialmente en el lenguaje estándar de ANSI en el
año 1986, y de ISO (International Standards Organization) en 1987. También ha
sido adoptado como lenguaje estándar por FIPS (Federal Information Processing
Standard), Unix X/Open y SAA (Systems Application Architecture) de IBM.
3) En el año 1989, el estándar fue objeto de una revisión y una ampliación
que dieron lugar al lenguaje que se conoce con el nombre de SQL1 o SQL89.
En el año 1992 el estándar volvió a ser revisado y ampliado considerablemente
para cubrir carencias de la versión anterior. Esta nueva versión del SQL, que se
conoce con el nombre de SQL2 o SQL92, es la que nosotros presentaremos en
esta unidad didáctica.
Como veremos más adelante, aunque aparezca sólo la sigla SQL, siempre nos
estaremos refiriendo al SQL92, ya que éste tiene como subconjunto el SQL89;
© FUOC • P06/M2109/02149
6
El lenguaje SQL
por lo tanto, todo lo que era válido en el caso del SQL89 lo continuará siendo
en el SQL92.
De hecho, se pueden distinguir tres niveles dentro del SQL92:
1) El nivel introductorio (entry), que incluye el SQL89 y las definiciones de
clave primaria y clave foránea al crear una tabla.
El concepto de clave primaria y su
importancia en una relación o tabla
se ha visto en la unidad “El modelo
relacional y el álgebra relacional”
de este curso.
2) El nivel intermedio (intermediate), que, además del SQL89, añade algu-
nas ampliaciones del SQL92.
3) El nivel completo (full), que ya tiene todas las ampliaciones del SQL92.
El modelo relacional tiene como estructura de almacenamiento de los datos
las relaciones. La intensión o esquema de una relación consiste en el nombre
que hemos dado a la relación y un conjunto de atributos. La extensión de una
relación es un conjunto de tuplas. Al trabajar con SQL, esta nomenclatura
cambia, como podemos apreciar en la siguiente figura:
El modelo relacional se ha
presentado en la unidad
“El modelo relacional y el álgebra
relacional” de este curso.
• Hablaremos de tablas en lugar de relaciones.
• Hablaremos de columnas en lugar de atributos.
• Hablaremos de filas en lugar de tuplas.
Sin embargo, a pesar de que la nomenclatura utilizada sea diferente, los con-
ceptos son los mismos.
Con el SQL se puede definir, manipular y controlar una base de datos relacio-
nal. A continuación veremos, aunque sólo en un nivel introductorio, cómo se
pueden realizar estas acciones:
© FUOC • P06/M2109/02149
7
El lenguaje SQL
1) Sería necesario crear una tabla que contuviese los datos de los productos de
nuestra empresa:
Nombre de la tabla
CREATE TABLE productos
(codigo_producto INTEGER,
nombre_producto CHAR(20),
tipo CHAR(20),
descripcion CHAR(50),
precio REAL,
Nombre de las columnas y tipo
PRIMARY KEY (codigo_producto));
Clave primaria
2) Insertar un producto en la tabla creada anteriormente:
Nombre de la tabla
INSERT INTO productos
VALUES (1250, ‘LENA’, ‘Mesa’, ‘Diseño Juan Pi. Año 1920.’, 25000);
3) Consultar qué productos de nuestra empresa son sillas:
Valores de la fila
Columnas seleccionadas
SELECT codigo_producto, nombre_producto
FROM productos
WHERE tipo = ‘Silla’;
Filas seleccionadas
Tabla
4) Dejar acceder a uno de nuestros vendedores a la información de la tabla
productos:
Hacer consultas
Usuario
GRANT SELECT ON productos TO jmontserrat;
Nombre de la tabla
Y muchas más cosas que iremos viendo punto por punto en los siguientes
apartados.
Fijémonos en la estructura de todo lo que hemos hecho hasta ahora con SQL.
Las operaciones de SQL recib
Comentarios de: El lenguaje SQL (1)