You are on page 1of 5

View

Virtual Table- nu contin date proprii


– vederi ale tabelei de baza
-reprezentari logice ale tabelelor sau alte view

CREATE VIEW nume


AS SELECT coloane
FROM tabela
WHERE cond

-reduce complexitatea executarii cererilor bazate pe SELECT –ului complexe (cu multe tabele )
-se pot vedea aceleasi date in diverse moduri

=>
CREATE [OR REPLACE] [FORCE/ NOFORCE]
VIEW nume [aliasuri_coloane]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constr.]]
[WITH READ ONLY [CONSTRAINT constr.]]

 OR REPLACE –modificare
 FORCE- emite view chiar daca tabela de baza nu exista
 WITH CHECK OPTION –update/ insert se pot face doar pe randurile din view [verif constrangerile
din tabela de baza]
 WITH READ ONLY- nu se pot face op DML pe VIEW

OBS:
1. SELECT – NU POATE CONTINE ORDER BY LA CREARE
2. LA MODIFICARE (OR REPLACE)- SE PASTREAZA PRIVILEGIILE
3. ALIASURILE COL POT APAREA DUPA: NUME_VIEW SAU IN SELECT (SUBQUERY)

VIEW :
a) SIMPLE
-o singura tabela
- nu contine functii de grup
- nu pot contine grupuri
- operatii DML permite
b) COMPLEX
-una sau mai multe tabele
-contine functii de grupuri
-contine grupuri
-DML –nu intotdeauna

OBS:
-SE FOLOSESTE CA O TABELA OBISNUITA ( SELECT, INSERT INTO, UPDATE, DELETE)
 PRIN VIEW – SE FAC MOIFICARI ASUPRA TABELEI DE BAZA (IMPLICIT)

DML- LA COMPLEX VIEW


- Cannot remove a row if the view constrains:
- Group functions
- A group by clause
- The distinct word
- Pseudocolumn ROWNUM keyword
- Modify date (UPDATE)
- Columns defined by expression
- ADD {TOATE COL NOT NULL – TREBUIE INCLUSE IN VIEW}
- Doesn`t include NOT NULL columns in the base tables

 DROP VIEW nume


-creatrul view-ului
-users cu drop any view privilege
-se sterge definitia VIEW-ului
-nu se sterge tabela de baza

 INLINE VIEW
- SIMPLIFICA QUERIES COMPLEXE (IN LOC DE JOIN)
- In FROM se utilizeaza cu subqueries ca si cum ar fi nume de tabela;
- Inline view are ALIAS;

 TOP-N-ANALYSIS
- SE FOLOSESTE CU INLINE SUBQUERY (VIEW)
- ROWNUM- assign a row number to the result set; is used to order the data and retun top n;
Ex:
SELECT ROWNUM as RANK year, title
FROM (SELECT year, title
FROM d_cds
ORDER BY year)
//inline view
WHERE ROWNUM <=4
-PRIMI 4 ORDONATI DUPA AN- TREBUIE INTAI ORDONATI => INLINE VIEW
 WHERE must use < si <=

 SEQUENCE
- IS DATABASE OBJECT
- Un obiect util pt generarea numerelor pt PK/UK (UNIQUE KEY)

CREATE SEQUENCE nume


[INCREMENT BY n]
[START WITH n]
[MAX VALUE] [MIN VALUE]
[CYCLE] [CACHE n] – implicit 20 //cycle- nu la pk! Cache- cate se pastreaza in memorie (cade
sistemul=> se pierd)

 USER_SEQUENCES
-Pseudocolumns
 NEXTVAL
-EXTRAGE VAL URM DIN SECVENTA (E GENERAT UN NOU NR)
 CURRVAL
-ULT NR GENERAT DE NEXTVAL

EX:
INSERT INTO departments
VALUES (dep_deptid_seq.NEXTVAL, ‘suport’, 100) //dep –id

Sintaxa:
Nume_secventa.NEXTVAL
Nume_secventa.CURRVAL
- SE POT FOLOSI:
1. Lista SELECT care nu e parte a unui subquery
2. Intr-un subquery de la INSERT (in SELECT)
3. VALUE –de la INSERT
4. SET- de la UPDATE
- NU SE POT FOLOSI:
1. VIEW (SELECT) /DEFAULT value la CREATE/ ALTER TABLE
2. SELECT cu Distinct
3. SELECT CU GROUP BY, HAVING sau ORDER BY
4. Subquery in SELECT, DELETE, UPDATE

Goluri in secventa (Gaps)


- Reland inapoi o cerinta care contine o frecventa, nr-ul e pierdut
- Cand cade sistemul (se pierd si cele din cash)
- Daca secventa e ut. de mai multe tabele

 USER_SEQUENCE
 ALTER SEQUENCE nume
INCREMENT BY
MAX VALUE n …
-START WITH – NU!
-NUMAI VAL URM SUNT AFECTATE
-MAXVALUE >P CEA DE LA CREATE
-OWNER SAU USER CU PRIVILEGII
 DROP SEQUENCE nume

INDEX –schema object


-mareste viteza de extragere a randurilor /acces rapid la randuri
-ROWID =ADRESA CATRE RANDUL RESP
-INDEPENDENT DE TABELA
-STERG TABELA =SE STERG INDECSII ASOCIATI
 TIPURI
-UNIQUE INDEX
(GENERATI AUTOMAT DE SERVER CAND CREAM CONSTRANGERI PK/UK SAU CREATI MANUAL
DAR ESTE NERECOMANDAT)
-NONUNIQUE INDEX
(CREATI DE USER, INDEXUL PE FOREIGN KEY MARESTE VITEZA)

CREATE INDEX index_name


ON tabela_name (column, column)
-val nule nu sunt incluse in index
-privilegii care trebuie: CREATE TABLE/ CREATE ANY INDEX

 SHOUD BE CREATED ONLY IF:


-column contains a wide range of values
-column contains large number of null values
-coloane folosite des in WHERE DE LA JOIN
-queryies retrieve less than 2-4 % of rows
 SHOULD NOT  MULTE DML-URI (TREBUIE RECREAT INDEXUL)
Composite index nu contine null values
User_indexes  indecsii
User_ind_columns coloanele utilizate la indexare
Function based indexes indecsi create pe baza de expresii (cand nu stim cum au fost stocate
datele in table)  desc
Ex:
CREATE INDEX nume
ON employees (upper (last_name))

 Se folosesc cu where (expresie/ coloana de la index) is NOT NULL si ORDER BY (Expresie/


coloana de la index) [desc]
DROP INDEX NUME TABELA RAMANE
DACA STERG TABELE:
-indecsii si constragerile se sterg automat
-view si sequence nu se sterg

You might also like