Tipuri de date Oracle pentru versiunile 9i/10g/11g

Sursa: http://ss64.com/ora/syntax-datatypes.html şi Oracle

Tip de dată Descriere
CHAR(n {[BYTE | CHAR]}) Defineşte o coloană ce memorează valori alfanumerice, de lungime fixă. Cu BYTE (valoare implicită) se precizează că lungimea este dată în octeţi, iar cu CHAR în caractere (pentru lungimea efectivă a coloanei se ia în considerare şi setul de caractere folosit la crearea bazei de date.
Lungimea valorilor (precizat de argument) este cuprinsă între 1-2000 octeţi.
Dacă valoarea ce se introduce este mai scurtă decât lungimea coloanei, atunci la valoare se adaugă spaţii.
Dacă valoarea introdusă este mai lungă decât lungimea coloanei, atunci apare o eroare.
Dacă valoarea introdusă este mai lungă decât lungimea coloanei, dar caracterele excedentare sunt spaţii, atunci acestea sunt eliminate.
VARCHAR2(n {[BYTE | CHAR]}) Defineşte o coloană ce memorează valori alfanumerice, de lungime variabilă. Lungimea maximă a valorilor (precizat de argument) este cuprinsă între 1-4000 cteţi.
Dacă valoarea ce se introduce este mai scurtă decăt lungimea coloanei, atunci se memorează această valoare fără să se adauge spaţii.
Dacă valoarea introdusă este mai lungă decăt lungimea coloanei, atunci apare o eroare.
Dacă valoarea introdusă este mai lungă decăt lungimea coloanei, dar caracterele excedentare sunt spaţii, atunci acestea sunt eliminate.
NCHAR(n) Defineşte o coloană ce memorează valori alfanumerice dintr-un anumit set de caractere (precizat la crearea bazei de date), de lungime fixă (un caracter se poate memora pe 1, 2, 3 octeţi). Lungimea valorilor (precizat de argument şi de setul de caractere) este cuprinsă între 1-2000 octeţi.
NVARCHAR2(n) Defineşte o coloană ce memorează valori alfanumerice dintr-un anumit set de caractere, de lungime variabilă. Lungimea maximă a valorilor (precizat de argument) este cuprinsă între 1-4000 octeţi.
NUMBER[(p[,s])]
Defineşte o coloană ce poate memora numere cu maximum p cifre semnificative, din care s cifre sunt pentru partea zecimală.
Valoarea p poate fi între 1 şi 38 (valoarea implicită este 38).
Valoarea lui s poate fi între -84 şi 127 (valoarea implicită este 0).
Imaginea alăturată arată cifrele care se memorează (zona haşurată).

Definire dataValoare atribuităValoare memorată
NUMBER456.78456.78
NUMBER(3)456.78457
NUMBER(6,1)456.78456.8
NUMBER(4,2)456.78Eroare
NUMBER(6,-2)12341200
NUMBER(4,6)0.001234560.001235
BINARY_FLOAT Defineşte o coloană ce poate memora numere în virgulă flotantă, simplă precizie. Lungimea zonei unde se memorează valoarea este de 5 octeţi.
Valorile absolute ale acestor date sunt cuprinse între 1.17549E-38 şi 3.40282E+38.
BINARY_DOUBLE Defineşte o coloană ce poate memora numere în virgulă flotantă, dublă precizie. Lungimea zonei unde se memorează valoarea este de 9 octeţi. Valorile absolute ale acestor date sunt cuprinse între 2.22507485850720E-308 şi 1.79769313486231E+308.
RAW(n) Defineşte valori binare cu lungimea maximă dată în argument. Lungimea maximă a valorilor este 2000 octeţi.
LONG RAW Defineşte valori binare cu lungimea variabilă. Lungimea maximă a valorilor este 2GB.
CLOB Siruri de caractere de lungime maximă (4 gigabytes - 1) * (dimensiunea_blocului).
NCLOB National Character Large Object.
Siruri de caractere dintr-un anumit set de caractere, de lungime maximă (4 gigabytes - 1) * (dimensiunea_blocului).
BLOB Date binare (Binary Large Object) cu lungimea maximă de (4 gigabytes - 1) * (dimensiunea_blocului).
ROWID Valoarea coloanelor de acest tip identifică o linie dintr-un tabel ce nu apartine unui cluster.
O astfel de valoare reprezintă cel mai rapid mod de a accesa o linie dintr-un tabel şi se foloseşte la construirea indecşilor.
UROWID Valori ce identifică o linie dintr-un tabel secvenţial indexat.
DATE Defineşte o coloană ce poate memora o dată calendaristică şi timpul între 1 ianuarie 4712 i.e.n. şi 31 decembrie 9999 e.n.
Dimensiunea rezervată pentru aceste valori este de 7 octeţi (se foloseşte un format intern de memorare).
Acest tip de dată memorează: patru cifre pentru an (între -4712 şi 9999), şi câte două cifre pentru luna (01-11), zi (01-31, valoarea efectivă depinde de an şi lună), orele (00-23), minutele (0-59) şi secundele (0-59) scurse de la miezul nopţii.
Formatul pentru aceste date este prezizat explicit de parametrul NLS_DATE_FORMAT sau implicit de parametrul NLS_TERRITORY.
Metode de precizare de valori DATE ca şi constante:
  • Ca şir de caractere în formatul: DATE 'YYYY-MM-DD'
  • Utilizarea funcţiei TO_DATE ce converteşte un şir de caractere la o valoare DATE folosind un format, de exemplu:
    TO_DATE('2012-MAR-08 11:12','YYYY-MON-DD HH24:MI')
TIMESTAMP [(n)] Valoarea este o dată calendaristică şi timp (ora, minut, secunda, fracţiune de secundă). Valoarea n din clauza de definire a datei precizează numărul de cifre din partea fracţională a numărului de secundă (de exemplu, pentru secunde poate apare valoarea 15.234567). Valoarea lui n poate fi între 0 şi 9, valoarea implicită este 6.
Dimensiunea zonei pentru memorarea datei de acest tip este între 7 şi 11 octeţi (dimensiunea depinde de precizia solicitată).
Formatul acestei date depinde de parametrii amintiţi la tipul date.
Exemplu de constantă pentru acest tip de dată: TIMESTAMP '1997-01-31 09:26:50.124'
TIMESTAMP (n) WITH [LOCAL] TIME ZONE Cu opţiunea WITH TIME ZONE se extinde tipul TIMESTAMP prin memorarea unei diferenţe între ora locală şi ora universală (GMT).
Cu opţiunea WITH LOCAL TIME ZONE se defineşte un tip de dată similar cu cel definit prin WITH TIME ZONE, dar se face conversia la timpul local (nu se mai memorează diferenţe faţă de ora GMT).
Exemplu de constantă pentru acest tip de dată: TIMESTAMP '2012-03-08 12:34:56.78 +02:00'
INTERVAL YEAR (precizia_ani) TO MONTH Valoarea memorează un interval de timp precizat în ani şi luni. Argumentul n (cu valoarea implicită 2) precizează numărul de cifre folosite pentru memorarea numărului de ani.
Dimensiunea zonei unde se memorează acest tip de dată este de 5 octeţi.
Modul de precizare a unei valori de acest tip ca şi constantă este:
INTERVAL 'integer [- integer]' {YEAR | MONTH} [(precizia)] [TO {YEAR | MONTH}]
  • Prin 'integer [- integer]' YEAR ... se precizează un număr de ani şi opţional un numă de luni (0-11).
  • Prin integer {YEAR | MONTH} [(precizia)] se precizează un număr de ani sau luni. Precizia specifică numărul de cifre folosit pentru valoare (între 0 şi 9, implicit este 2).
  • Exemple:
          INTERVAL '123-2' YEAR(3) TO MONTH
          INTERVAL '123' YEAR(3)  
          INTERVAL '300' MONTH(3) 
          INTERVAL '4' YEAR 
          INTERVAL '50' MONTH 
        
INTERVAL DAY (precizie_zi) TO SECOND (precizie_secunda) Valoarea memorează un interval de timp în zile, ore, minute, secunde. Primul argument precizează numărul de cifre din numărul de zile (între 0 şi 9, valoarea implicită este 2), iar al doilea argument este numărul de cifre din memorarea părţii fracţională din secundă (între 0 şi 9, valoarea implicită este 6).
Dimensiunea zonei unde se memorează acest tip de dată este de 11 octeţi.
BFILE Un pointer la un fişier extern bazei de date.
XMLType Tip de dată XML.
tip de dată utilizator  

In afara acestor tipuri de date, în Oracle se pot folosi şi următoarele tipuri de date ANSI:
ANSI SQL DatatypeOracle DatatypeObservatii
CHARACTER(n)CHAR(n) 
CHARACTER VARYING(n)
CHAR VARYING(n)
VARCHAR2(n) 
NATIONAL CHARACTER(n)
NATIONAL CHAR(n)NCHAR(n)
NCHAR(n) 
NATIONAL CHARACTER VARYING(n)
NATIONAL CHAR VARYING(n)NCHAR VARYING(n)
NVARCHAR2(n) 
DECIMAL(p,s)NUMBER(p,s) 
INTEGER
INT
SMALLINT
NUMBER(38) 
FLOAT[(b)]
DOUBLE PRECISION
REAL
NUMBER Valoarea b (între 1 şi 126) precizează precizia (în număr de biţi). Valoarea implicită este 126 (corespunzătoare la NUMBER(38)).