Documente Academic
Documente Profesional
Documente Cultură
*|Ion Lungu, Baze de Date Oracle - Limbajul SQL, Editura ASE, 2005, ISBN: 973594684X. 2
3.1. ELEMENTE REFERITOARE LA LIMBAJUL SQL
Prin revizuire acest limbaj apare în 1989 SQL-1 ca fiind limbajul
fundamental al SGBD ralaţionale.
În 1992 apare versiunea SQL-2 care oferă noi facilităţi cum ar fi:
joncţiune externă, implementarea restricţiei referenţiale, modificarea
schemei bazei de date, etc.
SQL-3 a fost lansat în anul 1999, acesta este considerat un limbaj complet
în vederea definirii şi gestiunii obiectelor complexe. Se consideră că prin
publicarea standardului propus în acest an a fost depăşită bariera
relaţionalului, el fiind mult mai mult decât un instrument de consultare a
bazelor de date.
În anul 2003, The American National Standards Institute (ANSI) a
publicat SQL 2003. Aceste standarde au introdus caracteristici legate de
XML, secvențe standardizate și coloane de identități.
În anul 2006, ANSI a publicat SQL 2006 care a definit modul în care SQL
poate fi folosit cu XML. Standardele au permis de asemenea integrarea
XQuery în codul SQL al aplicațiilor.
În anul 2008 ANSI a publicat SQL 2008. Aceste standarde au introdus
triggerele INSTEAD OF și statementul TRUNCATE.
3
3.1. ELEMENTE REFERITOARE LA LIMBAJUL SQL
Versiunea - SQL 2011 sau ISO/IEC 9075: 2011, reprezintă a șaptea
revizuire a standardelor ISO (1987) și ANSI (1986) pentru limbajul de
interogare a bazelor de date SQL. Aceasta a fost adoptată oficial în
decembrie 2011.
Standardul se referă la:
Partea 1: Framework (SQL/Framework)
Partea 2: Foundation (SQL/Foundation)
Partea 3: Call-Level Interface (SQL/CLI)
Partea 4: Persistent Stored Modules (SQL/PSM)
Partea 9: Management of External Data (SQL/MED)
Partea 10: Object Language Bindings (SQL/OLB)
Partea 11: Information and Definition Schemas (SQL/Schemata)
Partea 13: SQL Routines and Types Using the Java™ Programming
Language (SQL/JRT)
Partea 14: XML-Related Specifications (SQL/XML)
4
3.1. ELEMENTE REFERITOARE LA LIMBAJUL SQL
Versiunea - SQL 2016 sau ISO/IEC 9075: 2016, reprezintă a opta
revizuire a standardelor ISO (1987) și ANSI (1986) pentru limbajul de
interogare a bazelor de date SQL. Aceasta a fost adoptată oficial în
decembrie 2016.
Standardul se referă la:
JSON: funcții pentru a crea documente JSON, pentru a accesa
anumite parți din documentele JSON și pentru a verifica dacă un
anumit șir de caractere conține date valide JSON
Recunoașterea de șabloane la nivel de înregistrări: compararea mai
multor înregistrări cu un șablon de expresie regulară
Facilități de formatare și conversie a datei calendaristice și a orei
LISTAGG – o funcție ce transformă valorile dintr-un grup de
înregistrări într-un șir de caractere cu delimitatori
Funcții polimorfice ce acționează la nivel de tabelă – funcții ce
acționează la nivel de tabelă fără să returneze un anumit tip
predefinit
Noul tip de date DECFLOAT 5
3.2. CONCEPTE UTILIZATE
SQL*PLUS este un limbaj neprocedural şi operează asupra datelor normalizate.
Conceptele necesare a fi cunoscute pentru lucrul cu acest limbaj sunt: tabelă,
cheie primară, coloană, rînd, viziune, index, sinonim, cluster, bază de date
relaţională, comanda, blocul, cererea, raportul etc.
Tabela sau relaţia este un ansamblu format din n coloane
(atribute/subansambluri) şi m rânduri (tupluri/linii) care respectă următoarele
condiţii minime: nu conţine date la nivel agregat (valorile aflate la intersecţia
liniilor cu coloanele să fie la un nivel elementar); liniile sunt distincte unele faţă
de altele; nu conţine coloane repetitive în descriere.
Cheia primară este un atribut care are valori distincte. Deci, fiecare linie se
identifică printr-o valoare distinctă. Două sau mai multe atribute care pot fi chei
primare se numesc chei candidate.
Coloana tabelei este formată din valorile pe care le ia atributul în liniile tabelei
respective.
Rândul/tuplul/linia este format din valorile coloanelor ce se referă la o entitate a
tabelei.
Baza de date relaţională este un ansamblu de tabele normalizate, grupate în
jurul unui subiect, în principiu, bine definit. Într-o bază de date relaţională,
entităţile şi legăturile sunt transpuse în tabele.
Viziunea este o tabela logică şi reprezintă o fereastră la date, dintr-una sau mai
multe tabele. 6
3.2. CONCEPTE UTILIZATE
Pentru ca accesul la date sa se facă mai rapid, se utilizează indexarea. Un index
reprezintă o cheie pe una sau mai multe coloane. Indexarea este dinamică deoarece
se pot adaugă sau şterge indecşi oricînd, fără ca datele memorate sau aplicaţiile
scrise să fie afectate.
Pentru realizarea unor operaţii sau pentru a utiliza în cereri nume mai scurte, se pot
defini sinonime ale unor nume de tabele sau viziuni.
Un cluster reprezintă o anumită modalitate de grupare a rândurilor uneia sau mai
multor tabele. Această grupare măreşte viteza de execuţie a unor operaţii
consumatoare de timp.
Comanda este o instrucţiune emisă din SQL*Plus către o bază de date Oracle.
Blocul reprezintă un grup de instrucţiuni SQL şi PL/SQL.
Cererea este o comanda SQL (SELECT) care regăseşte date din baza de date.
Rezultatul cererii îl formează datele regăsite din baza de date.
Raportul este rezultatul cererii formatat cu ajutorul comenzilor SQL*Plus.
Numele unei baze de date, al unei tabele, coloane sau variabile utilizator trebuie să
aibă lungimea între 1 şi 30 caractere. Un nume nu poate conţine apostrofuri. Cu atît
mai puţin, un nume utilizat într-o comandă nu va fi introdus între apostrofuri. Literele
mici şi mari sunt echivalente (nu se face distincţia între literele mici şi mari). Un nume
trebuie să înceapă cu o literă, să conţină numai anumite caractere (A-Z, 0-9, $, #, @, -),
să nu duplice numele unui alt obiect de acelaşi tip şi să difere de un cuvânt rezervat
ORACLE. Cuvintele rezervate nu pot fi utilizate ca nume de tabele, coloane sau orice
alte obiecte definite de utilizator.
7
3.3. FUNCŢII SQL
Funcţiile se apelează prin sintaxa:
Nume_funcţie (argument1, argument2, …)
Funcţiile SQL sunt cu un singur rând sau scalare
(returnează un singur rezultat pentru fiecare rând al
cererii emise asupra unei tabele sau vederi) şi cu mai
multe rânduri numite funcţii grup sau agregate
(returnează un singur rezultat pentru un grup de rânduri
regăsite dintr-o tabelă sau vedere).
8
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Acestea sunt funcţii: numerice, caracter, de tip DATE, de
conversie şi alte funcţii.
1) Funcţiile numerice acceptă valori numerice şi returnează
rezultate numerice şi sunt prezentate în tabelul 3.1. Tabela
DUAL folosită în exemple, este creată automat de către Oracle
odată cu crearea dicţionarului de date şi se află în schema
utilizatorului SYS, dar cu acest nume este accesibilă tuturor
utilizatorilor unei baze de date Oracle. Ea are o singură
coloană numită DUMMY cu tipul de date VARCHAR2(1) şi
un singur rând cu valoarea 'X'. Selecţiile din tabela DUAL
sunt utile pentru calcularea unor expresii constante cu
comanda SQL SELECT. Din cauză că are un singur rând,
constanta este returnată o singură dată. Alternativ pentru
aceeaşi activitate se poate selecta o constantă, pseudocoloană
sau o expresie din orice tabelă.
9
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 1. Funcţiile numerice
10
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 1. Funcţiile numerice - continuare
11
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 1. Funcţiile numerice – continuare
12
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 1. Funcţiile numerice – continuare
13
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 1. Funcţiile numerice – continuare
14
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 1. Funcţiile numerice – continuare
15
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 1. Funcţiile numerice – continuare
16
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
2) Funcţiile caracter:
acceptă la intrare valori caracter
furnizează valori caracter sau numerice.
Tabelul 2 - funcţiile caracter care returnează caractere
Tabelul 3 - funcţiile caracter care returnează valori
numerice. Valorile caracter returnate sunt de tipul
VARCHAR2 dacă nu se specifică altfel.
17
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 2. Funcţiile caracter care returnează caractere
18
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 2. Funcţiile caracter care returnează caractere – continuare
19
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 2. Funcţiile caracter care returnează caractere – continuare
20
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 2. Funcţiile caracter care returnează caractere – continuare
21
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 2. Funcţiile caracter care returnează caractere – continuare
22
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 2. Funcţiile caracter care returnează caractere – continuare
23
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 3. Funcţiile caracter care returnează valori numerice
24
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
3) Funcţiile de tip DATE:
operează cu tipuri de date de tip DATE şi sunt prezentate
în Tabelul 4
Toate funcţiile de tip DATE returnează valori de tip
DATE, mai puţin funcţia MONTH_BETWEEN care
furnizează o valoare numerică.
Formatul fmt utilizat de funcţiile ROUND şi TRUNC
este prezentat în Tabelul 5
25
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 4. Funcţiile de tip DATE
26
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 4. Funcţiile de tip DATE - continuare
27
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 4. Funcţiile de tip DATE - continuare
28
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 4. Funcţiile de tip DATE - continuare
29
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 4. Funcţiile de tip DATE - continuare
30
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 5. Formatul fmt utilizat de funcţiile ROUND şi TRUNC
31
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
4) Funcţiile de conversie convertesc o valoare de la un tip
de dată la alt tip de dată.
Aceste funcţii au formatul general de forma tip_de_dată
TO tip_de_dată şi sunt prezentate în Tabelul 6.
32
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 6. Funcţiile de conversie
33
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 6. Funcţiile de conversie - continuare
34
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 6. Funcţiile de conversie - continuare
35
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 6. Funcţiile de conversie - continuare
36
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 7. Structurile formatului fmt pentru datele de tip NUMBER
37
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 8. Structurile formatului fmt pentru datele de tip DATE
38
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 9. Alte funcţii cu un singur rând
39
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 9. Alte funcţii cu un singur rând – continuare
40
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 9. Alte funcţii cu un singur rând - continuare
41
3.3.1. Funcţiile SQL cu un singur rând (funcţiile scalare)
Tabelul 9. Alte funcţii cu un singur rând - continuare
42
Tabelul 9. Alte funcţii cu un singur rând - continuare
43
Bibliografie
Bibliografie obligatorie
1. Platforma online a Universității Româno-Americane - Pîrjan
Alexandru, Note de curs, Baze de Date II
2. DeHaanLex, GormanTim, Jorgensen Inger, Caffrey Melanie,
Beginning Oracle SQL For Oracle Database 12c, 3rd Edition,
Apress, 2014, ISBN13: 978-1-4302-6556-6
3. Ion Lungu, Adela Bara, Constanta Bodea, Iuliana Botha, Vlad
Diaconita, Alexandra Florea, Anda Velicanu, Tratat de baze de date,
vol. 1, Editura ASE, 2011, ISBN: 978-606-505-472-1 / 978-606-505-
481-3 vol. 1
4. Ion Lungu, Anca Andreescu, Adela Bara, Anda Belciu, Constanta
Bodea, Iuliana Botha, Vlad Diaconita, Alexandra Florea, Cornelia
Gyorodi, Tratat de baze de date, vol. 2, Editura ASE, 2015, ISBN:
978-606-505-472-1, 978-606-505-862-0 vol. 2
5. http://docs.oracle.com/cd/E11882_01/server.112/e41084/toc.htm
44
Bibliografie
Bibliografie complementară
1. Ramklass Roopesh, OCA Oracle Database 12c SQL
Fundamentals, Exam Guide, Publisher: McGraw-Hill Osborne
Media, 2014, ISBN-10: 0071820280, ISBN-13: 978-
0071820288.
2. Darmawikarta Djoni, Oracle SQL: A Beginner's Tutorial,
Publisher: BrainySoftware, 2014, ISBN-10: 0980839645,
ISBN-13: 978-0980839647.
3. Coffin David, Expert Oracle and Java Security: Programming
Secure Oracle Database Applications With Java, Publisher:
Apress, 2011, ISBN-10: 1430238313, ISBN-13: 978-
1430238317.
45
Vă mulţumesc!
46