SQL Salesianos

download SQL Salesianos

of 20

Transcript of SQL Salesianos

UNIDAD 2 Lenguaje de Consultas SQL

UNIDAD 2 UNIDAD 2Tema: Lenguaje de consultas SQL 1. Introduccin Terica 1.1 Qu es el lenguaje de consultas SQL?El lenguaje de consulta estructurado (SQL18) es un lenguaje de base de datos normalizado, utilizado por los diferentes motores de bases de datos para realizar determinadas operaciones sobre los datos o sobre la estructura de los mismos. Pero como sucede con cualquier sistema de normalizacin hay excepciones para casi todo; de hecho, cada motor de bases de datos tiene sus peculiaridades y lo hace diferente de otro motor, por lo tanto, el lenguaje SQL normalizado (ANSI19) no nos servir para resolver todos los problemas, aunque si se puede asegurar que cualquier sentencia escrita en ANSI ser interpretable por cualquier motor de datos.

1.2 Breve HistoriaLa historia de SQL empieza en 1974 con la definicin, por parte de Donald Chamberlin20 y de otras personas que trabajaban en los laboratorios de investigacin de IBM21, de un lenguaje para la especificacin de las caractersticas de las bases de datos que adoptaban el modelo relacional. Este lenguaje se llamaba SEQUEL (Structured English Query Language) y se implement en un prototipo llamado SEQUEL-XRM entre 1974 y 1975. Las experimentaciones con ese prototipo condujeron, entre 1976 y 1977, a una revisin del lenguaje (SEQUEL/2), que a partir de ese momento cambi de nombre por motivos legales, convirtindose en SQL. El prototipo (System R), basado en este lenguaje, se adopt y utiliz internamente en IBM y loSQL: De las siglas en ingles Structure Query Language que traducido al espaol significa Lenguaje estructurado de consultas 19 ANSI: De las siglas en ingls American National Standards Institute que traducido al espaol significa Instituto Nacional de Normalizacin Estadounidense es una organizacin que administra y coordina la normalizacin en los Estados Unidos. 20 Donald Chamberlin: Cientfico americano nacido en 1944, es uno de los principales creadores del SQL original junto a Raymond Boyce. 21 IBM: De las siglas en ingls International Business Machines es una empresa multinacional que fabrica y comercializa herramientas, programas y servicios relacionados a la informtica, tiene su sede en New York y est constituido desde el 15 de junio de 1911, pero lleva operando desde 1888.Colegio Tcnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato Aplicaciones Informticas18

51

UNIDAD 2 Lenguaje de Consultas SQL adoptaron algunos de sus clientes elegidos. Gracias al xito de este sistema, que no estaba todava comercializado, tambin otras compaas empezaron a desarrollar sus productos relacionales basados en SQL. A partir de 1981, IBM comenz a entregar sus productos relacionales y en 1983 empez a vender DB2. En el curso de los aos ochenta, numerosas compaas (por ejemplo Oracle y Sysbase, slo por citar algunos) comercializaron productos basados en SQL, que se convierte en el estndar industrial de hecho por lo que respecta a las bases de datos relacionales. En 1986, el ANSI adopt SQL (sustancialmente adopt el dialecto SQL de IBM) como estndar para los lenguajes relacionales y en 1987 se transform en estndar ISO22. Esta versin del estndar va con el nombre de SQL/86. En los aos siguientes, ste ha sufrido diversas revisiones que han conducido primero a la versin SQL/89 y, posteriormente, a la actual SQL/92. El hecho de tener un estndar definido por un lenguaje para bases de datos relacionales abre potencialmente el camino a la intercomunicabilidad entre todos los productos que se basan en l. Desde el punto de vista prctico, por desgracia las cosas fueron de otro modo. Efectivamente, en general cada productor adopta e implementa en la propia base de datos slo el corazn del lenguaje SQL (el as llamado Entry level o al mximo el Intermediate level), extendindolo de manera individual segn la propia visin que cada cual tenga del mundo de las bases de datos. Actualmente, est en marcha un proceso de revisin del lenguaje por parte de los comits ANSI e ISO, que debera terminar en la definicin de lo que en este momento se conoce como SQL 2008. Las caractersticas principales de esta nueva encarnacin de SQL deberan ser el uso de la clusula ORDER BY fuera de las definiciones de los cursores, incluye los disparadores del tipo INSTEAD OF. Aade la sentencia TRUNCATE.

ISO: Es la Organizacin Internacional para la estandarizacin, nacida en 1947, es el organismo encargado de promover el desarrollo de normas internacionales de fabricacin, comercio y comunicacin para todas las ramas industriales a excepcin de la elctrica y la electrnica.Colegio Tcnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato Aplicaciones Informticas

22

52

UNIDAD 2 Lenguaje de Consultas SQL

1.3 Componentes del SQLSQL es un lenguaje estandarizado de base de datos, el cual nos permite realizar tablas y obtener datos de ella de manera muy sencilla. Para exponer ms claramente los conceptos se realizaran ejemplo sobre relaciones que se crearan aqu para entender mejor como funciona SQL. Cuando aqu nos refiramos a relacin estamos hablando ms concretamente a la tabla de datos en s, y sus atributos sern los campos de la tabla. Como ejemplo la siguiente relacin (tabla) la llamaremos ALUMNO y sus atributos (campos) son nombre, apellido y cdula.ALUMNO ALUMNO 1 2 3 4 5 6 7 8 9 10 NOMBRE Martin Pablo Roberto Esteban Rubn Sandro Medardo Sal Bruno Juan APELLIDO Martnez Martnez Snchez Guerrn Alemn Brito Abril Mogrovejo Mndez Serrano CDIGO 5988 5699 6401 8064 8975 3669 6224 9656 8765 8845

SQL es un lenguaje que consta de varias partes

Lenguaje de definicin de datos (DDL-Data Definition Language): Es el encargado de la definicin de bases de datos, tablas, vistas e ndices entre otros. Son comandos propios de ste lenguaje: CREATE TABLE, CREATE INDEX, CREATE VIEW, CREATE SYNONYM.

Lenguaje

de

manipulacin

de

datos

interactivos

(DML-Data

Manipulation Language), cuya misin es la manipulacin de datos. A travs de l podemos seleccionar, insertar, eliminar y actualizar datos. Es la parte que ms frecuentemente utilizaremos ya que con ellas se construyen las consultas. Son comandos propios de ste lenguaje: SELECT, UPDATE, INSERT, INSERT INTO, DELETE FROM.

Lenguaje

de

Control

de

datos

(DDL-Data

Control

Language):

encargado de la seguridad de la base de datos, en todo lo referenteColegio Tcnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato Aplicaciones Informticas

53

UNIDAD 2 Lenguaje de Consultas SQL al control de accesos y privilegios entre los usuarios. Son comandos propios de ste lenguaje: GRANT, REVOKE.

2. Estructura bsicaLa estructura bsica de una expresin para consulta SQL consta de tres clusulas:SELECT FROM WHERE

La clusula SELECT se usa para listar los atributos que se desean en el resultado de una consulta. La clusula FROM lista las relaciones que se van a examinar en la evaluacin de la expresin La clusula WHERE consta de un predicado23 que implica atributos de las relaciones que aparecen en la clusula FROM. Una consulta bsica en SQL tiene la forma:SELECT A1, A2... An FROM r1, r2... rn WHERE P

Donde: Ai = atributo (Campo de la tabla) ri = relacin (Tabla ) P = predicado (condicin) Ejemplo: Seleccionar todos los nombres de los alumnos que tengan el apellido MARTNEZ de la tabla ALUMNOS.SELECT nombre FROM alumno WHERE apellido = Martnez

El resultado es:

23

Predicado: Es la condicin que debe cumplir la clusula WHERE.Colegio Tcnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato Aplicaciones Informticas

54

UNIDAD 2 Lenguaje de Consultas SQLNOMBRE Martin Pablo

El resultado de una consulta es por supuesto otra relacin. Si se omite la clusula WHERE, el predicado P es verdadero. La lista A1, A2,..., An puede sustituirse por un asterisco (*) para seleccionar todos los atributos de todas las relaciones que aparecen en la clusula FROM, aunque no es conveniente elegir esta ltima opcin salvo que sea necesario pues desperdiciamos mucho tiempo en obtenerlo

3. AliasEs posible renombrar los atributos y las relaciones, a veces por

conveniencia y otras veces por ser necesario, para esto usamos la clausula AS como en el siguiente ejemplo.SELECT P.nombre AS [PRIMER NOMBRE] FROM alumno P WHERE apellido = MartnezPRIMER NOMBRE Martin Pablo

En este ejemplo cabe destacar un par de cosas. Cuando nos referimos a un atributo como es el caso de nombre, podemos referirnos a este usando la relacin (o el alias en este ejemplo) a la que pertenece el atributo seguido de un punto seguido del atributo , a veces esta notacin ser necesaria para eliminar ambigedades. Los corchetes los usamos cuando usamos espacios en blancos o el caratr (-) en el nombre de atributo o alias. Usar alias en los atributos nos permite cambiar el nombre de los atributos de la respuesta a la consulta. Cuando asociamos un alias con una relacin decimos que creamos una variable de tupla. Estas variables de tuplas se definen en la clusula FROM despus del nombre de la relacin. En las consultas que contienen subconsultas, se aplica una regla de mbito a las variables de tupla. En una subconsulta est permitido usar soloColegio Tcnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato Aplicaciones Informticas

