Sunteți pe pagina 1din 29

ACADEMIA DE STUDII ECONOMICE BUCUREŞTI

FACULTATEA DE CIBERNETICĂ, STATISTICĂ ŞI INFORMATICĂ ECONOMICĂ

LIMBAJE RELAŢIONALE
PENTRU DEFINIREA ŞI
MANIPULAREA
DAT E L O R .
LIMBAJUL SQL

BUCUREŞTI
2021-2022
LIMBAJE RELAŢIONALE PENTRU
DEFINIREA ŞI MANIPULAREA
DATELOR
• SGBD relaţionale oferă seturi de comenzi speciale pentru
descrierea, respectiv pentru manipularea datelor. Acestea pot
face parte din acelaşi limbaj sau pot face parte din limbaje
separate.
• În funcţie de domeniul din teoria relaţională pe care se bazează,
limbajele relaţionale se pot clasifica în:
 Limbaje bazate pe calculul relaţional: QUEL - INGRES, PostgreSQL
 Limbaje bazate pe algebra relaţională: ISBL (Information System
Based Language)
 Limbaje bazate pe transformare: SQL (Structured Query Language)
 Limbaje bazate pe grafică: QBE (Query by Example)

2
LIMBAJUL PENTRU DEFINIREA
DATELOR (LDD)

 Descrierea datelor este stocată în dicţionarul BD.


 Comenzile LDD pot fi clasificate în funcţie de nivelul de
organizare a datelor la care acţionează:
 nivel conceptual
 nivel logic
 nivel fizic

3
LIMBAJUL PENTRU DEFINIREA
DATELOR (LDD)

1. Comenzile LDD care acţionează la nivel conceptual:


Comandă LDD Descriere
CREATE DATABASE creează dicţionarul BD şi alte spaţii necesare
DROP DATABASE şterge BD
ALTER DATABASE actualizează proprietăţi ale BD
creează structura de date şi restricţiile de
CREATE TABLE
integritate, pe care le stochează în dicţionarul BD
DROP TABLE şterge tabela
ALTER TABLE actualizează structura unei tabele
....

4
LIMBAJUL PENTRU DEFINIREA
DATELOR (LDD)
• Comenzile LDD care acţionează la nivel logic:
Comandă LDD Descriere
CREATE VIEW creează o tabelă virtuală

DROP VIEW şterge o tabelă virtuală

• Comenzile LDD care acţionează la nivel fizic:


Comandă LDD Descriere
ataşează un fişier de indexare unei tabele în scopul de a
CREATE INDEX mări viteza de acces la datele unei tabele
DROP INDEX şterge indexul
construieşte o structură fizică care grupează anumite
CREATE CLUSTER date din BD
DROP CLUSTER şterge un cluster
5
LIMBAJUL PENTRU MANIPULAREA
DATELOR (LMD)

Caracteristici generale:
 tratarea datelor la nivel de ansamblu
 operatorii relaţionali implementaţi folosesc
instrucţiuni din limbajul relaţional existent în
SGBDR, care poate avea la bază: calculul relaţional,
algebra relaţională, transformarea sau grafica
 singurul limbaj relaţional standardizat internaţional
este SQL
 utilizatorii limbajelor relaţionale sunt specialiştii
6
LIMBAJUL PENTRU MANIPULAREA
DATELOR (LMD)
• Caracteristici funcţionale:
– facilităţile de interogare / regăsire a datelor sunt cele mai
puternice în BDR faţă de alte tipuri de BD
– facilităţile de actualizare a datelor sunt identice atât pentru
tabelele de bază, cât şi pentru cele virtuale
• Caracteristici calitative:
– puterea selectivă, dată de posibilitatea regăsirii
multicriteriale
– uşurinţa de învăţare şi utilizare
– eficacitatea utilizării, dată de posibilitatea optimizării
timpului şi spaţiului ocupat 7
LIMBAJUL SQL

• SQL (Structured Query Language) este un limbaj de


descriere şi manipulare acceptat de toate sistemele de
gestiune a bazelor de date relaţionale.

• Atât ANSI (American National Standards Institute), cât


şi ISO (International Standards Organization) îl
consideră drept un standard pentru limbajele de
interogare a bazelor de date relaţionale.

8
LIMBAJUL SQL

Versiuni ale
An lansare Particularităţi
standardului SQL

SQL-86 1986 Prima versiune SQL standardizată

SQL-89 1989 + restricţii de integritate

Versiune revizuită complet; stă la baza versiunilor


SQL-92 1992 ulterioare

SQL:1999 1999 + facilităţi ale limbajelor orientate-obiect

SQL:2003 2003 + facilităţi OLAP, comanda MERGE, facilităţi XML

SQL:2006 2006 + suport XML

SQL:2008 2008 + declanşatori INSTEAD OF, comanda TRUNCATE

SQL:2011 2011 + suport BD temporale


9
LIMBAJUL SQL

• Există două moduri de lucru cu baze de date şi anume:


 SQL interactiv, în care un utilizator tastează o singură
comandă, care este trimisă imediat bazei de date. Rezultatul
unei interogări interactive este o tabelă de date în memoria
principală;

 SQL încorporat (embedded SQL), în care declaraţiile SQL sunt


