You are on page 1of 44

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula

o Consultes a una base de dades relacional

UF2. Llenguatges SQL: DML i DDL.


NF1 - Llenguatges de la base de dades per a manipular dades

Miguel Prieto.
C.S. Jaume Viladoms

Octubre 2011

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Sent`ncies de manipulaci de dades e o

Un cop creada la BD amb les seves taules, cal poder-hi inserir, modicar i esborrar els valors de les les de les taules. Per a poder fer aix`, lSQL o ens ofereix les sent`ncies segents: INSERT, per a inserir; UPDATE, e u per a modicar, i DELETE, per a esborrar. Un cop hem inserit valors a les taules, hem de poder consultar-los. La sent`ncia per a fer consultes a e una BD amb lSQL s SELECT FROM. e

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Inserci de les en una taula o


Abans de poder consultar les dades duna BD, cal introduir les dades amb la sent`ncia INSERT INTO VALUES, que t el format segent: e e u Sintaxi INSERT INTO <nomTaula> [(<columnes>)] VALUES (<v1>|DEFAULT|NULL, ..., <vn>|DEFAULT|NULL) | <consulta>; Els valors v1, v2, ..., vn shan de correspondre exactament amb les columnes que hem dit que tindr amb el CREATE TABLE i han destar em en el mateix ordre, tret que les tornem a posar a continuaci del nom de o la taula. En aquest darrer cas els valors shan de disposar de manera coherent amb el nou ordre que hem imposat. Podria ser que volgussim que alguns e valors a inserir fossin valors per omissi, denits pr`viament amb lopci o e o DEFAULT. Llavors posar el mot reservat DEFAULT. Si es tracta em dintroduir valors Jaume Viladoms e el mot reservat NULL. Miguel Prieto. C.S.nuls tamb podem usar Llenguatges SQL: DML i DDL. UF2.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Inserci de les en una taula (II) o

Exemple INSERT INTO alumnes VALUES (12, MIGUEL, 11111111H, 935467342, email@email.com, DEFAULT); o b e Exemple INSERT INTO alumnes(idalumne, NomAlumne, NifAlumne, telefon, email, ciutat) VALUES(12, MIGUEL, 11111111H, 935467342, email@email.com, DEFAULT);

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Esborrament de les duna taula


Per a esborrar valors dalgunes les duna taula podem fer servir la sent`ncia DELETE FROM WHERE. El seu format s el segent: e e u Sintaxi DELETE FROM <nomTaula> [WHERE <condicions>]; En canvi, si el que volgussim aconseguir fos esborrar totes les les duna e taula, aleshores noms haur de posar la sent`ncia DELETE FROM, e em e sense WHERE. Exemple DELETE FROM alumnes; DELETE FROM professors WHERE NIF = xxxxxx;

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Modicaci de les duna taula o


Si volgussim modicar els valors dalgunes les duna taula haur de e em fer servir la sent`ncia UPDATE SET WHERE: e Sintaxi UPDATE <nomTaula> SET <nomColumna> = <expressi>|DEFAULT|NULL o [,<nomColumna> = <expressi>|DEFAULT|NULL] WHERE o <condicions>; Exemple UPDATE alumnes SET NOM = Manuel, EDAT=32 where NIF = xxxxx;

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Consultes a una base de dades relacional


Per a fer consultes sobre una taula amb lSQL cal utilitzar la sent`ncia e SELECT FROM: Sintaxi SELECT <nomColumnaSeleccionar> [[AS] <colReanomenada>] [,<nomColumnaSeleccionar> [[AS] <colReanomenada>]...] FROM <taulaConsultar> [[AS] <taulaReanomenada>]; Lopci AS ens permet reanomenar les columnes que volem seleccionar o o les taules que volem consultar, en aquest cas noms una. Dit duna altra e manera, ens permet la denici d`lies. Fixem-nos que la paraula clau AS o a s opcional, i s fora habitual, en denir `lies en la cl`usula FROM, e e c a a posar-hi noms un espai en blanc en lloc de tota la paraula. e

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Consultes a una base de dades relacional (II)

Exemple SELECT * FROM ALUMNES; Lasterisc (*) desprs de SELECT indica que volem veure tots els atributs e que hi ha a la taula. Si hagussim volgut veure noms el codi, el nom i el NIF, haur escrit e e em el segent: u Exemple SELECT CODIALUMNE, NOMALUMNE, NIF FROM ALUMNES;

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Consultes a una base de dades relacional (III)


Amb la comanda SELECT FROM podem seleccionar columnes duna taula (projecci), per` per a seleccionar les duna taula (selecci) hi cal o o o afegir la cl`usula WHERE. a Sintaxi SELECT <nomColumnesSeleccionar> FROM <taulaConsultar> WHERE <condicions>; La cl`usula WHERE ens permet obtenir les les que compleixen la a condici especicada a la consulta. o Exemple SELECT CODIALUMNE, NOMALUMNE, NIF FROM ALUMNES wherer EDAT < 25;

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Consultes a una base de dades relacional (IV)


