Oracle PL/SQL tipovi podataka: Booleov, broj, datum [primjer]

⚡ Pametni sažetak

PL/SQL tipovi podataka definiraju kako Oracle pohranjuje, obrađuje i ograničava svaku vrijednost u bloku. Grupiraju se u obitelji znakova, brojeva, logičkih vrijednosti, datuma i velikih objekata (LOB), svaka sa svojim formatom pohrane, ograničenjima veličine i pravilima dodjeljivanja.

  • 🔤 Karakter: CHAR je fiksne duljine, VARCHAR2 je promjenjive duljine, a NCHAR i NVARCHAR2 koriste nacionalni skup znakova.
  • 🔢 Broj: Funkcija NUMBER pohranjuje vrijednosti s fiksnim ili pomičnim zarezom do 38 znamenki preciznosti.
  • ✅ Booleov: Ima vrijednost TRUE ili FALSE i uglavnom se koristi u uvjetnoj logici.
  • 📅 Datum: Pohranjuje datum i vrijeme, a ako vrijeme nije zadano, kao zadano se postavlja ponoć.
  • 🗂️ LOB: BLOB, CLOB, NCLOB i BFILE pohranjuju velike nestrukturirane podatke do 128 TB.
  • 💡 Najbolja vježba: Radi uštede memorije i sigurnosti u budućnosti, preferirajte VARCHAR2 u odnosu na CHAR i LOB u odnosu na LONG.
  • 🔗 Opseg: SQL tipovi se primjenjuju na stupce tablice; PL/SQL tipovi se koriste unutar PL/SQL blokova.

Oracle PL/SQL tipovi podataka

Što su PL/SQL tipovi podataka?

Vrste podataka u PL/SQL-u definirati kako će se podaci pohranjivati, obrađivati ​​i tretirati Oracle tijekom pohrane i obrade. Tipovi podataka povezani su sa specifičnim formatom pohrane i ograničenjima raspona. U Oracle, svakoj vrijednosti ili konstanti dodjeljuje se tip podataka.

Glavna razlika između PL/SQL i SQL tipovi podataka je taj što su SQL tipovi podataka ograničeni na stupce tablice, dok se PL/SQL tipovi podataka koriste u PL/SQL blokovi. Više o tome kasnije u vodiču.

Slijedi dijagram različitih Oracle PL/SQL tipovi podataka:

Različiti tipovi podataka u PL/SQL
Različiti tipovi podataka u PL/SQL

PL/SQL CHARACTER tip podataka

Ovaj tip podataka pohranjuje alfanumeričke znakove u formatu niza znakova. Literalne vrijednosti uvijek trebaju biti zatvorene u jednostruke navodnike prilikom dodjeljivanja tipu podataka CHARACTER.

Ovaj karakterni tip podataka dalje je klasificiran na sljedeći način:

  • Tip podataka CHAR (fiksna veličina niza)
  • Tip podataka VARCHAR2 (varijabilna veličina niza)
  • Vrsta podataka VARCHAR
  • NCHAR (nativna fiksna veličina niza)
  • NVARCHAR2 (prirodna varijabla veličine niza)
  • DUGO i DUGO SIROVO
Tip podataka Description Sintaksa
TENK Ovaj tip podataka pohranjuje vrijednost niza, a veličina niza je fiksna u trenutku deklaracije. varijabla.

  • Oracle praznim slovima popunjava varijablu ako ne zauzima cijelu deklariranu veličinu, dakle Oracle alocira memoriju za deklariranu veličinu čak i ako varijabla nije popunjena.
  • Ograničenje veličine je 1-2000 bajtova.
  • CHAR je prikladniji gdje god se obrađuje fiksna veličina podataka.
grade CHAR;
manager CHAR (10):= 'guru99';

Objašnjenje sintakse:

  • Prva naredba deklarira varijablu 'grade' tipa podataka CHAR s maksimalnom veličinom od 1 bajta (zadana vrijednost).
  • Druga naredba deklarira varijablu 'manager' tipa podataka CHAR maksimalne veličine 10 i dodjeljuje vrijednost 'guru99', koja iznosi 6 bajtova. Oracle u ovom slučaju dodjeljuje 10 bajtova umjesto 6.
VARCHAR2 Ovaj tip podataka pohranjuje niz znakova, ali duljina nije fiksna.

  • Ograničenje veličine je 1-4000 bajtova za stupac tablice i 1-32767 bajtova za varijablu.
  • Veličina se definira za svaku varijablu prilikom deklaracije.
  • Oracle dodjeljuje memoriju tek nakon što je varijabla definirana, pa koristi stvarnu duljinu pohranjenog niza znakova umjesto deklarirane veličine.
  • Uvijek je dobro koristiti VARCHAR2 umjesto CHAR-a kako bi se optimiziralo korištenje memorije.