plasate într-un program de aplicaţie. Interfaţa poate fi pe bază de
videoformate sau linie de comandă. SQL poate fi static (în cazul
în care întreaga comandă este specificată la momentul scrierii
programului) sau dinamic (pe baza datelor introduse de
utilizator se formează comanda pentru baza de date).

10
LIMBAJUL SQL-ORACLE.
CREAREA TABELELOR
• Tabela reprezintă o structură de date care conţine datele unei
BDR.
• În general, crearea unei tabele constă din:

 definirea coloanelor

 definirea restricţiilor de integritate

 specificarea parametrilor de stocare

 definirea cluster-ului în care este inclusă tabela etc.

11
LIMBAJUL SQL-ORACLE.
CREAREA TABELELOR

CREATE TABLE [nume_schema.] nume_tabelă


(
nume_coloana_1 tip_date [DEFAULT expresie],

nume_coloana_2 tip_date [DEFAULT expresie]
);

12
LIMBAJUL SQL-ORACLE.
CREAREA TABELELOR

• Structura unei tabele poate fi creată în următoarele moduri:

1) fără indicarea restricţiilor de integritate

2) cu indicarea restricţiilor la nivel de coloană (inline)

3) cu indicarea restricţiilor la nivel de tabelă (out of line)

4) prin copiere din altă tabelă

Notă: variantele 2 şi 3 pot fi utilizate împreună pentru crearea unei tabele

13
LIMBAJUL SQL-ORACLE.
CREAREA TABELELOR

• Restricţiile de integritate în Oracle:


 PRIMARY KEY

 FOREIGN KEY

 UNIQUE

 NOT NULL

 CHECK

14
LIMBAJUL SQL-ORACLE.
CREAREA TABELELOR
• Restricţiile de integritate:
 pot fi create odată cu tabela sau după crearea acesteia
 pot fi activate sau dezactivate în funcţie de necesităţi (implicit
sunt active)
 pot fi specificate la nivel de coloană sau la nivel de tabelă (cu
excepţia NOT NULL)
 au ataşat un nume intern unic (specificat explicit de utilizator sau
atribuit automat de sistem)
 asigură faptul că valorile unei coloane satisfac o condiţie
declarată
 previn ştergerea unei tabele dacă există dependenţe
15
LIMBAJUL SQL-ORACLE.
CREAREA TABELELOR

 Restricţia PRIMARY KEY ataşată unui ansamblu de coloane (definirea


de cheie primară compusă) poate fi definită numai la nivel de tabelă.
 Restricţia NOT NULL poate fi definită numai la nivel de coloană.
 Restricţia CHECK la nivel de coloană nu poate referi alte coloane ale
aceleiaşi tabele. Definită la nivel de tabelă, însă, restricţia poate face
referire la una sau mai multe coloane.
 Restricţia FOREIGN KEY poate fi definită cu opţiunile:
 ON DELETE CASCADE – ştergerea unei înregistrări din tabela părinte
este autorizată şi implică ştergerea automată a înregistrărilor
corespondente din tabela copil;
 ON DELETE SET NULL – ştergerea unei înregistrări din tabela părinte
este autorizată şi implică transformarea în valori NULL a valorilor cheii
externe din înregistrările corespondente aflate în tabela copil.

16
LIMBAJUL SQL-ORACLE.
CREAREA TABELELOR
1) fără indicarea restricţiilor de integritate

CREATE TABLE angajati


(
marca NUMBER(4),
nume VARCHAR2(20),
prenume VARCHAR2(20),
email VARCHAR2(20),
data_angajare DATE DEFAULT SYSDATE,
salariu NUMBER(8,2),
id_departament NUMBER(3)
);
17
LIMBAJUL SQL-ORACLE.
CREAREA TABELELOR
2) cu indicarea restricţiilor de integritate la nivel de coloană

CREATE TABLE angajati


(
marca NUMBER(4) CONSTRAINT pkAng PRIMARY KEY,
nume VARCHAR2(20) NOT NULL,
prenume VARCHAR2(20) NOT NULL,
email VARCHAR2(20) CONSTRAINT uqMail UNIQUE
CONSTRAINT ckMail CHECK (email LIKE '%@%.%'),
data_angajare DATE DEFAULT SYSDATE,
salariu NUMBER(8,2),
id_departament NUMBER(3) CONSTRAINT fkDep REFERENCES
departamente (id_departament) ON DELETE CASCADE
);
18
LIMBAJUL SQL-ORACLE.
CREAREA TABELELOR
3) cu indicarea restricţiilor de integritate la nivel de tabelă
CREATE TABLE angajati (
marca NUMBER(4),
nume VARCHAR2(20),
prenume VARCHAR2(20),
email VARCHAR2(20),
data_angajare DATE DEFAULT SYSDATE,
salariu NUMBER(8,2),
id_departament NUMBER(3),
CONSTRAINT pkAng PRIMARY KEY (marca),
CONSTRAINT uqMail UNIQUE (email),
CONSTRAINT ckMail CHECK (email LIKE '%@%.%'),
CONSTRAINT nnNume CHECK (nume IS NOT NULL),
CONSTRAINT nnPrenume CHECK (prenume IS NOT NULL),
CONSTRAINT fkDep FOREIGN KEY(id_departament) REFERENCES
departamente (id_departament) ON DELETE CASCADE );
19
LIMBAJUL SQL-ORACLE.
CREAREA TABELELOR