Per a denir les condicions de la cl`usula WHERE, podem fer servir a algun dels operadors de qu` disposa lSQL, que sn els segents: e o u

Figura: Operadors

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Consultes a una base de dades relacional (V)


Si volem que en una consulta ens apareguin les les resultants sense repeticions, cal posar la paraula clau DISTINCT immediatament desprs e del SELECT. Tamb podr explicitar que ho volem tot, ns i tot amb repeticions, e em posant ALL (opci per defecte) en lloc de DISTINCT. El format de o DISTINCT s el segent: e u Sintaxi SELECT DISTINCT <nomColumnesSeleccionar> FROM <taulaConsultar> [WHERE <condicions>]; Exemple SELECT distinct notes from alumnes;

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Funcions dagregaci o
LSQL ofereix les funcions dagregaci segents per a efectuar diverses o u operacions amb les dades duna BD: COUNT: Ens dna el nombre total de les seleccionades o SUM: Suma els valors duna columna MIN: Ens dna el valor m o nim duna columna MAX: Ens dna el valor m`xim duna columna o a AVG: Calcula el valor mitj` duna columna a Exemple SELECT count(NIF) as cAlumnes from Notes where nota > 5;

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Subconsultes

Denici o Una subconsulta s una consulta inclosa dins una cl`usula WHERE o e a HAVING duna altra consulta. De vegades, per a expressar certes condicions no hi ha altre remei que obtenir el valor que busquem com a resultat duna consulta. Exemple SELECT NIF, Nom FROM Alumnes WHERE nota = (SELECT MAX(nota) FROM Notes);

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Predicat BETWEEN
Per a expressar una condici que vol trobar un valor entre uns l o mits concrets podem fer servir BETWEEN: Sintaxi SELECT <nomColumnesSeleccionar> FROM <taulaConsultar> WHERE <columna> BETWEEN <lmit1> AND <lmit2>; Exemple SELECT NomAlumne FROM Alumnes WHERE edat BETWEEN 19 and 21;

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Predicat IN
Per a veure si un valor coincideix amb els elements duna llista utilitzarem IN, i per a veure si no hi coincideix, NOT IN: Sintaxi SELECT <nomColumnesSeleccionar> FROM <taulaConsultar> WHERE <columna> [NOT] IN (<valor1>, ..., <valorN>); Exemple SELECT NomAlumne FROM Alumnes WHERE Ciutat IN (Sabadell,Barber`); a

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Predicat LIKE
Per a veure si una columna de tipus car`cter compleix alguna a caracter stica determinada podem fer servir LIKE: Sintaxi SELECT <nomColumnesSeleccionar> FROM <taulaConsultar> WHERE <columna> LIKE <caracterstica>; Observaci o Els patrons de lSQL per a expressar caracter stiques sn els segents: o u Es posa un car`cter a considerar. per a cada car`cter individual que es vulgui a

Es posa un car`cter % per a expressar una seq`ncia de car`cters, a ue a que pot ser cap.

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Predicat LIKE (II)


