SQL db exam


1.                 Componentele limbajului SQL2.
DML – data manipulation language, implementation – select, insert, update, delete, merge; consult, actualizare, stergerea obiectelor create de DDL precum tabele, index, bazat pe algebra si calculul relational.
DDL – data definition language, maintenance, physical design – create, alter, drop, rename, truncate, comment; defineste, modifica, elimina schemele de relatii din tabel; creare index, definirea viziunilor, specificarea constringerilor de integritate.
DCL – data control language, maintenance, implementation – grant, revoke; definirea permiselor de acces.
Transition Control – commit, rollback, savepoint.
2.                 Tipuri de date numerice în SQL2 şi Transact SQL. Exemple.
Intregi: INTEGER 4 octeti, SMALLINT 2 octeti;
zecimale: NUMERIC (m,d), DECIMAL(m,d); m – numar de cifre; d – cifre dupa virgula;
numerice aproximative: REAL (7 cifre semnificative, precizie simpla), FLOAT / DOUBLE PRECISION (15 cifre semnificative).
Transaction control statements manage changes made by DML statements. The
transaction control statements are:COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION.
3.                 Tipuri de date secvenţe de caractere în SQL2 şi Transact SQL. Exemple.
CHAR(N), CHARACTER(N) – secventa cu lungime fixa;
VARCHAR(N), CHAR VARYING(N), CHARACTER VARYING(N) – secventa de lungime variabila cu cel mult N caractere.
Transaction control statements manage changes made by DML statements. The
transaction control statements are:COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION.
4.                 Tipuri de date temporale în SQL2 şi Transact SQL. Exemple.
DATE yyyy-mm-dd, TIMESTAMP yyyy-mm-dd-hh-mm-ss-…, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE, HOUR hh-mm-ss. Transaction control statements manage changes made by DML statements. The
transaction control statements are:COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION.
5.                 Definirea schemei unei relaţii în SQL2. Exemple.
În proiectarea bazelor de date se definesc relaţii sau asocieri între mulţimile de entităţi componente. O relaţie este o corespondenţă între entităţi din una sau mai
multe mulţimi de entităţi.
CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
....
)
Relatii binare (două relaţii implicate):
Relaţia „unul-la-unul” este cel mai simplu tip de relaţie. Ea este relaţia prin care unui element din mulţimea E1 îi corespunde un singur element din mulţimea E2 şi reciproc. Un exemplu ar fi împărţirea informaţiilor despre studenţi în două entităţi: informaţiile personale fiind stocate în tabelul StudPersonal şi informaţiile care se modifică de la an la an în tabela Studenti. Pentru a realiza efectiv această relaţie trebuie introdus atributul CodStud şi în tabela StudPersonal. Astfel cele două se transformă astfel:
•  Studenti cu atributele: CodStud,  An, Grupa, Media, Bursa
•  StudPersonal cu atributele: CodStud, CNP, Nume, Init, Prenume, Data Nasterii, Loc Naşterii, Tata, Mama, Adresa
Relaţia „unul-la-multe” este o relaţie prin care unui element din mulţimea E1 îi corespund unul sau mai multe elemente din mulţimea E2, dar unui element din mulţimea E2 îi corespunde un singur element din mulţimea E1. Un exemplu este că într-o facultate sunt mai mulţi studenţi,  şi se precizează că un student aparţine unei singure facultăţi din cadrul aceleiaşi universităţi. Trebuie introdus atributul CodFac şi în tabela Studenti. Astfel cele două se transformă astfel:
•  Facultate cu atributele: CodFac, Denumire, Adresa, Nume Decan
•  Studenti cu atributele:  CodStud, CodFac, An, Grupa, Media, Bursa
Relaţia „multe-la-multe” este o relaţie prin care unui element din mulţimea E1 îi corespund unul sau mai multe elemente din mulţimea E2, şi reciproc. De fapt, pentru modelarea acestei relaţii se foloseşte o relaţie suplimentară, de tip unul-la-multe pentru fiecare din relaţiile iniţiale. Exemplu: un student participă la mai multe materii, cursuri, iar o materie este frecventată de mai mulţi studenţi. S-a introdus o tabelă suplimetară numită Note, care va face legătura între tabelele Materii şi Studenţi. Tabelele iniţiale se modifică astfel:
•  Studenti cu atributele: CodStud, CodFac, An, Grupa, Media, Bursa
•  Materii cu atributele: CodMaterie, Denumire, An, Nume Profesor
•  Note cu atributele: CodStud, CodMaterie, Nota, Data
 Prin introducerea atributului Data în tabela Note s-a soluţionat problema care apare atunci când un student trebuie să fie examinat de mai multe ori până la promovarea materiei respective.
