Sunteți pe pagina 1din 7

Limbaje relaţionale pentru definirea şi

Limbajul pentru definirea datelor (LDD)


manipularea datelor
 Descrierea datelor este stocată în dicţionarul BD.
 SGBD relaţionale oferă seturi de comenzi speciale pentru
descrierea, respectiv pentru manipularea datelor. Acestea pot
 Comenzile LDD pot fi clasificate în funcţie de nivelul de
face parte din acelaşi limbaj sau pot face parte din limbaje
separate. organizare a datelor la care acţionează:
 În funcţie de domeniul din teoria relaţională pe care se bazează,  nivel conceptual
limbajele relaţionale se pot clasifica în:
 Limbaje bazate pe calculul relaţional: QUEL - INGRES, PostgreSQL  nivel logic
 Limbaje bazate pe algebra relaţională: ISBL (Information System Based
 nivel fizic
Language)

 Limbaje bazate pe transformare: SQL (Structured Query Language)


 Limbaje bazate pe grafică: QBE (Query by Example)

1 2

Limbajul pentru definirea datelor (LDD) Limbajul pentru definirea datelor (LDD)
 Comenzile LDD care acţionează la nivel logic:
 Comenzile LDD care acţionează la nivel conceptual: Comandă LDD Descriere
CREATE VIEW creează o tabelă virtuală
Comandă LDD Descriere
DROP VIEW şterge o tabelă virtuală
CREATE DATABASE creează dicţionarul BD şi alte spaţii necesare

DROP DATABASE şterge BD


 Comenzile LDD care acţionează la nivel fizic:
ALTER DATABASE actualizează proprietăţi ale BD
Comandă LDD Descriere
creează structura de date şi restricţiile de integritate,
CREATE TABLE pe care le stochează în dicţionarul BD ataşează un fişier de indexare unei tabele în scopul
CREATE INDEX de a mări viteza de acces la datele unei tabele
DROP TABLE şterge tabela
DROP INDEX şterge indexul
ALTER TABLE actualizează structura unei tabele
construieşte o structură fizică care grupează anumite
CREATE CLUSTER date din BD
....
DROP CLUSTER şterge un cluster
3 4

1
Limbajul pentru manipularea datelor (LMD) Limbajul pentru manipularea datelor (LMD)

 Caracteristici generale:  Caracteristici funcţionale:

 tratarea datelor la nivel de ansamblu  facilităţile de interogare / regăsire a datelor sunt cele mai puternice în
BDR faţă de alte tipuri de BD
 operatorii relaţionali implementaţi folosesc instrucţiuni din limbajul  facilităţile de actualizare a datelor sunt identice atât pentru tabelele
relaţional existent în SGBDR, care poate avea la bază: calculul de bază, cât şi pentru cele virtuale

relaţional, algebra relaţională, transformarea sau grafica  Caracteristici calitative:


 singurul limbaj relaţional standardizat internaţional este SQL  puterea selectivă, dată de posibilitatea regăsirii multicriteriale
 uşurinţa de învăţare şi utilizare
 utilizatorii limbajelor relaţionale sunt specialiştii
 eficacitatea utilizării, dată de posibilitatea optimizării timpului şi
spaţiului ocupat

5 6

Limbajul SQL Limbajul SQL

 SQL (Structured Query Language) este un limbaj de descriere şi Versiuni ale


An lansare Particularităţi
standardului SQL
manipulare acceptat de toate sistemele de gestiune a bazelor de
SQL-86 1986 Prima versiune SQL standardizată
date relaţionale. SQL-89 1989 + restricţii de integritate
Versiune revizuită complet; stă la baza versiunilor
SQL-92 1992
 Atât ANSI (American National Standards Institute), cât şi ISO ulterioare
SQL:1999 1999 + facilităţi ale limbajelor orientate-obiect
(International Standards Organization) îl consideră drept un
SQL:2003 2003 + facilităţi OLAP, comanda MERGE, facilităţi XML
standard pentru limbajele de interogare a bazelor de date SQL:2006 2006 + suport XML

relaţionale. + declanşatori INSTEAD OF, comanda


SQL:2008 2008 TRUNCATE
SQL:2011 2011 + suport BD temporale

7 8

2
Limbajul SQL Limbajul SQL-Oracle.
Crearea tabelelor
 Există două moduri de lucru cu baze de date şi anume:  Tabela reprezintă o structură de date care conţine datele unei
 SQL interactiv, în care un utilizator tastează o singură comandă, BDR.
care este trimisă imediat bazei de date. Rezultatul unei interogări
 În general, crearea unei tabele constă din:
interactive este o tabelă de date în memoria principală;
 definirea coloanelor
 SQL încorporat (embedded SQL), în care declaraţiile SQL sunt
plasate într-un program de aplicaţie. Interfaţa poate fi pe bază de  definirea restricţiilor de integritate
videoformate sau linie de comandă. SQL poate fi static (în cazul în
care întreaga comandă este specificată la momentul scrierii  specificarea parametrilor de stocare
programului) sau dinamic (pe baza datelor introduse de utilizator
se formează comanda pentru baza de date).  definirea cluster-ului în care este inclusă tabela etc.

9 10

Limbajul SQL-Oracle. Limbajul SQL-Oracle.


Crearea tabelelor Crearea tabelelor

CREATE TABLE [nume_schema.] nume_tabelă  Structura unei tabele poate fi creată în următoarele moduri:
(
nume_coloana_1 tip_date [DEFAULT expresie], 1) fără indicarea restricţiilor de integritate
… 2) cu indicarea restricţiilor la nivel de coloană
nume_coloana_2 tip_date [DEFAULT expresie]
3) cu indicarea restricţiilor la nivel de tabelă
);
4) prin copiere din altă tabelă

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

11 12

3
Limbajul SQL-Oracle. Limbajul SQL-Oracle.
Crearea tabelelor Crearea tabelelor

 Restricţiile de integritate:
 Restricţiile de integritate în Oracle:
 pot fi create odată cu tabela sau după crearea acesteia
 PRIMARY KEY

 FOREIGN KEY  pot fi activate sau dezactivate în funcţie de necesităţi (implicit sunt
active)
 UNIQUE
 pot fi specificate la nivel de coloană sau la nivel de tabelă (cu
 NOT NULL excepţia NOT NULL)
 CHECK  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


13 14

Limbajul SQL-Oracle. Limbajul SQL-Oracle.


Crearea tabelelor Crearea tabelelor
 Restricţia PRIMARY KEY ataşată unui ansamblu de coloane (definirea 1) fără indicarea restricţiilor de integritate
de cheie primară compusă) poate fi definită numai la nivel de tabelă.

 Restricţia NOT NULL poate fi definită numai la nivel de coloană. CREATE TABLE angajati
(
 Restricţia CHECK la nivel de coloană nu poate referi alte coloane ale marca NUMBER(4),
aceleiaşi tabele. Definită la nivel de tabelă, însă, restricţia poate face
referire la una sau mai multe coloane. nume VARCHAR2(20),
prenume VARCHAR2(20),
 Restricţia FOREIGN KEY poate fi definită cu opţiunile: email VARCHAR2(20),
 ON DELETE CASCADE – ştergerea unei înregistrări din tabela parinte data_angajare DATE DEFAULT SYSDATE,
este autorizată şi implică ştergerea automată a înregistrărilor
corespondente din tabela copil; salariu NUMBER(8,2),
 ON DELETE SET NULL – ştergerea unei înregistrări din tabela parinte id_departament NUMBER(3)
este autorizată şi implică transformarea în valori NULL a valorilor cheii );
externe din înregistrările corespondente aflate în tabela copil. 15 16

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

Limbajul SQL-Oracle. Limbajul SQL-Oracle.


Crearea tabelelor Modificarea structurii tabelelor

4) prin copiere din altă tabelă


 Modificarea structurii unei tabele constă din:

CREATE TABLE angajati_noi  adăugarea unor coloane noi într-o tabelă existentă (eventual cu
indicarea de restricţii sau de valori implicite)
AS
SELECT * FROM angajati  modificarea coloanelor unei tabele
WHERE data_angajare>TO_DATE ('01.01.2010', 'DD.MM.YYYY');
 specificarea unor restricţii pentru coloane existente

Notă: restricţiile de integritate existente în tabela angajaţi nu se păstrează şi în  activarea, dezactivarea sau suprimarea unor restricţii de integritate
noua tabelă
 redenumiri ale coloanelor sau redenumirea tabelei

19 20

5
Limbajul SQL-Oracle. Limbajul SQL-Oracle.
Modificarea structurii tabelelor Modificarea structurii tabelelor
ALTER TABLE nume_tabela ALTER TABLE nume_tabela
ADD (nume_coloana_1 tip_data restrictie, ADD CONSTRAINT nume_restrictie tip_restrictie ….;
... nume_coloana_2 tip_data restrictie);
ALTER TABLE nume_tabela
ALTER TABLE nume_tabela
DROP CONSTRAINT nume_restrictie;
MODIFY (nume_coloana_1 tip_data restrictie,
... nume_coloana_2 tip_data restrictie);
ALTER TABLE nume_tabela
ALTER TABLE nume_tabela DISABLE CONSTRAINT nume_restricţie;
RENAME COLUMN nume_coloana TO nume_nou_coloana;
ALTER TABLE nume_tabela
ALTER TABLE nume_tabela
ENABLE CONSTRAINT nume_restricţie;
DROP COLUMN nume_coloana;

ALTER TABLE nume_tabela ALTER TABLE nume_tabela


DROP (nume_coloana_1, nume_coloana_2); 21 RENAME TO nume_nou_tabelă; 22

Limbajul SQL-Oracle. Limbajul SQL-Oracle.


Modificarea structurii tabelelor
Ştergerea tabelelor
 Vizualizarea structurii unei tabele se realizează prin comanda:
DESCRIBE nume_tabela;  Ştergerea unei tabele presupune:
 Ştergerea restricţiei de cheie primară se poate realiza prin comanda:
ALTER TABLE nume_tabela  ştergerea definiţiei sale din dicţionarul BD
DROP PRIMARY KEY;
 ştergerea indecşilor asociaţi tabelei
 În cazul în care se încearcă ştergerea unei chei primare referite de o
cheie externă dintr-o tabelă copil, această ştergere nu se poate  ştergerea privilegiilor conferite în legătură cu tabela
efectua decât dacă în comanda ALTER apare opţiunea CASCADE:
ALTER TABLE nume_tabela  eliberarea spaţiului de memorie ocupat
DROP PRIMARY KEY CASCADE;
 invalidarea funcţiilor, procedurilor, tabelelor virtuale, sinonimelor
 Schimbarea definiţiei unei coloane din NULL în NOT NULL se poate referitoare la tabelă
realiza doar dacă există siguranţa că fiecare linie a coloanei respective
este NOT NULL sau dacă tabela nu are date.  Ştergerea unei tabele este ireversibilă.
 Reducerea dimensiunii unei coloane sau schimbarea tipului de dată al
acesteia se pot efectua numai dacă respectiva coloană nu conţine
valori sau conţine doar valori NULL. 23 24

6
Limbajul SQL-Oracle.
Ştergerea tabelelor CURSUL 8...

DROP TABLE nume_tabela;  Limbaje relaţionale pentru definirea şi manipularea


datelor. Limbajul SQL. (continuare)
 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;

25

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