Alumnes que el nom comena per J c Exemple SELECT NomAlumne FROM Alumnes where Cognom like J%; Alumnes que el nom comena per S i t cinc lletres: c e Exemple SELECT NomAlumne FROM Alumnes where Cognom like S_ _ _ _;

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Predicat IS NULL
Per a veure si un valor s nul utilitzarem IS NULL, i per a veure si no ho e s, IS NOT NULL. El format s: e e Sintaxi SELECT <nomColumnesSeleccionar> FROM <taulaConsultar> WHERE <columna> IS [NOT] NULL; Exemple SELECT NomAlumne FROM Alumnes WHERE Assignatura IS NULL;

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Predicats ANY/SOME i ALL


Per a veure si una columna compleix que totes les seves les (ALL) o alguna de les seves les (ANY/SOME) satisfacin una condici, podem o fer: Sintaxi SELECT <nomColumnesSeleccionar> FROM <taulaConsultar> WHERE <nomColumna> <operadorComparaci> {ALL|ANY|SOME} o <subconsulta>; Trobar els codis i els noms dels projectes en qu` els sous de tots e els empleats assignats sn ms petits que el preu del projecte o e Exemple SELECT codiProj, nomProj FROM projectes WHERE preu > ALL(SELECT sou FROM empleats WHERE codiProj Jaume Viladoms Miguel Prieto. C.S. = numProj); UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Predicat EXISTS
Per a veure si una subconsulta produeix alguna la de resultats, podem fer servir la sent`ncia anomenada test dexist`ncia: EXISTS. Per a e e comprovar si una subconsulta no produeix cap la de resultats, podem emprar NOT EXISTS. Sintaxi SELECT <nomColumnesSeleccionar> FROM <taulaConsultar> WHERE [NOT] EXISTS <subconsulta>; Exemple SELECT codiAlumne, nomAlumne FROM Alumnes WHERE exists (select * from Matricules where numAlumne = codiAlumne);

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Ordenaci de les dades o


Si es vol que, en fer una consulta, les dades apareguin en un ordre determinat, cal utilitzar la cl`usula ORDER BY en la sent`ncia SELECT, a e que t el format segent: e u Sintaxi SELECT <nomColumnesSeleccionar> FROM <taulaConsultar> [WHERE <condicions>] ORDER BY <nomColumnaSegonsLaQueOrdenar> [DESC] [, <nomColumnaSegonsLaQueOrdenar> [DESC]...]; Exemple SELECT codiAlumne, nomAlumne FROM Alumnes order by nota asc;

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Consultes amb agrupaci de les duna taula o


Les cl`usules segents, afegides a la comanda SELECT FROM, permeten a u organitzar les les per grups: La cl`usula GROUP BY ens serveix per a agrupar les segons les a columnes que indiqui aquesta cl`usula. a La cl`usula HAVING especica condicions de cerca per a grups de a les; porta a terme la mateixa funci que abans feia la cl`usula o a WHERE per a les les de tota la taula, per` ara les condicions o sapliquen als grups obtinguts. Sintaxi SELECT <nomColumnesSeleccionar> FROM <taulaConsultar> [WHERE <condicions>] GROUP BY <columnesSegonsLesQueAgrupar> [HAVING <condicionsPerGrups>] [ORDER BY <nomColumna> [DESC][, <nomColumna> [DESC]...]];

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Consultes amb agrupaci de les duna taula (II) o

Es vol saber el sou mitj` qu` guanyen els empleats de cada departament. a e Exemple SELECT nomDpt, ciutatDpt, AVG(sou) AS souMitja FROM empleats GROUP BY nomDpt, ciutatDpt; Els factors dagrupaci de la cl`usula GROUP BY han de ser, com a o a m nim, les columnes que guren en SELECT, exceptuant les columnes afectades per les funcions dagregaci. o

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Consultes amb agrupaci de les duna taula (III) o

Figura: Sense agrupaci o

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Consultes amb agrupaci de les duna taula (IV) o


Volem saber els codis dels projectes en els quals la suma dels sous dels empleats s ms gran de 180.000 euros e e Exemple SELECT numProj FROM empleats GROUP BY numProj HAVING SUM(sou)>180000.0; En aquest exemple no cal posar DISTINCT, tot i que la columna numProj no s atribut identicador. Fixem-nos que en la taula empleats e hem posat tots els projectes que tenen el mateix nmero junts en un u mateix grup i no pot ser que surtin repetits.

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Consultes amb agrupaci de les duna taula (V) o

Figura: Sense agrupaci o

