SQL fără mistere

311

description

Andy Oppel

Transcript of SQL fără mistere

Page 1: SQL fără mistere
Page 2: SQL fără mistere
Page 3: SQL fără mistere
Page 4: SQL fără mistere
Page 5: SQL fără mistere

CAPITOlUl1

CAPITOlUl2

Mulţumiri

Introducere

CUPRINS

Concepte ale bazelor de date rela~onale Ce este o bază de date? Ce este un sistem de gestionare a bazei de date

XV xvii

1 2

~BM~? 2 Ce este o bază de date relaţională? 3

Componente ale bazelor de date relaţionale 3 Cum sunt proiectate bazele de date relaţionale 9

Necesitatea normalizării 10 Aplicarea procesului de normalizare 11

Prezentare generală a bazei de date pentru un magazin de produse video 21

Descărcarea codului SQL pentru baza de date folosită ca exemplu 29

întrebări recapitulative 31

Concepte SQL Ce este SQL? Conectarea la baza de date Un scurt istoric al limbajului SQL Convenţii de sintaxă SQL Categorii de instrucţiuni SQL

Limbajul de definire a datelor (DDl)

37 38 38 42 44 47 47

Page 6: SQL fără mistere

~·,_.---SQL fără mistere

Limbajul de interogare a datelor (DQL) 47 Limbajul de manipulare a datelor (DML) 47 Limbajul pentru controlul datelor (DCL) 48 Comenzile pentru controlul tranzacţiilor 48

întrebări recapitulative 48

CAPITOLUL 3 Definirea obiectelor bazei de date folosind limbajul SQL 53 Convenţii de sintaxă folosite în acest capitol 54 Tipuri de date 54

Tipuri de date predefinite din standardul SQL:2003 55

Extensii ale producătorilor pentru tipuri de date şi diferenţe faţă de standard 60

Valori NULL şi logica bazată pe trei valori 69 Instrucţiuni DDL ( Data Definition Language) 70

Instrucţiunea CREATE DATABASE 70 Instrucţiunea CREATE TABLE 70 Instrucţiunea CREATE INDEX 76 Instrucţiunea CREATE VIEW n Instrucţiunea ALTER TABLE 78 Instrucţiunea DROP 80

întrebări recapitulative 81

CAPITOLUL 4 Ob~nerea datelor folosind limbajul de interogare a datelor (DQL) 87 Instrucţiunea SELECT de bază

Pseudonime pentru numele coloanelor 90 Sortarea rezultatelor 90 Utilizarea clauzei WHERE pentru filtrarea rezultatelor 94

Operatori de comparare 94 Operatori conjunctivi 97 Operatori logici 100

Operatori aritmetici 108 Funcţii SQL elementare 110

Funcţii pentru caractere 110 Funcţii matematice 115 Funcţii de conversie 116

Page 7: SQL fără mistere

CUPRINS

Funcţii de agregare şi gruparea rândurilor Clauza GROUP BY

Operatori pentru interogări compuse UN ION UNION ALL INTERSECT EXCEPT

întrebări recapitulative

117 119 120 120 120 121 121 121

CAP ITO lU l 5 Combinarea datelor din mai multe tabele 125 127 129 133 134 138 140 140 141 141 143 144 144

Uniuni ijoin) Uniuni de egalitate (equijoin) Uniuni naturale Uniuni externe (outer joins) Auto-uniuni (self joins) Alte tipuri de uniuni Uniuni încrucişate (cross joins)

Subinterogări

Subinterogări necorelate Subinterogări corelate

Vizualizări în linie întrebări recapitulative

CAPITOlUl G Scrierea interogărilor avansate Funcţii SQL avansate

Funcţii pentru caractere Funcţii matematice

149 150 150 154

Funcţii pentru dată şi oră 156 Folosirea avantajelor oferite de vizualizări 161 Folosirea instrucţiunilor SQL pentru generarea altor

instrucţiuni SQL 165 Generarea instrucţiunilor SQL în Oracle 165 Generarea instrucţiunilor SQl în Microsoft SQL

Server Expresia CASE 166

Expresia CASE simplă 166 Expresia CASE cu căutare 168

întrebări recapitulative 169

Page 8: SQL fără mistere

CAPITOlUl 7

CAPITOlUl8

CAPITOlUl9

SQL fără mistere

Întretinerea datelor folosind instructiuni DML ' '

Instrucţiunea INSERT Inserarea unui singur rând de date folosind

173 175

clauza VALUES 176 lnserări masive folosind o instrucţiune SElECT internă

Instrucţiunea UPDATE Instrucţiunea DELETE Întrebări recapitulative

