Capitolul 7:
SQL, Structurat
Limbaj de interogare
Soid Quintero & Ervi Bongso
CS157B
Overview
Introduction
Comenzi DDL
Comenzi DML
Declaraț ii SQL, Operatori, Clauze
Funcț ii agregate
Limbaj de interogare structurat (SQL)
Limbajul standard ANSI pentru definiț ie
ș i manipularea bazelor de date relaț ionale.
Include limbaj de definire a datelor (DDL),
declaraț ii care specifică ș i modifică baza de date
scheme.
Include o limbaj de manipulare a datelor (DML),
declaraț ii care manipulează conț inutul bazei de date.
Câteva fapte despre SQL
Datele SQL sunt sensibile la majuscule, iar comenzile SQL nu sunt.
Prima versiune a fost dezvoltată la IBM de Donald D.
Chamberlin ș i Raymond F. Boyce. [SQL]
Dezvoltat folosind lucrarea Dr. E.F. Codd, „O relaț ională
Model de date pentru bănci de date mari ș i partajate.
Interogarea SQL include referinț e la variabilele tuplu
ș i atribuț iile acelor variabile
SQL: Comenzi DDL
CREAȚI TABEL: utilizat pentru a crea un tabel.
ALTER TABLE: modifică o masă după ce a fost creată.
DROP TABLE: elimină o tabelă dintr-o bază de date.
SQL:CREAȚ I TABELA
Lucruri de care să ț ineț i cont înainte de a crea masa dvs. sunt:
Tipul de date
numele tabelului
ce coloană(e) va compune cheia primară
numele coloanelor
Sintaxa declaraț iei CREATE TABLE:
CREAȚI TABEL <numele tabelului>
( tipul de date field1 (NU NULL),
tip de date field2 (NU NULL)
);
SQL: Tipuri de atribute
Tabelul 7.6 pg.164
SQL: DECLARATIE ALTER TABLE
Pentru a adăuga sau a elimina coloane din tabelele existente.
Sintaxa declaraț iei ALTER TABLE:
ALTER TABLE <numele tabelului>
ADAugmentare tip de dată;
sau
Șterge coloana attr;
SQL:Ș tergeț i tabelul
Are două opț iuni:
CASCADE: Specifică faptul că orice constrângere de cheie străină
încălcările cauzate de ș tergerea tabelului vor
că cauzele rândurilor corespunzătoare ale tabelului aferent să
a fi ș ters.
RESTRICT: blochează ștergerea tabelului oricărui
ar fi create încălcări ale constrângerii cheii externe.
Sintaxa comenzii DROP TABLE:
CĂDEREA TABELULUI <numele tabelului> [RESTRICT|CASCADE];
Exemplu:
CREAȚI TABELA FoodCart
(
data varchar(10) FoodCart
food varchar(20), data aliment profit
profit float
);
Caruț a de Mâncare
MODIFICĂ TABELUL FoodCart (
ADăugați sold înt
date food profit sold
);
FoodCart
MODIFICĂ TABELA FoodCart( data alimentelor vândute
DROP COLUMN profit
);
Șterge tabelul FoodCart;
SQL: Comenzi DML
INSERT: adaugă noi rânduri într-un tabel.
UPDATE: modifică unul sau mai multe atribute.
DELETE: șterge una sau mai multe rânduri dintr-un tabel.
SQL:Instrucț iuneaINSERT
Pentru a insera un rând într-un tabel, este necesar să
aveț i o valoare pentru fiecare atribut ș i ordonare
probleme.
Sintaxa declaraț iei INSERT:
INSERT în <numele tabelului>
VALUES('valoare1', 'valoare2', NULL);
Exemplu:INSEREAZĂ înCăruciorDeMâncare
VALUES(„02/26/08', „pizza', 70 );
Carucior de Mâncare mâncare cu curmale vândut
data vândut
aliment 25/02/08 pizza 350
02/25/08 pizza 350 02/26/08 hotdog 500
02/26/08 hotdog 500 02/26/08 pizza 70
SQL:UPDATEDeclaraț ie
Pentru a actualiza conț inutul tabelului:
Sintaxa declaraț iei UPDATE:
UPDATE<table name>SET<attr> = <value>
UNDE<condiție selecție>;
UPDATE FoodCart SET sold = 349
UNDAtă = „02/25/08‟Ș Imâncare = „pizza‟;
FoodCart
data alimentară data vandut
vânzării mâncare
02/25/08 pizza 350 02/25/08 pizza 349
02/26/08 hotdog 500 02/26/08 hotdog 500
02/26/08 pizza 70 02/26/08 pizza 70
SQL:Declaraț ie DELETE
Pentru a ș terge rânduri din tabel:
Sintaxa comenzii DELETE:
Șterge din <numele tabelului>
UNDE<condiție>;
Șterge din FoodCart
WHEREfood = „hotdog‟;
Carucior de Mâncare
data sold
aliment date food vândut
25/02/08 pizza 349 25/02/08 pizza 349
02/26/08 hotdog 500 02/26/08 pizza 70
02/26/08 pizza 70
Notă: Dacă clauza WHERE este omisă, toate rândurile de date sunt ș terse din tabel.
Declaraț ii SQL, Operaț iuni, Clauze
Declaraț ii SQL:
Selectați
SQL Operations:
Alătură-te
Join Stânga
Îmbinare dreapta
Ca
Clauze SQL:
Ordonează după
Grupare după
Având
SQL:SELECTStatement
O declaraț ie SELECT de bază include 3 clauze
SELECT <nume atribut> DIN <tabele> UNDE <condiție>
SELECT DE LA UNDE
Specifică Specifica Specificaț i
atribute care sunt mese care servesc condiț ie de selecț ie
parte din ca intrare în inclusiv unirea
relaț ia rezultantă declaraț ie condiț ie.
Notă: că nu trebuie să foloseș ti WHERE
SQL:SELECTStatement (cont.)
Folosirea unui „*” într-o declaraț ie SELECT indică faptul că
fiecare atribut al tabelului de intrare trebuie să fie
selectat.
Exemplu: SELECT * DIN…UNDE…;
Pentru a obț ine rânduri unice, scrie cuvântul cheie
DISTINCTdupăSELECT.
EXEMPLU: SELECT DISTINCT * DIN ...
UNDERE …;
Exemplu: 1)SELECT *
Persoană DIN persoană
Name Age Greutate UNDERT age > 30;
Harry 34 80 Name Age Weight
Sally 28 64 Harry 34 80
George 29 70 Helena 54 54
Helena 54 54 Petru 34 80
Petrus 34 80
2)SELECT greutate 3)SELECTdistinctweight
DE la persoană DE la persoană
UNDWHERE vârsta > 30;
UND age > 30;
Weight Weight
80 80
54 54
80
SQL: Operaț iunea de îmbinare
Ajoin poate fi specificat în clauza FROM
care enumeră cele două relaț ii de intrare ș i
Clauza WHERE care listează unirea
condiț ie.
Exemplu:
Emp Departament
ID Stat ID Divizie
1000 CA 1001 IT
1001 MA 1002 Vânzări
1002 TN 1003 Biotehnologie
SQL: Operaț iunea de alăturare (cont.)
inner join =join
SELECT *
DELaîndepart (sau DELaî, departament)
[Link] = [Link];
[Link] [Link] [Link] [Link]
1001 MA 1001 IT
1002 TN 1002 Vânzări
SQL:Operaț iune de unire (cont.)
left outer join =left join
SELECT *
DIN stânga se alătură
[Link] = [Link];
[Link] [Link] [Link] [Link]
1000 CA null null
1001 MA 1001 IT
1002 TN 1002 Vânzări
SQL: Operaț ia de unire (cont.)
right outer join =right join
SELECT *
DINdrept joindep
[Link] = [Link];
[Link] [Link] [Link] [Link]
1001 MA 1001 IT
1002 TN 1002 Vânzări
null null 1003 Biotech
SQL: operaț ia Like
Selectare prin potrivirea modelului
% (ș ir arbitrar)
SELECT *
DE LA emp
UNDEIDlike„%01‟;
găseș te ID-uri care se termină cu 01, de exemplu 1001, 2001, etc
_
SELECT *
DE La
UNDE MIAR PLACE „_01_‟;
găseș te ID-ul care are al doilea ș i al treilea caracter
ca 01, de exemplu 1010, 1011, 1012, 1013, etc
SQL: Clauza ORDER BY
Selecț ia rezultatelor ordonate
desc(ordine descrescătoare)
SELECT *
DE la muncă
ordonați după stare descrescătoare
pune statele în ordine descrescătoare, de exemplu TN, MA, CA
asc (ordine crescătoare)
SELECT *
DE la emp
ordonare după idasc
introduce ID-urile în ordine crescătoare, de exemplu 1001, 1002, 1003
SQL: Clauza GROUP BY
Funcț ia de a împărț i tuplurile în grupuri ș i
returnează un agregat pentru fiecare grup.
De obicei, este un acompaniament al funcț iei agregate.
SELECT food, sum(sold) as totalSold
DE laCaruciorulDeMâncare
grupare după aliment
Carucior de mâncare
datele alimentelor vândute food totalSold
02/25/08 pizza 349 hotdog 500
02/26/08 câine de plajă 500 pizza 419
02/26/08 pizza 70
SQL: Clauza HAVING
Substituirea lui WHERE pentru funcț iile agregate
De obicei, este însoț itorul unei funcț ii agregate
SELECT food, sum(sold) as totalSold
DINCaruciorDeMâncare
grup după mâncare
having_sum(sold) > 450;
Carucior de mâncare
data mâncării vândute food totalSold
02/25/08 pizza 349 hotdog 500
02/26/08 cârnați 500
02/26/08 pizza 70
SQL: Funcț ii de agregare
Sunt folosite pentru a oferi informaț ii de sumarizare pentru
Declaraț ii SQL, care returnează o singură valoare.
COUNT(attr)
SUMA(attr)
MAX(attr)
MIN(attr)
AVG(attr)
Notă: când folosiț i funcț ii de agregare, valorile NULL
nu sunt considerate, cu excepț ia COUNT(*).
SQL: Funcț ii de agregare (cont.)
Carucior de mâncare
data alimentelor vândute
02/25/08 pizza 349
02/26/08 celebă 500
02/26/08 pizza 70
COUNT(attr) -> return # de rânduri care nu sunt nule
Ex:COUNT(distinctfood) fromFoodCart; -> 2
SUM(attr) -> returnează suma valorilor din attr
Ex:SUM(sold) dinFoodCart; -> 919
MAX(attr) -> returnează cea mai mare valoare din attr
Ex:MAX(sold) fromFoodCart; -> 500
SQL: Funcț ii de agregare (cont.)
Tava de mâncare
datele alimentelor vândute
02/25/08 pizza 349
02/26/08 cârnat 500
02/26/08 pizza 70
MIN(attr) -> returnează cea mai mică valoare din attr
Ex:MIN(sold) fromFoodCart; -> 70
AVG(attr) -> returnează valoarea medie din attr
Ex:AVG(sold) fromFoodCart; -> 306.33
Notă: valoarea este rotunjită la precizia tipului de date
Referinț e
Riccardi, Greg. Principles of Database Systems with Internet and Java Applications.
Addison Wesley, 2001.
Ronald R. Plew, Ryan K. Stephens. Învaț ă-te SQL în 24 de ore, ediț ia a 3-a.
Sams Publishing, 2003.
SQL[Link]
W3C[Link]
Wikipedia - SQL[Link]
Wikipedia - alăturați-vă [Link]