Figura: Amb agrupaci o

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Combinaci o
La combinaci aconsegueix crear una sola taula a partir de les taules o especicades en la cl`usula FROM, fent coincidir els valors de les a columnes relacionades daquestes taules. Exemple SELECT alumnes.nom, alumnes.cognom, assignatures.nom from alumnes, assignatures where assignatures.codi = alumnes.assignatura; Si treballem amb ms duna taula pot passar que la taula resultant tingui e dues columnes amb el mateix nom. Per aix` s obligatori especicar a oe quina taula corresponen les columnes a qu` ens referim, anomenant la e taula a la qual pertanyen.

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Combinaci (II) o

Es poden utilizar `lies per a denir les taules a Exemple SELECT a.nom, a.cognom, b.nom from alumnes a, assignatures b where b.codi = a.assignatura;

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Combinaci (III) o
La manera dexpressar la combinaci que acabem de veure pertany a o lSQL:1989. Una manera alternativa de fer lequicombinaci dabans, o utilitzant lSQL:1992, seria la segent: u Sintaxi SELECT <nomColumnesSeleccionar> FROM <taula1> JOIN <taula2> {ON <condicions>| USING (<nomColumna> [,<nomColumna>...])} [WHERE <condicions>];

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Combinaci (IV) o
Lexemple anterior emprant lSQL:1992 seria: Exemple SELECT a.nom, a.cognom, b.nom from alumnes a JOIN assignatures b ON b.codi = a.assignatura; Lopci ON, a ms dexpressar condicions amb la igualtat, en el cas que o e les columnes que volem lligar tinguin noms diferents, ens ofereix la possibilitat dexpressar condicions amb els altres operadors de comparaci o que no siguin el digualtat

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Combinaci (V) o
Tamb podem fer servir una mateixa taula dues vegades amb `lies e a diferents, per a poder-les distingir. Exemple SELECT a.nom, a.cognom, b.nom as nomDelegat from alumnes a JOIN alumnes b ON b.nif = a.delegat; Lopci ON, a ms dexpressar condicions amb la igualtat, en el cas que o e les columnes que volem lligar tinguin noms diferents, ens ofereix la possibilitat dexpressar condicions amb els altres operadors de comparaci o que no siguin el digualtat

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Combinaci natural o
La combinaci natural (natural join) de dues taules consisteix o b`sicament, igual que en l`lgebra relacional, a fer una equicombinaci a a o entre columnes del mateix nom i eliminar les columnes repetides. La combinaci natural, utilitzant lSQL:1992, es faria de la manera segent: o u Sintaxi SELECT <nomColumnesSeleccionar> FROM <taula1> NATURAL JOIN <taula2> [WHERE <condicions>]; Exemple SELECT a.codiEmpl, a.nomEmpl FROM empleats NATURAL JOIN departaments b WHERE b.telefon = 987654321;

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Combinaci interna i externa o


La combinaci interna (inner join) noms es queda amb les les que o e tenen valors id`ntics en les columnes de les taules que compara. Aix` pot e o fer que es perdi alguna la interessant dalguna de les dues taules, per exemple, perqu` es troba a NULL en el moment de fer la combinaci. El e o seu format s el segent: e u Sintaxi SELECT <nomColumnesSeleccionar> FROM <taula1> [NATURAL] [INNER] JOIN <taula2> {ON <condicions>| USING (<nomColumna> [,<nomColumna>...])} [WHERE <condicions>];

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Combinaci interna i externa o


Si no es vol perdre cap la duna taula determinada, es pot fer una combinaci externa (outer join), que permet obtenir tots els valors de la o taula que hem posat a la dreta, o els valors de la que hem posat a lesquerra, o tots els valors dambdues taules. El seu format s el segent: e u Sintaxi SELECT <nomColumnesSeleccionar> FROM <taula1> [NATURAL] {LEFT|RIGHT|FULL} [OUTER] JOIN <taula2> {ON <condicions>| USING (<nomColumna> [,<nomColumna>...])} [WHERE <condicions>];

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Combinaci interna i externa o