Relaţiile unare folosesc doar o singură relaţie, aceasta fiind asociată cu ea însăşi. Exemplul clasic al acestei relaţii unare este cazul managerului unei companii, care la rândul său este tot un angajat al acelei companii. Relaţiile unare se modelează la fel ca şi relaţiile binare.
6.                 Constrângeri de comportament în SQL2. Exemple.
Constringerea comportamentala CHECK este o conditie care defineste informatia valida la introducerea informatiilor in tabel. Constringerea de verificare se aplica pentrufiecare linie de tabel. Constringerea trebuie sa fie un predicat. Se poate referi la o coloana sau mai multe coloane din tabel. Rezultatul predicatului poate fi TRUE, FALSE, sau UNKNOWN, in dependenta de prezenta lui NULL. Daca rezultatul e UNKNOWN, atunci constringerea nu este violata si linia poate fi introdusa in tabel. Aceasta este inversul predicatelor in WHERE in SELECT sau UPDATE. De exemplu in tabelul cu produse putem adauga o constringere la pretul produsului si la cantitatea sa ca ele sa nu fie negative: PRICE >= 0; QUANTITY >= 0. Constringerile CHECK sunt folosite pentru a asigura validitatea informatiilor in baza de date si integritatea sa. Fiecare astfel de constringere trebuie sa fie definita in declaratiile CREATE TABLE sau ALTER TABLE cu sintaxa: CREATE TABLE table_name (...,CONSTRAINT constraint_name CHECK (predicate),...)
ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK (predicate)
Daca constringerea se refera la o singura coloana se poate de specificat constringerea ca parte din definitia coloanei:
CREATE TABLE table_name (...column_name type CHECK (predicate),...)
Constringerea NOT NULL este echivalenta cu contringerea CHECK cu un predicat IS NOT NULL: CHECK (column IS NOT NULL).
7.                 Constrângeri structurale în SQL2. Exemple.
Leaga obiectele din baza de date si reflecta structura BD. Valori necunoscute – un atribut poate sau nu admite valori necunoscute (se specifica folosind (NOT) NULL). Cheie primara – garanteaza unicitatea, minimalitatea, obliga multimea de atribute sa fie cheie primara. Aceasta se sorteaza si se scrie odata in tabel: primary key. Integritatea referentiala – garanteaza existenta cheii externe: references, foreign key. Cheie secundara – unicitatea atributelor astfel declarate UNIQUE aditional NOT NULL. Cheile INDEX fac ca sistemul sa accelereze accesul la aceste date prin pointeri.
8.                 Modificarea şi suprimarea schemei relaţionale în SQL2. Exemple.
ALTER TABLE nume tabel
ADD (nume coloana tip data) / DROP COLUMN nume coloana
DROP TABLE – suprimarea tabelului
9.                 Cele mai simple interogări (numai cu proiecţia) în SQL2. Exemple.
Interogare este o operatie prin care se obtin datele dorite dintr-o baza de date selectate conform unui anumit criteriu (conditie). Proiectia – operatie relationala unara prin care se selecteaza o submultime de atribute ale relatiei. SELECT – consulta o relatie sau mai multe. Select * from tabel.
10.            Interogări cu criterii de selecţie în SQL2. Exemple.
Comparatie, not null, is, exists, case
SELECT DISTINCT / all…
SELECT * FROM Persons
WHERE City='Sandnes'
11.            Interogări cu funcţii de agregare în SQL2. Exemple.
Funcțiile de agregare revin cu o singură linie de rezultate bazate pe grupuri de linii. Funcțiile de agregare de obicei sunt folosite cu clauza GROUP BY într-o declarație SELECT unde Oracle Database divide în grupuri liniile tabelului sau viziunii interogate. Citeva exemple:
AVG – revine cu valoarea medie a unei expresii; primește ca argument orice tip numeric sau non numeric care poate fi convertit în tip numeric;
COUNT – revine cu numărul de linii după o interogare;
MIN – revine cu valoarea minimă a unei expresii;
MAX – revine cu valoarea minimă a unei expresii;
SUM – revine cu suma valorilor din expresie; primește ca argument orice tip numeric sau non numeric care poate fi convertit în tip numeric;
COLLECT – are ca argument o coloană de orice tip și creează un tabel imbricat din liniile selectate de tipul datele de intrare.
12.            Interogări cu agregarea tuplurilor în SQL2. Exemple.
Adesea se urmăreşte studiul tuplurilor unei relaţii în grupuri, constituite ţinând seama de valoarea unora din atribute, iar agregarea se face  numai în interiorul fiecărui grup.
Clauza GROUP BY este folosită în conjuncție cu funcțiile agregate pentru a grupa setul de rezultate după una sau mai multe coloane. Sintaxa pentru utilizarea acestei clauze: SELECT column1, column2, ... column_n, aggregate_function (expresie) FROM tables WHERE predicates GROUP BY column1, column2, ... column_n;
Oracle aplică funcțiile de agregare pentru fiecare grup de linii și revine cu o linie de rezultat pentru fiecare astfel de grup.
13.            Interogări de actualizare (inserare şi ştergere) a datelor în SQL2. Exemple.
Insert into – introduce o noua linie in tabel
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
Delete – sterge linii din tabel
DELETE FROM table_name
WHERE some_column=some_value;
ALTER TABLE nume tabel
ADD (nume coloana tip data) / DROP COLUMN nume coloana;
DROP TABLE – suprimarea tabelului
14.            Interogări de actualizare (modificare) a datelor în SQL2. Exemple.
Actualizarea inregistrarilor existente
UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value
15.            Interogări cu uniuni în SQL2. Exemple.
Operatorul UNION este folosit pentru a combina setul de rezultate a 2 sau mai multe SELECT. Fiecare declaratie SELECT in UNION trebuie sa aiba acelasi numar de coloane. Coloanele trebuie s aiba tipuri de date similare. Coloanele trebuie sa fie ordonate la fel. SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
Operatorul UNION selecteaza doar valori distincte implicit. Pentru a permite duplicatele se foloseste UNION ALL.
16.            Interogări cu intersecţii în SQL2. Exemple.
Combina rezultatele liniilor comune din ambele interogari de SELECT.
SELECT product_id FROM inventories
INTERSECT
SELECT product_id FROM order_items;
17.            Interogări cu diferenţe în SQL2. Exemple.
Combina liniile unice revenite dupa primul SELECT nu si de al doilea.
SELECT product_id FROM inventories
MINUS
SELECT product_id FROM order_items;
18.            Interogări cu joncţiuni în SQL2. Exemple.
Jonctiune / NATURAL JOIN – interogare care combina linii din 2 sau mai multe tabele, viziuni sau viziuni materializate. Oracle Database face jonctiuni de fiecare data mai multe denumiri de tabele apar in clauza FROM. Lista de selectari a interogarii poate selecta orice coloane din aceste tabele. Daca oricare 2 coloane selectate au denumiri comune atunci trebuie de atribuit referinte la tabelele respective pentru a evita ambiguitatea. Majoritatea interogarilor cu jonctiuni contin conditii de jonctiune in FROM sau in WHERE. Conditia compara 2 coloane din diferite tabele. Daca se combina perechi de linii fiecare continind o linie din un tabel si alta din alt tabel si se evalueaza TRUE atunci se execute jonctiunea.
CROSS JOIN – Oracle combina fiecare linie din tabel cu fiecare linie din alt tabel. Produsul cartezian intotodeauna genereaza un numar mare de linii si este rar folositor.
INNER JOIN – simple join este o jonctiune a 2 sau mai multe tabele care revine doar cu liniile care satisfac conditia de joinctiune.
OUTER JOIN – revine cu toate liniile care satisfac conditia de jonctiune sideasemenea cu citeva sau toate liniile dintr-un tabel pentru care conditia nu e satisfacuta.
JOIN (autojonctiunea) – numele tabelului apare de 2 ori in FROM si e urmat de aliasuri la tabele care califica numele coloanelor in conditia de JOIN. Revine cu liniile care satisfac conditia de JOIN.
EQUIJOIN – jonctiune c contine in conditie operatorul de egalitate. Combina 2 linii care au valori egale in anumite coloane.
LEFT JOIN – revine cu toate liniile din tabelul sting chiar daca nu coincid cu cele din tabelul din dreapta.
RIGHT JOIN – revine cu toate liniile din tabelul drept char daca ele nu coincid cu cele din tabelul sting. Return all rows from the right table, even if there are no matches in the left table
FULL JOIN – revine cu liniile care nu coincid in unul din tabele.
19.            Interogări imbricate cu ALL  în SQL2. Exemple.
Operatorul ALL compara o valoare cu fiecare valoare revenita dupa o subinterogare. >ALL – mai mare decit maximum; ’it prog’;
20.            Interogări imbricate cu ANY  în SQL2. Exemple.
Sinonim al lui SOME – compara o valoarea cu fiecare dintre valorile returnate de subinterogare. Functionarii care nu activeaza ca prog it si al caror salariu e mai mic decit cel putin al unui prog it. any – mai mult decit minim; =any – echivalent cu IN. Select employee id, name, jobid, salary from employees where salary’prog it’;
21.            Interogări imbricate cu EXISTS  în SQL2. Exemple.
Operator folosit pentru a testa daca o valoare obtinuta de interogarea externa exista in setul de valori extrase de interogarea interioara. Daca se extrage cel putin o intregistrare -> true, daca nu False. Daca o valoare este gasita in subinteroagre cautarea in interogarea imbricata nu continua. Se evalueaza true. Date referitoare la angajatii cu cel putin un subaltern: select employeeid, lastname, departmentid from emloyees outer where exists (select ‚x’ from employees where managerid=outer.employeeid);
22.            Interogări imbricate cu IN  în SQL2. Exemple.
Este o conditie de comunitate. Testeaza valoarea membrilor intr-o lista de valori sau subinterogare. IN – egal cu oricare membru testat. Este echivalent cu =ANY. SELECT * FROM employees
  WHERE job_id IN
  ('PU_CLERK','SH_CLERK');
SELECT * FROM employees
  WHERE salary IN
  (SELECT salary
   FROM employees
   WHERE department_id =30);
NOT IN – echivalent cu !=ALL. Evalueaza FASE daca oricare membru din set e NULL. SELECT * FROM employees
  WHERE salary NOT IN
  (SELECT salary
   FROM employees
  WHERE department_id = 30);
SELECT * FROM employees
  WHERE job_id NOT IN
  ('PU_CLERK', 'SH_CLERK');
23.            Interogări imbricate cu „=”  în SQL2. Exemple.
=any – echivalent cu IN. >=all; urmatoarele sunt echivalente:
select Dept
from Angajati
where Salariu = any (select max(Salariu)
from Angajati
sau
 select Deptfrom Angajat
 where Salariu >= all (select Salariu  
from Angajati)
24.            Definirea utilizatorilor şi accesului la baza de date în SQL2. Exemple.
Utilizeaza instructiunea CREATE USER pentru a crea si configura un utilizator a bazei de date care este un cont cu care poti sa intri in baza de date si sa stabilesti metodele prin care Oracle permite accesul utilizatorului. Trebuie sa ai sistemul de privilegii pentru crearea utilizatorului. Cind se creeaza un utilizator cu CREATE USER privilegiile utilizatorilor sunt goale. Pentru a intra in baza de date utilizatorul trebuie sa aiba sistemul de privilegii CREATE SESSION. Deci, dupa crearea utilizatorului trebuie sa-i oferim cel putin sistemul de privilegii CREATE SESSION.
CREATE USER sidney
    IDENTIFIED BY out_standing1
    DEFAULT TABLESPACE example
    QUOTA 10M ON example
    TEMPORARY TABLESPACE temp
    QUOTA 5M ON system
    PROFILE app_user
    PASSWORD EXPIRE;
INDENTIFIED BY
Password – db user
Externally – external user, acest utilizator poate fi autentificat de un serviciu extern ca sistem de operare, sau orice altceva terta.
Globally – glabal user, trebuie sa fie autorizat de directorul intreprinderii acestui serviciu (Oracle Internet Directory).
CREATE USER global_user
   IDENTIFIED GLOBALLY AS 'CN=analyst, OU=division1, O=oracle, C=US'
   DEFAULT TABLESPACE example
   QUOTA 5M ON example;
Pentru a oferi cuiva privilegii trebuie sa ai privilegii ADMIN OPTION sau sa ai privilegiul GRANT ANY PRIVILEGE . Daca oferi unui utilizator privilegiu atunci baza de date adauga acest privilegiu si utilizatorul poate imediat sa se foloseasca de ele. Pentru a oferi utilizatorului hr privilegiul CREATE SESSION pentru a intra in baza de date se emite urmatoarea instructiune: GRANT CREATE SESSION TO hr;
25.            Definirea permiselor asupra relaţiilor în SQL2. Exemple.
Privilegii: select, insert, delete, update, references, index, resources, alter drop. GRANT ON TO
GRANT
     CREATE ANY MATERIALIZED VIEW
   , ALTER ANY MATERIALIZED VIEW
   , DROP ANY MATERIALIZED VIEW
   , QUERY REWRITE
   , GLOBAL QUERY REWRITE
   TO dw_manager
   WITH ADMIN OPTION;
GRANT SELECT ON sh.sales TO warehouse_user;
GRANT warehouse_user TO dw_manager;
GRANT ALL ON bonuses TO hr
   WITH GRANT OPTION;
26.            Definirea sinonimilor în SQL2. Exemple.
Foloseste instructiunea CREATE SYNONYM pentru a crea un sinonim care este un nume alternativ pentru un tabel, viziune, secventa, procedura, functie stocata, pachet, viziune materializata, clasa JAVA de scheme de obiecte, obiecte definite de utilizator, sau orice alt sinonim. Sinonimele ofera independenta si transparenta de locatie. Ele premit aplicatiile sa functioneze fara modificari indiferent de carui utilizator apartine tabelul sau viziunea si indeferent caree bd apartine tabelul sau viziunea. Dar sinonimele nu inlocuiesc privilegiile asupra obiectele bd. Privilegiile respective trebuie oferite unui utilizator inainte ca acesta sa utilizeze sinonimele. Putem sa ne referim la sinonime in urmatoarele instructiuni DML: SELECT, INSERT, UPDATE, DELETE, FLASHBACK TABLE, EXPLAIN PLAN, si LOCK TABLE. Putem sa ne referim la sinonime in urmatoarele instructiuni DDL: AUDIT, NOAUDIT, GRANT, REVOKE, si COMMENT. CREATE SYNONYM nume FOR obiect; DROP SYNONYM nume; specificam PUBLIC pentru a crea sinonim public accesibil tuturor utilizatorilor. Dar fiecare utilizator trebuie sa aiba privilegiile respective de utilizare a obiectului respectiv asupra caruia se face sinonimul.
27.            Blocarea relaţiilor şi gestiunea tranzacţiilor în SQL2. Exemple.
Foloseste LOCK TABLE pentru a bloca unul sau mai multe tabele, partitii, sau subpartitii de tabel intr-un mod specificat. Aceasta blocare oermite sau respinge accestul la un tabel sau viziune altor utilizatori atita timp cit se executa o operatiune. Unele forme de blocare pot fi plasate pe acelasi tabel. Altele permit doar un fel de blocare pentru un tabel. Un tabel blocat ramine astfel pina cind asupra tranzactiei nu a fost efectuat COMMIT sau ROLLBACK total sau la un SAVEPOINT. O blocare niciodata nu impiedica alti utilizatori sa interogheze tabelul. O interogare niciodata nu bloccheaza tabelului. Cititorii nu blocheaza scriitorii si invers. Tabelul sau viziunea trebuie sa fie schema ta sau tu trebuie sa ai privilegiul LOCK ANY TABLE, sau privilegiu asupra obiectului respectiv.
Instructiunile urmatoare blocheaza tabelul employees in modul exclusive dar nu asteapta daca alt utilizator deja l-a blocat:
LOCK TABLE employees
   IN EXCLUSIVE MODE
   NOWAIT;
Blocheaza tabelul employees care e accesibil prin legatura la bd de la distanta:
LOCK TABLE employees@remote
   IN SHARE MODE;
SHARE permite interogari dar interzice actualizari asupra tabelului blocat. EXCLUSIVE permite interogari dar interzice orice alta actiune asupra tabelului blocat.
Tranzactiile administreaza schimbarile facute de instructiunile DML. Instructiunile tranzactiilor sunt: COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION. Foloseste SET TRANSACTION pentru a stabili tranzactia curenta ca read-only
sau read/write, sau a stabili nivelul de izolare, sau pentru a o atribui unui segment rollback specific. Operatiunile executate de instructiunea SET TRANSACTION afecteaza doar tranzactia curenta nu si pe alti utilizatori sau tranazactii. Tranzactia se sfirseste cint se emite instructiunea COMMIT sau ROLLBACK. Urmatoarele pot fi executate noaptea fiecarei utime zile din fiecare luna pentru a numara produsele si cantitatile prezente in depozitul din Toronto. Acest raport nu va fi afectat de orice alt utilizator care ar putea adauga sau exclude ceva din inventar la un alt depozit.
COMMIT;
SET TRANSACTION READ ONLY NAME 'Toronto';
SELECT product_id, quantity_on_hand FROM inventories
   WHERE warehouse_id = 5
   ORDER BY product_id;
COMMIT;
Primul COMMIT asigura ca SET TRANSACTION este prima instuctiune in tranzactie. Ultimul COMMIT nu face permanente schimbarile in bd. Doar termina tranzatia read-only. Utilizeaza ROLLBACK pentru a anula lucrul facut in tranzactia curenta sau pentru a anula manual lucrul facut de o tranzactie dubioasa distribuita FORCE TRANSACTION. Foloseste SAVEPOINT pentru a identifica punctul unei tranzactii spre care vrei mai tirziu sa faci roll back.
Pentru a actualiza salatiul lui Banda si Greene in tabelul hr.employees, verifica ca salariul total al departamentului sa nu treaca de 314,000, apoi introduce salariul pentru Greene:
UPDATE employees
    SET salary = 7000
    WHERE last_name = 'Banda';
SAVEPOINT banda_sal;
UPDATE employees
    SET salary = 12000
    WHERE last_name = 'Greene';
SAVEPOINT greene_sal;
SELECT SUM(salary) FROM employees;
ROLLBACK TO SAVEPOINT banda_sal;
UPDATE employees
    SET salary = 11000
    WHERE last_name = 'Greene';
COMMIT;
28.            Definirea viziunilor în SQL2. Exemple.
Foloseste CREATE VIEW pentru a defini o viziune care este un tabel logic bazat pe unul sau mai multe tabele sau viziuni. O viziune in sine nu contine informatii. Tabelele asupra carora este creata viziunea sunt numite tabele de baza. Poti crea o viziune de obiect sau o viziune relationala care accepta LOB, tipuri de obiecte, tipuri REF, tabel imbricat. O viziune de obiect este o viziune de un tip creat de utilizator unde fiecare linie contine obiecte, fiecare obiect are un identificator unic de modificare a obiectului. Crearea unei viziuni asupra tabelului employees numita emp_view. Aceasta arata angajatii in departamentul 20 si salariul lor anual:
CREATE VIEW emp_view AS
   SELECT last_name, salary*12 annual_salary
   FROM employees
   WHERE department_id = 20;
Crearea unei viziuni de restrictionare a tabelului employees si definirea unei constringeri unice asupra viziunii coloanei email si o constringere a cheii primare pentru viziunea viziunii coloanei emp_id:
CREATE VIEW emp_sal (emp_id, last_name,
      email UNIQUE RELY DISABLE NOVALIDATE,
   CONSTRAINT id_pk PRIMARY KEY (emp_id) RELY DISABLE NOVALIDATE)
   AS SELECT employee_id, last_name, email FROM employees;
29.            Definirea indecşilor în SQL2. Exemple.
Index – schema obiectului care contine o inregistrare pentru fiecare valoare care apare in coloana indexata a tabelului sau clusterului si ofera acees direct si rapid la linii. Oracle Database are citeva tipuri de indexuri: normal, bitmap, partitionati, funcții, domain.
Arata cum indexul ord_customer_ix asupra coloanei customer_id a tabelului oe.orders a fost creat:
CREATE INDEX ord_customer_ix
   ON orders (customer_id);
30.            Definirea constrângerilor şi aserţiunilor în SQL2. Exemple.
Foloseste constraint pentru a defini o constringere de integritate – regula care pune restrictii asupra valoriloe unei bd. Oracle Database permite createa a 6 tipuri de constringeri:
A NOT NULL constraint prohibits a database value from being null.
■ A unique constraint prohibits multiple rows from having the same value in the
same column or combination of columns but allows some values to be null.
■ A primary key constraint combines a NOT NULL constraint and a unique
constraint in a single declaration. That is, it prohibits multiple rows from having
the same value in the same column or combination of columns and prohibits
values from being null.
■ A foreign key constraint requires values in one table to match values in another
table.
■ A check constraint requires a value in the database to comply with a specified
condition.
■ A REF column by definition references an object in another object type or in a
relational table. A REF constraint lets you further describe the relationship
between the REF column and the object it references.
si declararea lor poate fi efectuata in 2 feluri:
Ca parte din definitia unei coloane sau atribut. Aceasta se numeste specificatie inline.Ca parte din definita tabelului. Se numeste specificatie out-of-line.
The following statement is a variation of the statement that created the sample table sh.promotions. It defines inline and implicitly enables a
unique key on the promo_id column (other constraints are not shown):
CREATE TABLE promotions_var1
    ( promo_id         NUMBER(6)
                       CONSTRAINT promo_id_u  UNIQUE
    , promo_name       VARCHAR2(20)
    , promo_category   VARCHAR2(15)
    , promo_cost       NUMBER(10,2)
    , promo_begin_date DATE
    , promo_end_date   DATE
    ) ;
Asertiune – constringere de integritate care se refera la mai multe elemente din mai multe tabele. CREATE ASSERTION  richmgr CHECK NOT EXISTS (SELECT * FROM department, employees where employee.name=department.mgrname ADD employee.salary<50000 dar="dar" font="font" in="in" nu="nu" oracle="oracle" standart.="standart." sunt="sunt">

Popular Posts

Expresii frazeologice

Corespondenta economica

Exam la filozofie: Primele 24 intrebari

Analiza economico - financiara

Motive

Integrale

Finantele Intreprinderii exam

Dreptul Afacerilor T1

Genuri si specii

Integrarea Economica