4) prin copiere din altă tabelă

CREATE TABLE angajati_noi


AS
SELECT * FROM angajati
WHERE data_angajare>TO_DATE ('01.01.2010',
'DD.MM.YYYY');

Notă: restricţiile de integritate existente în tabela angajaţi nu se păstrează şi în


noua tabelă

20
LIMBAJUL SQL-ORACLE.
MODIFICAREA STRUCTURII TABELELOR

• Modificarea structurii unei tabele constă din:


 adăugarea unor coloane noi într-o tabelă existentă (eventual cu
indicarea de restricţii sau de valori implicite)

 modificarea coloanelor unei tabele

 specificarea unor restricţii pentru coloane existente

 activarea, dezactivarea sau suprimarea unor restricţii de


integritate

 redenumiri ale coloanelor sau redenumirea tabelei


21
LIMBAJUL SQL-ORACLE.
MODIFICAREA STRUCTURII TABELELOR

ALTER TABLE nume_tabela


ADD (nume_coloana_1 tip_data restrictie,
... nume_coloana_2 tip_data restrictie);

ALTER TABLE nume_tabela


MODIFY (nume_coloana_1 tip_data restrictie,
... nume_coloana_2 tip_data restrictie);

ALTER TABLE nume_tabela


RENAME COLUMN nume_coloana TO nume_nou_coloana;

ALTER TABLE nume_tabela


DROP COLUMN nume_coloana;

ALTER TABLE nume_tabela


DROP (nume_coloana_1, nume_coloana_2);
22
LIMBAJUL SQL-ORACLE.
MODIFICAREA STRUCTURII TABELELOR
ALTER TABLE nume_tabela
ADD CONSTRAINT nume_restrictie tip_restrictie ….;

ALTER TABLE nume_tabela


DROP CONSTRAINT nume_restrictie;

ALTER TABLE nume_tabela


DISABLE CONSTRAINT nume_restricţie;

ALTER TABLE nume_tabela


ENABLE CONSTRAINT nume_restricţie;

ALTER TABLE nume_tabela


RENAME TO nume_nou_tabelă;
23
LIMBAJUL SQL-ORACLE.
MODIFICAREA STRUCTURII TABELELOR

 Vizualizarea structurii unei tabele se realizează prin comanda:


DESCRIBE nume_tabela;
 Ştergerea restricţiei de cheie primară se poate realiza prin comanda:
ALTER TABLE nume_tabela
DROP PRIMARY KEY;
 În cazul în care se încearcă ştergerea unei chei primare referite de o
cheie externă dintr-o tabelă copil, această ştergere nu se poate
efectua decât dacă în comanda ALTER apare opţiunea CASCADE:
ALTER TABLE nume_tabela
DROP PRIMARY KEY CASCADE;

24
LIMBAJUL SQL-ORACLE.
MODIFICAREA STRUCTURII TABELELOR

 Schimbarea definiţiei unei coloane din NULL în NOT NULL se


poate realiza doar dacă există siguranţa că fiecare linie a coloanei
respective este NOT NULL sau dacă tabela nu are date.

 Reducerea dimensiunii unei coloane se poate efectua numai dacă


respectiva coloană conţine doar valori NULL sau conţine deja date
care să respecte noul format.

 Schimbarea tipului de dată al unei coloane se pot efectua numai


dacă respectiva coloană conţine doar valori NULL.

25
LIMBAJUL SQL-ORACLE.
ŞTERGEREA TABELELOR

• Ştergerea unei tabele presupune:


 ştergerea definiţiei sale din dicţionarul BD

 ştergerea indecşilor asociaţi tabelei

 ştergerea privilegiilor conferite în legătură cu tabela

 eliberarea spaţiului de memorie ocupat

 invalidarea funcţiilor, procedurilor, tabelelor virtuale,


sinonimelor referitoare la tabelă

26
LIMBAJUL SQL-ORACLE.
ŞTERGEREA TABELELOR

DROP TABLE nume_tabela;

Pentru a se permite ştergerea unei tabele referite într-o altă tabelă


se utilizează comanda DROP cu opţiunea CASCADE
CONSTRAINTS, în scopul suprimării restricţiilor de
referenţialitate:
DROP TABLE nume_tabela CASCADE CONSTRAINTS;

27
LIMBAJUL SQL-ORACLE.
ŞTERGEREA TABELELOR

Recuperarea tabelelor şterse:


FLASHBACK TABLE nume_tabela TO BEFORE
DROP;

Ştergerea irevocabilă a tabelelor:


DROP TABLE nume_tabela PURGE;

28
CURSUL 8...

• Limbaje relaţionale pentru definirea şi manipularea datelor.


Limbajul SQL. (continuare)

S-ar putea să vă placă și