Sie sind auf Seite 1von 4

Tutorial SQL Parte32

Operaciones sobre conjuntos


SQL-92 define tres operaciones para operar sobre relaciones:

Union
Intersect
Except o Minus

De estas tres operaciones Access slo soporta la operacin Union teniendo que usar otros
mecanismos para conseguir los mismos resultados que Intersect o Minus.
La operacin unin sobre dos selects (con los campos retornados del mismo tipo) lo que hace
es devolver los atributos seleccionados que estn en al menos una de las dos partes de la
unin (realmente simula una unin de conjuntos) y automticamente debera eliminar
duplicados asegurando la unicidad de los resultados devueltos, por ejemplo podramos hacer:
Select dni, nombre, apellidos
From usuarios
Union
Select nif, nombre, apellidos
From enfermos

Esta select nos devolvera los nombres, dni, apellidos de todos nuestros usuarios y nuestros
enfermos, y si un usuario fuera tambin enfermo slo nos devolvera un registro.
La operacin intersect sera parecida pero sera la interseccin entre los conjuntos es decir slo
devolvera aquellos registros que estn en ambas selects y funcionara de forma similar. La
operacin except o minus devolvera aquellos registros que estn en una relacin y no estn
en la otra. Recordad que estas dos operaciones no estn soportadas por Access.

Modificacin de la base de datos


Hasta ahora en nuestro manual, nos hemos limitado a extraer informacin de nuestra base de
datos, pero SQL tambin tiene directivas para aadir, modificar y eliminar informacin de la
base de datos.
Para insertar datos en una relacin, o bien se especifica la tupla que se desea insertar o se
formula una consulta cuyo resultado sea el conjunto de tuplas que se desea insertar.
Obviamente los valores de los resultados que se van a insertar deben pertenecer al dominio de
los atributos (es decir tienen que ser vlidos para dicho atributo).
La instruccin insert ms sencilla corresponde a la insercin de una tupla:
Insert into cuentas
Values (1,Sanchez,Antonio,1000)

Microsoft Access 2010. Curso Avanzado

Tutor: Antonio Snchez de la Fuente

Tutorial SQL Parte32

