Presentation is loading. Please wait.

Presentation is loading. Please wait.

CREATE, DROP,ALTER INSERT, UPDATE, DELETE

Similar presentations


Presentation on theme: "CREATE, DROP,ALTER INSERT, UPDATE, DELETE"— Presentation transcript:

1 CREATE, DROP,ALTER INSERT, UPDATE, DELETE
Laboratorul 6 CREATE, DROP,ALTER INSERT, UPDATE, DELETE

2 Crearea unui tabel Reguli pentru numele noului tabel:
începe cu o literă maxim 30 de caractere conţine doar caractere din setul A-Z, a-z, 0-9, _, #, $ este unic în schema curentă nu este un cuvânt rezervat

3 Copierea unui tabel CREATE TABLE nume_tabel [(coloana1, coloana2, …)]
AS subquery; Exemplu: CREATE TABLE copy_emp AS (SELECT * FROM emp);

4 CREATE TABLE ... Sintaxa de bază: CREATE TABLE nume_tabel
(nume_coloana1 tip_date1 [DEFAULT expr1] [,nume_coloana2 tip_date2 [DEFAULT expr2] …])

5 Tipuri de date Şiruri de caractere: Numere: Date calendaristice:
CHAR – maximum 2000 VARCHAR2 – maximum 4000 CLOB – maximum 128 terabytes Numere: NUMBER Date calendaristice: DATE, TIMESTAMP Format binar: RAW, BLOB

6 Restricţii de integritate
Formulate la nivelul coloanei: NOT NULL, cheie primară, cheie unică, cheie externă, CHECK Formulate la nivelul tabelei (după definirea ultimei coloane): cheie primară, cheie unică, cheie externă, CHECK

7 Restricţii de integritate
Reguli: orice restricţie are asociat un nume (explicit sau implicit); Dacă folosim CONSTRAINT atunci numele trebuie dat explicit; Cheile multiple pot fi definite doar la nivelul tabelei; NOT NULL doar la nivelul coloanei.

8 NOT NULL ... nume_coloana tip_date NOT NULL ...
... nume_coloana tip_date nume_restrictie NOT NULL ... ... nume_coloana tip_date CONSTRAINT nume_restrictie NOT NULL ...

9 UNIQUE ... nume_coloana tip_date UNIQUE ...
... nume_coloana tip_date nume_restrictie UNIQUE ... ... nume_coloana tip_date CONSTRAINT nume_restrictie UNIQUE ... ... ,CONSTRAINT nume_restrictie UNIQUE (nume_coloana1 [,nume_coloana1 …]) ...

10 PRIMARY KEY ... nume_coloana tip_date PRIMARY KEY ...
... nume_coloana tip_date nume_restrictie PRIMARY KEY... ... nume_coloana tip_date CONSTRAINT nume_restrictie PRIMARY KEY ... ... ,CONSTRAINT nume_restrictie PRIMARY KEY (nume_coloana1 [,nume_coloana1 …]) ...

11 FOREIGN KEY ... nume_coloana1 tip_date CONSTRAINT nume_restrictie REFERENCES nume_tabel_parinte (nume_coloana2) [ON DELETE CASCADE|SET NULL] ... ... ,CONSTRAINT nume_restrictie FOREIGN KEY (nume_colana1[,nume_coloana2 …]) REFERENCES nume_tabel_parinte (nume_coloana3 [,nume_coloana4…]) [ON DELETE CASCADE|SET NULL] ... În tabela părinte trebuie să fie definită o restricţie de tip UNIQUE sau PRIMARY KEY

12 CHECK ... nume_coloana tip_date CONSTRAINT nume_restrictie CHECK (expr_logica) ... ... ,CONSTRAINT nume_restrictie CHECK (expr_logica) ... Expresia nu poate conţine coloane din alte tabele sau următoarele elemente: SYSDATE, USER, CURRVAL, NEXTVAL, LEVEL, ROWNUM, UID, USERENV.

13 Modificarea restricţiilor
ALTER TABLE nume_tabel ADD CONSTRAINT nume_restrictie tip_restrictie (coalana); ALTER TABLE nume_tabel MODIFY (nume_coalana CONSTRAINT nume_restrictie NOT NULL); ALTER TABLE nume_tabel DROP CONSTRAINT nume_restrictie [CASCADE]; ALTER TABLE nume_tabel DISABLE|ENABLE CONSTRAINT nume_restrictie [CASCADE];