manager VARCHAR2(10) := 'guru99';

Objašnjenje sintakse:

  • Naredba deklarira varijablu 'manager' tipa podataka VARCHAR2 maksimalne veličine 10 i dodjeljuje 'guru99', što je 6 bajtova. Oracle ovdje dodjeljuje memoriju od samo 6 bajtova.
VARCHAR Ovo je sinonim za tip podataka VARCHAR2.

  • Uvijek je dobra praksa koristiti VARCHAR2 umjesto VARCHAR-a kako bi se izbjegle promjene u ponašanju.
manager VARCHAR(10) := 'guru99';

Objašnjenje sintakse:

  • Naredba deklarira varijablu 'manager' tipa podataka VARCHAR maksimalne veličine 10 i dodjeljuje 'guru99', 6 bajtova. Oracle alocira samo 6 bajtova, slično kao VARCHAR2.
NCHAR Ovaj tip podataka je isti kao CHAR, ali skup znakova je nacionalni skup znakova.

  • Ovaj skup znakova može se definirati za sesiju koristeći NLS_PARAMETERS.
  • Skup znakova može biti UTF16 ili UTF8.
  • Ograničenje veličine je 1-2000 bajtova.
native NCHAR(10);

Objašnjenje sintakse:

  • Naredba deklarira varijablu 'native' tipa podataka NCHAR s maksimalnom veličinom od 10.
  • Duljina ovisi o broju bajtova po znaku definiranim u skupu znakova.
NVARCHAR2 Ovaj tip podataka je isti kao VARCHAR2, ali skup znakova je nacionalni skup znakova.

  • Ovaj skup znakova može se definirati za sesiju koristeći NLS_PARAMETERS.
  • Skup znakova može biti UTF16 ili UTF8.
  • Ograničenje veličine je 1-4000 bajtova.
Native_var NVARCHAR2(10):= 'guru99';

Objašnjenje sintakse:

  • Naredba deklarira varijablu 'Native_var' tipa podataka NVARCHAR2 maksimalne veličine 10.
DUGO i DUGO SIROVO Ova vrsta podataka pohranjuje veliki tekst ili sirove podatke do maksimalne veličine od 2 GB.

  • Oni se uglavnom koriste u rječniku podataka.
  • LONG pohranjuje podatke o skupu znakova, dok LONG RAW pohranjuje podatke u binarnom formatu.
  • LONG RAW prihvaća medijske objekte i slike, dok LONG radi samo s podacima koji se mogu pohraniti pomoću skupa znakova.
Large_text LONG;
Large_raw LONG RAW;

Objašnjenje sintakse:

  • Naredba deklarira 'Large_text' tipa podataka LONG i 'Large_raw' tipa podataka LONG RAW.

Bilješka: Korištenje tipa podataka LONG nije preporučeno od strane OracleUmjesto toga, treba dati prednost tipu podataka LOB.

PL/SQL BROJ Tip podataka

Ovaj tip podataka pohranjuje fiksne ili pomične brojeve s preciznošću do 38 znamenki. Koristi se za rad s poljima koja sadrže samo brojčane podatke. Varijabla se može deklarirati s preciznošću i decimalnim znamenkama ili bez njih. Vrijednosti ne moraju biti zatvorene u navodnike prilikom dodjeljivanja.

A NUMBER(8,2);
B NUMBER(8);
C NUMBER;

Objašnjenje sintakse:

  • Prva deklaracija deklarira varijablu 'A' brojevnog tipa s ukupnom preciznošću 8 i 2 decimalne znamenke.
  • Drugi deklarira 'B' brojevnog tipa s ukupnom preciznošću 8 i bez decimalnih znamenki.
  • Treći je najgeneričkiji, deklarira 'C' brojevnog tipa podataka bez ograničenja preciznosti ili decimala. Može primiti do 38 znamenki.

PL/SQL BOOLEAN tip podataka

Ovaj tip podataka pohranjuje logičke vrijednosti. Oracle Booleov tip podataka predstavlja TRUE ili FALSE i uglavnom se koristi u uvjetnim naredbama. Vrijednosti ne moraju biti zatvorene u navodnike prilikom dodjeljivanja.

Var1 BOOLEAN;

Objašnjenje sintakse:

  • Varijabla 'Var1' je deklarirana kao BOOLEAN tip podataka. Izlaz će biti ili true ili false na temelju postavljenog uvjeta.

PL/SQL DATE tip podataka