55

UNIDAD 2 Lenguaje de Consultas SQL variables de tupla definidas en la misma subconsulta o en cualquier consulta que tenga la subconsulta.

4. Tipos de datosSQL admite una variada gama de tipos de datos para el tratamiento de la informacin contenida en las tablas, los tipos de datos pueden ser numricos (con o sin decimales), alfanumricos, de fecha o booleanos(si o no).Segn el gestor de base de datos que estemos utilizando los tipos de datos varan, pero se reducen bsicamente a los expuestos

inmediatamente, aunque en la actualidad casi todos los gestores de bases de datos soportan un nuevo tipo, el BLOB (Binary Large Object), que es un tipo de datos especial destinado a almacenar archivos, imgenes ... Dependiendo de cada gestor de bases de datos el nombre que se da a cada uno de estos tipos puede variar. Bsicamente tenemos los siguientes tipos de datos.NUMRICOSInteger Numeric(n.m) Decimal(n,m) Float

ALFANUMRICOSchar(n) varchar(n,m) -

FECHADate DateTime -

LGICOBit -

BLOBImage Text -

5. Predicados y conectoresLos conectores lgicos en SQL son:

AND OR NOT

La lgica de estos conectores es igual que en cualquier lenguaje de programacin y sirven para unir predicados. Las operaciones aritmticas en SQL son:

+ (Suma) - (Resta) * (Multiplicacin) / (Divisin)Colegio Tcnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato Aplicaciones Informticas

56

