Documente Academic
Documente Profesional
Documente Cultură
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
1
Limbajul pentru manipularea datelor (LMD) Limbajul pentru manipularea datelor (LMD)
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
5 6
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
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ă
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)
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
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;
6
Limbajul SQL-Oracle.
Ştergerea tabelelor CURSUL 8...
25