You are on page 1of 309
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 FINAL CUPRINS 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 —wWy CUPRINS 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 mistere CUPRINS 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 169 a 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 208 CUPRINS 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 248 7” 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 301 CAPITOLUL 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.

You might also like