¡Descarga Ejemplos de consultas SQL en Bases de Datos y más Apuntes en PDF de Programación de Bases de Datos solo en Docsity!
FIB: Bases de Dades (BD)
3.2 Llenguatges: SQL
Introducció
Base de dades exemple
Sentències SQL
- Creació d’una taula
- Inserció / modificació / esborrat de files d’una taula
- Consultes
FIB: Bases de Dades (BD)
Introducció
Llenguatge estructurat de definició, actualització i consulta de bases
de dades
Proposat per un departament d’investigació d’IBM
Adoptat com a estàndard per al Model Relacional de bases de dades
en els anys 1986-87 (ANSI/X3H2/RDL).
Des d’aleshores se n’han fet vàries versions: SQL-89, SQL-92,
SQL:1999, SQL:2003, SQL:2006, SQL:2008, SQL:2011.
Malgrat l'estandarització, els diferents constructors de SGBDR
(Sistemes de Gestió de Bases de Dades Relacionals) ofereixen
variants de SQL.
Nosaltres veurem el nucli comú de SQL per a tots els SGBDR, tenint
en compte que per alguns la sintaxi de les sentències pot variar.
Pot ser utilitzat de manera interactiva o de manera hostatjada entre
les sentències d’un programa.
FIB: Bases de Dades (BD)
Base de dades exemple
Clau primària: Cada taula té una clau primària que permet identificar les files de la taula. Per ex. num_dpt és la clau primària de la taula departaments. Això vol dir que cada departament té un num_dpt que ha de ser únic entre tots els departaments, és a dir mai hi haurà dos departaments amb el mateix número de departament. Clau forana. Una clau forana permet relacionar les files de dues taules. Per ex. num_dpt és una clau forana de la taula empleats que referencia la taula departaments. Això vol dir que entre les dades d’un empleat hi haurà també el departament al que pertany, i aixó ens permetrà saber el departament on treballa un empleat, i també els empleats que treballen a un departament.
departaments(num_dpt, nom_dpt, planta, edifici, ciutat_dpt)
1 DIRECCIO 10 PAU CLARIS BARCELONA
2 DIRECCIO 8 RIOS ROSAS MADRID
3 MARQUETING 1 PAU CLARIS BARCELONA
projectes(num_proj, nom_proj, producte, pressupost)
1 IBDTEL TELEVISIO 1000000
2 IBDVID VIDEO 500000
empleats(num_empl, nom_empl, sou, ciutat_empl, num_dpt num_proj )
1 CARME 400000 MATARO 1 1
2 EUGENIA 350000 TOLEDO 2 2
3 JOSEP 250000 SITGES 3 1
FIB: Bases de Dades (BD)
Creació d’una taula
tipus_dades : INTEGER, FLOAT(precisió), REAL, CHAR(n),
NUMERIC(precisió,escala), DECIMAL(precisió,escala), SMALLINT,
DOUBLE PRECISION, VARCHAR(n), DATE,....
val_per_defecte : Valor per defecte d’una columna per a una fila que
s’insereix a la taula.
DEFAULT { | NULL }.
CREATE TABLE <nom_taula>
(<nom_columna> <tipus_dades> [<restriccions_col>] [<val_per_defecte>]
[, <nom_columna> <tipus_dades> [<restriccions_col>] [<val_per_defecte>]...]
[<restriccions_taula>]);
FIB: Bases de Dades (BD)
3.2 Laboratori - Llenguatges: SQL (^) 86-b
Creació d’una taula: Restriccions de taula
restriccions_taula :
Les restriccions de taula poden referir-se a una o més columnes de la taula.
Així, en cas de restriccions que tenen a veure amb més d’una columna cal
usar una restricció de taula.
Per exemple, en cas de claus primàries compostes per més d’un columna
o condició (CHECK) que tenen a veure amb més d’una columna.
UNIQUE () El conjunt de les columnes especificades han de
tenir valors únics entre les files de la taula
PRIMARY KEY () El conjunt de les columnes especificades formen
la clau primària
FOREIGN KEY ()
REFERENCES []
El conjunt de columnes especificades formen una clau forana que referencia la taula indicada.
CHECK () La taula ha de complir les condicions
especificades. La condició pot referir-se a una o més columnes de la taula.
FIB: Bases de Dades (BD)
Creació d’una taula: Exemple
CREATE TABLE empleats
( num_empl INTEGER ,
nom_empl CHAR (30) NOT NULL ,
sou INTEGER DEFAULT 100000
CHECK (sou>80000),
ciutat_empl CHAR (30),
num_dpt INTEGER ,
num_proj INTEGER ,
PRIMARY KEY (num_empl),
FOREIGN KEY (num_dpt) REFERENCES
departaments(num_dpt),
FOREIGN KEY (num_proj) REFERENCES projectes(num_proj));
FIB: Bases de Dades (BD)
Inserció de files en una taula: Exemples
INSERT INTO empleats
VALUES (4, 'RICARDO’, 400000, ‘BARCELONA’,1,1);
INSERT INTO empleats (num_empl, num_dpt, num_proj,
nom_empl)
VALUES (11, 3, 2, ‘NURIA’);
empleats(num_empl, nom_empl, sou, ciutat_empl, num_dpt num_proj )
1 CARME 400000 MATARO 1 1
2 EUGENIA 350000 TOLEDO 2 2
3 JOSEP 250000 SITGES 3 1
4 RICARDO 400000 BARCELONA 1 1
11 NURIA 100000 NULL 3 2
Files inserides per la primera sentència Files inserides per la segona sentència
FIB: Bases de Dades (BD)
Esborrat de files d’una taula
S’eliminen de la taula les files que compleixen les condicions
especificades a la clausula WHERE.
DELETE FROM
WHERE ;
FIB: Bases de Dades (BD)
Modificació de files d’una taula
Es modifiquen de la manera indicada a la clausula SET les columnes
de les files de la taula que compleixen les condicions especificades
a la clausula WHERE.
UPDATE
SET = {expressió/ NULL} [, = {expressió/ NULL}...]
WHERE ;
FIB: Bases de Dades (BD)
Modificació de files d’una taula: Exemples
UPDATE empleats
SET sou = sou +
WHERE num_dpt = 1;
UPDATE empleats
SET sou = sou + 50000, ciutat_empl = ‘VIC’
WHERE num_empl = 11;
empleats(num_empl, nom_empl, sou, ciutat_empl, num_dpt num_proj )
1 CARME 410000 MATARO 1 1
2 EUGENIA 350000 TOLEDO 2 2
3 JOSEP 250000 SITGES 3 1
4 RICARDO 410000 BARCELONA 1 1
11 NURIA 150000 VIC 3 2
Files modificades per la primera sentència Files modificades per la segona sentència
FIB: Bases de Dades (BD)
Consultes sobre una taula: Format bàsic - Exemple 1
SELECT *
FROM empleats;
empleats(num_empl, nom_empl, sou, ciutat_empl, num_dpt num_proj )
1 CARME 410000 MATARO 1 1
2 EUGENIA 350000 TOLEDO 2 2
3 JOSEP 250000 SITGES 3 1
4 RICARDO 410000 BARCELONA 1 1
11 NURIA 150000 VIC 3 2
Dades obtingudes com a resultat de la consulta
FIB: Bases de Dades (BD)
SELECT num_empl, nom_empl, sou
FROM empleats;
empleats(num_empl, nom_empl, sou, ciutat_empl, num_dpt num_proj )
1 CARME 410000 MATARO 1 1
2 EUGENIA 350000 TOLEDO 2 2
3 JOSEP 250000 SITGES 3 1
4 RICARDO 410000 BARCELONA 1 1
11 NURIA 150000 VIC 3 2
Dades obtingudes com a resultat de la consulta
Consultes sobre una taula: Format bàsic - Exemple 2
FIB: Bases de Dades (BD)
Operadors en les condicions
operadors
- aritmètics: *, +, -, /
- de comparació: =, <, >, <=, >=, <>
- lògics : NOT, AND, OR
- altres :
- BETWEEN <límit 1 > AND <límit 2 >
- IN (<valor 1 >,<valor 2 > [....,<valor (^) N >])
- LIKE <característica>
- IS [NOT] NULL
Aquests operadors poden sortir a les condicions
En la clausula WHERE de les sentències d’esborrat ( DELETE ),
modificació ( UPDATE ) i consulta ( SELECT )
En la clausula CHECK de les sentències de creació d’una taula
( CREATE TABLE ).
FIB: Bases de Dades (BD)
Operadors en les condicions: Exemple
SELECT num_empl, nom_empl
FROM empleats
WHERE NOT (num_dpt = 2) AND
( ciutat_empl IN (‘MATARO’, ‘SITGES’, ‘BARCELONA’) OR
ciutat_empl LIKE ‘V%’) AND
num_proj IS NOT NULL AND
sou BETWEEN 400000 AND 500000;
empleats(num_empl, nom_empl, sou, ciutat_empl, num_dpt num_proj )
1 CARME 410000 MATARO 1 1
2 EUGENIA 350000 TOLEDO 2 2
3 JOSEP 250000 SITGES 3 1
4 RICARDO 410000 BARCELONA 1 1
11 NURIA 150000 VIC 3 2
Dades obtingudes com a resultat de la consulta