10_sql - creare tabele
TRANSCRIPT
-
8/18/2019 10_SQL - Creare Tabele
1/98
STUD MATR NUME AN GRUPA DATAN LOC TUTOR PUNCTAJ CODS
---- ------- -- ------ --------- ---------- ----- ------- ----1456 GEORGE 4 1141A 12-MAR-82 BUCURESTI 2890 11
1325 VASILE 2 1122A 05-OCT-84 PITESTI 1456 390 111645 MARIA 3 1131B 17-JUN-83 PLOIESTI 1400 113145 ION 1 2112B 24-JAN-85 PLOIESTI 3251 1670 212146 STANCA 4 2141A 15-MAY-82 BUCURESTI 620 213251 ALEX 5 2153B 07-NOV-81 BRASOV 1570 21
- -
2
4311 ADRIAN 3 2431A 31-JUL-83 BUCURESTI 450 243514 FLOREA 5 2452B 03-FEB-81 BRASOV 3230 241925 OANA 2 2421A 20-DEC-84 BUCURESTI 4311 760 242101 MARIUS 1 2412B 02-SEP-85 PITESTI 3514 310 244705 VOICU 2 2421B 19-APR-84 BRASOV 4311 1290 24
-
8/18/2019 10_SQL - Creare Tabele
2/98
SPEC si BURSACODS NUME DOMENIU
----- ---------- ---------------
11 MATEMATICA STIINTE EXACTE21 GEOGRAFIE UMANIST
24 ISTORIE UMANIST
3
TIP PMIN PMAX SUMA-------------------- ----- ----- -----
FARA BURSA 0 399
BURSA SOCIALA 400 899 100
BURSA DE STUDIU 900 1799 150
BURSA DE MERIT 1800 2499 200
BURSA DE EXCEPTIE 2500 9999 300
-
8/18/2019 10_SQL - Creare Tabele
3/98
OBIECTIVScopul acestui capitol este de a prezenta
elementele limbajului pentru descriereadatelor (DDL) referitoare la:Tipurile de date permise pentru coloaneletabelelor,
4
rearea e no a e e,Constrângeri de integritate,Modificarea structurii unei tabele,Modificarea şi activarea constrângerilor deintegritate,Dicţionarul de date al sistemului.
-
8/18/2019 10_SQL - Creare Tabele
4/98
TIPURI DE DATESistemul Oracle pune la dispoziţie un set optim
de tipuri de date care pot fi asociatecoloanelor unei tabele, grupate în mai multecategorii:Tipuri numerice scalare
5
pur sca are ş r e carac ereTipuri scalare binareTipuri pentru date calendaristice, timp şiinterval de timpTipuri LOB (large object)Tipuri compuse: TABLE şi VARRAY
-
8/18/2019 10_SQL - Creare Tabele
5/98
TIPURI DE DATE (2) Aceste tipuri, cu unele diferenţe în ceea ce
priveşte dimensiunea maximă admisă, potfi folosite şi în limbajul procedural PL/SQL.În continuare sunt prezentate tipurile din
6
primele cinci categorii.Crearea unei tabele cu coloane de tipTABLE şi VARRAY şi manipularea datelorde acest fel nu este prezentată în acestcapitolul.
-
8/18/2019 10_SQL - Creare Tabele
6/98
TIPURI NUMERICE SCALARTip Descriere
NUMBER Număr real de dimensiune variabilă, cu 38 decifre semnificative, având valori între 1E-130şi 10E125.
NUMBER(n) Număr întreg cu maximn cifreNUMBER n, z Număr real cun cifre dintre carez zecimale
7
DEC, DECIMAL,NUMERIC
Subtipuri pentru NUMBER. Numere în virgulă fixă cu 38 de cifre semnificative.
DOUBLEPRECISION, FLOAT
Subtipuri pentru NUMBER. Numere în virgulă mobilă cu 38 de cifre semnificative.
REAL Subtip pentru NUMBER. Numere în virgulămobilă cu 18 cifre semnificative.
-
8/18/2019 10_SQL - Creare Tabele
7/98
TIPURI NUMERICE SCALARE (Tip Descriere
INTEGER, INT,SMALLINT
Subtipuri pentru NUMBER. Numere întregicu maxim 38 de cifre
BINARY_INTEGERÎntregi între -231 şi 231 .NATURAL,POSITIVE
Subtipuri pentru BINARY_INTEGER.Numere întregi non-negative, respectivpozitive.
8
,POSITIVEN
_ .Numere întregi nenule non-negative,respectiv pozitive.
SIGNTYPE Subtip al BINARY_INTEGER. Poate luadoar valorile -1, 0 şi 1.
PLS_INTEGER Întregi între -231 şi 231 . Similar cu
BINARY_INTEGER dar operaţiile cu astfelde numere sunt mai rapide şi în caz dedepăşire se ridică o excepţie.
-
8/18/2019 10_SQL - Creare Tabele
8/98
SIRURITip Descriere
CHAR(n), CHAR Şir de caractere de lungime fixă, egală cu n . Valoarea maximă pentru n este 2000. Dacă nlipseşte, şir de caractere de lungime 1.
CHARACTER,CHARACTER(n)
Identice cu cele anterioare. Introduse pentrucompatibilitatea cu alte sisteme.
9
în seturi de caractere naţionale (multioctet)
VARCHAR2(n) Şir de caractere de lungime variabilă egală cun . Valoarea maximă pentru n este 4000.
STRING(n), VARCHAR(n)
Identice cu VARCHAR2, introduse pentrucompatibilitatea cu alte sisteme
NVARCHAR(n) Analog cu VARCHAR. Poate stoca şiruriscrise în seturi de caractere naţionale(multioctet)
-
8/18/2019 10_SQL - Creare Tabele
9/98
SIRURI (2)Tip Descriere
LONG Şir de caractere de maxim 231
octeţi. Este permisă doar o singură coloană de acest tip pentru o tabelă.
ROWID Poate stoca un identificator pentru o liniedintr-o tabelă. Pentru conversia la/de la şirde caractere (18 caractere) se pot folosi
10
func iile SQL ROWIDTOCHAR respectivCHARTOROWID.
UROWID Universal ROWID. Poate stoca unidentificator logic şi fizic de linie într-otabelă, indexată sau nu precum şi unidentificator de linie extern (non-Oracle). Nu
este necesară folosirea funcţiilor de conversiela/de la şir de caractere (conversieautomată).
-
8/18/2019 10_SQL - Creare Tabele
10/98
TIPURI BINARE
Tip DescriereRAW(n) Similar cu VARCHAR2 dar conţin
11
binare. Valoarea maximă pentrun este de2000.LONG RAW Similar cu LONG dar conţine date b
-
8/18/2019 10_SQL - Creare Tabele
11/98
DATE, TIMP SI INTERVALTip Descriere
DATE Dată calendaristică (secol, an, lună, zi, oră,
minut, secundă).TIMESTAMP[(n)] Extensie a tipului DATE. Conţine şi fracţiunide secundă. Dacă este prezent, n specificănumărul de zecimale pentru acestea. Implicitn = 6
TIMESTAMP [(n)] Extinde tipul TIMESTAMP conţinând şi o
12
(GMT)TIMESTAMP [(n)]WITH LOCAL TIMEZONE
Similar cu tipul anterior dar la stocarea înbaza de date valorile sunt convertite la orazonei bazei de date iar la regăsire la ora zoneiaplicaţiei client.
INTERVAL YEAR[(n)] TO MONTH
Se stochează intervale de ani şi luni. Precizian specifică numărul de cifre pentru an (între 0
şi 4, implicit 2).INTERVAL DAY[(z)] TO SECOND[(s)]
Similar cu tipul anterior, dar pentru intervalede zile şi secunde. valorile z şi s sunt
preciziile pentru zile, respectiv secunde (0-9,implicit 2 pentru z şi 6 pentru s ).
-
8/18/2019 10_SQL - Creare Tabele
12/98
TIPURI LARGE OBJECT Aceste tipuri, introduse în ultimele versiuni
ale sistemului, permit stocarea unor cantităţimari de date pe coloanele unei tabele sau aunei referinţe (numită şi locator) către un
13
.Manipularea valorilor de acest tip se face înPL/SQL cu ajutorul pachetelor de proceduri şifuncţii puse la dispoziţie de sistem.Caracteristicile lor sunt următoarele:
-
8/18/2019 10_SQL - Creare Tabele
13/98
TIPURI LOB – cont.Tip DescriereCLOB Şir de caractere de până la 4 GB. Se
recomandă ca în aplicaţiile noi să fie folositîn locul lui LONG.
NCLOB Similar cu CLOB dar se pot stoca şiruri
14
utilizând seturi na ionale de caractere.Dimensiunea maximă este de asemenea de 4GB
BLOB Date binare de dimensiune până la 4 GBBFILE Date binare de dimensiune până la 4 GB
stocate în fişiere externe. Nu participă la
tranzacţii, replicare şi pot fi doar citite nu şimodificate.
-
8/18/2019 10_SQL - Creare Tabele
14/98
CREATE TABLECea mai simplă formă a cererii SQL de creare a unei noitabele are următoarea sintaxă:
CREATE TABLE [schema.]nume_tabela(nume_coloana_1 tip_coloana_1 [DEFAULTexpresie_1],
nume_coloana_2 ti _coloana_2 DEFAULT
15
expresie_2],. . .
nume_coloana_n tip_coloana_n [DEFAULTexpresie_n]);
unde:nume_tabela este numele tabelei care se crează,nume_coloana_1, nume_coloana_2, ... sunt numelecoloanelor acesteia
-
8/18/2019 10_SQL - Creare Tabele
15/98
CREATE TABLE – cont.tip_coloana_1, tip_coloana_2, ... reprezintătipurile de date pentru coloanele respective, alesedintre cele prezentate în paragraful anterior, cuspecificarea, dacă este cazul, a dimensiunii maximesau preciziei,
16
_ valoare implicită care este introdusă automat în aceacoloană în cazul în care la adăugarea unei noi linii nuse specifică o valoare pe coloana respectivă,schema este numele de utilizator Oracle alproprietarului noii tabele. Valoarea implicită pentruacesta este numele utilizatorului care executăcererea de creare.
-
8/18/2019 10_SQL - Creare Tabele
16/98
TREBUIE CA:Utilizatorul are drepturile necesare (dreptul sauprivilegiul - în terminologia uzuală - de CREATETABLE).Există spaţiu de stocare pentru noua tabelă.Numele tabelei şi al coloanelor respectă restricţiile
17
,literă, conţine litere, cifre şi caracterele _, $, #, nueste cuvânt rezervat Oracle). Sunt permise şi altecaractere dacă numele este inclus între ghilimele.Nu există deja un alt obiect cu acelaşi nume înaceeaşi schemă (pentru acelaşi utilizator Oracle).
-
8/18/2019 10_SQL - Creare Tabele
17/98
LITERE MARI SI MICICa şi în cazul cuvintelor cheie, literele
mici şi cele mari sunt considerate egale în numele de tabele şi coloane.
18
exemple este aceeaşi dacă la creare sefoloseşte oricare din numele STUD,Stud sau StuD.
-
8/18/2019 10_SQL - Creare Tabele
18/98
OBSERVATIIExpresia din clauza opţională DEFAULTtrebuie să se evalueze la o valoare de tipcompatibil cu al coloanei respective. Ea poateconţine:
Constante numerice sau şir de caractere,
19
Funcţii SQL, inclusiv SYSDATE sau USER.dar nu poate conţine:Numele unei coloane,Numele unei pseudocoloane. (de exemplupseudocoloanele definite de o secvenţă: NEXTVALsau CURRVAL).
-
8/18/2019 10_SQL - Creare Tabele
19/98
EXEMPLUCREATE TABLE STUD(
MATR NUMBER(4), NUME VARCHAR2(10), AN NUMBER(1) DEFAULT 1,
20
DATAN DATE,LOC VARCHAR2(10) DEFAULT 'BUCURESTI',TUTOR NUMBER(4),
PUNCTAJ NUMBER(4) DEFAULT 0,CODS NUMBER(2) );
-
8/18/2019 10_SQL - Creare Tabele
20/98
OBSERVAM CA:MATR, AN, TUTOR, PUNCTAJ şi CODS care conţinvalori de tip număr întreg au fost definite ca
NUMBER(n) unde n este 1, 2 sau 4,NUME, GRUPA şi LOC sunt şiruri de caractere delungime variabilă definite ca VARCHAR2,DATAN care conţine data naşterii studentului este de
21
pu ,Pentru unele dintre coloane au fost asociate valoriimplicite care vor fi stocate automat în acestea dacăla inserarea unei noi linii nu se specifică o valoare,nulă sau nenulă.
Valorile implicite sunt compatibile cu tipul coloanelorrespective (întreg sau şir de caractere, după caz).
-
8/18/2019 10_SQL - Creare Tabele
21/98
Crearea unei tabele în care se stochează date
despre evenimente: momentul de început,durata şi o descriere a acestora.CREATE TABLE EVENIMENT(
22
,
"MOMENT INCEPUT" TIMESTAMP(3) WITH LOCALTIME ZONE,
DURATA INTERVAL DAY(2) TO SECOND(3),
"DESCRIERE (PE LARG)" LONG);
-
8/18/2019 10_SQL - Creare Tabele
22/98
OBSERVAM CA:COD: un număr întreg de maxim 10 cifre,MOMENT ÎNCEPUT: conţine momentul începutuluiunui eveniment în forma: data, ora, minutul, secundaşi miimile de secundă: TIMESTAMP(3) arată căfracţiunile de secundă sunt memorate cu 3 zecimale.Numele coloanei conţine un spaţiu şi a trebuit pus
23
.DURATA: durata evenimentului în zile, ore, minute,secunde şi fracţiuni de secundă. Numărul de zilepoate avea maxim 2 cifre iar numărul de secundemaxim 3 zecimale.DESCRIERE (PE LARG): conţine un text de descrierea evenimentului care poate avea până la 2 GBcaractere. Se folosesc ghilimelele pentru că numelecoloanei conţine spaţii şi paranteze.
-
8/18/2019 10_SQL - Creare Tabele
23/98
CREATE din SELECTCREATE TABLE [schema.]nume_tabela
[(descriere_coloana_1, ...,descriere_coloana_n)]
AS
24
_
Se crează o tabelă având numele
specificat şi aceeaşi structură cu arezultatului returnat de SELECT.
-
8/18/2019 10_SQL - Creare Tabele
24/98
CREATE din SELECT (2)Descrierea coloanelor nu este prezentă în cerere:
Numele coloanelor tabelei create precum şi tipulacestora este identic cu al celor din rezultatulcererii SELECT.Noua tabelă nu mo tene te nici una dintre
25
constrângerile de integritate ale tabelei/tabelelordin care provine rezultatul.Dacă în lista de expresii din clauza SELECTexistă unele care nu returnează pentru capul detabel al rezultatului un nume valid de coloanăeste obligatorie folosirea unor aliasuri decoloană.
-
8/18/2019 10_SQL - Creare Tabele
25/98
CREATE din SELECT (3)CREATE TABLE STUD11 AS
SELECT MATR, NUME, PUNCTAJ*1.1 "PUNCTAJ MARIT"FROM STUD WHERE CODS = 11;Conţinutul tabelei STUD11 va fi următorul:
MATR NUME PUNCTAJ MARIT----- ---------- -------------
26
1456 GEORGE 31791325 VASILE 4291645 MARIA 1540
iar descrierea structurii sale este: Nume coloana Tip
------------- ------------- MATR NUMBER(4) NUME VARCHAR2(10)
PUNCTAJ MARIT NUMBER
-
8/18/2019 10_SQL - Creare Tabele
26/98
CREATE din SELECT (4)Crearea tabelei se face inclusiv în cazul în carecererea SELECT nu returnează nici o linie. Deexemplu:CREATE TABLE STUD100
AS
27
, , . MARIT"
FROM STUD WHERE CODS = 100;
va avea ca efect crearea tabelei STUD100 avândaceeaşi structură cu STUD11 dar aceasta nu vaconţine nici o linie.
-
8/18/2019 10_SQL - Creare Tabele
27/98
CREATE din SELECT (5)Cererea conţine descrierea coloanelor:Descrierea unei coloane are următoarea formă:
nume_coloana [DEFAULT expresie] [constrângeri_integritate]Numărul de descrieri de coloană trebuie să fie egal cunumărul de coloane din rezultatul cererii SELECT.Numele coloanelor tabelei create este cel din descriere iar
28
SELECT.Dacă descrierea unei coloane conţine clauza DEFAULTexpresie, se asociază acestei coloane valoarea implicitărespectivă.Noua tabelă nu moşteneşte nici una dintre constrângerilede integritate ale tabelei/tabelelor din care provinerezultatul dar primeşte constrângerile de integritate dindescriere, dacă acestea există
-
8/18/2019 10_SQL - Creare Tabele
28/98
CREATE din SELECT (6)CREATE TABLE STUD11(NUMAR DEFAULT 0 NOT NULL, NUME, PUNCTE NOT NULL)
ASSELECT MATR, NUME, PUNCTAJ*1.1 "PUNCTAJ MARIT"FROM STUD
WHERE CODS = 11;
29
, ,prima are o valoare implicită iar două dintre ele au asociată oconstrângere de tip NOT NULL (nu se pot stoca valori nule peacele coloane):
Nume coloana Null? Tip Implicit-------------- -------- ------------- ---------
NUMAR NOT NULL NUMBER(4) 0 NUME VARCHAR2(10)
PUNCTE NOT NULL NUMBER
-
8/18/2019 10_SQL - Creare Tabele
29/98
CONSTRANGERIConstrângerile de integritate reprezintă reguli pe carevalorile conţinute într-o tabelă trebuie să le respecte.Ele previn introducerea de date eronate în baza dedate şi definesc forma corectă a valorilor respectivedar nu iau în consideraţie semnificaţia acestora.
30
de sistemul de gestiune atunci când au loc operaţii demodificare a conţinutului tabelelor (adăugare,ştergere şi modificare linii).În cazul în care noile valori nu sunt valide operaţia demodificare este rejectată de sistem şi se generează oeroare.
-
8/18/2019 10_SQL - Creare Tabele
30/98
TIPURI DE CONSTRANGERINOT NULL: valorile nu pot fi nulePRIMARY KEY: defineşte cheia primarăa unei tabeleUNI UE: define te o altă cheie a
31
tabeleiFOREIGN KEY: defineşte o cheie străină(externă)CHECK: introduce o condiţie (expresielogică).
-
8/18/2019 10_SQL - Creare Tabele
31/98
CONSTRANGERI (2)Fiecare constrângere de integritate poateavea asociat un nume specificat la creareatabelei care permite activarea saudezactivarea constrângerii şi alte operaţii cu
32
.În cazul în care nu se asociază un astfel denume sistemul generează automat unul.Locul definirii unei constrângeri de integritate
în cererea de creare a unei tabele poate fi:
-
8/18/2019 10_SQL - Creare Tabele
32/98
CONSTRANGERI (3)În descrierea unei coloane, dacă aceaconstrângere se referă doar la aceasta (uzualse spune despre o astfel de constrângere căeste definităla nivel de coloană ),În continuarea listei de descrieri de coloane
33
(la nivel de tabelă ).În funcţie de locul unde se găseşte, sintaxadefinirii unei constrângeri poate fi diferită.
Pentru fiecare tip de constrângere suntprezentate ambele sintaxe şi exemple defolosire a lor.
-
8/18/2019 10_SQL - Creare Tabele
33/98
DETALIERE CONSTRANGERNOT NULL: valorile nu pot fi nulePRIMARY KEY: defineşte cheia primarăa unei tabeleUNI UE: define te o altă cheie a
34
tabeleiFOREIGN KEY: defineşte o cheie străină(externă)CHECK: introduce o condiţie (expresielogică).
-
8/18/2019 10_SQL - Creare Tabele
34/98
NOT NULL Acest tip de constrângere se aplică unei
coloane a noii tabele şi specifică faptul căaceasta nu poate conţine valori nule. Eloate fi definit doar la nivel de coloană i
35
are următoarea sintaxă:coloana [CONSTRAINT nume_constr] NOT NULL
-
8/18/2019 10_SQL - Creare Tabele
35/98
EXEMPLUCREATE TABLE SPEC
(CODS NUMBER(2), NUME VARCHAR2(10) CONSTRAINT
36
,
DOMENIU VARCHAR2(15) NOT NULL );
-
8/18/2019 10_SQL - Creare Tabele
36/98
DETALIERE CONSTRANGERNOT NULL: valorile nu pot fi nulePRIMARY KEY: defineşte cheia primarăa unei tabeleUNI UE: define te o altă cheie a
37
tabeleiFOREIGN KEY: defineşte o cheie străină(externă)CHECK: introduce o condiţie (expresielogică).
-
8/18/2019 10_SQL - Creare Tabele
37/98
PRIMARY KEY Sintaxa la nivel de coloană:coloana [CONSTRAINT nume_constrangere]PRIMARY KEY
in x l niv l l :
38
[,CONSTRAINT nume_constrangere] PRIMARYKEY(lista_coloane)
-
8/18/2019 10_SQL - Creare Tabele
38/98
EXEMPLECREATE TABLE SPEC(CODS NUMBER(2) CONSTRAINT SPEC_PK PRIMARY
KEY, NUME VARCHAR2(10),
DOMENIU VARCHAR2(15));
39
Si la nivel de tabela:CREATE TABLE SPEC(CODS NUMBER(2),
NUME VARCHAR2(10),
DOMENIU VARCHAR2(15),CONSTRAINT SPEC_PK PRIMARY KEY(CODS));
-
8/18/2019 10_SQL - Creare Tabele
39/98
PK DIN >1 ATRIBUTCREATE TABLE BURSA(
PMIN NUMBER(4),
PMAX NUMBER(4),
TIP VARCHAR2(20),
40
,
CONSTRAINT BURSA_PK PRIMARY KEY(PMIN,PMAX));
-
8/18/2019 10_SQL - Creare Tabele
40/98
DETALIERE CONSTRANGERNOT NULL: valorile nu pot fi nulePRIMARY KEY: defineşte cheia primarăa unei tabeleUNI UE: define te o altă cheie a
41
tabeleiFOREIGN KEY: defineşte o cheie străină(externă)CHECK: introduce o condiţie (expresielogică).
-
8/18/2019 10_SQL - Creare Tabele
41/98
UNIQUESintaxa la nivel de coloană:coloana [CONSTRAINT nume_constrangere]UNIQUE
in x l niv l l :
42
[,CONSTRAINT nume_constrangere]
UNIQUE(lista_coloane)
-
8/18/2019 10_SQL - Creare Tabele
42/98
EXEMPLUL 1Dacă în tabela de SPEC nu pot existaniciodată două specializări cu acelaşi nume,definiţia anterioară se completează cu oconstrângere de tip UNIQUE:
43
CODS NUMBER(2) CONSTRAINT SPEC_PK
PRIMARY KEY, NUME VARCHAR2(10) CONSTRAINT NUMES_UNIC
UNIQUE,DOMENIU VARCHAR2(15));
-
8/18/2019 10_SQL - Creare Tabele
43/98
EXEMPLUL 1 – cont. Aceeasi constrangere, la nivel detabela:
CREATE TABLE SPEC(
44
CODS NUMBER( ) CONSTRAINT SPEC_PK PRIMARYKEY,
NUME VARCHAR2(10),
DOMENIU VARCHAR2(15),
CONSTRAINT NUMES_UNIC UNIQUE(NUME));
-
8/18/2019 10_SQL - Creare Tabele
44/98
EXEMPLUL 2În tabela BURSA nu pot exista două burse cu aceeaşisumă. Cererea de creare anterioară devine:CREATE TABLE BURSA(PMIN NUMBER(4),PMAX NUMBER(4),
45
,
SUMA NUMBER(4) CONSTRAINT SUMA_UNICAUNIQUE,
CONSTRAINT BURSA_PK PRIMARY KEY(PMIN,PMAX));
În acest caz în tabelănu pot existadouă linii care conţinaceeaşi valoare nenulă pe coloana SUMA darpot existaoricâte linii cu valori nule pe această coloană.
-
8/18/2019 10_SQL - Creare Tabele
45/98
CE E UNIC?În cazul în care o cheie definită cu UNIQUE conţinemai multe coloane, verificarea se face astfel:
nu există două linii care au aceleaşi valori nenulepentru toate coloanele cheii.nu există două linii care au aceleaşi valori nenule
46
.Exemplu: În cazul unei tabele NUMERE creată cucererea:
CREATE TABLE NUMERE( NUMAR1 NUMBER(4),
NUMAR2 NUMBER(4),UNIQUE(NUMAR1, NUMAR2));
-
8/18/2019 10_SQL - Creare Tabele
46/98
-
8/18/2019 10_SQL - Creare Tabele
47/98
CONTINUT INVALID NUMAR1 NUMAR2------ ------
NULL NULL NULL NULL
1000 2000
48
1000 3000 NULL 20001000 NULL1000 2000
NULL 20001000 NULL
-
8/18/2019 10_SQL - Creare Tabele
48/98
DETALIERE CONSTRANGERNOT NULL: valorile nu pot fi nulePRIMARY KEY: defineşte cheia primarăa unei tabeleUNI UE: define te o altă cheie a
49
tabeleiFOREIGN KEY: defineşte o cheie străină(externă)
CHECK: introduce o condiţie (expresielogică).
-
8/18/2019 10_SQL - Creare Tabele
49/98
FOREIGN KEY Prin această constrângere valorile uneicoloane/unor coloane sunt forţate să fiedoar dintre cele ale cheii unei tabele(cheie primară sau UNIQUE).
50
o oane e cons r nse n aces eformează ceea ce se numeşte înterminologia de specialitate ocheiestraina sau cheie externa iarconstrângerea mai este denumită şideintegritate referentiala .
-
8/18/2019 10_SQL - Creare Tabele
50/98
SINTAXALa nivel de coloană:coloana [CONSTRAINT nume_constrangere]
REFERENCES tabela(coloana)[ON DELETE CASCADE |
ON DELETE SET NULL]
51
La nivel de tabelă:[,CONSTRAINT nume_constrangere] FOREIGNKEY(lista_coloane)REFERENCES tabela(lista_coloane)
[ON DELETE CASCADE |ON DELETE SET NULL]
-
8/18/2019 10_SQL - Creare Tabele
51/98
În cazul tabelei STUD avem două coloanecare pot avea asociată o astfel deconstrângere:ColoanaCODSpoate fi constrânsă să conţină doar
valori ale cheii primare a tabeleiSPEC(formată
52
intr-o co oan cu ace aşi nume - D .ColoanaTUTOR poate fi constrânsă să conţinădoar valori nenule ale cheii primare a luiSTUD-MATR .
În acest caz cererea anterioara de crearepentru STUD devine:
-
8/18/2019 10_SQL - Creare Tabele
52/98
STUD:CREATE TABLE STUD( MATR NUMBER(4) PRIMARY KEY,
NUME VARCHAR2(10), AN NUMBER(1) DEFAULT 1,GRUPA VARCHAR2(6),
53
,
LOC VARCHAR2(10) DEFAULT 'BUCURESTI',TUTOR NUMBER(4) REFERENCES STUD(MATR),PUNCTAJ NUMBER(4) DEFAULT 0,CODS NUMBER(2),CONSTRAINT CODS_FK FOREIGN KEY(CODS)
REFERENCES SPEC(CODS) );
-
8/18/2019 10_SQL - Creare Tabele
53/98
OBSERVATIIÎn cazul în caretabela SPEC nu există încăsistemul va semnala eroarea:ORA-00942: tableor view does not exist În cazul în care tabelaSPEC există dar nu arecheia CODSse semnalează eroarea:ORA-02270:
54
no matc ng un que or pr mary ey or t scolumn-list După crearea lui STUD, dacă se încearcăştergerea tabelei SPECse semnalează eroarea:
ORA-02449: unique/primary keys în tablereferenced by foreign keys
-
8/18/2019 10_SQL - Creare Tabele
54/98
OBSERVATII – cont.Lainserarea de noi linii în tabela STUD, acesteatrebuie să conţină pe coloanele CODS şi TUTOR
fie valori care există deja în SPEC.CODS şiSTUD.MATR,fie valori nule.La încercarea de aşterge liniidin tabelele SPEC şi
55
, ac aces ea au va oar a e c e re er e nSTUD prin constrângerile de mai sus se vasemnala de asemenea oeroare.La încercarea de amodifica valorile cheii în linii
din tabelele SPEC şi STUD, dacă acestea suntreferite în STUD se va semnala de asemenea oeroare.
-
8/18/2019 10_SQL - Creare Tabele
55/98
CLAUZA ON DELETEÎn cazul în care se doreşte ca o linie dintr-o tabelăconţinând o valoare de cheie referită într-o altă
tabelă (sau în aceeaşi tabelă)să poată fi ştearsăfărăa se obţine un mesaj de eroare, la definireaconstrângerii se poate specifica modul în care setratează această ter ere din ers ectiva tabelei care
56
referă valoarea:
Daca se doreşte ca la ştergerea liniei conţinând o valoare decheiesă fie şterse suplimentar şi toate liniile care referăaceastă valoare, se specificăON DELETE CASCADEDacă se doreşte ca liniile care referă valoarea cheiirespectivesă nu fie şterse, se specificăON DELETE SETNULLcare are următorul efect: în toate liniile care referăacea valoare ea este înlocuită cu valori nule.
-
8/18/2019 10_SQL - Creare Tabele
56/98
EXEMPLUCREATE TABLE STUD( MATR NUMBER(4) PRIMARY KEY,
. . . . . . . . . . . . . . . . . . .TUTOR NUMBER(4) REFERENCES STUD(MATR)
ON DELETE SET NULL,
57
. . . . . . . . . . . . . . . . . . .CONSTRAINT CODS_FK FOREIGN KEY(CODS)
REFERENCES SPEC(CODS)ON DELETE CASCADE);
-
8/18/2019 10_SQL - Creare Tabele
57/98
EXEMPLU – cont.Laştergerea unei specializăridin tabela SPECvor fi şterşi automat şi toţi studenţii dintabela STUD având pe coloana CODS codulacesteia.La ter erea unui studentcare este tutorul
58
altor studenţi, automat acestora li se vamodifica valoarea pe coloana TUTOR la unanulă.TabelaSPEC poate fi golită- ceea ce vaantrena şi golirea tabelei STUD - dar nuştearsă.
-
8/18/2019 10_SQL - Creare Tabele
58/98
FK PENTRU UNIQUEÎn cazul în care constrângerea sedefineşte pentru o cheie de tipUNIQUE(care poate conţine şi valori nule)eaeste verificată entru cheile străine
59
formate doar din valori nenule.
-
8/18/2019 10_SQL - Creare Tabele
59/98
-
8/18/2019 10_SQL - Creare Tabele
60/98
CHECK Prin acest tip de constrângerivalorile aflate pe o linieatabelei sunt forţate să verifice o condiţie (expresie logică).
Aceasta poate conţine toate elementele prezentateanterior pentru conditii, inclusiv apeluri de funcţii, cucâtevaexcepţii:
apelurile unor funcţii ca SYSDATE, USER, UID
61
,
(specifice secvenţelor), LEVEL şi ROWNUM)subcereri.O aceeaşi coloană poate participala mai multeconstrângeri de acest tip, având fiecare o altă condiţieasociată.Condiţia se evalueazădoar la nivelul liniei respective, fărăa se putea lua în considerare valori aflate pe alte linii aletabelei.
-
8/18/2019 10_SQL - Creare Tabele
61/98
SINTAXALa nivel de coloană:coloana [CONSTRAINT nume_constrangere]CHECK (expresie_logica)
62
[,CONSTRAINT nume_constrangere]
CHECK (expresie_logica)
-
8/18/2019 10_SQL - Creare Tabele
62/98
EXEMPLUTabela BURSA poate avea asociate mai multeconstrângeri care verifică următoarele condiţii:
PMIN şi PMAX sunt pozitivePMIN < PMAXSUMA este între 0 şi 500
63
CREATE TABLE BURSA(PMIN NUMBER(4) CHECK (PMIN >= 0),PMAX NUMBER(4) CHECK (PMAX >= 0),TIP VARCHAR2(20),
SUMA NUMBER(4) CHECK (SUMA BETWEEN 0 AND 500),CONSTRAINT PMINPMAX CHECK (PMIN < PMAX));
-
8/18/2019 10_SQL - Creare Tabele
63/98
EXEMPLU – cont.În cazul în care pe coloanele respective segăsescvalori nule, linia nu este rejectată ci se
consideră că verifică expresia logică.Pentru tabela BURSA definită ca mai sus sepot introduce linii având valori nule pentru
64
,a se semnala violarea constrângerilor deintegritate de tip CHECK.Expresia logică asociată unei constrângeriCHECKpoate fi compusă: cererea de crearede mai sus poate fi rescrisă prin combinareatuturor condiţiilor în una singură:
-
8/18/2019 10_SQL - Creare Tabele
64/98
EXEMPLU – cont.CREATE TABLE BURSA(PMIN NUMBER(4), PMAX NUMBER(4),
TIP VARCHAR2(20),SUMA NUMBER(4),
65
_
AND PMIN >= 0 AND PMAX >= 0 AND SUMABETWEEN 0 AND 500));
-
8/18/2019 10_SQL - Creare Tabele
65/98
MODIFICAREA STRUCTURI Vizualizarea structurii tabelei Adaugarea unei coloane
Stergerea unei coloaneModificarea unei coloane Adaugarea unei constrangeri
66
Stergerea unei constrangeri Activare/dezactivare constrangeriGolirea unei tabeleStergerea unei tabeleRedenumirea unei tabele Adaugarea de comentarii
-
8/18/2019 10_SQL - Creare Tabele
66/98
1. VIZUALIZARE STRUCTURClientul SQL*Plus pune la dispoziţie comanda DESCRIBE princare se pot afişa numele coloanelor, tipul acestora şieventualele constrângeri de tip NOT NULL.
Sintaxa comenzii SQL*Plus este:DESCRIBE nume_tabelaObservaţie: DESCRIBE nu este o cerere SQL ci ocomandăSQL*Plus.Ea nu trebuie terminată cu punct şi virgulă (;).
67
Exemplu. Pentru a obţine descrierea tabelei SPEC folosimcomanda:DESCRIBE SPECRezultat obţinut:
Name Null? Type--------------- -------- -----------------CODS NUMBER(2)
NUME VARCHAR2(10)DOMENIU VARCHAR2(15)
-
8/18/2019 10_SQL - Creare Tabele
67/98
2. ADAUGARE COLOANASintaxa: ALTER TABLE nume_tabela ADD
(nume_coloana tip_date[DEFAULT expresie] [constrangere]);
68
tabela SPEC în care se memorează anul înfiinţării fiecărei specializări:
ALTER TABLE SPEC ADD(AN_INFIINTARE
NUMBER(4)CONSTRAINT ANS_NENUL NOT NULL);
-
8/18/2019 10_SQL - Creare Tabele
68/98
ADAUGARE COLOANA – conDacă tabela conţine deja cel puţin o linie, penoua coloană vor fi prezente doar valori nule. Adăugarea unei coloane care are asociată o
69
constrângere de tipNOT NULL(ca înexemplul anterior) nu se poate face decât încazul în care tabela nu conţine nici o linie.Coloana se va adăuga întotdeauna dupăcelelalte, devenindultima coloanădin tabelă.
-
8/18/2019 10_SQL - Creare Tabele
69/98
3. STERGERE COLOANASintaxa: ALTER TABLE nume_tabela DROP COLUMN
nume_coloana [CASCADE CONSTRAINTS];
sau
70
nume_ a e a s a
coloane) [CASCADE CONSTRAINTS];Exemplu: Ştergerea coloanei adăugată anterior:
ALTER TABLE SPEC
DROP COLUMN AN_INFIINTARE;
-
8/18/2019 10_SQL - Creare Tabele
70/98
STERGERE COLOANA – contCererea se poate executa atât în cazul în caretabela este goală cât şi dacă ea conţine dejalinii,Dacă tabela are doar o singură coloană,aceasta nu se oate ter e
71
Opţiunea CASCADE CONSTRAINTS ştergesuplimentar toate constrângerile deintegritate în care sunt implicate coloaneleşterse, inclusiv cele de tip FOREIGN KEY carereferă valorile coloanei sau coloanelorrespective.
-
8/18/2019 10_SQL - Creare Tabele
71/98
UNUSEDŞtergerea unei coloane este o operaţie costisitoaredin punct de vedere al resurselor sistemului.
De aceea, în cazul în care la un moment dat acestaeste foarte încărcat ştergerea se poate face în douăetape:
72
unei liste de coloane prin opţiunea SET UNUSED.Sintaxa este: ALTER TABLE nume_tabela SET
UNUSED(lista_coloane);
sau ALTER TABLE nume_tabela SET UNUSED COLUMNnume_coloana;
-
8/18/2019 10_SQL - Creare Tabele
72/98
UNUSED – cont.Etapa 2:Ştergerea efectivă acoloanelor marcate ca neutilizate la unmoment ulterior de timp, când sistemulnu mai este foarte încărcat. Sintaxa
73
cererii este: ALTER TABLE nume_tabela DROPUNUSED COLUMNS;
-
8/18/2019 10_SQL - Creare Tabele
73/98
EXEMPLEPentru marcarea coloanelor DATAN, LOC şiTUTOR din tabela STUD se pot executacererile:
ALTER TABLE STUD SET UNUSED(DATAN,
74
ALTER TABLE STUD SET UNUSED COLUMNTUTOR;
Ştergerea coloanelor marcate se face prin
cererea: ALTER TABLE SPEC DROP UNUSED COLUMNS;
-
8/18/2019 10_SQL - Creare Tabele
74/98
UNUSED - ObservatiiColoanele marcate ca neutilizate:nu mai apar în structura afişată deDESCRIBE,nu mai pot fi folosite în cererile SQL asupra
75
tabelei respectivese pot adăuga noi coloane în tabelă avândacelaşi nume.
-
8/18/2019 10_SQL - Creare Tabele
75/98
4. MODIFICARE COLOANASintaxa: ALTER TABLE nume_tabela
MODIFY(nume_coloana [tip_date][DEFAULT expresie] [constrangere])
Prin această cerere se pot modifica
76
Se poate schimba tipul de date al coloaneiSe poate asocia o nouă valoare implicităSe poate adăuga o constrângere de tip NOT NULLpentru acea coloană.
Printr-o singură cerere se pot efectua toateoperaţiile de mai sus sau doar o parte a lor.
-
8/18/2019 10_SQL - Creare Tabele
76/98
EXEMPLUmodificarea caracteristicilor coloanelor NUMEşi DOMENIU din tabela SPEC este efectuatăprin următoarele trei cereri de tip ALTERTABLE:
77
VARCHAR2(20) CONSTRAINT DOM_MENUL NOT NULL);
ALTER TABLE SPEC MODIFY (DOMENIUDEFAULT 'NECOMPLETAT');
ALTER TABLE SPEC MODIFY(NUME
CONSTRAINT NUME_NENUL NOT NULL);
-
8/18/2019 10_SQL - Creare Tabele
77/98
MODIFICARE COLOANA – contÎn ceea ce priveşte modificările tipuluide date asociat unei coloane, acesteapot fi:
Cre terea dimensiunii coloanelor de ti ir
78
de caractere,Creşterea dimensiunii şi preciziei datelornumerice,
Schimbarea tipurilor CHAR în VARCHAR2 şireciproc doar dacă au aceeaşi dimensiune.
-
8/18/2019 10_SQL - Creare Tabele
78/98
MODIFICARE COLOANA – contDoar în cazul în care tabela este goală saucoloana conţine doar valori nule se mai potefectua şi operaţiile:
Scăderea dimensiunii coloanelor de tip şir de
79
Scăderea dimensiunii şi preciziei datelor numerice,Orice altă schimbare a tipului coloanei respective.În cazul schimbării valorii implicite pentru o
coloană, noua valoare va fi folosită doarpentru inserările de linii ulterioare modificării.
-
8/18/2019 10_SQL - Creare Tabele
79/98
5. ADAUGARE CONSTRANGERSintaxa: ALTER TABLE nume_tabela
ADD [CONSTRAINT nume] tip(coloana);
Tipul constrângerii nu poate fi NOT NULL. În
80
sc m se pot e n constr nger e t pCHECK conţinând condiţii de acest tip.Exemplu: Se doreşte ca pe coloana NUME atabelei SPEC să nu existe valori nule sauidentice şi lungimea minimă să fie de 6caractere:
-
8/18/2019 10_SQL - Creare Tabele
80/98
EXEMPLU ALTER TABLE SPEC ADD CONSTRAINT NUME_NENUL
CHECK(NUME IS NOT NULL);
ALTER TABLE SPEC
81
ADD CONSTRAINT NUME_UNICUNIQUE(NUME);
ALTER TABLE SPEC
ADD CONSTRAINT NUME_5CHECK(LENGTH(NUME)>5);
-
8/18/2019 10_SQL - Creare Tabele
81/98
6. STERGERE CONSTRANGERESintaxa: ALTER TABLE nume_tabela DROP PRIMARY KEY
[CASCADE];
ALTER TABLE nume_tabela DROPUNIQUE(lista_coloane)[CASCADE];
ALTER TABLE nume_tabela DROP CONSTRAINT nume
82
[CASCADE];
Efectul acestor cereri este:DROP PRIMARY KEY şi DROP UNIQUE specifică ştergereaconstrângerii de tip cheie primară/cheie unică pentru tabelarespectivă. Constrângerea poate să nu aibă un nume asociatla definire.
DROP CONSTRAINT specifică ştergerea unei constrângeriavând asociat un nume.Opţiunea CASCADE se aplică în cazul în care existăconstrângeri dependente şi specifică ştergerea suplimentarăa acestora.
-
8/18/2019 10_SQL - Creare Tabele
82/98
EXEMPLUStergerea cheii primare a tabelei SPECşi a constrângerilor dependente deacestea (de exemplu cea de cheiestrăină din STUD se face astfel:
83
ALTER TABLE SPEC DROP PRIMARY KEYCASCADE;
7. ACTIVARE/DEZACTIVARE
-
8/18/2019 10_SQL - Creare Tabele
83/98
CONSTRANGERESintaxa: Dezactivare: ALTER TABLE nume_tabela DISABLE PRIMARY KEY
[CASCADE] ALTER TABLE nume_tabela
DISABLE UNIQUE(lista_coloane) [CASCADE]
84
ALTER TABLE nume_tabela DISABLE CONSTRAINT
nume[CASCADE]
Reactivare: ALTER TABLE nume_tabela ENABLE PRIMARY KEY; ALTER TABLE nume_tabela ENABLE
UNIQUE(lista_coloane); ALTER TABLE nume_tabela ENABLE CONSTRAINT
nume;
-
8/18/2019 10_SQL - Creare Tabele
84/98
EFECTDISABLEspecifică dezactivarea constrângerii deintegritate respective.OpţiuneaCASCADEduce la dezactivareasuplimentară a tuturor constrângerilor dependente.ENABLE CONSTRAINTs ecifică reactivarea
85
constrângerii respective.În momentul reactivării sistemulverificădacă datelela care se referă constrângerea sunt conforme cuaceasta.În cazul în care nu se constată respectareaconstrângerii,ea nu este activatăşi se generează unmesaj de eroare. În caz de activare cu succes,constrângerile dependente nu sunt reactivate.
-
8/18/2019 10_SQL - Creare Tabele
85/98
EXEMPLUDezactivarea şi reactivareaconstrângerii de cheie primară SPEC_PKpentru tabela SPEC:
ALTER TABLE SPEC DISABLE PRIMARY
86
KEY CASCADE;
ALTER TABLE SPEC ENABLECONSTRAINT SPEC_PK;
-
8/18/2019 10_SQL - Creare Tabele
86/98
8. GOLIRE TABELASintaxa:TRUNCATE TABLE nume_tabela [REUSE
STORAGE];Exemplu: golirea tabelei SPEC se poate face princererea SQL
87
;
Opţiunea REUSE STORAGE este folosită pentru aspecifica faptul că spaţiul ocupat de liniile şterserămâne alocat tabelei şi poate fi folosit la inserărileulterioare în aceasta.În lipsa acestei opţiuni spaţiul respectiv devinedisponibil, putând fi utilizat şi pentru alte tabele.
-
8/18/2019 10_SQL - Creare Tabele
87/98
9. STERGERE TABELASintaxa:DROP TABLE nume_tabela;
Exemplu: ştergerea tabelei SPEC se poateface prin cererea SQL
88
DROP TABLE SPEC;
Observaţie:ştergerea unei tabele estedefinitivă.O dată ştearsă ea poate fi restaurată doar dinsalvările bazei de date efectuate deadministrator.
-
8/18/2019 10_SQL - Creare Tabele
88/98
10. REDENUMIRE TABELASintaxa:RENAME nume_vechi TO nume_nou
Exemplu: redenumirea tabelei SPEC se poateface prin cererea SQL
89
RENAME SPEC TO SPECIALIZARI;
Observaţie: comanda RENAME nu estespecifică tabelelor ci tuturor obiectelor dinbaza de date.Cu ajutorul ei se pot redenumi de asemeneavederi, secvenţe şi sinonime.
-
8/18/2019 10_SQL - Creare Tabele
89/98
11. COMENTARIITabelele şi coloanele acestora pot avea asociat uncomentariu. Acesta este un text şi se asociază astfel:
COMMENT ON TABLE nume_tabela IS 'text‘;COMMENT ON COLUMN nume_tabela.cume_coloana IS
'text‘;
Acestea sunt stocate în dic ionarul de date în
90
tabelele:USER_COL_COMMENTSşi ALL_COL_COMMENTS:
comentariile asociate coloanelorUSER_TAB_COMMENTSşi USER_TAB_COMMENTS
comentariile asociate tabelelor
-
8/18/2019 10_SQL - Creare Tabele
90/98
DICTIONARUL DE DATEUna dintre cerinţele fundamentale pentru caun sistem de gestiune a bazelor de date să fieconsiderat cu adevărat relaţional este aceeaca datele interne ale acestuiasă fieorganizate şi stocate în acelaşi modcu datele
91
În acest sens, şi sistemul Oracle îşi ţineaceste date, numite uzualdictionarul de dateal sistemului , sub formă de tabele, iarutilizatorii care au drepturile necesare le pot
accesa fie direct fie folosind o serie devederişi sinonime puse la dispoziţie de sistem.
-
8/18/2019 10_SQL - Creare Tabele
91/98
DICTIONARUL DE DATE – contExistă mai multe categorii de vederi prin care uzualaceste date sunt accesate, fiecare având ca şicaracteristică un prefix al numelui care defineştecategoria respectivă.Cele mai folosite vederi intră în categoriile definite de
92
PrefixulUSER_ este comun vederilor prin care se pot accesainformaţii despre obiectele deţinute de utilizator.Prefixul ALL_ este specific vederilor care conţin informaţiidespre toate tabelele la care utilizatorul are acces.PrefixulDBA_ este folosit pentru vederile accesibile doar
utilizatorilor care au drepturi (privilegii) de administrator albazei de date.
-
8/18/2019 10_SQL - Creare Tabele
92/98
EXEMPLEPrezentarea tuturor acestor vederi nu faceobiectul lucrării de faţă.
În continuare sunt prezentate câteva dintrecele mai importante, legate mai ales deinventarul de tabele i constrân eri de
93
integritate existent la un moment dat însistem:
USER_CATALOGUSER_OBJECTS
USER_CONSTRAINTSUSER_CONS_COLUMNS
-
8/18/2019 10_SQL - Creare Tabele
93/98
USER_CATALOGutilizator. Are doar două coloane, prima conţinândnumele şi al doilea tipul obiectului. O parte aconţinutului acestei tabele, obţinut cu cererea SQL:
SELECT * FROM USER_CATALOG;
este următorul:
94
_ _ ---------------- -----------BURSA TABLEEVENIMENT TABLE
NUMERE TABLESPEC TABLESTUD TABLE
USER OBJECTS
-
8/18/2019 10_SQL - Creare Tabele
94/98
USER_OBJECTSConţine numele, tipul şi alte informaţii despreobiectele deţinute de utilizator, inclusivindecşi.Informaţii sumare despre conţinutul vederii
95
se po o ne cu cererea:SELECT OBJECT_NAME, OBJECT_TYPEFROM USER_OBJECTS;
Rezultatul include rezultatul obţinut în urmacererii anterioare (USER_CATALOG).
USER CONSTRAINTS
-
8/18/2019 10_SQL - Creare Tabele
95/98
USER_CONSTRAINTSConţine date despre constrângerile definitede utilizator. Dintre coloanele salemenţionăm:CONSTRAINT_NAME: Numele constrângerii
96
_ : u ,
un caracter: P: cheie primară, U: cheie (UNIQUE),R pentru integritatea referenţială şi C pentruconstrângerile CHECK (aici sunt incluse şi cele detip NOT NULL)SEARCH_CONDITION: Condiţia asociatăconstrângerii
EXEMPLU
-
8/18/2019 10_SQL - Creare Tabele
96/98
EXEMPLUSELECT CONSTRAINT_NAME, CONSTRAINT_TYPE,SEARCH_CONDITION
FROM USER_CONSTRAINTS;
Rezultat:CONSTRAINT_NAME C SEARCH_CONDITION
97
BURSA_CK C PMIN < PMAX AND PMIN >= 0 AND PMAX >= 0 AND SUMA
BETWEEN 0 AND 500DOM_NENUL UDOM_5 C LENGTH(NUME)>5
NUME_NENUL C NUME IS NOT NULL
USER CONS COLUMNS
-
8/18/2019 10_SQL - Creare Tabele
97/98
USER_CONS_COLUMNSConţine informaţii despre coloanele care sunt implicate înconstrângerile de integritate. Cererea următoare afişeazăperechi (nume constrângere, nume coloană implicată) pentruconstrângerea BURSA_CK:
SELECT CONSTRAINT_NAME, COLUMN_NAMEFROM USER_CONS_COLUMNS
98
WHERE CONSTRAINT_NAME = 'BURSA_CK';
Rezultatul este:CONSTRAINT_NAME COLUMN_NAME------------------------ --------------------BURSA_CK PMIN
BURSA_CK PMAXBURSA_CK SUMA
CATE VEDERI SUNT?
-
8/18/2019 10_SQL - Creare Tabele
98/98
CATE VEDERI SUNT?Există peste2000 de vederipuse ladispoziţie de sistemul Oracle (V9) dintrecare peste 200 în fiecare dintrecategoriile USER_, ALL_ şi DBA_.
99
escr ere comp e a or se g seş e ndocumentaţia aferentă sistemului.Lista tuturor vederilor poate fi obţinutăcu cererea:SELECT VIEW_NAME FROM ALL_VIEWS;