Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Tipuri de date

sql



+ Font mai mare | - Font mai mic



Tipuri de date

Pentru memorarea datelor numerice, tipurile cele mai frecvent folosite sunt: NUMBER, INTEGER, FLOAT, DECIMAL.



Pentru memorarea sirurilor de caractere, cele mai frecvent tipuri de date utilizate sunt: CHAR, VARCHAR2 si LONG.

Exista restrictii referitoare la folosirea tipului de date LONG.

Intr-un tabel poate sa fie o singura coloana de tip LONG.

Nu pot fi comparate doua siruri de caractere de tip LONG.

O coloana de tip LONG nu poate fi parametru intr-o procedura.

O functie nu poate intoarce ca rezultat o valoare de tip LONG.

O coloana de tip LONG nu poate fi folosita in clauzele WHERE, ORDER BY, GROUP BY, CONNECT.

Operatorii sau functiile Oracle nu pot fi folositi in SQL pentru a modifica coloane de tip LONG.

O coloana de tip LONG nu poate fi indexata.

Alte tipuri de date scalare furnizate de SQL sunt NCHAR si NVARCHAR2, folosite pentru reprezentarea caracterelor limbilor nationale.

Informatii relative la timp sau data calendaristica se obtin utilizand tipul DATE. Pentru fiecare data de tip DATE sunt depuse: secolul, anul, luna, ziua, ora, minutul, secunda. Pentru o coloana de tip DATE sistemul rezerva 7 bytes, indiferent daca se memoreaza doar timpul, sau doar data calendaristica.

Formatul implicit al datei se defineste cu ajutorul parametrului de initializare NLS_DATE_FORMAT. In general, acest parametru este setat la forma DD-MON-YY. Daca nu este specificat timpul, timpul implicit este 12:00:00.

In Oracle8, alaturi de aceste tipuri scalare, au fost introduse tipurile de date LOB (Large Objects), care specifica locatia unor obiecte de dimensiuni mari.

Oracle9i introduce noi tipuri de date pentru timp:

TIMESTAMP precizie_fractiuni_secunda) cuprinde valori pentru anul, luna si ziua unei date calendaristice, dar si valori pentru ora, minut, secunda

INTERVAL YEAR precizie_an TO MONTH stocheaza o perioada de timp specificata in ani si luni, unde precizie_an reprezinta numarul de cifre din campul YEAR.

INTERVAL DAY (precizie_zi) TO SECOND prec_fractiuni_sec) stocheaza o perioada de timp reprezentata in zile, ore, minute si secunde.

Exemplu

Sa se creeze un tabel cu trei coloane, inceput, durata_1, durata_2. Coloana inceput va cuprinde valori ce reprezinta momente de timp, inclusiv fractiunile de secunda corespunzatoare. Valorile coloanei durata_1 vor fi intervale de timp specificate in numar de zile, ore, minute si secunde. Coloana durata_3 va contine intervale de timp precizate in numar de ani si luni. Sa se insereze o inregistrare in acest tabel.

CREATE TABLE timp(

inceput TIMESTAMP,

durata_1 INTERVAL DAY(2) TO SECOND(3),

durata_2 INTERVAL YEAR TO MONTH);

INSERT INTO timp

VALUES (TIMESTAMP '1997-01-31 09:26:50.124',

INTERVAL '23 7:44:22' DAY TO SECOND,

INTERVAL '19-02' YEAR TO MONTH);

INTERVAL YEAR TO MONTH

INTERVAL '123' YEAR(3) un interval de 123 ani

INTERVAL '30' MONTH(2) un interval de 30 luni

INTERVAL '123' YEAR  eroare, deoarece implicit precizia este 2,

iar 123 are 3 digiti

INTERVAL DAY TO SECOND

INTERVAL '180' DAY(3) un interval de 180 zile

INTERVAL '4 5:12' DAY TO MINUTE un interval de 4 zile, 5 ore si 12 minute

INTERVAL '400 5' DAY(3) TO HOUR un interval de 400 zile si 5 ore

Exemplu

CREATE TABLE  exemplu

(durata INTERVAL YEAR(3) TO MONTH);

INSERT INTO exemplu

VALUES (INTERVAL '120' MONTH(3));

SELECT TO_CHAR(SYSDATE+durata, 'DD-mon-YYYY')

FROM exemplu;

Exemplu

CREATE TABLE noi_carti

(codel NUMBER,

.

start_data TIMESTAMP);

SELECT start_data

FROM noi_carti;

Pentru informatii de tip TIMESTAMP, numarul maxim de digiti pentru fractiuni de secunda este 9, implicit este 6.

Rezultatele cererii:

15-JUN-03  12.00.00.000000 AM

23-SEP-03  12.00.00.000000 AM

Pentru informatii de tip DATE, formatul implicit ar fi fost DD-MON-RR

Camp

Valori valide pentru date calendaristice

Valori valide pentru intervale

YEAR

De la -4712 la 9999 (cu exceptia anului 0).

Orice valoare intreaga.

MONTH

De la 01 la 12.

De la 0 la 11.

DAY

De la 01 la 31 (limitat de valorile campurilor MONTH si YEAR, corespunzator regulilor calendarului curent).

Orice valoare intreaga.

HOUR

De la 00 la 23.

De la 0 la 23.

MINUTE

De la 00 la 59.

De la 0 la 59.

SECOND

De la 00 la 59.9(n), unde "9(n)" este precizia fractiunilor de secunda.

De la 0 la 59.9(n), unde "9(n)" este precizia fractiunilor de secunda.

TIMEZONE_HOUR

De la -12 la 13 (prevede schimbarile datorate trecerilor la ora de vara sau iarna).

Nu se aplica.

TIMEZONE_MINUTE

De la 00 la 59.

Nu se aplica.

Sistemul Oracle permite constructia de expresii folosind valori de tip data calendaristica si interval. Operatiile care pot fi utilizate in aceste expresii si tipul rezultatelor obtinute sunt urmatoarele:

Data + Interval, Data - Interval, Interval + Data, iar rezultatul este de tip data calendaristica;

Data - Data, Interval + Interval, Interval - Interval, Interval * Number, Number * Interval, Interval / Number, iar rezultatul este de tip interval.

Modele de format

Un model de format este un literal caracter care descrie formatul valorilor de tip DATE sau NUMBER stocate intr-un sir de caractere. Atunci cand se converteste un sir de caractere intr-o data calendaristica sau intr-un numar, modelul de format indica sistemului cum sa interpreteze sirul respectiv. In instructiunile SQL se poate folosi un model de format ca argument al functiilor TO_CHAR si TO_DATE. In felul acesta se poate specifica formatul folosit de sistemul Oracle pentru a returna sau a stoca o valoare in/din baza de date. Un model de format nu schimba reprezentarea interna a valorii in baza de date.

O parte dintre elementele cel mai frecvent intalnite ale unui format de tip numeric sunt sintetizate in tabelul urmator.

Element

Exemplu

Descriere

, (virgula)

Plaseaza o virgula in pozitia specificata. Intr-un model de format numeric pot fi precizate mai multe virgule, dar o virgula nu poate aparea in partea dreapta a punctului zecimal.

. (punct)

Plaseaza un punct zecimal in pozitia specificata. Intr-un format numeric, se poate specifica cel mult un punct zecimal.

Include semnul "$" in fata unei valori.

Plaseaza zerouri in fata sau la sfarsitul valorii.

Intoarce valoarea cu numarul specificat de cifre. Valoarea va avea un spatiu, respectiv un minus in fata daca este pozitiva, respectiv negativa.

C

C999

Plaseaza in pozitia specificata simbolul ISO pentru monede (valoarea curenta a parametrului NLS_ISO_CURRENCY).

D

99D99

Plaseaza in pozitia specificata caracterul zecimal, care este valoarea curenta a parametrului NLS_NUMERIC_CHARACTER. Valoarea implicita este punctul. Se poate specifica cel mult un caracter zecimal intr‑un model de format numeric.

EEEE

9.9EEEE

Returneaza o valoare folosind notatia stiintifica.

L

L999

Intoarce in pozitia specificata simbolul monedei locale (valoarea curenta a parametrului NLS_CURRENCY).

MI

9999MI

Plaseaza semnul minus la sfarsitul valorilor negative si un spatiu la sfarsitul celor pozitive. Acest element poate fi specificat numai pe ultima pozitie a modelului de format numeric.

S

S9999

9999S

Plaseaza semnele plus sau minus la inceputul sau la sfarsitul valorii. Acest element poate aparea doar pe prima sau ultima pozitie a modelului de format numeric.

Modelele de format pentru date calendaristice pot fi utilizate in cadrul urmatoarelor functii:

TO_DATE, pentru a converti o valoare de tip caracter, care este intr-un alt format decat cel implicit, intr-o valoare de tip DATE;

TO_CHAR, pentru a converti o valoare de tip DATE, care este intr-un alt format decat cel implicit, intr-un sir de caractere.

Un model de format pentru date calendaristice este alcatuit dintr-unul sau mai multe elemente specifice. Scrierea cu litere mari sau mici a cuvintelor, abrevierilor sau a numeralelor romane este respectata in elementul de format corespunzator. De exemplu, modelul de format DAY" produce cuvinte cu majuscule, cum ar fi FRIDAY", iar Day" si day" au ca rezultat Friday", respectiv friday

