Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
BasesdeDatosRelaciones
&
LenguajeSQL
BASESDEDATOSRELACIONALESYLENGUAJESQL
DISTRIBUIDOPOR:
CENTRODEINFORMTICAPROFESIONALS.L.
C/URGELL,100
08011BARCELONA
TFNO:934265087
C/RAFAELAYBARRA,10
48014BILBAO
TFNO:944483133
www.cipsa.net
RESERVADOSTODOSLOSDERECHOS.QUEDAPROHIBIDOTODOTIPODE
REPRODUCCINTOTALOPARCIALDEESTEMANUAL,SINPREVIO
CONSENTIMIENTOPORELESCRITORDELEDITOR
CIPSA
2
BASESDEDATOSRELACIONALESYLENGUAJESQL
1.ConceptodeBasedeDatos
Hoy en da las empresas necesitan manejar gran cantidad de datos, con lo cual
necesitarantenermedios,hardwareysoftwarequepermitanaccederalainformacin
deformarpida,sencillayfiable.
Tradicionalmente, la informacin se almacenaba en un conjunto de ficheros, y estos
ficherosnoguardabanningunarelacinentresconloquelosdatospodanrepetirse
envariosdeellos(loquesuponatenerinformacinredundante).Amenudosetiene
la idea que una Base de Datos es similar a un almacn de datos o a un conjunto de
ficheros.Estoescierto,porqueunaBasedeDatosesunconjuntodeficheros,perono
es cierto que cualquierconjunto de ficheros constituya una Base de Datos. Para que
seaunaBasedeDatossedebendarunaseriedecondiciones,queesprecisamentelo
queestudiaremos.
LasBasesdeDatossurgenafinalesdelosaos60.EnunaBasedeDatossealmacenan
todos los datos que necesite una empresa, adems los programas que utilizan esos
datosnosepreocupandesualmacenamientofsico.
1.1.ModeloER
Unabasededatossedefinecomounconjuntodedatosrelacionadosyalmacenados
sinredundanciasinnecesarias.
Estosdatostienenqueserviravariasaplicaciones(Word,ExcelVisualBasic),esdecir,
tienequeexistirunaindependenciadelosdatosylosprogramasquelosmanejan.
Estos tambin deben ser compartibles entre varios usuarios manteniendo en todo
momento la integridad y seguridad de la informacin (que se puedan utilizar
mecanismosparaevitarquelosdatosseanperjudicadosporcambiosnoautorizados,
porejemplo)yredundanciamnima.
A lo largo de la historia de las Bases de Datos, se han propuesto muchos modelos
conceptuales de datos, sin embargo, el ms utilizado en la prctica es el modelo
EntidadRelacin(modeloER).FuecreadoporPeterChenamediadosdelossesenta,
paralarepresentacinconceptualdelosdatosyestablecerlasrelacionesquedeben
existirentreellos.
ElmodeloERsebasaenunapercepcindeunmundoreal(anlisisdeunproyectoen
concreto)queconsisteenunconjuntodeobjetosbsicosdenominadosentidades,as
como de las relaciones existentes entre ellos. Las entidades se diferencian unas de
otrasporelconjuntodesuspropiedadesllamadasatributos.
CIPSA
3
BASESDEDATOSRELACIONALESYLENGUAJESQL
1.2.ConceptosdelmodeloER
El modelo ER se basa en una serie de conceptos sobre los que se construyen los
principiosderepresentacindeinformacinrelacionada.
1.2.1Entidades
Una Entidad es una persona, lugar, cosa u objeto real o abstracto de inters para la
BasedeDatosydelcualsedeseaalmacenarinformacin.
Llamaremosentidadalaestructuragenrica,yocurrenciadeentidadacadaunadelas
realizacionesconcretasdelamisma,porejemplo,enlaBasedeDatosdeuninstituto
la entidad ser el alumno y cada uno de los alumnos ser una ocurrencia de esa
entidad.
UnaBasedeDatosincluirunacoleccindeentidades,cadaunadelascualestendr
unnmerocualquieradeocurrencias.
Larepresentacingrficadeunaentidadesunrectnguloetiquetadoconelnombre
delamisma.
Ejemplo:
SupongamosquequeremosinformatizarlosdatosdeunaUniversidad.Eneste
caso,algunasdelasentidadesatenerencuentaseranlassiguientes:
PROFESOR
P.A.S.
ALUMNO
MATRICULA
NOMINA
stas son nicamente algunas de las entidades que formaran parte del sistema de
informacin de la Universidad. En realidad, son muchas ms: horarios, actividades,
deportes,equipo_rector
CIPSA
4
BASESDEDATOSRELACIONALESYLENGUAJESQL
Ejemplo:
Sisedeseadisearunsistemadegestindeinformacinenunvideoclub,las
entidadesprincipalesaconsiderarseran:
SOCIO
PELICULA
Ejemplo:
Entre las entidades utilizadas para informatizar un taller de automviles
podemosdestacar:
Almacenarinformacinsobrelosvehculosquesonreparados
eneltaller.
AUTOMOVIL
MECANICO
Contendrdatosdelosmecnicosdelosquedisponeeltaller.
1.2.2.Relaciones
Lasentidadesporssolasnodescribenlarealidaddeunsistemadeinformacin.No
basta con identificar objetos, hay adems que establecer las asociaciones existentes
entrelosmismos.Paraello,seintroduceelconceptodeRelacin.
Una relacin es una asociacin entre varias entidades. Grficamente se representa
medianteunromboetiquetadoconelnombredelarelacinyunidomediantelneasa
lasentidadesqueasocia.
Ejemplo:
En la Base de Datos de un instituto podemos tener dos entidades Alumno y
Asignatura. La relacin Matriculado asocia Alumno con Asignatura. En todo
caso,estamosrepresentandoelmodeloconceptualdecmovaaserlaBasede
Datos.
ALUMNO
MATRICULADO
ASIGNATURA
CIPSA
5
BASESDEDATOSRELACIONALESYLENGUAJESQL
Alnmerodeentidadesqueparticipanenlarelacinseledenominagradode
larelacinystaspuedenserbinarias,terciarias,,hastaenearias.
ALUMNO
MATRICULADO
ASIGNATURA
FORMULARIO
1.2.3.Cardinalidaddelasrelaciones
Sellamacardinalidadalnmeromximodeocurrenciasdeunaentidadquepueden
intervenirporcadaocurrenciadelaotraentidadasociadaenlarelacin.Existentres
tiposderelaciones,enfuncindelndeocurrenciasqueimplican:
De uno a uno (1:1). Como mximo puede intervenir una ocurrencia de una
entidad por cada ocurrencia de la otra entidad. Por ejemplo, si quiero
relacionarOrquestaconDirectortitular,veoqueslopuedehaberundirector
titularpororquestaluego:
1:1
ORQUESTA
DIRIGE
DIR.TITULAR
Relacin1:1Unaorquestatieneunnicodirectortitular,yundirectortitular
slopuededirigirunaorquesta.Acadaocurrenciadeorquestalecorresponde
unaocurrenciadedirectortitular.
CIPSA
6
BASESDEDATOSRELACIONALESYLENGUAJESQL
Deunoan(1:N).Sellamadeunoamuchossiparaunadelasentidadespuede
haberunnmeroindefinido(mayorqueuno)deocurrenciasdelaotraentidad,
porejemplo,enunaBasedeDatosdeunaeditorialguardoinformacinsobre
lasdistintaseditorialesyloslibrosquehayenlabiblioteca.Unaeditorialpuede
editarmuchoslibros.
1:N
EDITORIAL
EDITA
LIBRO
Relacin1:N Unaeditorialpuedepublicarunoomslibros,mientrasqueun
librosloeseditadoporunaeditorial.
1:NN:M
EDITORIAL
EDITA
LIBRO
ESCRIBE
AUTOR
RelacinN:MUnlibropuedeestarescritoporunoovariosautoresyunautor
puedehaberescritounoomslibros.Larelacinesde1:Nenambossentidos.
CIPSA
7
BASESDEDATOSRELACIONALESYLENGUAJESQL
1.2.4.Atributos
Unatributoesunaunidadbsicaeindivisibledeinformacinacercadeunaentidado
unarelacinquesirveparaidentificarlaodescribirla.Secorrespondeconcadaunade
laspropiedadesocaractersticasquetieneunaentidadorelacin.
Si tomamos como entidad a la mujer vemos que tiene como atributos: Nombre, DNI,
direccin,fechadenacimiento,fechadealtaenlaempresa,salario,etc.Todosestos
atributossoncamposquedefinenunaentidad(camposquedefinenunregistro).
Ejemplo:
Entidad alumno: son atributos del alumno: DNI, nombre, domicilio, fecha de
nacimiento.
DNI
Nombre
Direccin
ALUMNO
Fecha_Nacimiento
Entretodoslosatributosquedefinenaunaentidad,debemoselegirunoovariosque
identifiquen de forma nica a cada uno de los elementos representados por esa
entidad.Aesteatributooconjuntodeatributosselellamaclaveprimaria.Puedeque
existamsdeunidentificadorquecumplaesacondicin.Entalcaso,unodeellosser
laclaveprimaria,yelrestoclavesalternativas.Slopuedehaberunaclaveprimaria.
Se define como clave externa a aqul o aquellos atributos de una entidad que son
claveprimariaenotraentidad.
CIPSA
8
BASESDEDATOSRELACIONALESYLENGUAJESQL
1.2.5.ReglasdeIntegridad
Se denominan reglas de integridad al conjunto de reglas que garantizan la
consistencia de la informacin. Estas reglas actan fundamentalmente sobre los
dominios,lasclavesprimariasylasclavesajenas.Tenemosdos:
Regladeintegridaddelaentidad:elatributoqueesclaveopartedelaclaveno
puedetomarvaloresnulos.
CIPSA
9
BASESDEDATOSRELACIONALESYLENGUAJESQL
2.BasesdeDatosRelacionales
Unabasededatosrelacionalseconstruyeempleandolossiguienteselementos:
Tablas
Las tablas constituyen la forma de estructurar los datos, organizados mediante filas
(registros)ycolumnas(campos).Paraqueunatablaformepartedeunabasededatos
relacionaldebecumplirlossiguientesrequisitos:
Debetenerunsolotipodefila,cuyoformatoquedadefinidoporelesquemadelatablaola
relacin,esdecir,todaslasfilasdelatablahandetenerlasmismascolumnas.
Cadacolumnadebesernicaynopuedenexistircolumnasduplicadas.
Cadacolumnadebeestarespecificadaporunnombreconcreto.
El valor de una columna para una fila determinada debe ser nico, no pueden existir
mltiplosvaloresenunaposicindeunacolumna.
Losvaloresdeunacolumnadebenperteneceraldominioquerepresentan,yesposiblequeun
mismodominioseutiliceparadefinirlosvaloresdevariascolumnas.
El concepto tabla se corresponde con una entidad en el modelo ER. Las tablas
tambin se emplean para implementar relaciones de cardinalidad NM en el modelo
entidadrelacin.
Registros
Los registros se corresponden con cada fila de una tabla relacional o relacin. Cada
registrorepresentaaunelementodelaentidadrepresentadaporlatabla.
Campos
Loscampossonlascolumnasdecadatabla.Cadacolumnarepresentaunainformacin
quesedeseaalmacenardecadaelementoentidad,ysecorrespondeconsusatributos
enelmodeloentidadrelacin.
Claveprincipaloprimaria(primarykey):
Unaclaveprimariasonunoovarioscamposcuyosvaloresidentificandemaneranica
a cada elemento, de manera que no puede haber dos elementos con los mismos
valoresenlatabla.
CIPSA
10
BASESDEDATOSRELACIONALESYLENGUAJESQL
Clavealternativa
Lasclavesalternativassoncamposcuyosvaloresnoserepitenentreloselementosde
laentidad,peronoformanpartedelaclaveprimaria.
Claveextranjera
Esunacolumnacuyovalorsecorrespondeconelvalordelaclaveprimariaderegistros
presentes normalmente otra tabla con los que existe una relacin. Los valores de la
claveextranjerasirvendenexodeuninpararelacionarelementosdedosentidades
distintas.
Valoresnulos
Un valor nulo es aquel que recibe un campo en un registro cuando no existe valor
asociado al mismo. Los campos pueden admitir o no valores nulos en funcin de la
obligatoriedad de los datos. Los campos que se establecen como clave primaria no
puedentenervaloresnulos.
CIPSA
11
BASESDEDATOSRELACIONALESYLENGUAJESQL
2.1.PasodelmodeloERaunabasededatosrelacional
Elmodeloentidadrelacinsirvedeguaenlacreacinymantenimientodelasbases
dedatosrelacionales.Paracrearunabasededatosrelacionalessiempreconveniente
disearantesunmodeloER.
LacreacindeunabasededatosarelacionalapartirdeunmodeloERsebasaenlos
siguientesprincipios:
Toda entidad se transforma en una relacin o tabla. A cada entidad del
modelo ER le corresponder una tabla en la base de datos relacional y se
mantendrntantolosatributoscomolaclaveprimaria.
MODELOER
MODELORELACIONAL:
CLIENTE(CODIGO,NOMBRE,APELLIDOS,DNI,TFNO)
Tabla:
CLIENTE
Campos:
CODIGO, NOMBRE, APELLIDOS, DNI y TFNO.
Clave primaria: CODIGO.
Todoatributodeunaentidadodeunarelacinsetransformaenunacolumna
(atributo)delatablaqueformalaentidadolarelacin.
Elidentificadornicodelaentidadseconvierteenclaveprimariadelatabla.Se
distinguedelrestodelosatributosporquesesubraya.
Elnombredelosatributos,entidadesyrelacionesdelmodeloERpermanece
paraelmodelorelacional,identificandolasrelacionesysusatributos.Aveces,
podremos usar el plural de las entidades. Tambin es posible usar como
nombre de la relacin o tabla de una relacin parte de cada uno de los
nombresdelasentidadesquerelacionan.
CIPSA
12
BASESDEDATOSRELACIONALESYLENGUAJESQL
2.1.a.Relaciones11
[1:1].Siunadelasentidadesposeecardinalidad(0,1)ylaotra(1,1),conviene
propagarlaclavedelaentidadconcardinalidad(1,1)alatablaresultantede
laentidaddecardinalidad(0,1)
MODELORELACIONAL:
PUESTO TRABAJO(COD_PUESTO,DESCRIPCION,OFICINA,DESPACHO,MESA)
EMPLEADO(COD_EMPLEADO,NOMBRE,DIRECCION,TFNO,COD_PUESTO)
Tabla:
PUESTO_TRABAJO
Campos:
COD_PUESTO, DESCRIPCION, OFICINA, DESPACHO, MESA
Clave primaria: COD_PUESTO
Tabla:
Campos:
Clave primaria:
Clave Externa:
EMPLEADO
COD_EMPLEADO, NOMBRE, DIRECCION, TFNO, COD_PUESTO
COD_EMPLEADO
COD_PUESTO
CIPSA
13
BASESDEDATOSRELACIONALESYLENGUAJESQL
Ejemplo:Unpolicapuedeonotenerunarma,ycadaarmapuedeestarasignadaono
aunpolica.
MODELOER
MODELORELACIONAL:
POLICIA(DNI, NOMBRE)
ARMA(COD_ARMA,TIPO_ARMA)
POLICIA_ARMA(DNI,COD_ARMA,F_ENTREGA)
Tabla:
POLICIA
Campos:
DNI, NOMBRE
Clave primaria: DNI
Tabla:
ARMA
Campos:
COD_ARMA, TIPO_ARMA
Clave primaria: COD_ARMA
Tabla:
Campos:
Clave primaria:
Clave externa:
POLICIA_ARMA
DNI, COD_ARMA, F_ENTREGA
DNI, COD_ARMA
DNI, COD_ARMA
CIPSA
14
BASESDEDATOSRELACIONALESYLENGUAJESQL
[1:1].Siambaspartesparticipandeformatotal,esdecir,siambasparticipan
con(1,1):
Ejemplo:Supngasequeunpolicatieneasignadaunayslounaarma,ycadaarma
estigualmenteasignadaaunnicopolica.Secreaunanicatablaconlosatributos
de las dos entidades. La clave primaria puede ser cualquiera de las claves de cada
entidad,perosetomarlaquepertenezcaalaentidadmsdominante.
MODELOER
MODELORELACIONAL:
POLICIA(DNI,NOMBRE,COD_ARMA,TIPO_ARMA,F_ENTREGA)
Tabla:
POLICIA
Campos:
DNI, NOMBRE, COD_ARMA, TIPO_ARMA, F_ENTREGA
Clave primaria: DNI
CIPSA
15
BASESDEDATOSRELACIONALESYLENGUAJESQL
2.1.b.Relaciones1:N
Ejemplo:Unaeditorialeditamuchasrevistas,perocadarevistaesnicamenteeditada
porunaeditorial.
MODELOER
MODELORELACIONAL:
REVISTA(TITULO,PRECIO,COD_EDITORIAL)
EDITORIAL(COD_EDITORIAL,NOMBRE,DIRECTOR)
Tabla:
EDITORIAL
Campos:
COD_EDITORIAL, NOMBRE, DIRECTOR
Clave primaria: COD_EDITORIAL
Tabla:
Campos:
Clave primaria:
Clave externa:
REVISTA
TITULO, PRECIO, COD_EDITORIAL
TITULO
COD_EDITORIAL
CIPSA
16
BASESDEDATOSRELACIONALESYLENGUAJESQL
Ejemplo: Una revista es editada por una editorial, mientras que una editorial puede
imprimir varias o ninguna revista. Este caso es semejante al de relaciones con
cardinalidad1:Ndondeunadelasentidadesparticipadeformaparcial.
MODELOER
MODELORELACIONAL:
REVISTA(TITULO,PRECIO)
EDITORIAL(COD_EDITORIAL,NOMBRE,DIRECTOR)
REVISTA_EDITORIAL(TITULO, COD_EDITORIAL)
Tabla:
REVISTA.
Campos:
TITULO, PRECIO
Clave primaria: TITULO
Tabla:
EDITORIAL.
Campos:
COD_EDITORIAL, NOMBRE, DIRECTOR
Clave primaria: COD_EDITORIAL
Tabla:
Campos:
Clave primaria:
Clave externa:
REVISTA_EDITORIAL
TITULO, COD_EDITORIAL
TITULO, COD_EDITORIAL
TITULO
CIPSA
17
BASESDEDATOSRELACIONALESYLENGUAJESQL
2.1.c.RelacionesN:M
[N:M].TodarelacindegradoN:M(muchosamuchos)seconvierteenuna
tablaquetendrcomoclaveprimarialaconcatenacindelosatributosclave
delasentidadesqueasociaylosatributosasociadosalarelacinsiloshay.
Nosetieneencuentalacardinalidadysiempreseaplicaestaregla.
Ejemplo: Un cliente puede comprar muchos artculos. Los artculos pueden ser
compradospormuchosclientes.
MODELOER
MODELORELACIONAL:
COMPRA
COD_CLIENTE, COD_ARTICULO, FECHA_VENTA, UNI_VENTA
COD_CLIENTE, COD_ARTICULO
COD_CLIENTE, COD_ARTICULO
BASESDEDATOSRELACIONALESYLENGUAJESQL
2.1.d.RelacionesTernarias
[N:N:N].SilarelacinesN:N:N,esdecir,sitodaslasentidadesparticipancon
cardinalidadmximaN,laclavedelatablaresultanteeslaunindelasclaves
delasentidadesquerelaciona.Esatablaincluirlosatributosdelarelacinsi
loshubiera.
Ejemplo:SupngaseunarelacinternariaentrelasentidadesPROFESORES,CURSOS,y
ASIGNATURAS en la que un profesor imparte en varios cursos, varias asignaturas, y
ademslasasignaturassonimpartidasporvariosprofesoresenvarioscursos:
MODELOER
MODELORELACIONAL:
PROFESOR(COD_PROFESOR, DIRECCION,NOMBRE,TFNO,ESPECIALIDAD)
CURSO(COD_CURSO,DESCRIPCION,NIVEL,TURNO)
ASIGNATURA(COD_ASIGNATURA, NOMBRE)
IMPARTE(COD_PROFESOR, COD_CURSO, COD_ASIGNATURA)
CIPSA
19
BASESDEDATOSRELACIONALESYLENGUAJESQL
[N:N:N].Silarelacines1:N:N,esdecir,unadelasentidadesparticipacon
cardinalidad mxima 1, entonces,la clave deesta entidad no pasa a formar
partedelaclavedelatablaresultante,peroformapartedelarelacincomo
atributoms.
Ejemplo:Supngaseelcasodeunatiendadeventadecoches,enlaqueunempleado
vende muchos coches a muchos clientes, pero los coches son vendidos por un solo
empleado.Enlaventahayquetenerencuentalaformadepagoylafechadeventa.
DadoelsiguienteesquemaER,transformarloalmodelorelacional.
MODELOER
MODELORELACIONAL:
EMPLEADO(COD_EMPLEADO,NOMBRE,TFNO,SALARIO,FECHA_ALTA)
CLIENTE(COD_CLIENTE, NOMBRE, TFNO)
COCHE(COD_COCHE, MODELO, PRECIO, MATRICULA)
VENTA(COD_CLIENTE,COD_COCHE,COD_EMPLEADO,FORMA_PAGO,
FECHA_VENTA)
CIPSA
20
BASESDEDATOSRELACIONALESYLENGUAJESQL
3.LenguajeSQL
3.1.Introduccin
El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos
normalizadoquepermitelamanipulacindelosdatosylaestructuradeunabasede
datos.
EllenguajeSQLestcompuestoporcomandos,clusulas,operadoresyfuncionesde
agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y
manipularlasbasesdedatos.
3.1.1.ComandosdeSQL
LoscomandosbsicosqueconformanSQLpuedendividirseendoscategoras:
DLL ( Lenguaje de definicin de datos ) que permiten crear y definir
nuevasbasesdedatos,camposendices.
ComandosDLL
Comando
Descripcin
CREATE
Utilizadoparacrearnuevastablas,camposendices
DROP
Empleadoparaeliminartablasendices
ALTER
Utilizadoparamodificarlastablasagregandocamposocambiandoladefinicindelos
campos.
ComandosDML
Comando
Descripcin
SELECT
INSERT
Utilizadoparacargarlotesdedatosenlabasededatosenunanicaoperacin.
UPDATE
Utilizadoparamodificarlosvaloresdeloscamposyregistrosespecificados
DELETE
Utilizadoparaeliminarregistrosdeunatabladeunabasededatos
CIPSA
21
BASESDEDATOSRELACIONALESYLENGUAJESQL
3.1.2.Clusulas
Lasclusulasdefinencondicionesquepermitenpararestringirlosdatosquesedesean
seleccionaromanipular.
Clusula
Descripcin
FROM
Utilizadaparaespecificarlatabladelacualsevanaseleccionarlosregistros
WHERE
Utilizada para especificar las condiciones que deben reunir los registros que se van a
seleccionar
GROUPBY Utilizadaparasepararlosregistrosseleccionadosengruposespecficos
HAVING
Utilizadaparaexpresarlacondicinquedebesatisfacercadagrupo
ORDERBY
Utilizadaparaordenarlosregistrosseleccionadosdeacuerdoconunordenespecfico
3.1.3.OperadoresdeComparacin
Losoperadoresdecomparacinpermitendefinirexpresionescondicionalesnecesarias
paraindicarlosvaloresquesedeseanobteneromanipular.
Operador
Uso
<
Menorque
>
Mayorque
<>
Distintode
<=
MenorIgualque
>=
MayorIgualque
Igualque
BETWEEN
Utilizadoparaespecificarunintervalodevalores.
LIKE
Utilizadoenlacomparacindeunmodelo
3.1.4OperadoresLgicos
Los operadores lgicos permiten declarar expresiones condicionales compuestas por
variascomparacionescombinadasmedianteoperadoreslgicos.
OperadorUso
AND
Es el "y" lgico. Evalua dos condiciones y devuelve un valor de verdad slo si ambas son
ciertas.
OR
Esel"o"lgico.Evaladoscondicionesydevuelveunvalordeverdadsialgunadelasdoses
cierta.
NOT
Negacinlgica.Devuelveelvalorcontrariodelaexpresin.
CIPSA
22
BASESDEDATOSRELACIONALESYLENGUAJESQL
3.1.5.FuncionesdeAgregado
Las funciones de agregado se usan dentro de una clusula SELECT en grupos de
registrosparadevolverunnicovalorqueseaplicaaungrupoderegistros.
Funcin Descripcin
AVG
Utilizadaparacalcularelpromediodelosvaloresdeuncampodeterminado
COUNT Utilizadaparadevolverelnmeroderegistrosdelaseleccin
SUM
Utilizadaparadevolverlasumadetodoslosvaloresdeuncampodeterminado
MAX
Utilizadaparadevolverelvalormsaltodeuncampoespecificado
MIN
Utilizadaparadevolverelvalormsbajodeuncampoespecificado
CIPSA
23
BASESDEDATOSRELACIONALESYLENGUAJESQL
3.2.Consultas(SELECT)
3.2.1.ComandoSELECT<Listadecolumnas>
Especificalascolumnasquevanadevolverse.Puedensertodaslascolumnasdeuna
tabla,partedeellas,unacombinacindecolumnasdevariastablas,ocolumnascuyo
valorsecalculeenbasealdeotras:
Sealatabla:VEHICULOprovistadelossiguientesdatos:
Siseindicaunasterisco(*)equivaleaindicarquesedevuelvantodaslascolumnasde
cadafila:
SELECT * FROM VEHICULO
CIPSA
24
BASESDEDATOSRELACIONALESYLENGUAJESQL
Tambinesposibleindicarexplcitamentequcolumnasdeseanobtenerse.
SELECT MATRICULA, MARCA, MODELO FROM VEHICULO
Los nombres de las columnas pueden indicarse precedidas del nombre de la tabla
correspondiente. Esto es especialmente til cuando se realizan consultas de varias
tablasenlasqueelnombredelascolumnaspuedecoincidir,ypermitequeeleditorde
SQLmuestrelosnombresdelascolumnasalescribirlasconsultas.
Tambin es posible indicar en vez del nombre de una columna, una expresin que
genereunresultadoporcadafiladevuelta.Porejemplo:
SELECT MATRICULA, MARCA + '/' + MODELO FROM VEHICULO
Devolver:
PuedelimitarselacantidaddefilasdevueltasindicandolapartculaTOP.Estapermite
indicarelnmerodefilasmximoquedeseaobtenerse:
SELECT TOP 5 * FROM VEHICULO
CIPSA
25
BASESDEDATOSRELACIONALESYLENGUAJESQL
Existenocasionesenlasquesedeseanmostrarlosresultadosordenadosporelvalor
deunacolumna.SupngaseunatablaSANCIONESque almacena la hora y fecha en
que se ha puesto cada sancin y el cdigo del agente que la interpuso. La siguiente
consultamostraratodoslosregistrosordenadosporelcdigodelagente:
SELECT FECHA_HORA, CODIGO_AGENTE
FROM SANCION
ORDER BY CODIGO_AGENTE
FECHA_HORA
----------------------2007-12-30 00:00:00.000
2007-12-12 00:00:00.000
2007-12-24 00:00:00.000
2007-12-26 00:00:00.000
2007-12-28 00:00:00.000
2007-12-27 00:00:00.000
2007-12-27 00:00:00.000
2007-12-25 00:00:00.000
2007-11-13 00:00:00.000
2007-12-22 00:00:00.000
2007-11-19 00:00:00.000
CODIGO_AGENTE
------------0001
0001
0001
0001
0002
0002
0002
0003
0003
0004
0004
Sideseamosrecibirslolamitaddelasfilas,podemoshacer:
SELECT TOP 50 PERCENT FECHA_HORA, CODIGO_AGENTE
FROM SANCION
ORDER BY CODIGO_AGENTE
FECHA_HORA
----------------------2007-12-30 00:00:00.000
2007-12-12 00:00:00.000
2007-12-24 00:00:00.000
2007-12-26 00:00:00.000
2007-12-28 00:00:00.000
2007-12-27 00:00:00.000
CODIGO_AGENTE
------------0001
0001
0001
0001
0002
0002
(6 filas afectadas)
Comoconsecuenciadelalimitacin,paraelcdigodeagente0002slosemuestran
dosregistroscuandoenrealidadhaytres.Siapesardelalimitacinenelnmerode
filas devueltas, nos interesa que se muestren todos los registros de cada valor de la
columnaordenadadebeaadirselaclusulaWITHTIES.
SELECT TOP 50 PERCENT WITH TIES FECHA_HORA, CODIGO_AGENTE
FROM SANCION
ORDER BY CODIGO_AGENTE
FECHA_HORA
----------------------2007-12-30 00:00:00.000
2007-12-12 00:00:00.000
2007-12-24 00:00:00.000
2007-12-26 00:00:00.000
2007-12-28 00:00:00.000
2007-12-27 00:00:00.000
2007-12-27 00:00:00.000
CODIGO_AGENTE
------------0001
0001
0001
0001
0002
0002
0002
(7 filas afectadas)
CIPSA
26
BASESDEDATOSRELACIONALESYLENGUAJESQL
3.2.2.ClusulaFROM<tablas>
La clusula FROM permite indicar las tablas de las que provienen las columnas
indicadasenlaclusulaSELECT.
SELECT S.CODIGO_AGENTE
FROM SANCION AS S
LaclusulaFROMpuedehacerreferenciaaunanicatablaoavariassilainformacin
a recuperar est repartida en diferentes tablas. Estas consultas se denominan
consultasmulttablayrequierendeunproceso decombinacinquedeterminecmo
componenlasfilasdediferentestablas.
3.2.3.ClusulaINNERJOIN<tabla_sub>ON<condiciones>
Losdatosdeambastablassonlossiguientes:
MATRICULA
--------2548BBV
3258CGX
4568CCX
5842FFV
5961BNG
6527DBC
AB3698Z
B1548WS
IB3678L
M1234ZY
V9521PP
MARCA
---------NISSAN
OPEL
RENAULT
SKODA
CITROEN
FORD
SEAT
VOLKSWAGEN
AUDI
PEUGEOT
TOYOTA
MODELO
---------PRIMERA
VECTRA
LAGUNA
OCTAVIA
C5
FOCUS
TOLEDO
POLO
A4
307
AVENSIS
CIPSA
27
BASESDEDATOSRELACIONALESYLENGUAJESQL
NUMERO_SANCION
-------------1
2
3
4
5
6
7
8
9
10
11
FECHA_HORA
----------------------2007-12-12 00:00:00.000
2007-12-24 00:00:00.000
2007-12-27 00:00:00.000
2007-12-30 00:00:00.000
2007-12-25 00:00:00.000
2007-11-13 00:00:00.000
2007-12-22 00:00:00.000
2007-11-19 00:00:00.000
2007-12-26 00:00:00.000
2007-12-28 00:00:00.000
2007-12-27 00:00:00.000
CODIGO_AGENTE
------------0001
0001
0002
0001
0003
0003
0004
0004
0001
0002
0002
MATRICULA_VEHICULO
-----------------2548BBV
5961BNG
M1234ZY
4568CCX
IB3678L
2548BBV
IB3678L
3258CGX
AB3698Z
M1234ZY
V9521PP
COSTE_SANCION
---------------100,00
125,00
137,00
158,00
215,00
300,00
250,00
180,00
235,00
550,00
375,00
Si deseamos obtener la fecha de cada sancin junto con la marca y modelo del
vehculomultadopodemoscombinarambastablasempleandolosvaloresdelcampo
clave primaria MATRICULA en la tabla VEHICULO, y el campo clave externa
MATRICULA_VEHICULOenlatablaSANCION.
Elresultadoser:
FECHA_HORA
----------------------2007-12-12 00:00:00.000
2007-12-24 00:00:00.000
2007-12-27 00:00:00.000
2007-12-30 00:00:00.000
2007-12-25 00:00:00.000
2007-11-13 00:00:00.000
2007-12-22 00:00:00.000
2007-11-19 00:00:00.000
2007-12-26 00:00:00.000
2007-12-28 00:00:00.000
2007-12-27 00:00:00.000
MATRICULA
--------2548BBV
5961BNG
M1234ZY
4568CCX
IB3678L
2548BBV
IB3678L
3258CGX
AB3698Z
M1234ZY
V9521PP
MARCA
---------NISSAN
CITROEN
PEUGEOT
RENAULT
AUDI
NISSAN
AUDI
OPEL
SEAT
PEUGEOT
TOYOTA
MODELO
---------PRIMERA
C5
307
LAGUNA
A4
PRIMERA
A4
VECTRA
TOLEDO
307
AVENSIS
Lacomposicininternaslodevuelveaquellasfilasrelacionadasentreambastablas.Si
unafiladeunatabla,noestasociadaaalgunafiladelaotra;NOsemuestra.
En este caso esa cualidad de la composicin interna hace que slo se muestren los
datos de aquellos vehculos vinculados a alguna sancin. Todos los vehculos que no
asociadosaalgunasancin,oaquellassancionesnoasociadasaningunasancin;NO
semostrarn.
CIPSA
28
BASESDEDATOSRELACIONALESYLENGUAJESQL
3.2.4.ClusulaWHERE<condiciones>
Estaclusulapermiteindicarunacondicinquedeterminarquefilassemuestrandela
tabla o tablas indicadas en la clusula FROM. Para ello se emplean expresiones
condicionales que restringuen las filas devueltas por la consulta a aquellas que las
cumplan:
Lasexpresionescondicionalespuedencomponerseempleando:
Operadoresdecomparacin:>,<,>=,<=,<>,=,<>,!=,!<,!>
Estos operadores permiten establecer comparaciones con el valor de una o varias
columnasdecadafila.
Sea:TablaCONDUCTORES:
DNI
--------23670002V
34567123P
34567543N
34890234S
45123456C
45345220B
51101001R
54234000W
56900001M
65123111L
NOMBRE
---------ANA
SCAR
VANESSA
M CARMEN
DAVID
JESS
JAIME
JESS
SCAR
ANA
APELLIDOS
-------------------GRCIA MURCIA
GRCIA LPEZ
GONZLEZ PRIETO
LPEZ HERRERA
ESTVEZ MOLINA
GONZLEZ VZQUEZ
GARCA DE LA CRUZ
GMEZ BAENA
ALCNTARA BAENA
CRUZ RIAO
EDAD
----------23
24
32
35
39
41
22
53
48
45
LICENCIA
-------A
B
B
B
C
C
D
B
A
A
Ejemplos:
Consultaquedevuelvetodosaquellosconductoresconedadmayora25aos:
SELECT DNI, NOMBRE, APELLIDOS, EDAD
FROM CONDUCTOR
WHERE EDAD > 25
ConsultaquedevuelveaquelconductorcuyoDNIes23670002V
SELECT DNI, NOMBRE, APELLIDOS, EDAD
FROM CONDUCTOR
WHERE DNI = '23670002V'
CIPSA
29
BASESDEDATOSRELACIONALESYLENGUAJESQL
Operadoreslgicos:AND,OR,NOT,LIKE,BETWEEN
Estosoperadorespermitenindicarcondicionescompuestasporvariascomparaciones
combinadasmedianteoperadoresANDoOR:
ElresultadodeunacondicincompuestaempleandolosoperadoreslgicosANDoOR,
dependedelresultadodelascomparacionesquecombinadas:
<expresin1> Operador <expresin2> Resultado
Verdad
AND
Falso
Falso
Verdad
AND
Verdad
Verdad
Falso
AND
Verdad
Falso
Falso
AND
Falso
Falso
Verdad
OR
Falso
Verdad
Verdad
OR
Verdad
Verdad
Falso
OR
Verdad
Verdad
Falso
OR
Falso
Falso
Ejemplos:
Consultaquedevuelvetodosaquellosconductorescuyaedadestpordebajodelos
20aosoporencimadelos25aos.
SELECT DNI, NOMBRE, APELLIDOS, EDAD
FROM CONDUCTOR
WHERE EDAD < 20 OR EDAD > 25
Consultaquedevuelvetodosaquellosconductorescuyaedadestcomprendidaentre
20y25aos.
SELECT DNI, NOMBRE, APELLIDOS, EDAD
FROM CONDUCTOR
WHERE EDAD >= 20 AND EDAD <= 25
ConsultaquedevuelvetodosaquellosconductorescuyoDNIterminaenlaletraK
SELECT DNI, NOMBRE, APELLIDOS, EDAD
FROM CONDUCTOR
WHERE DNI LIKE '%K'
CIPSA
30
BASESDEDATOSRELACIONALESYLENGUAJESQL
CaracteresComodn
Los caracteres comodn permiten establecer un patrn que pueden cumplir un
subconjuntodecadenasdetexto.
Elcaractercomodin%representacualquierconjuntodecaracteres.
Elcaractercomodn_representaunslocaracter.
Tipodecoincidencia
Modelo
Coincide
Planteado
Nocoincide
Varioscaracteresenmedio
'a%a'
'aa','aBa','aBBBa'
'aBC'
Uncarcterespecial
'a_a'
'aLa'axaaBa
'aax'xxxaa
Varioscaracteresalfinal
'ab%
abcdefg,abc
cab,aab
Varioscaracteresalprincipio
%bac
xxbac03bac
acaaaac
RangodecaracteresAZ
'[az]'
'f','p','j'
'2','&'
FueradeunrangodecaracteresAZ '[!az]'
'9','&','%'
'b','a'
Undgito
'[09]'
'0','2','3','5'
'a','h','?'
Distintodeundgito
'[!09]'
'A','a','&','~'
'0','1','9'
Combinada
'a[!bm]%' 'An9','az0','a99'
'abc','aj0'
Operadoresdesubconsultas:SOME,ANY,ALL,IN.
Ejemplos:
ConsultaquedevuelvetodoslosconductorescuyaslicenciassonAoB:
SELECT DNI, NOMBRE, APELLIDOS, EDAD, LICENCIA
FROM CONDUCTOR
WHERE LICENCIA IN ( 'A', 'B' )
ConsultaquedevuelvetodoslosconductorescuyosDNIestpresenteenalgunafilade
otratablaADMITIDOS:
SELECT DNI, NOMBRE, APELLIDOS, EDAD, LICENCIA
FROM CONDUCTOR
WHERE DNI = ANY( SELECT DNI FROM ADMITIDOS )
Consultaquedevuelvetodoslosconductorescuyaedadessuperioraldetodoslasfilas
delatablaADMITIDOS:
SELECT DNI, NOMBRE, APELLIDOS, EDAD, LICENCIA
FROM CONDUCTOR
WHERE EDAD > ALL( SELECT EDAD FROM ADMITIDOS )
CIPSA
31
BASESDEDATOSRELACIONALESYLENGUAJESQL
3.2.5.ClusulaGROUPBY<expresindeagrupamiento>
Estaclusulapermiteindicarunaovariascolumnas(columnasdeagrupamiento)para
laqueseagrupanlasfilasconelmismovalorenunanicasolafilaresultado.
La siguiente consulta agrupa las filas de la tabla sancin con el mismo valor de la
columna matrcula mostrando una nica fila por cada matrcula. El resultado es el
conjuntodelasmatriculasqueaparecenenlatablaSANCIONES.
SELECT SANCION.MATRICULA_VEHICULO
FROM SANCION
GROUP BY SANCION.MATRICULA_VEHICULO
EnlaclusulaSELECTasociadaaunaconsultadeagrupamientoslopuedenincluirse:
LascolumnasdeagrupamientoindicadasenlaclusulaGROUPBY
Funcionesdeagregadoquedevuelvanunresultadoparacadagrupodefilas.
Ejemplo:
SELECT SANCION.MATRICULA_VEHICULO, SANCION.FECHA_HORA
FROM SANCION
GROUP BY SANCION.MATRICULA_VEHICULO
Mens. 8120, Nivel 16, Estado 1, Lnea 1
La columna 'SANCION.FECHA_HORA' de la lista de seleccin no es vlida, porque no
est contenida en una funcin de agregado ni en la clusula GROUP BY.
EstoproduciraunerroralnopoderdevolverseunnicovalorFECHA_HORAparacada
grupodesanciones.
Funcionesdeagregado
COUNT(*)>Contabilizatodaslasfilas.
COUNT(ALLcolumna)>ContabilizatodaslasfilasexceptoaquellasconelvalorNULL
enlacolumnaindicada.
COUNT( DISTINCT( columna )) > Contabiliza todas las filas eliminando aquellas con
valoresNULLyvaloresduplicados.
SUM>Devuelveelsumatoriodelosvaloresdeunacolumna.
MIN / MAX > Devuelve los valores mximo y mnimo de los valores de una
columna.
AVG>Devuelvelamediadelosvaloresdeunacolumna.
CIPSA
32
BASESDEDATOSRELACIONALESYLENGUAJESQL
Lasiguienteconsultadevuelveelnmerodesancionesinterpuestas,elcostemximo,
elmnimo,elsumatorioylamedia.
SELECT COUNT(*) AS NUMERO_SANCIONES,
SUM(SANCION.COSTE_SANCION) AS SUMATORIO,
MAX(SANCION.COSTE_SANCION) AS MAXIMO,
MIN(SANCION.COSTE_SANCION) AS MINIMO,
AVG(SANCION.COSTE_SANCION) AS MEDIA
FROM SANCION WHERE SANCION.CODIGO_AGENTE = '0001'
NUMERO_SANCIONES SUMATORIO
MAXIMO
MINIMO
MEDIA
---------------- --------------------- --------------------- --------------------- ----4
710,00
250,00
100,00
177,50
(1 filas afectadas)
LasfilasconvaloresNULLnosecontabilizanalemplearfuncionesdeagregadoSUM,
MAX,MINyAVG.
La funcin DISTINCT permite eliminar aquellas filas con valores duplicados para una
determinada columna. Esta funcin pueden emplearse combinada con las funciones
de agregado SUM, MIN, MAX, AVG, COUNT., para omitir en los clculos filas con
valoresrepetidos:
SELECT SANCION.MATRICULA_VEHICULO
FROM SANCION
MATRICULA_VEHICULO
-----------------2548BBV
5961BNG
M1234ZY
4568CCX
IB3678L
2548BBV
IB3678L
3258CGX
AB3698Z
M1234ZY
V9521PP
(11 filas afectadas)
CIPSA
33
BASESDEDATOSRELACIONALESYLENGUAJESQL
Lasiguienteconsultadevuelvelasmatrculasdetodoslosvehculossancionados.Para
ellosemuestranlosvaloresdelacolumnaMATRICULA_VEHICULOdetodaslasfilasde
la tabla SANCIONES, pero eliminando los valores repetidos mediante la funcin
DISTINCT.
SELECT DISTINCT(SANCION.MATRICULA_VEHICULO)
FROM SANCION
MATRICULA_VEHICULO
-----------------2548BBV
3258CGX
4568CCX
5961BNG
AB3698Z
IB3678L
M1234ZY
V9521PP
(8 filas afectadas)
ElusodefuncionesagregadoenlaSELECTenlasconsultasdeagrupamientodevuelve
unresultadocalculadoapartirdelosvaloresdelasfilasdecadagrupo.
MATRICULA_VEHICULO
-----------------2548BBV
3258CGX
4568CCX
5961BNG
AB3698Z
IB3678L
M1234ZY
V9521PP
MULTAS
----------2
1
1
1
1
2
2
1
COSTE
--------------------400,00
180,00
158,00
125,00
235,00
465,00
687,00
375,00
(8 filas afectadas)
CIPSA
34
BASESDEDATOSRELACIONALESYLENGUAJESQL
3.2.6.ClusulaHAVING<condicindeagrupamiento>
Esta clusula permite indicar una expresin condicional que indica qu las filas
resultantes de cada agrupamiento se incluyen en los resultados. Las condiciones se
expresanempleandolosmismosoperadoresqueenlaclusulaWHERE.
SELECT SANCION.CODIGO_AGENTE,
COUNT(*) AS MULTAS,
SUM(SANCION.COSTE_SANCION ) AS COSTE
FROM SANCION
GROUP BY SANCION.CODIGO_AGENTE
HAVING SUM(SANCION.COSTE_SANCION) > 500
ORDER BY SANCION.CODIGO_AGENTE
CODIGO_AGENTE
------------0001
0002
0003
MULTAS
----------4
3
2
COSTE
--------------------618,00
1062,00
515,00
(3 filas afectadas)
Slosemuestranlasfilasdelosagrupamientosquesatisfacenlacondicinindicadaen
laclusulaHAVING.
LaclusulaWHEREpuedeemplearsejuntoconHAVING.
En el caso de una consulta de agrupamiento ambas clusulas pueden emplearse al
tiempoperoteniendoclaroqufilasrestringen.LaclusulaWHERErestringelasfilas
que participan en cada grupo. La clusula HAVING restringe las filas ya agrupadas a
mostrar
Ejemplo: La siguiente consulta muestra la cuanta total de sanciones impuestas por
aquellosagentesquehansuperadolos500,exceptuandoaquellasimpuestasendas
festivos.
SELECT SANCION.CODIGO_AGENTE,
COUNT(*) AS MULTAS,
SUM(SANCION.COSTE_SANCION ) AS COSTE
FROM SANCION
WHERE SANCION.DIAS_FESTIVO = false
GROUP BY SANCION.CODIGO_AGENTE
HAVING SUM(SANCION.COSTE_SANCION) > 500
ORDER BY SANCION.CODIGO_AGENTE
La clusula WHERE restringe las filas de cada grupo a aquellas que representan
sancionesimpuestasendasnofestivos.LaclusulaHAVINGeliminaaquellasfilasya
agrupadasquenosuperanlos500decuantatotal.
CIPSA
35
BASESDEDATOSRELACIONALESYLENGUAJESQL
3.2.7.ClusulaORDERBY<expresindeordenacin>ASC/DES
LasiguienteconsultamuestraelDNI,nombreyapellidosdetodoslosconductoresde
unabasededatosordenadosalfabticamentepornombreyapellidos:
NOMBRE
---------ANA
ANA
DAVID
JAIME
JESS
JESS
M CARMEN
M CARMEN
SCAR
SCAR
VANESSA
APELLIDOS
-------------------CRUZ RIAO
GRCIA MURCIA
ESTVEZ MOLINA
GARCA DE LA CRUZ
GMEZ BAENA
GONZLEZ VZQUEZ
BENITO REODRIGUEZ
LPEZ HERRERA
ALCNTARA BAENA
GRCIA LPEZ
GONZLEZ PRIETO
CIPSA
36
BASESDEDATOSRELACIONALESYLENGUAJESQL
3.3.Altas(INSERT)
Lassentenciasdealtapermiteninsertarnuevasfilasenunatablamedianteelusodel
comandoINSERT.
Al insertar una nueva fila en una tabla pueden indicarse valores para todas las
columnasdelatablayenelmismoordenenqueestndeclaradaslascolumnas.
SealatablaAGENTES:
CODIGO
-----0001
0002
0003
0004
0006
NOMBRE
-----------------------------Manolo Escobar
Fernando Garca Gmez
Jos Antonio Lpez Garca
Jos Hernandez Lpez
Roger Petroviano
TELEFONO
----------665897423
928394384
684235698
613256987
695049392
(5 filas afectadas)
Tambinesposibleindicarvaloresparaalgunascolumnasdelafilaenvezdetodas.En
talcasodebenindicarselosidentificadoresdelascolumnasalasquevandirigidoslos
valoreentrelasclusulasINTOyVALUES:
INSERT INTO <indicador_tabla>
( <columna1>, <columna2>, <columna3>.. )
VALUES (
<valor_columna1>,
<valor_columna2>,
<valor_columna3>... )
CIPSA
37
BASESDEDATOSRELACIONALESYLENGUAJESQL
La siguiente sentencia crea la fila para el agente Roger indicando los nombres de las
columnasalasqueserefierecadavalorindicado.
INSERT INTO AGENTE
(CODIGO,NOMBRE,TELEFONO)
VALUES
('0006','ROGER PETROV',55506940)
Los valores indicados para cada columna deben ser del tipo de la columna. Tambin
puedenindicarsevaloresnulosindicandoNULLcomovalor.Aquellasparalosquenose
indica ningn valor adoptan el valor NULL o el valor predeterminado definido en la
columna.
Losvaloresdeunanuevafiladebencumplirconlasrestriccionesexistentesenlatabla:
NopuedeomitirseelvalorparaunacolumnaquenoadmitavaloresNULLosea
claveprimaria.
No puede indicarse un valor repetido a una columna con clave primaria
(PRIMARYKEY).
Nopuedeasignarseunvalorparaunacolumnaclaveexterna(FOREIGNKEY)no
presenteenlacolumnaclaveprimariareferenciada.
Nopuedenasignarsevaloresacolumnasdetipoautonumrico,puestoquees
elsistemaelquelesasignaautomticamentevalor.
3.4.Bajas(DELETE)
La sentencia de baja permite eliminar aquellas filas de una tabla que cumplan una
determinada condicin mediante el uso del comando DELETE. Su sintaxis es la
siguiente:
La clusula WHERE permite indicar una condicin para indicar las filas que desean
eliminarse.Encasodeomitirseseeliminantodaslasfilasdelatablasinrestriccin.
LasiguientesentenciaeliminadelatabladeconductoresaquellafilacuyoDNIcoincide
conelvalor23670002V:
DELETE CONDUCTOR WHERE DNI = '23670002V'
Debe tenerse en cuenta que la eliminacin de las filas no siempre es posible. Esto
sucedecuandounafilaestasociadaafilasenotrastablas.Enestecaso;nosepermite
laeliminacindeunafila,siexistenfilasenotrastablascuyaclaveexternacoincidecon
elvalordelaclaveprimariadelafilaaeliminar.
CIPSA
38
BASESDEDATOSRELACIONALESYLENGUAJESQL
3.5.Actualizacin(UPDATE)
La sentencia UPDATE permite la modificacin de uno o varios valores en las filas de
unatabla.Lasintaxisdelasentenciaeslasiguiente:
UPDATE <identificador_tabla>
SET <id_columna1> = <valor>, <id_columna2> = <valor>,...
WHERE <condicin>
Lasiguientesancinincrementalacuotadeseguroen100atodoslosconductores
cuyaedadseainferioralos25aos.
UPDATE CONDUCTOR
SET CUOTA = CUOTA + 100
WHERE EDAD < 20
FIN
CIPSA
39