14 ALTER TABLE adăugare: modificare: ALTER TABLE nume_tabel
ADD (nume_coloana1 tip_date1 [DEFAUL expr1] [,nume_coloana2 tip_date2 [DEFAUL expr2] …]) modificare: MODIFY (nume_coloana1 tip_date1 [DEFAUL expr1] schimbarea tipului de date sau micşorarea dimensiunii este posibilă doar dacă nu sunt valori pe coloana respectivă sau dacă nu sunt înregistrări.

15 ALTER TABLE ştergere: ALTER TABLE nume_tabel DROP COLUMN nume_coloana;
doar câte o singură coloană; datele nu pot fi recuperate; nu pot fi şterse toate coloanele unui tabel; poate fi costisitoare. SET UNUSED (nume_coloana); DROP UNUSED COLUMNS;

16 DROP TABLE DROP TABLE nume_tabel; poate fi reversibilă;
FLASHBACK TABLE nume_tabel TO BEFORE DROP; SELECT original_name, droptime FROM user_recyclebin;

17 RENAME, TRUNCATE RENAME nume_tabel TO nume_nou;
TRUNCATE TABLE nume_tabel; şterge toate întregistrările; nu este reversibilă (spre deosebire de DELETE).

18 Comanda INSERT - sintaxa
INSERT INTO nume_tabel [(coloana1, coloana2, …)] VALUES (expresie1, expresie2, …) SELECT …

19 Comanda INSERT INSERT INTO copy_emp
Nume empno ename job mgr hiredate sal comm deptno Tip number(4) char(10) char(9) date number(7,2) number(2) NOT NULL X INSERT INTO copy_emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) VALUES (7788, ’Bill Gates’, ’Doorman’, 7839, ’13-JAN-1986’, 450, 10, 30) - în lista de valori poate fi filosit NULL pentru coloanele ce permit acest lucru

20 Comanda INSERT INSERT INTO copy_emp (empno, ename, job, sal, deptno)
Nume empno ename job mgr hiredate sal comm deptno Tip number(4) char(10) char(9) date number(7,2) number(2) NOT NULL X INSERT INTO copy_emp (empno, ename, job, sal, deptno) VALUES (7788, ’Bill Gates’, ’Doorman’,450, 30) - nu pot lipsi colane ce nu permit NULL pentru că acestea primesc inplicit valoarea NULL

21 Comanda INSERT INSERT INTO copy_emp
Nume empno ename job mgr hiredate sal comm deptno Tip number(4) char(10) char(9) date number(7,2) number(2) NOT NULL X INSERT INTO copy_emp VALUES (7788, ’Bill Gates’, ’Doorman’, 7839, ’13/7/1986’, 450, 10, 30)

22 Comanda INSERT INSERT INTO copy_emp
Nume empno ename job mgr hiredate sal comm deptno Tip number(4) char(10) char(9) date number(7,2) number(2) NOT NULL X INSERT INTO copy_emp VALUES (7788, ’Bill Gates’, ’Doorman’, 450, 30) ORA-00947: not enough values

23 Comanda INSERT INSERT INTO copy_emp
Nume empno ename job mgr hiredate sal comm deptno Tip number(4) char(10) char(9) date number(7,2) number(2) NOT NULL X INSERT INTO copy_emp (empno, ename, job, hiredate, sal, comm) VALUES (7788, ’Bill Gates’, ’Doorman’, SYSDATE, 450, 450*0.1) - clauza VALUES poate conţine valori speciale, expresii sau funcţii

24 Comanda INSERT INSERT INTO copy_emp
(empno, ename, job, hiredate, sal, comm) SELECT empno+1, ename, NULL, 0, comm*2 FROM emp WHERE deptno=20 lista de coloane a comenzii INSERT poate lipsi dacă subinterogarea returnează aceleaşi coloane(ca număr, tip de date şi ordine) cu cele dint tabela destinaţie

25 Comanda UPDATE UPDATE nume_tabel SET coloana1 = expresie1
[WHERE conditie] - expresiei poate fi o subinterogare ce returneaza o singura valoare (o singura coloana si o singura inregistrare), si apare intre paranteze

26 Comanda UPDATE UPDATE nume_tabel SET (coloana1, coloana2) =
(SELECT expresie1, expresie2 FROM …) [WHERE conditie] - subinterogare returneaza câte o singura înregistrare pentru fiecare înregistrare ce trebuie actualizată în tabela destinaţie

27 Comanda DELETE DELETE [FROM] nume_tabel [WHERE conditie]

28 Flashback Query sistemul păstrează informaţii despre modificările făcute asupra datelor (valorile vechi pentru UPDATE, respectiv toată înregistrarea pentru DELETE) pentru aprox. 15 min. SELECT versions_starttime, versions_endttime, ... FROM nume_tabel VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE


Download ppt "CREATE, DROP,ALTER INSERT, UPDATE, DELETE"

Similar presentations


Ads by Google