Aplicarea controalelor de securitate folosind DCL De ce este necesară securitatea? Arhitecturi de securitate pentru o bază de date

Securitatea bazelor de date Microsoft SQL Server şi Sybase Adaptive Server

Securitatea bazelor de date Oracle

177 178 179 181

185 186 187

188 190

Implementarea securităţii accesului la baza de date 192 Privilegiile bazei de date 192 Instrucţiuni SQL folosite pentru administrarea securităţii 194

Conturile deţinătorilor de scheme 196 Simplificarea administrării folosind roluri 197

Administrarea rolurilor în Microsoft SQL Server şi Sybase Adaptive Server 198

Administrarea rolurilor în Oracle 199 Utilizarea vizualizărilor pentru implementarea

securităţii la nivel de coloană şi la nivel de rând 200 întrebări recapitulative 201

Men~nerea integrită~i bazei de date cu ajutorul tranzactiilor

' Ce este o tranzacţie cu baza de date? Suportul pentru tranzacţii în sistemele DBMS relaţionale

Suportul pentru tranzacţii în Microsoft SQL Server

Suportul pentru tranzacţii în Sybase Adaptive Server

205 206

206

207

208

Page 9: SQL fără mistere

CUPRINS

Suportul pentru tranzacţii în Oracle Suportul pentru tranzacţii în MySQL Suportul pentru tranzacţii în DB2 UDB

Blocarea şi interblocarea tranzacţiilor Problema actualizării concurente Mecanismele de blocare lnterblocările

întrebări recapitulative

209 209 210 211 211 212 214 216

CAPITOLUL 10 Integrarea limbajului SQL in aplicaţii Procesarea cursorului

221 222 222 223

Instrucţiunea DECLARE CURSOR Instrucţiunea OPEN CURSOR Instrucţiunea FETCH 224 Instrucţiunile UPDATE şi DELETE 225 Instrucţiunea CLOSE 225

înglobarea limbajului SQL în programele de aplicaţii 226 Conexiunile ODBC 226 Conectarea bazelor de date la aplicaţiile Java 227 .NET Framework 228

Limbajul SQL complet computaţional 229 Transact-SQL (Microsoft SQL Server şi

Sybase Adaptive Server) 230 Oracle PL!SQL 232

întrebări recapitulative 233

CAP ITO LU L 11 Elemente de ajustare ~i performanţă ale limbajului SQL 239 Consideraţii generale de ajustare a sistemelor

RDBMS 240 Minimizarea numărului de scrieri şi citiri pe

disc 240 Ajustarea sistemului de calcul şi a mediului

de lucru 241 Proiectarea eficientă a tabelelor 241

Optimizarea interogărilor SQL 242 Aspecte generale privitoare la sistemele

RDBMS 243 Aspecte privind MySQL 248

Page 10: SQL fără mistere

SQL fără mistere

Aspecte privind sistemul Oracle 248 Aspecte privind Microsoft SQL Server 252 Aspecte privind sistemul 082 UDB 253

Optimizarea instrucţiunilor DML 254 întrebări recapitulative 256

Examen final 261

Răspunsurile la chestionare ~i la examenul final 281 Capitolul 1 282 Capitolul 2 282 Capitolul 3 283 Capitolul 4 284 Capitolul 5 286 Capitolul 6 288 Capitolul 7 291 Capitolul 8 292 Capitolul 9 293 Capitolul 1 O 293 Capitolul 11 294 Răspunsurile la examenul final 295

Index 301

