GHID PENTRU AUTODIDACTI
Nu este necesara o pregatire
formala in SQL!
> = ~~ D OMULTIME de exemple, care
: ilustreaza APLICAREA CONCEPTELOR
Concis si cuprinzator, cu un JARGON
TEHNIC MINIMAL
Cartea contine INTREBARI
te RECAPITULATIVE fa finalul flecarui
capitol, precum si un EXAMEN FINALCUPRINS LA PRIMA VEDERE
CAPITOLUL1 — Concepte ale bazelor de date relationale 1
CAPITOLUL2 — Concepte SQL 37
CAPITOLUL 3 _Definirea obiectelor bazei de date folosind
limbajul SQL 53
CAPITOLUL4 —_Obtinerea datelor folosind limbajul de interogare
a datelor (DQL) 87
CAPITOLUL 5 Combinarea datelor din mai multe tabele 125
CAPITOLUL6 _— Scrierea interogarilor avansate 149
CAPITOLUL7 _intretinerea datelor folosind instructiuni DML 173
CAPITOLUL8 —_ Aplicarea controalelor de securitate folosind DCL 185
CAPITOLUL9 — Mentinerea integritatii bazei de date cu ajutorul
tranzactilor 205
CAPITOLUL 10 Integrarea limbajului SQL in aplicatii 221
CAPITOLUL 11 Elemente de ajustare si performanta ale
limbajului SQL 239
Examen final 261
Raspunsurile fa chestionare sila examenul final 281
Index 301
—wWyCUPRINS
Muttumiri xv
Introducere xvii
CAPITOLUL 1 Concepte ale bazelor de date relationale 1
Ce este o baza de date? 2
Ce este un sistem de gestionare a bazei de date
(DBMS) ? 2
Ce este 0 baza de date relationala? 3
Componente ale bazelor de date relationale 3
Cum sunt proiectate bazele de date relationale 9
Necesitatea normalizarii 10
Aplicarea procesului de normalizare W
Prezentare generala a bazel de date pentru un
magazin de produse video 21
Descarcarea codului SQL pentru baza de date
folosita ca exemplu 29
intrebari recapitulative 31
CAPITOLUL2 —Concepte SQL 37
Ce este SQL? 38
Conectarea la baza de date 38
Un scurt istoric al limbajului SQL 42
Conventii de sintaxa SQL 44
Categorii de instructiuni SQL 47
Limbajul de definire a datelor (DDL) 47
—a
CAPITOLUL 3
CAPITOLUL 4
Limbajul de interogare a datelor (DQL)
Limbajul de manipulare a datelor (DML)
Limbajul pentru controtul datelor (DCL)
Comenzile pentru controlul tranzactiilor
intrebari recapitulative
Definirea obiectelor bazei de date folosind
limbajul SQL
Conventii de sintaxd folosite in acest capitol
Tipuri de date
Tipuri de date predefinite din standardul
SQL:2003
Extensii ale producatorilor pentru tipuri de date
si diferente fata de standard
Valori NULL si logica bazata pe trei valori
Instructiuni DDL ( Data Definition Language)
Instructiunea CREATE DATABASE
Instructiunea CREATE TABLE
Instructiunea CREATE INDEX
Instructiunea CREATE VIEW
Instructiunea ALTER TABLE
Instructiunea DROP
intrebari recapitulative
Obtinerea datelor folosind limbajul de interogare
a datelor (DQL)
Instructiunea SELECT de baza
Pseudonime pentru numele coloanelor
Sortarea rezultatelor
Utilizarea Clauzei WHERE pentru filtrarea rezultatelor
Operatori de comparare
Operatori conjunctivi
Operatori logici
Operatori aritmetici
Functil SQL elementare
Functii pentru caractere
Functii matematice
Functii de conversie
SQL fara mistereCUPRINS
CAPITOLUL5
CAPITOLUL 6
Functii de agregare si gruparea randurilor
Clauza GROUP BY
Operatori pentru interogari compuse
UNION
UNION ALL
INTERSECT
EXCEPT
intrebari recapitulative
Combinarea datelor din mai multe tabele
Uniuni join)
Uniuni de egalitate (equijoin)
Uniuni naturale
Uniuni extene (outer joins)
Auto-uniuni (seff joins)
Alte tipuri de uniuni
Uniuni incrucisate (cross joins)
Subinterogari
Subinterogari necorelate
Subinterogari corelate
Vizualizari in linie
intrebari recapitulative
Scrierea interogarilor avansate
Functii SQL avansate
Functii pentru caractere
Functii matematice
Functii pentru data si ora
Folosirea avantajelor oferite de vizualizari
Folosirea instructiunilor SQL pentru generarea altor
instructiuni SQL
Generarea instructiunilor SQL in Oracle
Generarea instructiunilor SQL in Microsoft SQL
Server
Expresia CASE
Expresia CASE simpla
Expresia CASE cu cdutare
intrebari recapitulative
121
125
127
129
133
134
138
140
140
141
141
143
144
144
149
150
150
154
156
161
165
165
166
166
168
169a
CAPITOLUL 7
CAPITOLUL 8
CAPITOLUL 9
intretinerea datelor folosind instructiuni DML
Instructiunea INSERT
Inserarea unui singur rand de date folosind
clauza VALUES
Inserari masive folosind o instructiune SELECT
intema
Instructiunea UPDATE
Instructiunea DELETE
intrebari recapitulative
Aplicarea controalelor de securitate folosind DCL
De ce este necesara securitatea?
Arhitecturi de securitate pentru o baza de date
Securitatea bazelor de date Microsoft SQL
Server si Sybase Adaptive Server
Securitatea bazelor de date Oracle
implementarea securitatii accesului la baza de date
bazei de date
ini SQL folosite pentru administrarea
securitatil
Conturile detinatorilor de scheme
Simplificarea administrarii folosind roluri
Administrarea rolurilor in Microsoft SQL Server
si Sybase Adaptive Server
Administrarea rolurilor in Orade
Utilizarea vizualizarilor pentru implementarea
securitatii la nivel de coloand sila nivel de rand
intrebari recapitulative
Mentinerea integritatii bazei de date cu ajutorul
Ce este o tranzactie cu baza de date?
Suportul pentru tranzactii in sistemele DBMS
relationale
Suportul pentru tranzactii in Microsoft
‘SQL Server
Suportul pentru tranzactil in Sybase
Adaptive Server
SQL fara mistere
173
175
176
177
178
179
181
185
186
187
188
190
192
192
194
196
197
198
199
200
201
205
206
206
207
208CUPRINS
CAPITOLUL 10
CAPITOLUL 11
Suportul pentru tranzactii in Oracle
Suportul pentru tranzactii in MySQL
Suportul pentru tranzactii in DB2 UDB
Blocarea si interblocarea tranzactillor
Problema actualizarii concurente
Mecanismele de blocare
Interblocarile
intrebari recapitulative
Integrarea limbajului SQL in aplicatii
Procesarea cursorului
Instructiunea DECLARE CURSOR
Instructiunea OPEN CURSOR
Instructiunea FETCH
Instructiunile UPDATE si DELETE
Instructiunea CLOSE
inglobarea limbajului SQL in programele de aplicatii
Conexiunile ODBC
Conectarea bazelor de date la aplicatille Java
.NET Framework
Limbajul SQL complet computational
Transact-SQL (Microsoft SQL Server si
Sybase Adaptive Server)
Oracle PL/SQL
intrebari recapitulative
Elemente de ajustare si performanta ale
limbajului SQL
Consideratii generale de ajustare a sistemelor
RDBMS
Minimizarea numarului de scrieri si citiri pe
disc
Ajustarea sistemului de calcul si a mediului
de lucru
Proiectarea eficienta a tabelelor
Optimizarea interogarilor SQL
Aspecte generale privitoare la sistemele
RDBMS
Aspecte privind MySQL
221
226
227
228
229
230
232
233
239
240
240
241
241
242
243
2487”
Aspecte privind sistemul Oracle
Aspecte privind Microsoft SQL Server
Aspecte privind sistemul DB2 UDB
Optimizarea instructiunilor DML
intrebari recapitulative
Examen final
Raspunsurile la chestionare si la examenul final
Capitolul 1
Capitolul 2
Capitolul 3
Capitolul 4
Capitolul 5
Capitolul 6
Capitolul 7
Capitolul 8
Capitotul 9
Capitotul 10
Capitotul 11
Raspunsurile fa examenul final
Index
SQL fara mistere
248
252
253
254
256
261
281
282
282
283
284
286
288
291
292
293
293
294
295
301CAPITOLUL
Concepte ale
bazelor de date
relationale
SQL este principalul limbaj folosit pentru comunicarea cu bazele de date relationale.
Ca urmare, este esential si intelegeti conceptele fundamentale ale bazelor de date
relationale inainte de a incerca sa invatati limbajul SQL. Acest capitol reprezinté 0
prezentare general a conceptelor bazelor de date relationale. Daci aceste informatii
vi se par interesante, vi recomand sa consultati si cealalt& carte scrisi de mine,
Databases Demystified (McGraw-Hill/Osbome, 2004), care se ocupa in intregime
de proiectarea, utilizarea si gestionarea bazelor de date relationale.SQL fara mistere
ww
Ce este o baza de date?
O bazéi de date este 0 colectie de informatii interrelationate gestionate ca o singurd unitate,
Accasti definitie este intentionat foarte larg’, deoarece exist mari diferente intre conceptiile
diferitilor producitori care pun la dispozitie sisteme de baze de date. De exemplu, Oracle
Corporation defineste 0 baz de date ca fiind o colectie de fisiere fizice gestionate de o
singura instant& (copie) a produsului software pentru baze de date, in timp ce Microsoft
defineste 0 bazi de date SQL Server ca fiind 0 colectie de date si alte obiecte, Un obiect al
bazci de date este o structura de date denumita stocati in baza de date, cum ar fi un tabel,
o vizualizare sau un index. Veti afla mai multe despre obiectele bazelor de date in sectiunea
Componente ale bazelor de date relationale", mai tarziu in acest capitol.
Exista mari diferente intre implementirile furnizorilor de baze de date. in majoritatea
sistemelor de baze de date, datele sunt stocate in mai multe fisiere fizice, darin Microsoft
Access toate obiectele bazei de date, impreunii cu datele care apartin unci baze de date,
sunt stocate intr-un singur fisier fizic. (Un fisier este o colectie de inregistrari inrudite
stocate ca o singuri unitate de sistemul de operare al calculatorului.) Alte baze de date
relationale, in special in implementirile mai vechi, stocheaza fiecare element al bazei de
date intr-un fisier separat. Totusi, unul dintre principalele avantaje ale bazelor de date
relationale este faptul c& detaliile de implementare fizicd sunt separate de definitiile logice
ale obiectelor bazei de date, astfel incat majoritatea utilizatorilor bazei de date nu au nevoie
si stie unde (si cum) sunt stocate obiectele bazei de date in sistemul de fisiere al
calculatorului. De fapt, pe masuri ce veti invita limbajul SQL, veti vedea ci nu este
nevoie s& specificati numele unui fisier fizic intr-o instructiune SQL decat atunci cand
definiti sau modificati chiar obiectele bazei de date ~niciodaréi nu este necesari specificarea
unui fisier atunci cand adaugati, modificati, stergeti sau obtineti date stocate in obiectele
bazei de date.
Ce este un sistem de gestionare a bazei de
date (DBMS) ?
Un sistem de gestionare a bazei de date (DBMS - database management system) este un
produs software furnizat de producitorul bazei de date. Produse software precum Microsoft
Access, Microsoft SQL Server, Oracle Database, Sybase, DB2, INGRES, MySQL si
PostgreSQL fac parte din categoria DBMS sau, mai corect, DBMS relajionale (RDBMS).
Bazele de date relationale sunt definite si prezentate in sectiunea urmatoare a acestui capitol.