Ovaj tip podataka pohranjuje vrijednosti u formatu datuma, kao što su datum, mjesec i godina. Kad god je varijabla definirana s tipom podataka DATE, ona može sadržavati informacije o vremenu; prema zadanim postavkama vrijeme je postavljeno na 12:00:00 ako nije navedeno. Vrijednosti prilikom dodjeljivanja moraju biti zatvorene u navodnike.

Norma Oracle Format vremena za ulaz i izlaz je 'DD-PON-GG', što je postavljeno na NLS_PARAMETERS (NLS_DATE_FORMAT) na razini sesije.

newyear DATE:= '01-JAN-2015';
current_date DATE:= SYSDATE;

Objašnjenje sintakse:

  • Varijabla 'nova godina' deklarirana je kao tip podataka DATE i dodijeljena joj je vrijednost 1. siječnja 2015.
  • Druga deklaracija deklarira 'current_date' kao tip podataka DATE i dodjeljuje trenutni sistemski datum.
  • Obje varijable sadrže informacije o vremenu.

PL/SQL LOB vrsta podataka

Ovaj tip podataka se uglavnom koristi za pohranu i manipuliranje velikim blokovima nestrukturiranih podataka kao što su slike i multimedijske datoteke. Oracle preferira LOB u odnosu na LONG tip podataka jer je fleksibilniji. Glavne prednosti LOB-a u odnosu na LONG su:

  • Tablica je ograničena na jedan LONG stupac, dok ne postoji ograničenje na broj LOB stupaca.
  • Alati za podatkovno sučelje prihvaćaju LOB tijekom replikacije, ali izostavljaju LONG stupce, koji se moraju ručno replicirati.
  • LONG stupac pohranjuje do 2 GB, dok LOB može pohraniti do 128 TB.
  • Oracle nastavlja poboljšavati tip podataka LOB sa svakim izdanjem, dok LONG ostaje uglavnom nepromijenjen.

Stoga je uvijek dobro koristiti tip podataka LOB umjesto LONG. Različiti tipovi podataka LOB u nastavku mogu pohraniti do 128 terabajta:

  1. BLOB
  2. CLOB i NCLOB
  3. BFILE
Tip podataka Description Sintaksa
BLOB Ova vrsta podataka pohranjuje LOB podatke u binarnom formatu datoteke do maksimalno 128 TB. Ne pohranjuje podatke na temelju detalja skupa znakova, tako da može pohranjivati ​​nestrukturirane podatke poput multimedijskih objekata i slika.
Binary_data BLOB;

Objašnjenje sintakse:

  • Varijabla 'Binary_data' je deklarirana kao BLOB.
CLOB i NCLOB CLOB pohranjuje LOB podatke u skupu znakova, dok NCLOB pohranjuje podatke u izvornom skupu znakova. Budući da koriste pohranu temeljenu na skupu znakova, ne mogu pohranjivati ​​podatke poput multimedije ili slika. Maksimalna veličina je 128 TB.
Charac_data CLOB;

Objašnjenje sintakse:

  • Varijabla 'Charac_data' je deklarirana kao CLOB tip podataka.
BFILE
  • BFILE pohranjuje nestrukturirane binarne podatke izvan baze podataka kao datoteku operacijskog sustava.
  • Veličina BFILE-a ograničena je operativnim sustavom, a datoteke su samo za čitanje i ne mogu se mijenjati.

Pitanja i odgovori

CHAR je fiksne duljine i praznine se popunjavaju deklariranom veličinom, trošeći prostor na kratke vrijednosti. VARCHAR2 je promjenjive duljine i pohranjuje samo stvarne znakove, pa je poželjniji za većinu stupaca stringova.

LOB dopušta mnogo stupaca po tablici, pohranjuje do 128 TB i stalno se poboljšava sa svakim izdanjem. LONG je ograničen na jedan stupac, na 2 GB i zadržan je uglavnom radi unatrag kompatibilnosti.

Ne u starijim izdanjima. BOOLEAN je bio samo PL/SQL tip, pa su stupci tablice umjesto toga koristili zastavicu NUMBER ili CHAR. Koristi se izravno unutar blokova za uvjetnu logiku.

Da. Profiliranjem vrijednosti uzorka za duljinu, raspon i format, umjetna inteligencija može predložiti VARCHAR2, NUMBER, DATE ili LOB i označiti stupce koji su preveliki. Potvrdite odabir u odnosu na buduće podatke.

Da. DATE pohranjuje stoljeće, godinu, mjesec, dan, sat, minutu i sekundu. Ako vrijeme nije navedeno, zadano je ponoć. Za dijelove sekunde ili vremenske zone koristite TIMESTAMP.

Sažmite ovu objavu uz: