Sie sind auf Seite 1von 20

UNIDAD 2 Lenguaje de Consultas SQL

UNIDAD 2 UNIDAD 2
Tema: 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 Historia


La 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 lo
SQL: 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 Informticas
18

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 SQL


SQL 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 referente


Colegio 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 bsica
La 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 SQL


NOMBRE 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. Alias
Es 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 = Martnez
PRIMER 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 <P.nombre>, 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 solo
Colegio 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 datos
SQL 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.
NUMRICOS
Integer Numeric(n.m) Decimal(n,m) Float

ALFANUMRICOS
char(n) varchar(n,m) -

FECHA
Date DateTime -

LGICO
Bit -

BLOB
Image Text -

5. Predicados y conectores
Los 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 AND
SELECT nombre, cdigo FROM alumno WHERE (cdigo > 6000) AND (cdigo<9000)

Otra solucin sera utilizando el operador BETWEEN


SELECT nombre, cdigo FROM alumno WHERE cdigo BETWEEN 6000 AND 9000

El resultado sera:
NOMBRE Roberto Esteban Rubn Medardo Bruno Juan CDIGO 6401 8064 8975 6224 8765 8845

Anlogamente podemos usar el operador de comparacin NOT BETWEEN. SQL tambin incluye un operador de seleccin para comparaciones de cadena de caracteres. Los modelos se describen usando los caracteres especiales o tambin conocidos como caracteres comodn: El carcter (%) es igual a cualquier subcadena El operador (_) es igual a cualquier caracter Estos modelos se expresan usando el operador de comparacin LIKE. Un error muy frecuente es tratar de utilizar los modelos mediante el operador de igualdad (=) lo cual es un error de sintaxis. Ejemplo: encontrar los nombres que comiencen con la letra p o el nombre tenga exactamente 6 caracteres de la relacin alumno.

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

57

UNIDAD 2 Lenguaje de Consultas SQL


SELECT nombre FROM alumno WHERE (nombre LIKE "P%") OR (nombre LIKE "_ _ _ _ _ _")

El resultado sera:
NOMBRE Martin Pablo Sandro

Anlogamente podemos buscar desigualdades usando el operador de comparacin NOT LIKE.

6. Tuplas duplicadas
Los lenguajes de consulta formales se basan en la nocin matemtica de relacin como un conjunto. Por ello nunca aparecen tuplas duplicadas en las relaciones. En la prctica la eliminacin de duplicados lleva bastante tiempo. Por lo tanto SQL permite duplicados en las relaciones. As pues en las consultas se listaran todas las tuplas inclusive las repetidas. En aquellos casos en los que queremos forzar la eliminacin de duplicados insertamos la palabra clave Ejemplo: Listar todos los apellidos no repetidos de la relacin persona
SELECT DISTINCT apellido FROM alumno

El resultado sera:
APELLIDO Martnez Snchez Guerrn Alemn Brito Abril Mogrovejo Mndez Serrano

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

58

UNIDAD 2 Lenguaje de Consultas SQL Si observamos la tabla original de la relacin alumno veremos que el apellido Martnez apareca dos veces, pero debido al uso de DISTINCT en la consulta la relacin respuesta solo lista un solo Martnez.

7. Operaciones de conjunto.
SQL incluye las operaciones de conjuntos UNION, INTERSECT, MINUS, que operan sobre relaciones y corresponden a las operaciones del lgebra unin, interseccin y resta de conjuntos respectivamente. Para realizar esta operacin de conjuntos debemos tener sumo cuidado que las relaciones tengan las mismas estructuras. Incorporemos ahora una nueva relacin, llamada jugadores que representa las personas que juegan al ftbol, sus atributos sern DNI, puesto y nmero_camiseta. Supongamos que esta nueva tabla est conformada de la siguiente manera:
JUGADOR JUGADORES 1 2 3 4 CDIGO 5988 5699 9656 9872 PUESTO DELANTERO MEDIO ARQUERO DEFENSA NMERO_CAMISETA 9 5 1 3

Ejemplo: Obtener todos los nombres de la relacin persona cuyos apellidos sean Martnez o Serrano.
SELECT nombre FROM alumno WHERE apellido = "Martnez" UNION SELECT nombre FROM alumno WHERE apellido = "Serrano"

El resultado sera:
NOMBRE Martin Pablo Juan

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

59

UNIDAD 2 Lenguaje de Consultas SQL Ejemplo: Obtener todos los cdigos de los que juegan al ftbol y, adems, estn en la lista de la relacin persona:
SELECT cdigo FROM alumno INTERSECT SELECT cdigo FROM jugador

Y el resultado sera:
CDIGO 5988 5699 8845

Por omisin, la operacin de unin elimina las tuplas duplicadas. Para retener duplicados se debe escribir UNION ALL en lugar de UNION.

7.1 Pertenencia a un conjunto


El conector IN prueba si se es miembro de un conjunto, donde el conjunto es una coleccin de valores producidos en lo general por una clusula SELECT. Anlogamente el conector NOT IN prueba la no pertenencia al conjunto Ejemplo: Encontrar los nombres de los estudiantes que juegan al ftbol y, adems, se encuentran en la relacin alumno
SELECT nombre, apellido FROM alumno WHERE cdigo IN (SELECT cdigo FROM jugadores)

El resultado sera:
NOMBRE Martin Pablo Juan APELLIDO Martnez Martnez Serrano

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

60

UNIDAD 2 Lenguaje de Consultas SQL Es posible probar la pertenencia de una relacin arbitraria SQL usa la notacin de elementos <v1, v2,..., vn> para representar una tupla de elementos de n que contiene los valores v1, v2,...,vn.

7.2 Comparacin de conjuntos