En este ejemplo se estn insertando los valores de una tupla en la relacin cuentas, se van a
insertar los valores que pasamos en el mismo orden de atributos que estn en la relacin (por
ejemplo en este caso codcuenta, apellidos, nombre, cantidad. En una consulta de este tipo
tenemos que poner todos los campos de la relacin, sino dar un error. Si no queremos poner
todos los campos tenemos que explicitar los campos que vamos a introducir, de esta forma el
orden de campos tampoco tiene que ser el de la tabla, por ejemplo:
insert into cuentas (nombre, apellidos, codcuenta)
values ("Antonio","Sanchez",2)

Si nuestra relacin tiene un campo autonumrico, no hace falta mandarlo sino que lo generar
automticamente el motor de base de datos. Si el campo codcuenta es un autonumrico
bastar con una sentencia de este tipo:
insert into cuentas (nombre, apellidos, cantidad)
values ("Antonio","Sanchez",2.0)

Muchas veces vamos a querer insertar las tuplas que son el resultado de una consulta por
ejemplo si tenemos una relacin de usuarios con los campos nombre y apellidos y queremos
aadirlos a nuestra relacin de cuentas con una cantidad de 10000 simplemente tendremos
que hacer:
insert into cuentas (nombre, apellidos, cantidad)
select nombre,apellidos,10000
from usuarios

en esta select estamos introduciendo en el campo cantidad un valor de 10000


automticamente sin ser un campo de la tabla usuarios. En la select que hacemos para sacar
los datos podemos realizar condiciones o cualquier otra funcin de las que hemos visto en los
temas anteriores.
En determinadas situaciones desearemos cambiar un valor determinado dentro de una tupla
sin cambiar toda la tupla, para estas situaciones utilizaremos la instruccin update. Por
ejemplo si queremos modificar el campo cantidad de todos nuestras tuplas aadindoles un
10% simplemente tendramos que hacer:
Update cuentas
Set cantidad=cantidad * 1.1

Vemos que en la instruccin se hace update de la relacin y tenemos que establecer con la
instruccin set el campo y el valor por l que lo queremos modificar, observar que se puede
usar el mismo u otro campo de nuestra relacin para el clculo del nuevo valor. En este caso se
usa el valor que tiene el campo que se elija en esa misma tupla, por ejemplo si tenemos una
tabla con al menos dos campos numricos: campo1 y campo2 con los valores en una
determinada tupla de 100 y 5 podemos hacer la siguiente modificacin:
Update tabla
Set campo1 = campo2 * campo1

Despus de esta sentencia nuestra tupla tendr los valores campo1=500 y campo2=5

Microsoft Access 2010. Curso Avanzado

Tutor: Antonio Snchez de la Fuente

Tutorial SQL Parte32

Se pueden aplicar condiciones en nuestra sentencia para determinar en que tuplas se realiza la
modificacin mediante la clusula where, por ejemplo:
Update tabla
Set campo1 = campo2 * campo1
Where campo1 > 50

La modificacin se realizar slo en aquellas tuplas en las que el campo1 sea estrictamente
mayor de 50.
Del mismo modo que se pueden insertar y modificar tuplas podremos borrarlas, hay que tener
en cuenta que slo se podrn borrar tuplas no podemos borrar valores de atributos (en todo
caso podremos modificar valores poniendo Nulos en el caso en que nuestra relacin se
permitan estos valores, pero no los estaremos borrando. Para el borrado de tuplas
utilizaremos la instruccin delete, que tiene la siguiente forma:
Delete from tabla
Where condicin

Con esta sentencia se borraran todas las tuplas de la tabla que cumplieran la condicin (es
decir la condicin devolviera un valor Verdadero). A veces podremos ver estas sentencias de la
forma Delete * from tabla o incluso Delete campo1 from tabla realmente el motor de base
de datos el nombre de atributos (o asterisco) detrs de la sentencia delete los ignora pues no
le sirven para nada (recordad que se borrar tuplas no registros). En la parte de condicin
podemos usar cualquiera de las condiciones (de grupo o individuales) que hemos visto en
temas anteriores. Tenemos que tener especial cuidado en usar esta sentencia sin condiciones
pues borraramos todas las tuplas de la tabla.

Lenguaje de definicin de datos


Este lenguaje dentro de SQL nos va a permitir modificar, crear o borrar objetos dentro del
motor de base de datos, en el caso de Access, si no modificamos las opciones por defecto nos
permitir crear, modificar o borrar tablas.
La creacin de tablas se hace con la sentencia create table que en el caso de Access tiene la
siguiente sintaxis, en su forma ms breve:
Create table tabla1
(campo1 tipo[(tamao)] not null, campo2 )

Donde tabla1 es el nombre de la relacin, campo1 ... campon el nombre de los campos, cada
uno de estos campos tendrn un tipo determinado de los propios de Access (text, memo,
counter, short, long, single, double, bit, date, etc.). En el caso de tamao se necesita para
aquellos campos que sea necesario. Adems podremos poner constraints o ndices en las
tablas.
Con la sentencia alter table podemos modificar los campos de una tabla, pudiendo modificar
uno existente, aadir campos o borrar alguno de los existentes.

Microsoft Access 2010. Curso Avanzado

Tutor: Antonio Snchez de la Fuente

Tutorial SQL Parte32

Alter table tabla1


Alter column campo1 NuevoTipo

De esta forma modificaremos la tabla tabla1 modificando el campo campo1 a un nuevo tipo.
Hay que tener cuidado si estamos modificando un campo con valores pues son posibles
modificacin de valores o incluso desaparicin por la conversin automtica de tipos que va a
hacer Access.
Tambin podremos aadir nuevos campos de la forma
Alter table tabla1
Add column campo1 tipo

Donde los campos los definiremos como en la creacin de la tabla


Para eliminar un campo usaremos la sentencia:
Alter table tabla1
Drop column campo1

Para borrar toda una relacin usaremos la sentencia drop table, de la forma:
Drop table tabla1

Hay que tener en cuenta que si eliminamos una tabla, borraremos la estructura de la tabla y
por supuesto todos sus datos.

Microsoft Access 2010. Curso Avanzado

Tutor: Antonio Snchez de la Fuente

Das könnte Ihnen auch gefallen