Upload
buique
View
220
Download
0
Embed Size (px)
Citation preview
2216:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
SQL. OrSQL. Oríígenes y Evolucigenes y Evolucióónn
3316:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
SQL: EstSQL: Estáándar oficialndar oficial
4416:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
Funciones de SQLFunciones de SQL
DDL DDL –– Data Data DefinitionDefinition LanguageLanguageCreaciCreacióón de estructuras de la base de datosn de estructuras de la base de datosIntegridad de los datosIntegridad de los datos
DML DML –– Data Data ManipulationManipulation LanguageLanguageRecuperaciRecuperacióón de datosn de datosManipulaciManipulacióón de datosn de datos
DCL DCL –– Data Control Data Control LanguageLanguageControl de accesoControl de accesoComparticiComparticióónn de datosde datos
5516:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
Roles de SQL Roles de SQL
Base datos
Subtitle
1/30/2006
1/30/2006
Herramientas de programación
Motor de base de datos
Formularios Informes Herramientas de consulta
Programa de aplicación
Cliente de la Base de Datos
SQL SQL SQL SQL SQL
Sistemas Informáticos
Base de DatosGateway
Otros SGBD
6616:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
InvocaciInvocacióón de SQLn de SQLInvocaciInvocacióón directa o interactivan directa o interactiva
La sentencia es invocada desde el La sentencia es invocada desde el terminalterminalLos datos devueltos se presentan en pantallaLos datos devueltos se presentan en pantalla
El resultado puede serEl resultado puede serUn valorUn valorUna lista de valoresUna lista de valoresUna tablaUna tablaVacVacííoo
InvocaciInvocacióón desde programan desde programaLa sentencia se invoca como parte de la ejecuciLa sentencia se invoca como parte de la ejecucióón del programan del programaLos datos devueltos se recogen en una Los datos devueltos se recogen en una áárea de entrada del rea de entrada del programaprograma
7716:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
Ventajas de SQLVentajas de SQLIndependencia de los fabricantesIndependencia de los fabricantesPortabilidad a cualquier tipo de plataformaPortabilidad a cualquier tipo de plataformaSQL estSQL estáá estandarizadoestandarizadoBasado en el modelo relacionalBasado en el modelo relacionalLenguaje de alto nivelLenguaje de alto nivelConsultas interactivas adConsultas interactivas ad--hochocUtilizaciUtilizacióón en Lenguaje de programacin en Lenguaje de programacióónnMMúúltiples vistas de los datosltiples vistas de los datosLenguaje de base de datosLenguaje de base de datosDefiniciDefinicióón dinn dináámica de datosmica de datosArquitectura cliente/servidorArquitectura cliente/servidor
8816:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
Tipos de datosTipos de datos
CHARACTER (n)CHARACTER (n)CHARACTER CHARACTER VARYING(nVARYING(n))BIT(nBIT(n))BIT BIT VARYING(nVARYING(n))INTEGERINTEGERSMALLINTSMALLINTNUMERIC(p,qNUMERIC(p,q))DECIMAL(pDECIMAL(p, q), q)FLOAT(pFLOAT(p))Date: YYYYDate: YYYY--MMMM--DDDD
Time: Time: HH:MM:SSHH:MM:SSTime(iTime(i): i+1 posiciones para ): i+1 posiciones para fracciones de segundo.fracciones de segundo.Time Time withwith time time zonezone: : desplazamiento con respecto desplazamiento con respecto a la hora universal.a la hora universal.TimestampTimestamp: incluye d: incluye díía y a y hora.hora.IntervalInterval: un intervalo que se : un intervalo que se puede usar para incrementar o puede usar para incrementar o decrementardecrementar valores.valores.
9916:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
CreaciCreacióón de dominiosn de dominiosLos dominios se pueden utilizar como tipos de datosLos dominios se pueden utilizar como tipos de datosPermite cambiar el tipo simultPermite cambiar el tipo simultááneamente a varios neamente a varios atributosatributos
CREATE DOMAIN dominio [ASCREATE DOMAIN dominio [AS]] tipotipo--datosdatos[DEFAULT [DEFAULT valor_defectovalor_defecto]][CHECK [CHECK condicioncondicion]]
CREATE DOMAIN ciudades AS CREATE DOMAIN ciudades AS CHAR(15) DEFAULT CHAR(15) DEFAULT ‘‘??????’’
101016:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
OperadoresOperadoresComparaciComparacióónn
=, <>, <, >, <=, >=, IS NULL=, <>, <, >, <=, >=, IS NULL
LLóógicosgicosAND, OR, NOTAND, OR, NOT
IntervalosIntervalosBETWEEN BETWEEN …… AND AND ……
BETWEEN 90 AND 95BETWEEN 90 AND 95
Cadenas de textoCadenas de textoLIKELIKE
nombre LIKE nombre LIKE ‘‘%mou%%mou%’’
ConjuntosConjuntosININ
color IN (color IN (‘‘ColorColor’’, , ‘‘PALPAL--ColorColor’’))
111116:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
CreaciCreacióón de tablasn de tablasSe utiliza el comando CREATE TABLESe utiliza el comando CREATE TABLE
Se especifican los atributos de la relaciSe especifican los atributos de la relacióón y sus n y sus tipostipos
Se especifica la clave primariaSe especifica la clave primaria
Se especifica las restricciones de integridadSe especifica las restricciones de integridad
Se especifica la integridad referencialSe especifica la integridad referencial
121216:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
CREATE TABLE CREATE TABLE nombre_tablanombre_tabla ((nombre_columnanombre_columna tipo_columnatipo_columna restricciones_columnarestricciones_columna,,…… ,,restricciones_tablarestricciones_tabla
))
Al crear la tabla se puede indicar el esquema en el que se creaAl crear la tabla se puede indicar el esquema en el que se creanombre_esquema.nombre_tablanombre_esquema.nombre_tabla
Restricciones de columnaRestricciones de columnaUNIQUEUNIQUENOT NULLNOT NULLDEFAULT <DEFAULT <valor_por_defectovalor_por_defecto>>CHECK (CHECK (condicioncondicion))
PRIMARY KEYPRIMARY KEYREFERENCES REFERENCES nombre_tabla(nombre_atributonombre_tabla(nombre_atributo) ) accion_referencialaccion_referencial
131316:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
Restricciones de tablaRestricciones de tablaUNIQUE (UNIQUE (nombre_atributonombre_atributo, , ……))PRIMARY KEY (PRIMARY KEY (nombre_atributonombre_atributo, , ……))FOREIGN KEY (FOREIGN KEY (nombre_atributonombre_atributo, , ……) REFERENCES ) REFERENCES nombre_tabla(nombre_atributonombre_tabla(nombre_atributo)) accion_referencialaccion_referencial
CHECK (CHECK (condicioncondicion))
Acciones referencialesAcciones referencialesON UPDATE ON UPDATE acciaccióónnON DELETE ON DELETE acciaccióónnRESTRICTRESTRICT
Si no se especifica nada, se considera RESTRICTSi no se especifica nada, se considera RESTRICT
CASCADECASCADESET NULLSET NULLSET DEFAULT valorSET DEFAULT valor
141416:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
EjemploEjemplo
protagoniza
produce
se rueda
Peliculatituloaño
numero (FK)duracioncolornombre (FK)
Actornombre
direccionsexofecha nacimiento
Productoranumero
nombredireccionpresupuesto
Estudionombre
direccion
PelPelíícula(cula(titulotitulo, a, aññoo, duraci, duracióón, n, en_coloren_color, , nombre_estudionombre_estudio, numero), numero)
Protagoniza(Protagoniza(titulo_peliculatitulo_pelicula, , aañño_pelo_pelíículacula, , nombre_actornombre_actor))
Actor(Actor(nombrenombre, direcci, direccióón, sexo, n, sexo, fecha_nacimientofecha_nacimiento))
Productora(Productora(numeronumero, nombre, , nombre, direcciondireccion, valor), valor)
Estudio(Estudio(nombrenombre, , direccidireccióónn))
161616:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
Si se utiliza CASCADE CONSTRAINT se elimina la tabla Si se utiliza CASCADE CONSTRAINT se elimina la tabla y todas sus restriccionesy todas sus restricciones
Si no se utiliza CASCADE CONSTRAINT, si la tabla Si no se utiliza CASCADE CONSTRAINT, si la tabla tiene restricciones asociadas no se elimina, hasta que tiene restricciones asociadas no se elimina, hasta que no se eliminen las restriccionesno se eliminen las restricciones
Al eliminar una tabla de la base de datos, tambiAl eliminar una tabla de la base de datos, tambiéén se n se eliminan los datos que tuviera almacenadoseliminan los datos que tuviera almacenados
Borrado de tablasBorrado de tablasDROP TABLE DROP TABLE nombre_tablanombre_tabla [CASCADE CONSTRAINT][CASCADE CONSTRAINT]
171716:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
Modificar una tablaModificar una tabla
Acciones de modificaciAcciones de modificacióónnAAññadir atributosadir atributos
ADD ADD nuevo_atributonuevo_atributo tipo restriccionestipo restriccionesLas restricciones sLas restricciones sóólo pueden ser NOT NULL, CHECK y DEFAULTlo pueden ser NOT NULL, CHECK y DEFAULTUn atributo NOT NULL sUn atributo NOT NULL sóólo se puede alo se puede aññadir a una tabla si esta vacadir a una tabla si esta vacííaa
Borrar atributosBorrar atributosDROP (DROP (nombre_atributonombre_atributo, , ……))DROP COLUMN nombre atributo DROP COLUMN nombre atributo [CASCADE CONSTRAINT][CASCADE CONSTRAINT]
Modificar atributosModificar atributosMODIFY MODIFY nombre_atributonombre_atributo nuevo_tiponuevo_tipo restriccionesrestricciones
Se puede cambiar el tipo o disminuir el tamaSe puede cambiar el tipo o disminuir el tamañño de un atributo si todas las o de un atributo si todas las tuplastuplastienen ese campo vactienen ese campo vacííooUn atributo existente se puede hacer NOT NULL si todas las Un atributo existente se puede hacer NOT NULL si todas las tuplastuplas tienen valor tienen valor en ese atributoen ese atributoSi no se especifica algo en la modificaciSi no se especifica algo en la modificacióón, permanece como estaban, permanece como estaba
ALTER TABLE ALTER TABLE nombre_tablanombre_tablaaccion_modificaciaccion_modificacióónn
181816:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
EjemploEjemplo
Borrado de tablaBorrado de tabla
DROP TABLE DROP TABLE peliculapelicula CASCADE CONSTRAINTCASCADE CONSTRAINTDROP TABLE DROP TABLE peliculapelicula
ALTER TABLE ALTER TABLE peliculapeliculaADD ADD fecha_estrenofecha_estreno DATEDATE
ModificaciModificacióón de tablan de tabla
191916:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
Introduce informaciIntroduce informacióón en la tabla y atributos n en la tabla y atributos indicadosindicadosEl orden y el tipo de los atributos debe coincidir El orden y el tipo de los atributos debe coincidir con el orden y tipo de los valorescon el orden y tipo de los valoresLos valores se puede obtener mediante una Los valores se puede obtener mediante una consultaconsultaSi un atributo no se indica, toma valor NULLSi un atributo no se indica, toma valor NULL
InserciInsercióón de datosn de datosINSERT INTO INSERT INTO nombre_tabla(lista_atributosnombre_tabla(lista_atributos) ) VALUES (VALUES (lista_valoreslista_valores))
202016:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
Si se omite la lista de atributos, los valores se Si se omite la lista de atributos, los valores se almacenan de acuerdo al orden de definicialmacenan de acuerdo al orden de definicióón de n de los mismos en el CREATE TABLElos mismos en el CREATE TABLE
Los tipos de la lista de valores deben coincidir Los tipos de la lista de valores deben coincidir con los tipos de definicicon los tipos de definicióón en el CREATE n en el CREATE TABLETABLE
INSERT INTO INSERT INTO nombre_tablanombre_tablaVALUES (VALUES (lista_valoreslista_valores))
212116:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
EjemploEjemplo
Todos los valores de la Todos los valores de la tuplatupla
Algunos valores de la Algunos valores de la tuplatupla
Valores desde consultaValores desde consulta
222216:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
ModificaciModificacióón de datosn de datos
Actualiza en la tabla indicada los valores del atributo siempre Actualiza en la tabla indicada los valores del atributo siempre y y cuando se cumpla la condicicuando se cumpla la condicióón especificadan especificadaLos valores se pueden obtener mediante una Los valores se pueden obtener mediante una subconsultasubconsulta o o mediante formulas matemmediante formulas matemááticasticasSi no hay condiciSi no hay condicióón, se actualizan todas las filas de la tablan, se actualizan todas las filas de la tabla
EjemploEjemplo
UPDATE UPDATE nombre_tablanombre_tablaSET SET nombre_atributonombre_atributo = = nuevo_valornuevo_valor, , ……WHERE condiciWHERE condicióónn
232316:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
Borrado de datosBorrado de datos
Borra de la tabla las Borra de la tabla las tuplastuplas que cumplen cierta condicique cumplen cierta condicióónnSi no hay condiciSi no hay condicióón se borran todas las filas de la tablan se borran todas las filas de la tablaA diferencia de DROP TABLE no borra la estructura de A diferencia de DROP TABLE no borra la estructura de la tablala tabla
EjemploEjemplo
DELETE DELETE nombre_tablanombre_tablaWHERE condiciWHERE condicióónn
242416:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
Consulta de datosConsulta de datos
Consulta valores de una o varias tablas de acuerdo a las Consulta valores de una o varias tablas de acuerdo a las condiciones impuestas en la sentenciacondiciones impuestas en la sentenciaLas Las úúnicas partes obligatorias son SELECT y FROM, el nicas partes obligatorias son SELECT y FROM, el resto son opcionalesresto son opcionales
Si aparecen deben ir en el orden que aparecen en la sentenciaSi aparecen deben ir en el orden que aparecen en la sentenciaHAVING sHAVING sóólo puede aparecer si hay GROUP BYlo puede aparecer si hay GROUP BY
SELECT SELECT lista_atributoslista_atributosFROM FROM lista_tablaslista_tablasWHERE condiciWHERE condicióónnGROUP BY GROUP BY lista_atributoslista_atributosHAVING HAVING condicioncondicionORDER BY ORDER BY lista_atributoslista_atributos
252516:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
En la clEn la clááusula usula SELECTSELECT se indican los atributos que se quieren se indican los atributos que se quieren obtener como respuesta a la consultaobtener como respuesta a la consulta
La clLa clááusula usula FROMFROM indica la tabla o tablas que son necesarias para indica la tabla o tablas que son necesarias para obtener la informaciobtener la informacióónn
En la clEn la clááusula usula WHEREWHERE se indican las condiciones que deben se indican las condiciones que deben cumplir las cumplir las tuplastuplas obtenidas como resultado de la consultaobtenidas como resultado de la consulta
GROUP BYGROUP BY se utiliza para formar grupos de datos en funcise utiliza para formar grupos de datos en funcióón de n de algalgúún atributon atributo
HAVINGHAVING establece condiciones sobre los grupos que se formenestablece condiciones sobre los grupos que se formen
ORDER BYORDER BY indica si muestra el resultado ordenado en funciindica si muestra el resultado ordenado en funcióón de n de algalgúún atributon atributo
262616:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
SELECTSELECTLista de atributos separados por comasLista de atributos separados por comasSELECT atSELECT at11, at, at22, , ……, , atatnn ……
Se indican solamente aquellos atributos que queremos que Se indican solamente aquellos atributos que queremos que aparezcan en el resultadoaparezcan en el resultado
Si utiliza * si queremos todos los atributos de las tablas involSi utiliza * si queremos todos los atributos de las tablas involucradasucradasSELECT * SELECT * ……
Pueden aparecen filas duplicasPueden aparecen filas duplicasPara evitarlos se puede utilizar DISTINCTPara evitarlos se puede utilizar DISTINCT
SELECT DISTINCT SELECT DISTINCT lista_atributoslista_atributos ……SSóólo se obtienen como resultado filas no duplicadas para la combinlo se obtienen como resultado filas no duplicadas para la combinaciacióón de n de los atributos que aparecen en el SELECTlos atributos que aparecen en el SELECT
Los nombres de los atributos se pueden cambiar en el resultado dLos nombres de los atributos se pueden cambiar en el resultado de e la consulta (alias de atributo)la consulta (alias de atributo)SELECT SELECT nombre_atributonombre_atributo [AS] [AS] nuevo_nombrenuevo_nombre ……
272716:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
FROMFROMLista de tablas que se utilizan en la consulta separadas Lista de tablas que se utilizan en la consulta separadas por comaspor comas
…… FROM tabFROM tab11, tab, tab22, , ……, , tabtabnn ……
Realiza el producto cartesiano (X) de las mismasRealiza el producto cartesiano (X) de las mismasLas condiciones (WHERE, GROUP BY) se imponen Las condiciones (WHERE, GROUP BY) se imponen sobre el producto cartesiano sobre el producto cartesiano Los atributos que aparecen en el SELECT se toman del Los atributos que aparecen en el SELECT se toman del producto cartesianoproducto cartesiano
Dentro de la consulta una tabla se puede renombrar Dentro de la consulta una tabla se puede renombrar (alias de tabla)(alias de tabla)…… FROM FROM nombre_tablanombre_tabla nuevo_nombre_tablanuevo_nombre_tabla, , ……
282816:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
WHEREWHEREIndica las condiciones que deben cumplir las filas obtenidas comIndica las condiciones que deben cumplir las filas obtenidas como resultadoo resultado
Si no aparece se recuperan todas las filas del producto cartesiaSi no aparece se recuperan todas las filas del producto cartesiano de las tablas no de las tablas que hay en el FROMque hay en el FROM
La condiciLa condicióón es una expresin es una expresióón n booleanabooleanaSSóólo se obtienen aquellas filas que cumplen la condicilo se obtienen aquellas filas que cumplen la condicióónn
Operadores para construir condicionesOperadores para construir condicionesComparaciComparacióón: =, <>, >, <, >=, <=n: =, <>, >, <, >=, <=
…… WHERE WHERE codigocodigo = 7 = 7 ………… WHERE WHERE codigocodigo < 7 < 7 ……
LLóógicos: AND, OR, NOTgicos: AND, OR, NOTSe utilizan para construir expresiones que involucran mSe utilizan para construir expresiones que involucran máás de una condicis de una condicióón (AND, OR) n (AND, OR) o para invertir el resultado de una condicio para invertir el resultado de una condicióón (NOT)n (NOT)
…… WHERE WHERE codigocodigo = 7 AND color = = 7 AND color = ‘‘rojorojo’’ ………… WHERE NOT (color = WHERE NOT (color = ‘‘rojorojo’’) ) ……
MatemMatemááticos: +, ticos: +, --, *, /, *, /…… WHERE WHERE codigocodigo = (numero * 10) = (numero * 10) ……
Otros: BETWEEN Otros: BETWEEN …… AND, IN, LIKEAND, IN, LIKE…… WHERE WHERE codigocodigo BETWEEN 90 AND 95 BETWEEN 90 AND 95 ………… WHERE nombre LIKE WHERE nombre LIKE ‘‘%mou%%mou%’’ ………… WHERE color IN (WHERE color IN (‘‘ColorColor’’, , ‘‘PALPAL--ColorColor’’) ) ……
292916:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
Peliculas de Disney del año 1990
EjemploEjemplo
303016:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
SELECT * SELECT * FROM FROM peliculaspeliculasWHERE aWHERE añño BETWEEN 90 AND 95; o BETWEEN 90 AND 95;
SELECT * SELECT * FROM actor FROM actor WHERE nombre LIKE WHERE nombre LIKE ‘‘%mou%%mou%’’;;
SELECT * SELECT * FROM FROM peliculapeliculaWHERE color IN (WHERE color IN (‘‘ColorColor’’, , ‘‘PALPAL--ColorColor’’););
313116:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
UniUnióón natural (n natural (JoinJoin ))No se realiza automNo se realiza automááticamenteticamenteHay que escribir la condiciHay que escribir la condicióón en la consultan en la consultaSi no se pone la condiciSi no se pone la condicióón de n de joinjoin, se obtiene el producto cartesiano , se obtiene el producto cartesiano (X)(X)Escritura de Escritura de joinjoin
Las tablas tienen estar relacionadas mediante claves extranjerasLas tablas tienen estar relacionadas mediante claves extranjeras(atributos comunes)(atributos comunes)Igualar los atributos comunes de las tablas participante en la cIgualar los atributos comunes de las tablas participante en la consultaonsulta
UniUnióónn naturalnatural
323216:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
AmbigAmbigüüedadesedades
Cuando el mismo nombre de atributo Cuando el mismo nombre de atributo aparece en maparece en máás de una tablas de una tabla
Hay que distinguir a que atributo se refiereHay que distinguir a que atributo se refiereSe cualifica el atributo con el nombre de la Se cualifica el atributo con el nombre de la tablatablanombre_tabla.nombre_atributonombre_tabla.nombre_atributo
SELECT SELECT empleado.nombreempleado.nombre, DNI, DNIFROM empleado, departamentoFROM empleado, departamentoWHERE WHERE empleado.codigoempleado.codigo==departamento.codigodepartamento.codigoandand departamento.nombredepartamento.nombre==‘‘nominasnominas’’
333316:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
Cuando la misma relaciCuando la misma relacióón se la usa mn se la usa máás s de una vez en la consultade una vez en la consultaEn ese caso se utilizan alias para las En ese caso se utilizan alias para las tablastablas
SELECT SELECT E.nombreE.nombre, S. nombre, S. nombreFROM empleado E , empleado SFROM empleado E , empleado SWHERE WHERE E.supervisornE.supervisorn= = S.nssS.nss
343416:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
AgregadosAgregadosCOUNT(atributoCOUNT(atributo))
Devuelve el nDevuelve el núúmero de mero de tuplastuplas o valores especificados en una o valores especificados en una consulta para el atributo indicadoconsulta para el atributo indicadoSe puede utilizar como atributo *Se puede utilizar como atributo *
SUM(atributoSUM(atributo), ), MAX(atributoMAX(atributo), ), MIN(atributoMIN(atributo), ), AVG(atributoAVG(atributo))
Se aplican a valores numSe aplican a valores numééricos y devuelven la suma, el mricos y devuelven la suma, el mááximo, ximo, mmíínimo y media de los atributos indicadosnimo y media de los atributos indicados
Se pueden utilizar en la clSe pueden utilizar en la clááusula SELECT o en el usula SELECT o en el HAVINGHAVING
En el SELECT no pueden aparecer otros atributos a En el SELECT no pueden aparecer otros atributos a menos que se incluyan en el GROUP BYmenos que se incluyan en el GROUP BY
353516:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
¿Cuántas películas he
protagonizado?
EjemploEjemplo
363616:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
SELECT SUM (sueldo), MAX (sueldo), SELECT SUM (sueldo), MAX (sueldo), MIN(sueldoMIN(sueldo) ) AVG(sueldoAVG(sueldo))FROM empleadoFROM empleado
SELECT COUNT (*)SELECT COUNT (*)FROM empleadoFROM empleado
SELECT SELECT COUNT(DISTINCTCOUNT(DISTINCT sueldo)sueldo)FROM empleadoFROM empleado
373716:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
SubconsultasSubconsultasEn general se admiten varios niveles de anidaciEn general se admiten varios niveles de anidacióónn
Para evitar la ambigPara evitar la ambigüüedad los atributos sin cualificar edad los atributos sin cualificar siempre se referirsiempre se referiráán a las relaciones declaradas en la n a las relaciones declaradas en la consulta mconsulta máás internas interna
Para evitar problemas es aconsejable cualificar los Para evitar problemas es aconsejable cualificar los atributos y utilizar alias para las relacionesatributos y utilizar alias para las relaciones
SubconsultaSubconsulta
383816:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
Operadores de Operadores de subconsultassubconsultasEXISTS (EXISTS (subconsultasubconsulta))
Se utiliza para comprobar si el resultado de una consulta anidadSe utiliza para comprobar si el resultado de una consulta anidada es a es vaciovacioDevuelve Devuelve truetrue si la tabla no es vacsi la tabla no es vacíía, en otro caso devuelve falsoa, en otro caso devuelve falso
NOT EXISTS (NOT EXISTS (subconsultasubconsulta))Se utiliza para comprobar si el resultado de una consulta anidadSe utiliza para comprobar si el resultado de una consulta anidada no es a no es vaciovacioDevuelve Devuelve truetrue si la tabla es vacsi la tabla es vacíía, en otro caso devuelve falsoa, en otro caso devuelve falso
atributo atributo operador_comparacioperador_comparacióónn ALL (ALL (subconsultasubconsulta))Se utilizara para comparar, mediante alguno de los operadores deSe utilizara para comparar, mediante alguno de los operadores de comparacicomparacióón, n, si el valor de un atributo es mayor, menor, igual, si el valor de un atributo es mayor, menor, igual, …… que todos los valores de un que todos los valores de un determinado conjunto de valoresdeterminado conjunto de valoresLa La subconsultasubconsulta debe devolver una lista de valoresdebe devolver una lista de valores
atributo atributo operador_comparacioperador_comparacióónn ANY (ANY (subconsultasubconsulta))Es similar al operador ALL, lo Es similar al operador ALL, lo úúnico que lo diferencia es que el valor del atributo nico que lo diferencia es que el valor del atributo úúnicamente tiene que ser igual, menor, mayor, nicamente tiene que ser igual, menor, mayor, …… que al menos uno de los que al menos uno de los valores del conjuntovalores del conjuntoLa La subconsultasubconsulta debe devolver una lista de valoresdebe devolver una lista de valores
393916:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
SELECT nombreSELECT nombreFROM EmpleadosFROM EmpleadosWHERE sueldo> ALL (SELECT sueldoWHERE sueldo> ALL (SELECT sueldo
FROM empleadoFROM empleadoWHERE WHERE dnodno=`5`)=`5`)
SELECT nombreSELECT nombreFROM empleadoFROM empleadoWHERE NOT EXIST (SELECT *WHERE NOT EXIST (SELECT *
FROM dependientesFROM dependientesWHERE WHERE ssnssn==essnessn))
404016:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
GROUP BYGROUP BY
Se utiliza para formar agrupaciones de Se utiliza para formar agrupaciones de tuplastuplas en funcien funcióón de los valores de uno o n de los valores de uno o varios atributosvarios atributosSe utiliza con agregadosSe utiliza con agregadosNo es necesario utilizar WHERENo es necesario utilizar WHEREComo resultado en el SELECT, sComo resultado en el SELECT, sóólo lo pueden aparecer agregados o los pueden aparecer agregados o los atributos que aparecen en GROUP BYatributos que aparecen en GROUP BY... GROUP BY at... GROUP BY at11, at, at22, , ……, , atatnn, , ……
414116:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
EjemploEjemplo
SELECT SELECT dptondpton, COUNT(*), AVG(sueldo), COUNT(*), AVG(sueldo)FROM empleadoFROM empleadoGROUP BY GROUP BY dptondpton
424216:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
HAVINGHAVINGSe utiliza siempre con GROUP BYSe utiliza siempre con GROUP BYImpone condiciones sobre los grupos formados Impone condiciones sobre los grupos formados previamente en GROUP BYpreviamente en GROUP BYLas condiciones son similares a las utilizadas en Las condiciones son similares a las utilizadas en WHERE, pero se pueden utilizar agregadosWHERE, pero se pueden utilizar agregadosMientras que WHERE impone condiciones a las Mientras que WHERE impone condiciones a las tuplastuplas, , HAVING impone condiciones los gruposHAVING impone condiciones los grupos
SELECT SELECT dptondpton, COUNT(*), AVG(sueldo), COUNT(*), AVG(sueldo)FROM empleadoFROM empleadoGROUP BY GROUP BY dptondptonHAVING COUNT(*)>2HAVING COUNT(*)>2
434316:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
ORDER BYORDER BY
Permite que el usuario ordene el resultado Permite que el usuario ordene el resultado de una consulta por los valores de uno o de una consulta por los valores de uno o mas atributos mas atributos El orden puede ser ascendente (El orden puede ser ascendente (ASCASC) o ) o descendente (descendente (DESCDESC))…… ORDER BY ORDER BY atat1 1 ordenorden, at, at2 2 ordenorden, , ……, , atatnn ordenorden
SELECT *SELECT *FROM empleadoFROM empleadoORDER BY nombre ASC, ORDER BY nombre ASC, codigocodigo DESC;DESC;
444416:05:3716:05:37 ÓÓscar Marbscar Marbáán Gallegon Gallego
Los operadores de conjuntosLos operadores de conjuntos
UNION, INTERSECT, MINUS UNION, INTERSECT, MINUS (consulta(consulta11) ) operador_conjuntooperador_conjunto (consulta(consulta22))
(SELECT (SELECT dnidniFROM alumnos)FROM alumnos)MINUSMINUS(SELECT (SELECT alumnos.dnialumnos.dniFROM alumnos, alumnos alFROM alumnos, alumnos alWHERE (al. edad < WHERE (al. edad < alumnos.edadalumnos.edad) )) )
(SELECT (SELECT asi#asi#FROM asigna FROM asigna WHERE WHERE credtcredt++credprcredpr >6)>6)INTERSECTINTERSECT(SELECT codas(SELECT codasFROM matricula FROM matricula WHERE curso=WHERE curso=‘‘19981998--19991999’’))