UNIDAD 2 Lenguaje de Consultas SQL Tambin incluye el operador de comparacin BETWEEN, que se utiliza para valores comprendidos. Ejemplo: Encontrar todos los nombres y cdigos de los alumnos cuyos cdigos sean mayor que 6 mil y menor a 9 mil. Una solucin sera utilizando el conector lgico ANDSELECT nombre, cdigo FROM alumno WHERE (cdigo > 6000) AND (cdigo se representa en SQL por (>SOME), tambin podra entenderse esto como >, su sintaxis es igual que la del conector IN. SQL tambin permite las comparaciones (>SOME), (=SOME) (>=SOME), (ALL), que corresponde a la frase >. Al igual que el operador SOME, puede escribirse (>ALL), (=ALL), (>=ALL), ( 10000

CLUB DEPORTIVO CUENCA

JUGADOR_MAS_CARO

1200000,00

Si en la misma consulta aparece una clusula WHERE y una clusula HAVING, primero se aplica el predicado de la clusula WHERE, las tupla que satisfacen el predicado WHERE son colocadas en grupos por la clusula GROUP BY. Despus se aplica la clusula HAVING a cada grupo.

11.

Modificacin de la base de datos

11.1 EliminacinUna solicitud de eliminacin se expresa casi de igual forma que una consulta. Podemos suprimir solamente tuplas completas, no podemos suprimir valores solo de atributos.DELETE FROM r WHERE P

Donde P presenta un predicado y r representa una relacin. Las tuplas t en r para las cuales P(t) es verdadero, son eliminadas de r. Si omitimos la clusula WHERE se eliminan todas las tuplas de la relacin r (un buen sistema debera buscar confirmacin del usuario antes de ejecutar una accin tan devastadora) Ejemplo: Eliminar todas las tuplas de la relacin alumno en donde apellido sea igual a Brito

Colegio Tcnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato Aplicaciones Informticas

64

UNIDAD 2 Lenguaje de Consultas SQLDELETE FROM alumno WHERE apellido = "Brito"DELETED 1 NOMBRE Sandro APELLIDO Brito CDIGO 3669

11.2 InsercinPara insertar datos en una relacin, especificamos una tupla que se va a insertar o escribimos una consulta cuyo resultado es un conjunto de tuplas que se van a insertar. La insercin de tuplas la realizamos mediante las sentencias:INSERT INTO r1 VALUES (v1, v2,..., v)

Ejemplo: Insertar una tupla con los mismos valores de la tupla eliminada en el ejemplo anterior en la relacin alumno.INSERT INTO alumno VALUES ("Sandro","Brito",3669)

11.3 ActualizacionesEn ciertas ocasiones podemos desear cambiar los valores de una tupla sin cambiar todos los valores en dicha tupla. Para este propsito usamos la sentencia:UPDATE r1 SET A1 = V1, A2 = V2,...,An = Vn WHERE P

Donde r1 es la relacin Ai el atributo a modificar Vi el valor que se le asignara a Ai y P es el predicado. Ejemplo: En la relacin jugador actualizar la posicin de los jugadores que posean la camiseta nmero 5 y asignarles la camiseta nmero 7.UPDATE jugador SET nmero_camiseta = 7 WHERE nmero_camiseta = 5

Colegio Tcnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato Aplicaciones Informticas

65

UNIDAD 2 Lenguaje de Consultas SQL

11.4 Valores nulosEs posible que para las tuplas insertadas se den valores nicamente a algunos atributos del esquema. El resto de los atributos son asignados a valores nulos representados por NULL. Para esto colocamos la palabra reservada NULL como valor del atributo. Ejemplo: Insertar en la relacin jugadores un jugador con cdula = 0122335631, puesto = defensor, y al cual aun no le han asignado un nmero_camiseta.INSERT INTO jugador VALUES(0122335631,"Defensor", NULL)

12.

Definicin de datos

12.1 CreacinUna relacin en SQL se define usando la orden CREATE TABLE r(A1 D1, A2 D3,...,An Dn) Donde r es el nombre de la relacin, cada Ai es el nombre de un atributo del esquema de la relacin r y Di es el tipo de dato de Ai. Una relacin recin creada est vaca. La orden INSERT puede usarse para cargar la relacin Ejemplo: crear la relacin lesionado con los atributos nombre, apellido ambos de tipo char y tiempo_inhabilit de tipo enteroCREATE TABLE lesionado ( nombre CHAR(20), apellido CHAR(20), tiempo_inhabilt INTEGER )

12.2 EliminacinPara eliminar una relacin usamos la orden DROP TABLE r, esta orden elimina toda la informacin sobre la relacin sacada de la base de datos, esta orden es ms fuerte que DELET FROM r ya que esta ultima elimina todas las tuplas pero no destruye la relacin, mientras que la primera s. Ejemplo: eliminar la relacin alumnoColegio Tcnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato Aplicaciones Informticas

66

UNIDAD 2 Lenguaje de Consultas SQLDROP TABLE alumno

12.3 ActualizacinLa orden ALTER TABLE se usa para aadir atributos a una relacin existente. A todas las tuplas en la relacin se les asigna NULL como valor de atributo. La sintaxis de ALTER TABLE es la siguiente:ALTER TABLE r1 ADD A1 D1

Ejemplo: agregar los atributos de tipo char nombre y apellido a la relacin jugadoresALTER TABLE jugador ADD nombre CHAR(20) ALTER TABLE jugador ADD apellido CHAR(20)

13.

Ejercicios Propuestos

Los ejercicios de sta tarea se refieren a una sola base de datos, que se compone de tres tablas: la tabla S, que representa a los proveedores; la tabla P, que representa a las partes, y la tabla SP, que representa los envos de partes hechos por los proveedores. La clave primaria de la tabla proveedor es S#, la clave primaria de la tabla partes es P#. Adems, supondremos que no pueden existir al mismo tiempo dos envos del mismo proveedor y de la misma parte, de modo que cada envo tiene una combinacin nica de nmero de proveedor/nmero de parte (es decir es la clave primaria combinada de la tabla SP).

S S# S1 S2 S3 S4 S5 SNOMBRE Salazar Jaimes Bernal Corona Aldana SITUACION 20 10 30 20 30 CIUDAD Londres Pars Pars Londres Atenas

Colegio Tcnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato Aplicaciones Informticas

67

UNIDAD 2 Lenguaje de Consultas SQL

P P# P1 P2 P3 P4 P5 P6 PNOMBRE Tuerca Perno Birlo Birlo Leva Engrane COLOR Rojo Verde Azul Rojo Azul Rojo PESO 12 17 17 14 12 19 CIUDAD Londres Pars Roma Londres Pars Londres

SP S# S1 S1 S1 S1 S1 S1 S2 S2 S3 S4 S4 S4 P# P1 P2 P3 P4 P5 P6 P1 P2 P3 P2 P4 P5 CANT 300 200 400 200 100 100 300 400 200 200 300 400

Estos ejercicios sern realizados inicialmente en el aula y luego terminado en las casas:1. Obtener el nmero y la situacin de todos los proveedores de Paris. 2. Obtener los nmeros de parte de todas las partes suministradas. 3. Obtener los nmeros de parte de todas las partes suministradas (sin

valores repetidos).4. Obtener, para todas las partes, el nmero de parte y su peso en

gramos (los pesos de parte se dan el libras en la tabla P)5. Obtener los datos completos de todos los proveedores. 6. Obtener los nmeros de proveedores radicados en

Paris cuya

situacin sea mayor que 20.7. Obtener los nmeros de proveedor y situacin de los proveedores

radicados en Paris, en orden descendente por situacin.

Colegio Tcnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato Aplicaciones Informticas

68

UNIDAD 2 Lenguaje de Consultas SQL8. Organizar el resultado de la pregunta 4 en orden ascendente por

nmero de parte dentro de un orden ascendente por peso en gramos. 9. Obtener todas las combinaciones de informacin de proveedores y partes tales que el proveedor y la parte en cuestin estn situados en la misma ciudad (es decir, estn cosituados; valga utilizar un trmino antiesttico pero cmodo) 10.Obtener todas las combinaciones de informacin de proveedor y parte donde la ciudad del proveedor siga a la ciudad de la parte en el orden alfabtico. 11.Obtener todas las combinaciones de informacin de proveedor y parte donde el proveedor y la parte en cuestin estn cosituadas, pero omitiendo a los proveedores cuya situacin sea 20. 12.Obtener todas las combinaciones de nmero de proveedor/nmero de parte tales que el proveedor y la parte estn cosituados. 13.Obtener todas las parejas de nombres de ciudad (sin parejas repetidas) tales que un proveedor situado en la primera ciudad suministre una parte almacenada en la segunda ciudad. Por ejemplo, el proveedor S1 suministra la parte P1; el proveedor S1 est situado en Londres, y la parte P1 se almacena en Londres; por tanto, (Londres, Londres) es una pareja de ciudades que debera aparecer en el resultado. 14.Obtener todas las parejas de nmeros de proveedor tales que los dos proveedores estn cosituados. 15.Obtener el nmero total de proveedores. 16.Obtener el nmero total de proveedores que suministran partes en la actualidad. 17.Obtener el nmero de envos de la parte P2. 18.Obtener la cantidad total suministrada de la parte P2. 19.Obtener para cada parte suministrada, el nmero de parte y la cantidad total enviada de esa parte. 20.Obtener los nmeros de todas las partes suministradas por ms de un proveedor. 21.Obtener todas las partes cuyos nombres comiencen con la letra B. 22.Obtener los nombres de los proveedores que suministran la parte P2. 23.Obtener los nombres de los proveedores que suministre por lo menos una parte roja. 24.Obtener los nmeros de los proveedores situados en la misma ciudad que el proveedor S1. 25.Obtener los nmeros de los proveedores cuya situacin sea menor que el valor mximo actual de situacin en la tabla S. 26.Obtener los nombres de proveedores que no suministren la parte P2. 27.Obtener los nombres de proveedores que suministren todas las partes. 28.Obtener los nmeros de los proveedores que suministran por lo menos todas las partes suministradas por el proveedor S2. 29.Obtener los nmeros de las partes que pesen mas de 16 libras, o sean suministradas por el proveedor S2 (o las dos cosas) 30.Cambiar a color amarillo el color de la parte P2, aumente su peso en 5 e indicar que su ciudad es desconocida (NULL).Colegio Tcnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato Aplicaciones Informticas

69

UNIDAD 2 Lenguaje de Consultas SQL31.Duplicar la situacin de todos los proveedores situados en Londres. 32.Cambiar el nmero de proveedor S2 a S9. 33.Eliminar el proveedor S5. 34.Eliminar todos los envos cuya cantidad sea mayor que 300. 35.Eliminar todos los embarques. 36.Eliminar todos los envos de los proveedores situados en Londres. 37.Aadir la parte P7 (ciudad: Atenas, peso:24, nombre y color

desconocido por ahora) a la tabla P. 38.Aadir la parte P8( nombre: cadena, color: rosa, peso:14, ciudad: Niza) a la tabla P. 39.Insertar un nuevo envio con nmero de proveedor S20, nmero de parte P20 y cantidad 100. 40.Para cada parte suministrada, obtener el nmero de parte y la cantidad total suministrada, y guardar el resultado en una nueva tabla de la base de datos (puede llamarle TEMP). 41.Para todas las parte rojas y azules tales que la cantidad total suministrada sea mayor o igual a 350 (excluyendo del total todos los envos cuyas cantidades sean menores o iguales a 200), obtener el nmero de parte, el peso en gramos, el color, y la cantidad mxima suministrada de esa parte; y clasificar el resultado en orden descendente por nmero de parte dentro de un orden ascendente segn esa cantidad mxima.

Colegio Tcnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato Aplicaciones Informticas

70