Limbajul SQL: 1. Generalităţi
Limbajul SQL: 1. Generalităţi
Limbajul SQL
LIMBAJUL SQL
1.
GENERALITI
Luminia SCRIPCARIU
2.
Limbajul SQL
REGULI SQL
Limbajul SQL folosete termenii de tabele, coloane i rnduri n locul celor de relaii,
atribute i nregistrri.
O instruciune SQL include cuvinte rezervate i cuvinte definite de utilizator pentru a
denumi tabelele, atributele, indexurile etc., nefiind sensibil la formatul literei (majuscul sau liter
mic). Totui SQL devine sensibil la formatul literelor (case sensitive) n cazul nregistrrilor din
BD, adic dou nregistrri CLIENT i Client sunt tratate distinct.
Regulile sau conveniile adoptate n mod universal pentru scrierea instruciunilor SQL
pot fi sintetizate astfel:
a. Fiecare clauz a unei instruciuni trebuie scris pe o linie nou, cu separare prin virgul.
b. Dac o clauz are mai multe pri, fiecare dintre acestea este scris pe o linie nou i
indentat pentru a indica relaia cu linia superioar.
c. Majusculele sunt utilizate pentru cuvintele rezervate (SELECT, INSERT, DELETE,
GRANT etc.).
d. Literele mici sunt folosite pentru termenii proprii utilizatorului (denumiri de tabele,
coloane, cmpuri etc.).
e. Bara vertical | semnific operaia logic SAU adic alegerea dintre dou sau mai
multe opiuni.
f. Acoladele indic un element necesar.
g. Parantezele ptrate indic un element opional.
h. Punctele de suspensie (...) specific o repetare opional a unui articol din BD, de zero
sau de mai multe ori.
i. n practic, se creeaz mai nti structura BD prin definirea tabelelor i stabilirea
formatului datelor, precum i definirea drepturilor de acces ale utilizatorilor, dup care se
trece la popularea BD.
j. Fiecare instruciune se ncheie prin caracterul punct i virgul.
k. Valorile, n general, sunt scrise ntre paranteze rotunde, separate prin virgule.
l. Valorile literale sunt ncadrate de apostroafe.
n instruciunile SQL apar diveri identificatori care respect urmtoarele constrngeri:
a. Lucreaz cu setul de caractere prestabilit de ISO: litere mari (A Z), litere mici (a
z), cifre (0 9) i liniua de subliniere (_ underscore).
b. S nu depeasc lungimea maxim impus (tipic, 128 de caractere)
2
Luminia SCRIPCARIU
Limbajul SQL
3.
Luminia SCRIPCARIU
Limbajul SQL
Exemplu:
Instruciunea SQL:
INTERVAL YEAR(1) TO MONTH
semnific un interval de la 0 ani i 0 luni (timpul prezent) la 9 ani i 11 luni. Numrul de ani poate
fi scris n acest caz cu o singur cifr.
4.
DROP DATABASE
CREATE TABLE
ALTER TABLE
DROP TABLE
CREATE DOMAIN
ALTER DOMAIN
DROP DOMAIN
CREATE SCHEMA
DROP SHEMA
CREATE VIEW
DROP VIEW
CREATE INDEX
DROP INDEX
Formatul de baz dat de ISO al instruciunii de creare a unui tabel n BD este urmtorul:
CREATE TABLE nume_tabel
{(nume_coloan tip_de_date [NOT NULL] [UNIQUE]
[DEFAULT opiune_prestabilit] [CHECK (condiie)] [, ...]
[PRIMARY KEY (list_de_coloane),]
{[UNIQUE (list_de_coloane),] [,...]}
{[FOREIGN KEY (list_de_coloane_chei_strine)
REFERENCES nume_tabel_printe [(list_de_coloane_chei_candidat)],
[MATCH { PARTIAL | FULL}
[ON UPDATE aciune_referenial]
[ON DELETE aciune_referenial]}
{[CHECK (condiie)] [,]})}
EXEMPLU:
CREATE TABLE agenti(
cod_agent
DEC(3,0)
NOT NULL
nume
VARCHAR(20)
NOT NULL,
4
UNIQUE,
Luminia SCRIPCARIU
Limbajul SQL
prenume
VARCHAR(20)
NOT NULL,
cnp
DEC(13,0)
NOT NULL,
filiala
VARCHAR(10),
salariu
DEC(5,2),
vechime
SMALLINT
DEFAULT 0
DEC(5,0)
zona
VARCHAR(20)
NOT NULL,
tip
VARCHAR(10)
NOT NULL,
pret
INT,
cod_agent
DEC(3,0),
cod_proprietar
DEC(6,0)
NOT NULL,
Tipul datelor poate fi declarat separat sub forma unui domeniu de valori i utilizat
pentru mai multe variabile de acelai tip:
CREATE DOMAIN nume_domeniu AS tip_de_date
[DEFAULT opiune_prestabilit]
[CHECK (condiie)];
Opiunea RESTRICT nu va permite tergerea articolului dac de acesta depind alte date
din BD. Se evit astfel pierderea de date.
Opiunea CASCADE este una extrem care determin tergerea acelui articol din BD
precum i a tuturor datelor care depindeau de acesta. Este util pentru actualizarea
structurii BD dup o perioad mai lung de timp sau atunci cnd se reproiecteaz aceasta.
Luminia SCRIPCARIU
3.
Limbajul SQL
Indexul este o structur care ofer acces accelerat la nregistrrile din BD pe baza
valorilor dintr-una sau mai multe coloane ale unui tabel, mbuntind astfel
performanele de interogare:
CREATE [UNIQUE] INDEX nume_index
ON nume_tabel (coloana [ASC|DESC] [, ])
Utilizarea indexurilor trebuie fcut cu oarecare rezerve ntruct solicit mai multe resurse
din partea serverului de BD.
4.
5.
INSERT
UPDATE
DELETE
Fiecare dintre aceste instruciuni conine dup cuvntul-cheie de definiie diverse clauze cu
multiple opiuni. De aceea le vom studia pe fiecare n parte.
Luminia SCRIPCARIU
Limbajul SQL
[WHERE condiie]
[GROUP BY lista_de_coloane] [HAVING condiie]
[ORDER BY lista_de coloane];
Exemplu:
SELECT *
FROM agenti
WHERE filiala = centru;
Rezultatul acestei comenzi SQL va fi afiarea tuturor nregistrrilor din tabelul agenti
corespunztoare filialei centru.
Cuvntul-cheie DISTINCT elimin n cadrul interogrii eventualele dubluri din BD.
n expresiile incluse n comenzile SQL se folosesc operatori scalari i funcii specifice:
operatorii aritmetici:
+,-,*,/
funcia de lungime:
concatenarea de iruri:
identificarea sesiunii:
SESSION_USER
identificarea sistemului:
SYSTEM_USER
LOWER
scrierea cu majuscule:
UPPER
CAST(tip1 AS tip2)
||
USER
Limbajul SQL mai accept cinci funcii de grup care se aplic pe o coloan ntreag i
genereaz o singur valoare:
COUNT
numrare
SUM
sumare
AVG
MIN
MAX
Luminia SCRIPCARIU
Limbajul SQL
Pentru a selecta date din mai multe tabele, n cadrul clauzelor WHERE i HAVING, se
folosesc operaiile cu mulimi: UNION, INTERSECT, EXCEPT.
Clauza WHERE poate fi urmat de unul din urmtoarele 5 predicate:
Compararea valorilor folosind operatorii de comparare (=, <, >, <=, >=, <> ISO, !=)
zero sau mai multe caractere i caracterul liniu de subliniere pentru reprezentarea oricrui
caracter singular.
Exemplu: Clauza:
WHERE nume=A%
selecteaz toate nregistrrile al cror nume ncepe cu litera A.
Clauza ORDER BY poate ordona nregistrrile cresctor sau descresctor, alfabetic sau
numeric, pe baza uneia sau a mai mutor coloane. Prima coloan constituie cheia major de
sortare, iar urmtoarele sunt chei minore de sortare.
II.
Luminia SCRIPCARIU
Limbajul SQL
6.
VEDERI
Prin definiie, o vedere este o relaie virtual produs la cerere prin operaii relaionale,
folosind relaiile existente n baza de date.
O vedere este creat prin instruciunea CREATE VIEW:
CREATE VIEW nume_vedere [(nume_coloan [, ])]
9
Luminia SCRIPCARIU
Limbajul SQL
Luminia SCRIPCARIU
Limbajul SQL
migratoare. Clauza WITH CHECK OPTION migrarea unui rnd n afara vederii, ceea ce asigur
o mai bun securitate a datelor incluse n vedere dect n tabelele BD.
7.
TRANZACII
ISO definete un model de tranzacii bazat pe dou instruciuni SQL: COMMIT (executare)
i ROLLBACK (revenire).
Tranzacia este o unitate logic de lucru care conine una sau mai multe comenzi SQL.
Iniierea tranzaciei poate fi fcut de ctre o persoan sau un program printr-o comand de
iniiere de tip SELECT; INSERT; UPDATE.
Pn la completarea tranzaciei, efectele ei nu sunt vizibile.
ncheierea tranzaciei se poate realiza n unul din urmtoarele 4 moduri:
a. Prin instruciunea COMMIT, modificrile din BD sunt permanente.
b. Prin instruciunea ROLLBACK, se abandoneaz modificrile iniiate i BD rmne
nemodificat.
c. Finalizarea cu succes a programului ncheie tranzacia i modificrile au efect chiar dac
nu s-a executat instruciunea COMMIT.
d. Abandonarea tranzaciei fr rularea instruciunii ROLLBACK atunci cnd se termin
anormal programul respectiv.
Formatul unei tranzacii este urmtorul:
SET TRANSACTION
[READ ONLY |READ WRITE] |
[ISOLATION LEVEL READ UNCOMMITTED | READ UNCOMMITTED |
REPEATABLE READ | SERIALIZABLE];
8.
CONTROLUL ACCESULUI
Limbajul SQL folosete dou instruciuni pentru controlul accesului la BD: GRANT i
REVOKE.
Mecanismul de securitate al BD se bazeaz pe conceptele de:
a.
identificator de autorizaie
b.
posesiune
11
Luminia SCRIPCARIU
c.
Limbajul SQL
privilegiu.
[(nume_coloan [, ...])]
UPDATE
[(nume_coloan [, ...])]
DELETE
REFERENCES
[(nume_coloan [, ...])]
USAGE
Formatul instruciunii GRANT este urmtorul:
GRANT {list_de_privilegii | ALL PRIVILEGES}
ON
nume_obiect
TO
{list_de_identificatori | PUBLIC}
nume_obiect
12