Download presentation
Presentation is loading. Please wait.
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.