Manual SQL. Parte 3
-
Upload
antoniosanchez -
Category
Documents
-
view
218 -
download
0
Transcript of Manual SQL. Parte 3
-
7/25/2019 Manual SQL. Parte 3
1/4
Microsoft Access 2010. Curso Avanzado Tutor: Antonio Snchez de la Fuente
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 ue usar otros
!ecanis!os para conse"uir los !is!os resultados ue Intersect o Minus#
La operacin unin sobre dos selects $con los ca!pos retornados del !is!o tipo% lo ue &ace
es de'ol'er los atributos seleccionados ue est(n en al !enos una de las dos partes de la
unin $real!ente si!ula una unin de con)untos% * auto!(tica!ente deber+a eli!inar
duplicados ase"urando la unicidad de los resultados de'ueltos, por e)e!plo podr+a!os &acer:
Select dni, nombre, apellidos
From usuarios
Union
Select nif, nombre, apellidos
From enfermos
Esta select nos de'ol'er+a los no!bres, dni, apellidos de todos nuestros usuarios * nuestros
enfer!os, * si un usuario fuera ta!bin enfer!o slo nos de'ol'er+a un re"istro#
La operacin intersect ser+a parecida pero ser+a la interseccin entre los con)untos es decir slo
de'ol'er+a auellos re"istros ue est(n en a!bas selects * funcionar+a de for!a si!ilar# La
operacin except o !inus de'ol'er+a auellos re"istros ue est(n en una relacin * no est(n
en la otra# .ecordad ue estas dos operaciones no est(n soportadas por Access#
Modificacin de la base de datos
/asta a&ora en nuestro !anual, nos &e!os li!itado a extraer infor!acin de nuestra base de
datos, pero SQL ta!bin tiene directi'as para a0adir, !odificar * eli!inar infor!acin de la
base de datos#
1ara insertar datos en una relacin, o bien se especifica la tupla ue se desea insertar o se
for!ula una consulta cu*o resultado sea el con)unto de tuplas ue se desea insertar#
b'ia!ente los 'alores de los resultados ue se 'an a insertar deben pertenecer al do!inio de
los atributos $es decir tienen ue ser '(lidos para dic&o atributo%#
La instruccin insert!(s sencilla corresponde a la insercin de una tupla:
Insert into cuentas
Values (1,Sanchez,Antonio,1000)
-
7/25/2019 Manual SQL. Parte 3
2/4
Microsoft Access 2010. Curso Avanzado Tutor: Antonio Snchez de la Fuente
Tutorial SQL Parte32
En este e)e!plo se est(n insertando los 'alores de una tupla en la relacin cuentas, se 'an a
insertar los 'alores ue pasa!os en el !is!o orden de atributos ue est(n en la relacin $por
e)e!plo en este caso codcuenta, apellidos, no!bre, cantidad# En una consulta de este tipo
tene!os ue poner todos los ca!pos de la relacin, sino dar( un error# Si no uere!os poner
todos los ca!pos tene!os ue explicitar los ca!pos ue 'a!os a introducir, de esta for!a el
orden de ca!pos ta!poco tiene ue ser el de la tabla, por e)e!plo:
insert into cuentas (nombre, apellidos, codcuenta)
values ("Antonio","Sanchez",2)
Si nuestra relacin tiene un ca!po autonu!rico, no &ace falta !andarlo sino ue lo "enerar(
auto!(tica!ente el !otor de base de datos# Si el ca!po codcuenta es un autonu!rico
bastar( con una sentencia de este tipo:
insert into cuentas (nombre, apellidos, cantidad)
values ("Antonio","Sanchez",2.0)
Muc&as 'eces 'a!os a uerer insertar las tuplas ue son el resultado de una consulta por
e)e!plo si tene!os una relacin de usuarios con los ca!pos no!bre * apellidos * uere!os
a0adirlos a nuestra relacin de cuentas con una cantidad de 34444 si!ple!ente tendre!os
ue &acer:
insert into cuentas (nombre, apellidos, cantidad)
select nombre,apellidos,10000
from usuarios
en esta select esta!os introduciendo en el ca!po cantidad un 'alor de 34444
auto!(tica!ente sin ser un ca!po de la tabla usuarios# En la select ue &ace!os para sacar
los datos pode!os reali5ar condiciones o cualuier otra funcin de las ue &e!os 'isto en los
te!as anteriores#
En deter!inadas situaciones deseare!os ca!biar un 'alor deter!inado dentro de una tupla
sin ca!biar toda la tupla, para estas situaciones utili5are!os la instruccin update# 1or
e)e!plo si uere!os !odificar el ca!po cantidad de todos nuestras tuplas a0adindoles un
346 si!ple!ente tendr+a!os ue &acer:
Update cuentasSet cantidad=cantidad * 1.1
7e!os ue en la instruccin se &ace update de la relacin * tene!os ue establecer con la
instruccin setel ca!po * el 'alor por l ue lo uere!os !odificar, obser'ar ue se puede
usar el !is!o u otro ca!po de nuestra relacin para el c(lculo del nue'o 'alor# En este caso se
usa el 'alor ue tiene el ca!po ue se eli)a en esa !is!a tupla, por e)e!plo si tene!os una
tabla con al !enos dos ca!pos nu!ricos: ca!po3 * ca!po2 con los 'alores en una
deter!inada tupla de 344 * 8 pode!os &acer la si"uiente !odificacin:
Update tabla
Set campo1 = campo2 * campo1
Despus de esta sentencia nuestra tupla tendr( los 'alores ca!po3844 * ca!po28
-
7/25/2019 Manual SQL. Parte 3
3/4
Microsoft Access 2010. Curso Avanzado Tutor: Antonio Snchez de la Fuente
Tutorial SQL Parte32
Se pueden aplicar condiciones en nuestra sentencia para deter!inar en ue tuplas se reali5a la
!odificacin !ediante la cl(usula where, por e)e!plo:
Update tabla
Set campo1 = campo2 * campo1
Where campo1 > 50
La !odificacin se reali5ar( slo en auellas tuplas en las ue el ca!po3 sea estricta!ente
!a*or de 84#
Del !is!o !odo ue se pueden insertar * !odificar tuplas podre!os borrarlas, &a* ue tener
en cuenta ue slo se podr(n borrar tuplas no pode!os borrar 'alores de atributos $en todo
caso podre!os !odificar 'alores poniendo ulos en el caso en ue nuestra relacin se
per!itan estos 'alores, pero no los estare!os borrando# 1ara el borrado de tuplas
utili5are!os la instruccin delete, ue tiene la si"uiente for!a:
Delete from tabla
Where condicin
;on esta sentencia se borrar+an todas las tuplas de la tabla ue cu!plieran la condicin $es
decir la condicin de'ol'iera un 'alor 7erdadero%# A 'eces podre!os 'er estas sentencias de la
for!a o incluso real!ente el !otor de base
de datos el no!bre de atributos $o asterisco% detr(s de la sentencia delete los i"nora pues no
le sir'en para nada $recordad ue se borrar tuplas no re"istros%# En la parte de condicin
pode!os usar cualuiera de las condiciones $de "rupo o indi'iduales% ue &e!os 'isto en
te!as anteriores# ?ene!os ue tener especial cuidado en usar esta sentencia sin condiciones
pues borrar+a!os todas las tuplas de la tabla#
Lenguaje de definicin de datos
Este len"ua)e dentro de SQL nos 'a a per!itir !odificar, crear o borrar ob)etos dentro del
!otor de base de datos, en el caso de Access, si no !odifica!os las opciones por defecto nos
per!itir( crear, !odificar o borrar tablas#
La creacin de tablas se &ace con la sentencia create table ue en el caso de Access tiene la
si"uiente sintaxis, en su for!a !(s bre'e:
Create table tabla1
(campo1 tipo[(tamao)] not null, campo2 )
Donde tabla3 es el no!bre de la relacin, ca!po3 ### ca!pon el no!bre de los ca!pos, cada
uno de estos ca!pos tendr(n un tipo deter!inado de los propios de Access $text, !e!o,
counter, s&ort, lon", sin"le, double, bit, date, etc#%# En el caso de ta!a0o se necesita para
auellos ca!pos ue sea necesario# Ade!(s podre!os poner constraints o +ndices en las
tablas#
;on la sentencia alter tablepode!os !odificar los ca!pos de una tabla, pudiendo !odificaruno existente, a0adir ca!pos o borrar al"uno de los existentes#
-
7/25/2019 Manual SQL. Parte 3
4/4
Microsoft Access 2010. Curso Avanzado Tutor: Antonio Snchez de la Fuente
Tutorial SQL Parte32
Alter table tabla1
Alter column campo1 NuevoTipo
De esta for!a !odificare!os la tabla tabla3 !odificando el ca!po ca!po3 a un nue'o tipo#
/a* ue tener cuidado si esta!os !odificando un ca!po con 'alores pues son posibles
!odificacin de 'alores o incluso desaparicin por la con'ersin auto!(tica de tipos ue 'a a
&acer Access#
?a!bin podre!os a0adir nue'os ca!pos de la for!a
Alter table tabla1
Add column campo1 tipo
Donde los ca!pos los definire!os co!o en la creacin de la tabla
1ara eli!inar un ca!po usare!os la sentencia:
Alter table tabla1
Drop column campo1
1ara borrar toda una relacin usare!os la sentencia drop table, de la for!a:
Drop table tabla1
/a* ue tener en cuenta ue si eli!ina!os una tabla, borrare!os la estructura de la tabla *
por supuesto todos sus datos#