En conjuntos la frase << mayor que algn >> se representa en SQL por (>SOME), tambin podra entenderse esto como << mayor que el menor de >>, su sintaxis es igual que la del conector IN. SQL tambin permite las comparaciones (>SOME), (=SOME) (>=SOME), (<=SOME) y (<>SOME). Tambin existe la construccin (>ALL), que corresponde a la frase << mayor que todos >>. Al igual que el operador SOME, puede escribirse (>ALL), (=ALL), (>=ALL), (<=ALL) y (<>ALL). En ocasiones podramos querer comparar conjuntos para determinar si un conjunto contiene los miembros de algn otro conjunto. Tales

comparaciones se hacen usando las construcciones CONTAINS y NOT CONTAINS.

8. Pruebas para relaciones vacas


La construccin EXISTS devuelve el valor TRUE si la subconsulta del argumento no est vaca, y la construccin NOT EXISTS devuelve TRUE si la consulta es vaca. Ejemplo: encontrar todos los nombres y apellidos de la relacin persona si es que en la relacin jugadores existe un jugador con el nmero de cdigo 8055.
SELECT nombre, apellido FROM alumno WHERE EXISTS (SELECT cdigo FROM jugadores WHERE cdigo = 8055)

Como el cdigo= 8055 no existe en la relacin jugadores, la condicin es FALSE y por lo tanto la respuesta es vaca.

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

61

UNIDAD 2 Lenguaje de Consultas SQL

9. Ordenacin de la presentacin de tuplas


SQL ofrece al usuario cierto control sobre el orden en el que se va a presentar las tuplas en una relacin. La clusula ORDER BY hace que las tupla en el resultado d una consulta en un orden especfico. Por omisin SQL lista los elementos en orden ascendente. Para especificar el tipo de ordenacin, podemos especificar DESC para orden descendente o ASC para orden ascendente. Tambin es posible ordenar los resultados por ms de una atributo Ejemplo: encontrar todos los nombres y apellido de la relacin alumno y ordenar los resultados por apellido y nombre en forma descendente
SELECT apellido, nombre FROM alumno ORDER BY apellido DESC, nombre DESC

El resultado sera:
APELLIDO NOMBRE Serrano Snchez Mogrovejo Mndez Martnez Martnez Guerrn Brito Alemn Abril Juan Roberto Sal Bruno Pablo Martin Esteban Sandro Rubn Medardo

10.

Funciones de agregacin

SQL ofrece la posibilidad de calcular funciones en grupos de tuplas usando la clusula GROUP BY, tambin incluye funciones para calcular

   

Promedios AVG Mnimo MIN Mximo MAX Total SUM

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

62

UNIDAD 2 Lenguaje de Consultas SQL

Contar COUNT

Para los prximos ejemplos incorporamos una nueva relacin llamada PROFESIONALES que representara los jugadores profesionales de ftbol, sus atributos sern cdula, aos_profesional, club, valor_actual. Y los valores son los siguientes:
PROFESIONALES PROFESIONAL 1 2 3 4 5 CDULA AOS_ PROFESIONAL 5 2 3 CLUB LIGA DE QUITO LIGA DE QUITO DEPORTIVO CUENCA DEPORTIVO CUENCA DEPORTIVO CUENCA VALOR_ ACTUAL 100000 250000 1200000 650000 450000

0261259885 0225485699 0327126045 0426958644 0229120791

4 1

SELECT club, SUM(valor_actual) AS VALOR_TOTAL, COUNT(club) AS NRO_JUGADORES FROM profesionales GROUP BY club

El resultado sera:
CLUB LIGA DE QUITO DEPORTIVO CUENCA VALOR_TOTAL NRO_JUGADORES 2 3

250000,00 2300000,00

Ejemplo: Determinar por cada club cual es el valor_actual del jugador ms caro de la relacin PROFESIONALES
SELECT club, MAX(valor_actual) AS JUG_MAS_CARO FROM profesionales GROUP BY club El resultado sera:
CLUB LIGA DE QUITO DEPORTIVO CUENCA JUGADOR_MAS_CARO

250000 1200000,00

Hay ocasiones en la que los duplicados deben eliminarse antes de calcular una agregacin. Cuando queremos eliminar los duplicados del clculo usamos la palabra clave DISTINCT antepuesto al atributo de agregacin que queremos calcular, como por ejemplo COUNT (DISTINCT club).

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

63

UNIDAD 2 Lenguaje de Consultas SQL Hay ocasiones en las que es til declara condiciones que se aplican a los grupos ms que a las tuplas. Para esto usamos la clusula HAVING de SQL. Ejemplo: Determinar por cada club cual es el valor_actual del jugador ms caro, pero con la condicin de que este sea mayor a 10000 de la relacin PROFESIONALES.
SELECT club, MAX(valor_actual) AS JUG_MAS_CARO FROM profesionales GROUP BY club HAVING MAX(valor_actual) > 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 Eliminacin
Una 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 SQL


DELETE FROM alumno WHERE apellido = "Brito"
DELETED 1 NOMBRE Sandro APELLIDO Brito CDIGO 3669

11.2 Insercin
Para 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 Actualizaciones
En 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 nulos


Es 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 Creacin
Una 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 entero
CREATE TABLE lesionado ( nombre CHAR(20), apellido CHAR(20), tiempo_inhabilt INTEGER )

12.2 Eliminacin
Para 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 alumno
Colegio Tcnico Salesiano Sistemas Gestores de bases de datos Tercero de Bachillerato Aplicaciones Informticas

66

UNIDAD 2 Lenguaje de Consultas SQL


DROP TABLE alumno

12.3 Actualizacin
La 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 jugadores
ALTER 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 SQL


8. 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 SQL


31.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

Das könnte Ihnen auch gefallen