Si no es vol perdre cap la duna taula determinada, es pot fer una combinaci externa (outer join), que permet obtenir tots els valors de la o taula que hem posat a la dreta, o els valors de la que hem posat a lesquerra, o tots els valors dambdues taules. El seu format s el segent: e u Sintaxi SELECT <nomColumnesSeleccionar> FROM <taula1> [NATURAL] {LEFT|RIGHT|FULL} [OUTER] JOIN <taula2> {ON <condicions>| USING (<nomColumna> [,<nomColumna>...])} [WHERE <condicions>];

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Uni o
La cl`usula UNION permet unir consultes de dues o ms sent`ncies a e e SELECT FROM. El seu format s el segent: e u Sintaxi SELECT <nomColumnes> FROM <taula> [WHERE <condicions>] UNION [ALL] SELECT <nomColumnes> FROM <taula> [WHERE <condicions>]; Si sutilitza lopci ALL apareixen totes les les obtingudes en fer la uni. o o No sescriur` aquesta opci si es volen eliminar les les repetides. a o

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Intersecci o
Per a fer la intersecci entre dues o ms sent`ncies SELECT FROM es o e e pot utilitzar la cl`usula INTERSECT, el format de la qual s el segent: a e u Sintaxi SELECT <nomColumnes> FROM <taula> [WHERE <condicions>] INTERSECT [ALL] SELECT <nomColumnes> FROM <taula> [WHERE <condicions>]; Si sutilitza lopci ALL apareixen totes les les obtingudes en fer la o intersecci. No sescriur` aquesta opci si es volen eliminar les les o a o repetides.

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Intersecci (II) o
La intersecci s una de les operacions de SQL que es pot fer de ms oe e maneres diferents: Intersecci utilitzant IN: o Sintaxi SELECT <nomColumnes> FROM <taula> WHERE <nomColumna> IN (SELECT <nomColumna> FROM <taula> [WHERE <condicions>]);

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Intersecci (III) o

Intersecci utilitzant EXISTS: o Sintaxi SELECT <nomColumnes> FROM <taula> WHERE EXISTS (SELECT * FROM <taula> WHERE <condicions>);

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Difer`ncia e
Per a trobar la difer`ncia entre dues o ms sent`ncies SELECT FROM e e e podem fer servir la cl`usula EXCEPT, que t aquest format: a e Sintaxi SELECT <nomColumnes> FROM <taula> [WHERE <condicions>] EXCEPT [ALL] SELECT <nomColumnes> FROM <taula> [WHERE <condicions>]; Si sutilitza lopci ALL apareixen totes les les obtingudes en fer la o difer`ncia. No sescriur` aquesta opci si es vol eliminar les les repetides. e a o

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Intersecci (II) o
La difer`ncia s, juntament amb la intersecci, una de les operacions de e e o SQL que es pot fer de ms maneres diferents:: e Intersecci utilitzant NOT IN: o Sintaxi SELECT <nomColumnes> FROM <taula> WHERE <nomColumna> NOT IN (SELECT <nomColumna> FROM <taula> [WHERE <condicions>]);

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Intersecci (III) o

Intersecci utilitzant NOT EXISTS: o Sintaxi SELECT <nomColumnes> FROM <taula> WHERE NOT EXISTS (SELECT * FROM <taula> WHERE <condicions>);

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Sent`ncia CASE e
Oracle permet que una consulta SELECT tregui una s`rie de valors e depenent duna condici utilitzant la sent`ncia CASE. o e Sintaxi SELECT case when <condicio> then <valor> when <condicio> then <valor> ... else <valor> end FROM TAULES

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

Sent`ncies de manipulaci de dades e o Inserci de les en una taula o Esborrament de les en una taula Modicaci de les en una taula o Consultes a una base de dades relacional

Funcions dagregaci o Subconsultes Altres predicats Ordenaci de les dades obtingudes en respostes a consultes o Consultes amb agrupaci de les duna taula o Consultes a ms duna taula e La uni o La intersecci o La difer`ncia e

Sent`ncia CASE (II) e

Exemple select nom, salari, case when sal < 2000 then categoria 1 when sal < 3000 then categoria 2 when sal < 4000 then categoria 3 else catecategoriagory 4 end from empleats;

Miguel Prieto. C.S. Jaume Viladoms

UF2. Llenguatges SQL: DML i DDL.

You might also like