Page 11: SQL fără mistere
Page 12: SQL fără mistere
Page 13: SQL fără mistere
Page 14: SQL fără mistere
Page 15: SQL fără mistere
Page 16: SQL fără mistere
Page 17: SQL fără mistere
Page 18: SQL fără mistere
Page 19: SQL fără mistere
Page 20: SQL fără mistere
Page 21: SQL fără mistere
Page 22: SQL fără mistere
Page 23: SQL fără mistere
Page 24: SQL fără mistere
Page 25: SQL fără mistere
Page 26: SQL fără mistere
Page 27: SQL fără mistere
Page 28: SQL fără mistere
Page 29: SQL fără mistere
Page 30: SQL fără mistere
Page 31: SQL fără mistere
Page 32: SQL fără mistere
Page 33: SQL fără mistere
Page 34: SQL fără mistere
Page 35: SQL fără mistere
Page 36: SQL fără mistere
Page 37: SQL fără mistere
Page 38: SQL fără mistere
Page 39: SQL fără mistere
Page 40: SQL fără mistere
Page 41: SQL fără mistere
Page 42: SQL fără mistere
Page 43: SQL fără mistere
Page 44: SQL fără mistere
Page 45: SQL fără mistere
Page 46: SQL fără mistere
Page 47: SQL fără mistere
Page 48: SQL fără mistere
Page 49: SQL fără mistere
Page 50: SQL fără mistere
Page 51: SQL fără mistere
Page 52: SQL fără mistere
Page 53: SQL fără mistere
Page 54: SQL fără mistere
Page 55: SQL fără mistere
Page 56: SQL fără mistere
Page 57: SQL fără mistere
Page 58: SQL fără mistere
Page 59: SQL fără mistere
Page 60: SQL fără mistere
Page 61: SQL fără mistere
Page 62: SQL fără mistere
Page 63: SQL fără mistere
Page 64: SQL fără mistere
Page 65: SQL fără mistere
Page 66: SQL fără mistere
Page 67: SQL fără mistere
Page 68: SQL fără mistere
Page 69: SQL fără mistere
Page 70: SQL fără mistere
Page 71: SQL fără mistere
Page 72: SQL fără mistere
Page 73: SQL fără mistere
Page 74: SQL fără mistere
Page 75: SQL fără mistere
Page 76: SQL fără mistere
Page 77: SQL fără mistere
Page 78: SQL fără mistere
Page 79: SQL fără mistere
Page 80: SQL fără mistere
Page 81: SQL fără mistere
Page 82: SQL fără mistere
Page 83: SQL fără mistere
Page 84: SQL fără mistere
Page 85: SQL fără mistere
Page 86: SQL fără mistere
Page 87: SQL fără mistere
Page 88: SQL fără mistere
Page 89: SQL fără mistere
Page 90: SQL fără mistere
Page 91: SQL fără mistere
Page 92: SQL fără mistere
Page 93: SQL fără mistere
Page 94: SQL fără mistere
Page 95: SQL fără mistere
Page 96: SQL fără mistere
Page 97: SQL fără mistere
Page 98: SQL fără mistere
Page 99: SQL fără mistere
Page 100: SQL fără mistere
Page 101: SQL fără mistere
Page 102: SQL fără mistere
Page 103: SQL fără mistere
Page 104: SQL fără mistere
Page 105: SQL fără mistere
Page 106: SQL fără mistere
Page 107: SQL fără mistere
Page 108: SQL fără mistere
Page 109: SQL fără mistere
Page 110: SQL fără mistere
Page 111: SQL fără mistere
Page 112: SQL fără mistere
Page 113: SQL fără mistere
Page 114: SQL fără mistere
Page 115: SQL fără mistere
Page 116: SQL fără mistere
Page 117: SQL fără mistere
Page 118: SQL fără mistere
Page 119: SQL fără mistere
Page 120: SQL fără mistere
Page 121: SQL fără mistere
Page 122: SQL fără mistere
Page 123: SQL fără mistere
Page 124: SQL fără mistere
Page 125: SQL fără mistere
Page 126: SQL fără mistere
Page 127: SQL fără mistere
Page 128: SQL fără mistere
Page 129: SQL fără mistere
Page 130: SQL fără mistere
Page 131: SQL fără mistere
Page 132: SQL fără mistere
Page 133: SQL fără mistere
Page 134: SQL fără mistere
Page 135: SQL fără mistere
Page 136: SQL fără mistere
Page 137: SQL fără mistere
Page 138: SQL fără mistere
Page 139: SQL fără mistere
Page 140: SQL fără mistere
Page 141: SQL fără mistere
Page 142: SQL fără mistere
Page 143: SQL fără mistere
Page 144: SQL fără mistere
Page 145: SQL fără mistere
Page 146: SQL fără mistere
Page 147: SQL fără mistere
Page 148: SQL fără mistere
Page 149: SQL fără mistere
Page 150: SQL fără mistere
Page 151: SQL fără mistere
Page 152: SQL fără mistere
Page 153: SQL fără mistere
Page 154: SQL fără mistere
Page 155: SQL fără mistere
Page 156: SQL fără mistere
Page 157: SQL fără mistere
Page 158: SQL fără mistere
Page 159: SQL fără mistere
Page 160: SQL fără mistere
Page 161: SQL fără mistere
Page 162: SQL fără mistere
Page 163: SQL fără mistere
Page 164: SQL fără mistere
Page 165: SQL fără mistere
Page 166: SQL fără mistere
Page 167: SQL fără mistere
Page 168: SQL fără mistere
Page 169: SQL fără mistere
Page 170: SQL fără mistere
Page 171: SQL fără mistere
Page 172: SQL fără mistere
Page 173: SQL fără mistere
Page 174: SQL fără mistere
Page 175: SQL fără mistere
Page 176: SQL fără mistere
Page 177: SQL fără mistere
Page 178: SQL fără mistere
Page 179: SQL fără mistere
Page 180: SQL fără mistere
Page 181: SQL fără mistere
Page 182: SQL fără mistere
Page 183: SQL fără mistere
Page 184: SQL fără mistere
Page 185: SQL fără mistere
Page 186: SQL fără mistere
Page 187: SQL fără mistere
Page 188: SQL fără mistere
Page 189: SQL fără mistere
Page 190: SQL fără mistere
Page 191: SQL fără mistere
Page 192: SQL fără mistere
Page 193: SQL fără mistere
Page 194: SQL fără mistere
Page 195: SQL fără mistere
Page 196: SQL fără mistere
Page 197: SQL fără mistere
Page 198: SQL fără mistere
Page 199: SQL fără mistere
Page 200: SQL fără mistere
Page 201: SQL fără mistere
Page 202: SQL fără mistere
Page 203: SQL fără mistere
Page 204: SQL fără mistere
Page 205: SQL fără mistere
Page 206: SQL fără mistere
Page 207: SQL fără mistere
Page 208: SQL fără mistere
Page 209: SQL fără mistere
Page 210: SQL fără mistere
Page 211: SQL fără mistere
Page 212: SQL fără mistere
Page 213: SQL fără mistere
Page 214: SQL fără mistere
Page 215: SQL fără mistere
Page 216: SQL fără mistere
Page 217: SQL fără mistere
Page 218: SQL fără mistere
Page 219: SQL fără mistere
Page 220: SQL fără mistere
Page 221: SQL fără mistere
Page 222: SQL fără mistere
Page 223: SQL fără mistere
Page 224: SQL fără mistere
Page 225: SQL fără mistere
Page 226: SQL fără mistere
Page 227: SQL fără mistere
Page 228: SQL fără mistere
Page 229: SQL fără mistere
Page 230: SQL fără mistere
Page 231: SQL fără mistere
Page 232: SQL fără mistere
Page 233: SQL fără mistere
Page 234: SQL fără mistere
Page 235: SQL fără mistere
Page 236: SQL fără mistere
Page 237: SQL fără mistere
Page 238: SQL fără mistere
Page 239: SQL fără mistere
Page 240: SQL fără mistere
Page 241: SQL fără mistere
Page 242: SQL fără mistere
Page 243: SQL fără mistere
Page 244: SQL fără mistere
Page 245: SQL fără mistere
Page 246: SQL fără mistere
Page 247: SQL fără mistere
Page 248: SQL fără mistere
Page 249: SQL fără mistere
Page 250: SQL fără mistere
Page 251: SQL fără mistere
Page 252: SQL fără mistere
Page 253: SQL fără mistere
Page 254: SQL fără mistere
Page 255: SQL fără mistere
Page 256: SQL fără mistere
Page 257: SQL fără mistere
Page 258: SQL fără mistere
Page 259: SQL fără mistere
Page 260: SQL fără mistere
Page 261: SQL fără mistere
Page 262: SQL fără mistere
Page 263: SQL fără mistere
Page 264: SQL fără mistere
Page 265: SQL fără mistere
Page 266: SQL fără mistere
Page 267: SQL fără mistere
Page 268: SQL fără mistere
Page 269: SQL fără mistere
Page 270: SQL fără mistere
Page 271: SQL fără mistere
Page 272: SQL fără mistere
Page 273: SQL fără mistere
Page 274: SQL fără mistere
Page 275: SQL fără mistere
Page 276: SQL fără mistere
Page 277: SQL fără mistere
Page 278: SQL fără mistere
Page 279: SQL fără mistere
Page 280: SQL fără mistere
Page 281: SQL fără mistere
Page 282: SQL fără mistere
Page 283: SQL fără mistere
Page 284: SQL fără mistere
Page 285: SQL fără mistere
Page 286: SQL fără mistere
Page 287: SQL fără mistere
Page 288: SQL fără mistere
Page 289: SQL fără mistere
Page 290: SQL fără mistere
Page 291: SQL fără mistere
Page 292: SQL fără mistere
Page 293: SQL fără mistere
Page 294: SQL fără mistere
Page 295: SQL fără mistere
Page 296: SQL fără mistere
Page 297: SQL fără mistere
Page 298: SQL fără mistere
Page 299: SQL fără mistere
Page 300: SQL fără mistere
Page 301: SQL fără mistere
Page 302: SQL fără mistere
Page 303: SQL fără mistere
Page 304: SQL fără mistere
Page 305: SQL fără mistere
Page 306: SQL fără mistere
Page 307: SQL fără mistere
Page 308: SQL fără mistere
Page 309: SQL fără mistere
Page 310: SQL fără mistere
Page 311: SQL fără mistere