Intr-un model de format pentru date calendaristice se pot preciza semne de punctuatie si literale caracter, incluse intre ghilimele. Toate aceste caractere apar in valoarea returnata pe locul specificat in modelul de format.

Element

Explicatie

AD sau A.D.

Indicatorul AD (Anno Domini) cu sau fara puncte.

BC sau B.C.

Indicatorul BC (Before Christ) cu sau fara puncte.

D

Numarul zilei din saptamana (1-7). Duminica este considerata prima zi a saptamanii.

DAY

Numele zilei completat cu spatii, pana la lungimea de 9 caractere.

DD

Numarul zilei din luna (1-31).

DDD

Numarul zilei din an (1-366).

DY

Numele zilei din saptamana, printr-o abreviere de 3 litere.

FF

Fractiunile de secunda.

HH sau HH12

Ora din zi (1-12).

HH24

Ora din zi (0-23).

MI

Minutele din ora (0-59).

MM

Luna din an (01-12).

MON

Numele lunii, printr-o abreviere de 3 litere.

MONTH

Numele lunii completat cu spatii, pana la lungimea de 9 litere.

RM

Luna in cifre romane (I-XII).

RR

Anul cel mai apropiat de data curenta.

RRRR

Accepta intrarea atat cu 2, cat si cu 4 cifre. Daca anul de intrare se da cu 2 cifre, furnizeaza acelasi lucru ca si formatul RR.

SS

Secundele din minut (0-59).

SSSSS

Secundele trecute de la miezul noptii (0-86399).

TZH

Ora regiunii.

TZM

Minutul regiunii.

Y,YYY

Anul scris cu virgula dupa prima cifra.

YEAR sau SYEAR

Anul in litere ("S" prefixeaza anii i.Hr. cu semnul minus).

YYYY sau SYYYY

Anul cu 4 cifre.

YYY, YY sau Y

Ultimele cifre ale anului.

Modificatorii FM si FX pot fi utilizati in modelele de format din cadrul functiei TO_CHAR, controland completarea cu spatii si verificarea exacta a formatelor. Un modificator poate sa apara intr-un model de format de mai multe ori. In acest caz, efectele sale sunt active pentru portiunea din model care incepe la prima aparitie si apoi dezactivate pentru portiunea din model care urmeaza celei de-a doua aparitii s.a.m.d.

Modificatorul FM (Fill Mode) suprima completarea cu spatii in valoarea returnata de functia TO_CHAR, iar FX (Format eXact) impune corespondenta exacta dintre argumentul de tip caracter si modelul de format precizat pentru data calendaristica respectiva.

Valoarea null, reprezentand lipsa datelor, nu este egala sau diferita de nici o alta valoare, inclusiv null.

Totusi, exista doua situatii in care sistemul Oracle considera doua valori null ca fiind egale: la evaluarea functiei DECODE si daca valorile null apar in chei compuse. Doua chei compuse care contin valori null sunt considerate identice daca toate componentele diferite de null sunt egale.

Pseudocoloane

O pseudocoloana se comporta ca si o coloana a unui tabel, dar nu este stocata efectiv intr-un tabel. Se pot face interogari asupra pseudocoloanelor, dar nu se pot insera, actualiza sau sterge valorile acestora.

LEVEL returneaza nivelul liniilor rezultat ale unei cereri ierarhice.

CURRVAL si NEXTVAL sunt pseudocoloane utile in lucrul cu secvente si sunt tratate in sectiunea corespunzatoare acestora.

ROWID returneaza adresa unei linii din baza de date, furnizand modul cel mai rapid de a accesa linia respectiva. In sistemul Oracle, valorile acestei pseudocoloane contin urmatoarele informatii necesare pentru a localiza o linie: numarul obiectului, blocul de date, fisierul de date, linia in cadrul blocului de date. Valorile pseudocoloanei ROWID sunt de tipul ROWID sau UROWID.

ROWNUM returneaza numarul de ordine al liniilor rezultate in urma executiei unei cereri. Pseudocoloana poate fi utilizata pentru a limita numarul de linii returnate. Daca este folosita clauza ORDER BY intr-o subcerere, iar conditia in care apare ROWNUM este plasata in cererea de nivel superior, atunci conditia va fi aplicata dupa ordonarea liniilor.

Exemplu

Sa se afiseze informatii despre operele de arta avand cele mai mici 10 coduri.

SELECT *

FROM (SELECT * FROM opera ORDER BY cod_opera)

WHERE ROWNUM < 11;



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 958
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved