Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • OS
  • SQL: Tipovi podataka. SQLite sistem upravljanja bazom podataka

SQL: Tipovi podataka. SQLite sistem upravljanja bazom podataka

Sve vrijednosti u koloni moraju biti istog tipa podataka. (Jedina iznimka od ovog pravila su vrijednosti tipa podataka SQL_VARIANT.) Tipovi podataka koji se koriste u Transact-SQL mogu se kategorizirati na sljedeći način:

    numerički tipovi;

    tipovi znakova;

    privremene vrste (datumi i/ili vremena);

    druge vrste podataka.

Numerički tipovi podataka

Kao što možete očekivati ​​iz njihovog imena, numerički tipovi podataka se koriste za predstavljanje brojeva. Ove vrste i njihovi kratki opisi prikazani su u tabeli ispod:

T-SQL numerički tipovi podataka
Tip podataka Opis
INTEGER

Predstavlja 4-bajtne vrijednosti cijelih brojeva u rasponu od -2 32 do 2 32 - 1. INT je skraćenica za INTEGER.

SMALLINT

Predstavlja 2-bajtne vrijednosti cijelih brojeva u rasponu od -32,768 do 32,767

TINYINT

Predstavlja 1-bajtne cjelobrojne vrijednosti u rasponu od 0 do 255

BIGINT

Predstavlja 8-bajtne vrijednosti cijelih brojeva u rasponu od -2 63 do 2 63 - 1

DECIMAL (p, [s])

Predstavlja vrijednosti fiksne točke. Argument p (preciznost) specificira ukupan broj cifara, a argument s (razmjera) specificira broj cifara desno od očekivane decimalne točke. Ovisno o vrijednosti argumenta p, decimalne vrijednosti se pohranjuju u 5 do 17 bajtova. DEC je skraćeni oblik za DECIMAL.

NUMERIČKI (p, [s])

Sinonim za DECIMAL.

REAL

Koristi se za predstavljanje vrijednosti s pomičnim zarezom. Raspon pozitivnih vrijednosti je otprilike 2,23E -308 do -1,18E -38. Null vrijednost se također može dati.

FLOAT [(p)]

Kao i REAL, on predstavlja vrijednosti s pomičnim zarezom [(p)]. Argument p specificira preciznost. Za str< 25 представляемые значения имеют одинарную точность (требуют 4 байта для хранения), а при значении p >= 25 - dvostruka preciznost (zahteva 8 bajtova za skladištenje).

NOVAC

Koristi se za predstavljanje novčanih vrijednosti. MONEY vrijednosti odgovaraju 8-bajtnim DECIMAL vrijednostima zaokruženim na četiri decimale

SMALLMONEY

Predstavlja iste vrijednosti kao NOVAC, ali 4 bajta

Tipovi znakovnih podataka

Postoje dvije opće vrste tipova znakovnih podataka. Stringovi mogu biti predstavljeni jednobajtnim znakovima ili Unicode znakovima. (Unicode koristi više bajtova za predstavljanje jednog znaka.) Osim toga, nizovi mogu biti različite dužine. Tabela ispod navodi kategorije tipova znakovnih podataka sa kratkim opisom.

T-SQL tipovi znakovnih podataka
Tip podataka Opis
CHAR [(n)]

Koristi se za predstavljanje nizova fiksne dužine od n jednobajtnih znakova. Maksimalna vrijednost za n je 8000. CHARACTER (n) je alternativni ekvivalentni oblik CHAR (n). Ako n nije eksplicitno specificirano, tada se pretpostavlja da je njegova vrijednost 1.

VARCHAR [(n)]

Koristi se za predstavljanje niza jednobajtnih znakova promjenljive dužine (0< n < 8 000). В отличие от типа данных CHAR, количество байтов для хранения значений типа данных VARCHAR равно их действительной длине. Этот тип данных имеет два синонима: CHAR VARYING и CHARACTER VARYING.

NCHAR [(n)]

Koristi se za pohranjivanje nizova Unicode znakova fiksne dužine. Glavna razlika između tipova podataka CHAR i NCHAR je u tome što svaki znak NCHAR niza zauzima 2 bajta, a CHAR niz 1 bajt. Stoga, niz tipa podataka NCHAR može sadržavati najviše 4000 znakova. Tip NCHAR se može koristiti za pohranjivanje, na primjer, znakova ruskog alfabeta, pošto jednobajtna kodiranja to ne dozvoljavaju.

NVARCHAR [(n)]

Koristi se za pohranjivanje nizova promjenjive dužine Unicode znakova. NVARCHAR niz zahtijeva 2 bajta za pohranjivanje svakog znaka, tako da NVARCHAR niz može sadržavati najviše 4000 znakova.

VARCHAR tip podataka je identičan tipu podataka CHAR, s jednom razlikom: ako je sadržaj niza CHAR (n) kraći od n znakova, ostatak niza je ispunjen razmacima. A broj bajtova koje zauzima VARCHAR niz je uvijek jednak broju znakova u njemu.

Tipovi podataka o vremenu

Transact-SQL podržava sljedeće privremene tipove podataka:

Tipovi podataka DATETIME i SMALLDATETIME se koriste za pohranjivanje datuma i vremena kao cjelobrojne vrijednosti od 4 i 2 bajta, respektivno. Vrijednosti tipa DATETIME i SMALLDATETIME interno se pohranjuju kao dvije odvojene numeričke vrijednosti. Dio datuma vrijednosti DATETIME je pohranjen u rasponu od 01/01/1753 do 31/12/9999, a odgovarajući dio vrijednosti SMALLDATETIME je u rasponu od 01/01/1900 do 06/06/2079. Vremenska komponenta je pohranjena u drugom polju od 4 bajta (2 bajta za vrijednosti SMALLDATETIME) kao tri stotinke sekunde (za DATETIME) ili minuta (za SMALLDATETIME) od ponoći.

Ako želite pohraniti samo dio datuma ili vremena, korištenje vrijednosti DATETIME ili SMALLDATETIME je pomalo nezgodno. Iz tog razloga, tipovi podataka su uvedeni u SQL Server DATUM i VRIJEME koji pohranjuju samo komponente datuma i vremena vrijednosti DATETIME, respektivno. DATE vrijednosti su dugačke 3 bajta, što predstavlja raspon datuma od 01/01/0001 do 31/12/9999. Vrijednosti TIME su 3-5 bajtova i predstavljaju vrijeme sa tačnošću od 100 ns.

Tip podataka DATETIME2 koristi se za predstavljanje vrijednosti datuma i vremena sa velikom preciznošću. Ovisno o zahtjevima, vrijednosti ovog tipa mogu se definirati u različitim dužinama, a zauzimaju od 6 do 8 bajtova. Vremenska komponenta predstavlja vrijeme sa tačnošću od 100 ns. Ovaj tip podataka ne podržava ljetno računanje vremena.

Svi privremeni tipovi podataka o kojima smo do sada raspravljali ne podržavaju vremenske zone. Tip podataka DATETIMEOFFSET ima komponentu za pohranjivanje pomaka vremenske zone. Iz tog razloga, vrijednosti ovog tipa su dugačke 6 do 8 bajtova. Sva ostala svojstva ovog tipa podataka su ista kao i odgovarajuća svojstva tipa podataka DATETIME2.

Prema zadanim postavkama, Transact-SQL vrijednosti datuma su definirane kao string "mmm dd gggg" (na primjer, "10. januar 1993."), zatvoren u jednostruke ili dvostruke navodnike. (Ali relativni redoslijed sastavnica mjeseca, dana i godine može se promijeniti pomoću instrukcije SET DATEFORMAT... Osim toga, sistem podržava numeričke vrijednosti za komponentu mjeseca i / i - separatore.) Slično tome, vrijednost vremena je prikazana u 24-satnom formatu kao "hh: mm" (na primjer, "22:24") .

Transact-SQL podržava različite formate unosa za vrijednosti DATETIME. Kao što je spomenuto, svaki sastavni dio je definiran zasebno, tako da se vrijednosti datuma i vremena mogu specificirati bilo kojim redoslijedom ili zasebno. Ako jedna od komponenti nije specificirana, sistem koristi zadanu vrijednost za nju. (Podrazumevano vrijeme je 12:00 (prije podne).)

Binarni i bitni tipovi podataka

Postoje dvije vrste binarnih tipova podataka: BINARY i VARBINARY. Ovi tipovi podataka opisuju objekte podataka u internom formatu sistema i koriste se za pohranjivanje nizova bitova. Iz tog razloga, vrijednosti ovih tipova se unose pomoću heksadecimalnih brojeva.

Vrijednosti tipa bita sadrže samo jedan bit, tako da se u jednom bajtu može pohraniti do osam vrijednosti ovog tipa. Kratak opis svojstava binarnih i bitnih tipova podataka dat je u tabeli ispod:

Vrsta podataka velikog objekta

LOB (Veliki OBject) tip podataka koristi se za pohranjivanje objekata podataka veličine do 2 GB. Takvi objekti se obično koriste za pohranjivanje velikih količina tekstualnih podataka i za učitavanje dodataka i audio i video datoteka. Transact-SQL podržava sljedeće LOB tipove podataka:

Počevši od SQL Servera 2005, isti model programiranja se primjenjuje i na vrijednosti standardnog tipa podataka i na vrijednosti tipa podataka LOB. Drugim riječima, zgodne sistemske funkcije i string operatori mogu se koristiti za rad sa LOB objektima.

U Database Engine parametar MAX koristi se s tipovima podataka VARCHAR, NVARCHAR i VARBINARY za definiranje vrijednosti za stupce promjenjive dužine. Kada koristite zadanu MAX dužinu umjesto eksplicitnog navođenja dužine vrijednosti, sistem analizira dužinu određenog niza i odlučuje da li će taj niz pohraniti kao redovnu vrijednost ili kao LOB vrijednost. Parametar MAX specificira da vrijednosti stupca mogu biti velike kao maksimalna veličina LOB-a za ovaj sistem.

Iako sistem odlučuje kako se LOB-ovi pohranjuju, default postavke se mogu nadjačati korištenjem sistemske procedure sp_tableoption s argumentom LARGE_VALUE_TYPES_OUT_OF_ROW. Ako je ovaj argument 1, tada će podaci u stupcima deklariranim pomoću parametra MAX biti pohranjeni odvojeno od ostatka podataka. Ako je argument 0, Database Engine pohranjuje sve vrijednosti do 8060 bajtova u redu tablice kao normalne podatke, a veće vrijednosti se pohranjuju izvan reda u području LOB memorije.

Počevši od SQL Servera 2008, mogu se koristiti VARBINARY (MAX) stupci FILESTREAM atribut da sačuvate podatke BLOB (binarni veliki objekt) direktno na NTFS sistem datoteka. Glavna prednost ovog atributa je da je veličina odgovarajućeg LOB-a ograničena samo veličinom volumena sistema datoteka.

UNIQUEIDENTIFIER tip podataka

Kao što ime sugerira, tip podataka UNIQUEIDENTIFIER je nedvosmislen identifikacijski broj koji se pohranjuje kao 16-bajtni binarni niz. Ovaj tip podataka je usko povezan sa identifikatorom GUID (globalno jedinstveni identifikator), što garantuje nedvosmislenost na globalnom nivou. Dakle, ovaj tip podataka omogućava jedinstvenu identifikaciju podataka i objekata u distribuiranim sistemima.

Možete inicijalizirati UNIQUEIDENTIFIER stupac ili varijablu koristeći funkciju NEWID ili NEWSEQUENTIALID, ili koristeći prilagođenu formatiranu konstantu niza koja se sastoji od heksadecimalnih znamenki i crtica. Ove karakteristike su obrađene u sljedećem članku.

Pomoću upita može se pristupiti koloni sa vrijednostima tipa podataka UNIQUEIDENTIFIER ROWGUIDCOL ključna riječ da naznači da kolona sadrži vrijednosti identiteta. (Ova ključna riječ ne generiše nikakve vrijednosti.) Tablica može sadržavati više stupaca UNIQUEIDENTIFIER, ali samo jedan od njih može imati ključnu riječ ROWGUIDCOL.

SQL_VARIANT tip podataka

SQL_VARIANT tip podataka može se koristiti za pohranjivanje vrijednosti različitih tipova u isto vrijeme, kao što su numeričke vrijednosti, nizovi i datumi. (Izuzetak su TIMESTAMP vrijednosti.) Svaka vrijednost u SQL_VARIANT stupcu ima dva dijela: samu vrijednost i informacije koje opisuju vrijednost. Ove informacije sadrže sva svojstva stvarnog tipa podataka vrijednosti, kao što su dužina, razmjer i preciznost.

Funkcija SQL_VARIANT_PROPERTY se koristi za pristup i prikaz informacija o vrijednostima stupca tipa SQL_VARIANT.

Trebali biste deklarirati tip stupca kao SQL_VARIANT samo ako zaista trebate. Na primjer, ako je kolona namijenjena za pohranjivanje vrijednosti različitih tipova podataka, ili ako, prilikom kreiranja tabele, nije poznat tip podataka koji će biti pohranjen u ovoj koloni.

HIERARCHYID tip podataka

Tip podataka HIERARCHYID se koristi za pohranjivanje kompletne hijerarhije. Na primjer, ova vrsta vrijednosti može pohraniti hijerarhiju svih zaposlenih ili hijerarhiju fascikli. Ovaj tip je implementiran kao CLR korisnički definiran tip koji obuhvata nekoliko sistemskih funkcija za kreiranje i rad sa čvorovima hijerarhije. Sljedeće funkcije, između ostalih, pripadaju metodama ovog tipa podataka: GetLevel (), GetAncestor (), GetDescendant (), Read () i Write ().

TIMESTAMP tip podataka

Tip podataka TIMESTAMP specificira stupac koji je VARBINARY (8) ili BINARY (8), ovisno o svojstvu stupca, da bude null. Za svaku bazu podataka, sistem održava brojač koji se povećava kad god se umetne ili ažurira bilo koji red koji sadrži TIMESTAMP ćeliju i dodjeljuje tu ćeliju toj ćeliji. Dakle, koristeći ćelije tipa TIMESTAMP, možete odrediti relativno vrijeme posljednje izmjene odgovarajućih redova tabele. ( ROWVERSION je sinonim za TIMESTAMP.)

Sama po sebi, vrijednost pohranjena u stupcu TIMESTAMP nije važna. Ova kolona se obično koristi za određivanje da li se određeni red u tabeli promijenio od posljednjeg puta kada mu se pristupilo.

Opcije skladištenja

Počevši od SQL Servera 2008, postoje dvije različite opcije skladištenja, od kojih svaka može uštedjeti LOB-ove i uštedjeti prostor na disku. Ovo su sljedeće opcije:

    skladištenje podataka FILESTREAM;

    skladištenje pomoću rijetkih kolona.

Ove opcije skladištenja se razmatraju u sledećim pododeljcima.

Pohranjivanje podataka FILESTREAM

Kao što je ranije spomenuto, SQL Server podržava pohranu velikih objekata (LOB) putem tipa podataka VARBINARY (MAX). Svojstvo ovog tipa podataka je da su binarni veliki objekti (BLOB) pohranjeni u bazi podataka. Ova okolnost može uzrokovati probleme s performansama pri pohranjivanju vrlo velikih datoteka kao što su audio ili video datoteke. U takvim slučajevima, ovi podaci se pohranjuju izvan baze podataka u vanjskim datotekama.

Skladištenje podataka FILESTREAM podržava upravljanje LOB-ovima koji su pohranjeni u NTFS sistemu datoteka. Glavna prednost ove vrste skladištenja je da iako se podaci pohranjuju izvan baze podataka, njima upravlja baza podataka. Dakle, ovaj tip skladištenja ima sljedeća svojstva:

    Podaci FILESTREAM mogu se spremiti korištenjem izraza CREATE TABLE, a izrazi za modifikaciju podataka (SELECT, INSERT, UPDATE i DELETE) se mogu koristiti za manipulaciju podacima.

    sistem upravljanja bazom podataka pruža isti nivo sigurnosti za FILESTREAM podatke kao i za podatke pohranjene u bazi podataka.

Sparse columns

Svrha opcije skladištenja koju pružaju rijetki stupci značajno se razlikuje od svrhe skladištenja tipa FILESTREAM. Dok je svrha skladišta FILESTREAM pohranjivanje LOB-ova izvan baze podataka, svrha rijetkih stupaca je da minimiziraju prostor na disku koji baza podataka zauzima.

Kolone ovog tipa vam omogućavaju da optimizujete skladištenje kolona pri čemu je većina njihovih vrednosti nula. Kada koristite rijetke kolone, nije vam potreban prostor na disku za pohranjivanje nul vrijednosti, ali s druge strane, pohranjivanje ne-null vrijednosti zahtijeva dodatna 2 do 4 bajta, ovisno o njihovoj vrsti. Iz tog razloga, Microsoft preporučuje korištenje rijetkih kolona samo kada očekujete najmanje 20% ukupne uštede prostora na disku.

Retke kolone su definisane na isti način kao i ostale kolone u tabeli; obraćanje njima vrši se na sličan način. To znači da možete koristiti izraze SELECT, INSERT, UPDATE i DELETE za pristup rijetkim stupcima na isti način kao što biste koristili obične stupce. Jedina razlika je u stvaranju rijetkih stupaca: za definiranje određene kolone koristi se rijetka SPARSE argument nakon naziva kolone, kao što je prikazano u ovom primjeru:

column_name tip podataka SPARSE

Više rijetkih stupaca u tabeli može se grupirati u skup kolona. Takav skup bi bio alternativni način za pohranjivanje i pristup vrijednostima u svim rijetkim stupcima tablice.

NULL vrijednost

Null vrijednost je posebna vrijednost koja se može dodijeliti ćeliji tablice. Ova vrijednost se obično koristi kada su informacije u ćeliji nepoznate ili neprimjenjive. Na primjer, ako ne znate kućni broj telefona zaposlenog u kompaniji, preporučujemo da odgovarajuću ćeliju u koloni home_telephone postavite na null.

Ako je vrijednost bilo kojeg operanda bilo kojeg aritmetičkog izraza null, vrijednost rezultata evaluacije tog izraza također će biti null. Stoga, u unarnim aritmetičkim operacijama, ako je vrijednost izraza A nula, onda i + A i -A vraćaju null. U binarnim izrazima, ako je vrijednost jednog ili oba operanda A i B nula, tada će rezultat operacije sabiranja, oduzimanja, množenja, dijeljenja i dijeljenja po modulu ovih operanda također biti nul.

Ako izraz sadrži operator poređenja i vrijednost jednog ili oba operanda ove operacije je nula, rezultat ove operacije će također biti null.

Null vrijednost mora se razlikovati od svih ostalih vrijednosti. Za numeričke tipove podataka, vrijednost 0 i null nisu iste. Isto vrijedi za prazan string i null za tipove znakovnih podataka.

Null vrijednosti mogu se pohraniti u kolonu tablice samo ako je to eksplicitno dozvoljeno u definiciji stupca. S druge strane, null vrijednosti nisu dozvoljene u koloni ako je NOT NULL eksplicitno navedeno u njegovoj definiciji. Ako je NULL ili NOT NULL eksplicitno specificirano za stupac s tipom podataka (sa izuzetkom tipa TIMESTAMP), tada se dodjeljuju sljedeće vrijednosti:

    NULL ako vrijednost parametra ANSI_NULL_DFLT_ON SET izraz je uključen.

    NOT NULL ako je vrijednost parametra ANSI_NULL_DFLT_OFF SET izraza uključena.

Ako naredba set nije aktivirana, kolona će po defaultu biti NOT NULL. (Nulte vrijednosti nisu dozvoljene za TIMESTAMP kolone.)

Danas u svijetu postoji ogroman broj tehnologija i sredstava za pohranjivanje informacija. Baze podataka su jedan od najčešćih alata. Za rad sa njima koriste se različiti kontrolni sistemi. Ova metoda skladištenja pretpostavlja da su sve informacije jasno strukturirane i unesene u posebne tabele. Tabele se pak sastoje od stupaca atributa određene vrste informacija.

Šta je tip podataka?

Danas postoji nekoliko definicija koje objašnjavaju suštinu koncepta "tip podataka". Svaki od njih ima jedno opšte značenje. Konvencionalno, tip podataka se može označiti kao grupa podataka koju karakteriziraju njegove vrijednosti - numeričke, simboličke i tako dalje - kao i operacije koje se mogu primijeniti na dotične vrijednosti. Opseg upotrebe različitih vrsta podataka je veoma raznolik. Podaci se mogu koristiti ne samo za pohranjivanje informacija, već i u programiranju za rješavanje dodijeljenih zadataka. Prilikom razvoja programa, praksa korištenja vlastitih tipova podataka sa određenim skupom operacija postala je široko rasprostranjena. Informacije o korisniku uvijek se temelje na osnovnim tipovima podataka. SQL standard je baziran na korištenju najčešćih tipova informacija, ali sa nizom specifičnih dodataka.

Tipovi podataka: klasifikacija

Grupisanje podataka po tipu pojavilo se davno. To je uzrokovano potrebom da se strukturiraju sve količine informacija kako bi se osigurala pogodnost njihove obrade. Danas se svi postojeći tipovi podataka baziraju na dva osnovna tipa: znakovni i numerički. Na osnovu ovih podataka razvijena je moderna klasifikacija koja uključuje pokazivače, integer, boolean, numeričku pomičnu tačku i niz informacija tipa. Sve navedeno je u potpunosti pokriveno SQL klasifikacijom. Međutim, postoje posebni dodaci za moderne sisteme upravljanja bazama podataka. To uključuje MySQL i Oracle.

Osnovni tipovi podataka

Tipovi podataka koji se koriste za kreiranje atributa tablice koji zadovoljavaju standarde SQL jezika mogu se podijeliti u 4 klase: vrijednosti niza, razlomci, cjelobrojne vrijednosti, vrijednosti vremena i datuma.

String tip podataka

Prva vrsta podataka vam omogućava da pohranite sve informacije predstavljene u obliku simbola. U ovom slučaju govorimo o posebnim znakovima i slovima, koji će se zajedno tretirati kao stringovi u bilo kojem SQL upitu. Ispod su tipovi podataka koji čine prvu grupu:

- CHAR (veličina) - ovaj tip se koristi za pohranjivanje nizova. Parametar naveden u zagradama omogućava vam da fiksirate dužinu pohranjenog niza. Za string možete postaviti maksimalnu veličinu u bajtovima - 255.

- VAR CHAR (veličina) - po analogiji sa prethodnim tipom, ovaj tip omogućava pohranjivanje stringova čija dužina ne prelazi 255 karaktera. Glavna razlika ovog tipa od CHAR-a je u tome što se ovdje dodjeljuje potrebna količina memorije za pohranjivanje vrijednosti ovog tipa. Dakle, za string koji se sastoji od 5 karaktera biće potrebno 6 bajtova memorije. U prvom slučaju, memorija za pohranjivanje vrijednosti bit će dodijeljena u skladu sa navedenim parametrom.

- TINY TEXT - ovaj tip se koristi za pohranjivanje tekstualnih informacija, čija veličina ne prelazi 65535 znakova.

- BLOB - ovaj tip je sličan tipu TEXT. Omogućava pohranjivanje tekstualnih informacija u bazu podataka, čiji volumen može biti do 65.535 znakova. Međutim, u praksi se ovaj tip može koristiti za pohranjivanje slika, zvučnih informacija, elektronskih dokumenata i još mnogo toga.

- SREDNJI TEKST - ovaj tip je razvijen na osnovu tipa TEKST. Zbog povećane veličine od 16777.215 znakova, ovaj tip vam omogućava da pohranite više podataka.

- MEDIU MBLOB - koristi se za skladištenje elektronskih dokumenata u bazi podataka čija veličina ne prelazi 16.777.215 karaktera.

- DUGA TEKST - sličan po funkcionalnosti prethodnim tipovima podataka, međutim, ima kapacitet memorije povećan na 4 GB.

- LONG BLOB - omogućava postavljanje velikih podataka u bazu podataka - 4294967295 znakova.

- ENUM je poseban tip podataka koji se koristi za specificiranje liste različitih vrijednosti. Ovaj tip vam omogućava da navedete 65535 vrijednosti. Stringovi ovog tipa mogu uzeti samo jednu od svih vrijednosti navedenih u skupu. U slučaju kada će se izvršiti dodavanje vrijednosti koje nisu na navedenoj listi, prazne vrijednosti će biti upisane u tabelu.

- SET - ovaj tip podataka specificira skup važećih vrijednosti. Za razliku od prethodnog tipa, koristi se za držanje 64-parametara koji se mogu inicijalizirati s više elemenata datih argumenata.

Tabela sa tipovima frakcijskih podataka

Frakcijski SQL tip podataka se koristi za pohranjivanje brojeva s pomičnim zarezom. Po pravilu, u praksi ova vrsta podataka karakteriše različite finansijske pokazatelje. Ovisno o potrebnoj preciznosti, možete koristiti jedan od nekoliko tipova prikazanih u nastavku.

FLOAT (veličina) - koristi se za pohranjivanje razlomaka određene preciznosti - d;

- DOUBLE (veličina) - koristi se za pohranjivanje razlomaka sa binarnom preciznošću;

- DECIMAL (veličina, d) - koristi se za pohranjivanje frakcijskih vrijednosti kao nizove. Koristi se u bankarskim proračunima, gdje preciznost razlomka može doseći 8 ili 10 cifara.

Prva dva tipa se ne mogu koristiti u ovoj oblasti. Čuvanje finansijskih pokazatelja u obliku nizova može uvelike olakšati rješavanje mnogih praktičnih problema. Prilikom obavljanja transakcija i rješavanja finansijskih problema, SQL konverzija tipova podataka je od velike važnosti. Programeri moraju uzeti u obzir vrstu skladištenja informacija i metode obrade kako bi podaci stalno ostali nepromijenjeni.

Cjelobrojni podaci

Cijeli brojevi su zasebna grupa brojeva koji čine jednu od glavnih klasa. Cjelobrojni tipovi podataka temelje se na osnovnom tipu INTEGER s nekim ekstenzijama svojstava.

  • INT (veličina) - odgovoran je za pohranjivanje cjelobrojnih podataka u rasponu [-231; 231-1].
  • TINYINT (veličina) - Koristi se za pohranjivanje brojeva u rasponu od -128 do 127.
  • SMALLINT (veličina) - odlikuje se neznatno povećanim rasponom pohranjenih podataka od -32768 do 32767.
  • MEDIUMINT (veličina) - koristi se za pohranjivanje brojeva od -223 do 223-1.
  • BIGINT (veličina) - Pokriva raspon cjelobrojnih vrijednosti od -263 do 263-1.

Odabir pravog tipa podataka može značajno uštedjeti memoriju, a istovremeno smanjiti vrijeme servera prilikom izvršavanja potrebnih SQL upita. Tipovi podataka i njihovi rasponi određuju količinu potrebne memorije. Programeri bi trebali biti svjesni da korištenje velikih raspona za atribute može povećati opterećenje memorije. Neophodno je jasno analizirati probleme koji se rešavaju i identifikovati situacije u kojima je poznat približan opseg podataka i određen uslov za korišćenje brojeva sa predznakom. Ako se koristi mali raspon korištenih argumenata, a svi brojevi su pozitivni, tada bi bilo ispravnije koristiti neoznačeni tip za koji je namijenjen atribut UNSIGNED.

Tipovi podataka o vremenu i datumu

Tipovi podataka o vremenu i datumu su od velikog interesa za učenje osnova SQL-a. Upotreba sljedećih tipova može pružiti dodatne prednosti u slučaju razvoja sistema koji direktno zavise od vremena.

  • DATUM - glavna svrha ovog tipa je pohranjivanje datuma u formatu "godina-mjesec-dan". Vrijednosti su obično odvojene sa "-". Međutim, ponekad se bilo koji znak, osim brojeva, može koristiti kao separator.
  • VRIJEME - omogućava unošenje privremenih vrijednosti u ćeliju tabele. Vrijednosti su navedene u formatu "hh: mm: ss".
  • DATUM VRIJEME - ovaj tip kombinuje funkcije prethodne dvije. Format skladištenja podataka u ovom slučaju izgleda ovako "gggg-mm-dd: hh: mm: ss".
  • TIME STAMP - ovaj tip pohranjuje datum i vrijeme, izračunato brojem sekundi koje su prošle od ponoći 01.01.1970. do određene vrijednosti.
  • GODINA (M) - Koristi se za pohranjivanje godišnjih vrijednosti u dvocifrenom ili četverocifrenom formatu.

Šta još trebate znati? Sve gore navedene tipove podataka sistematizirao je Microsoft. Također je detaljnije razvila SQL tipove podataka. Tako, na primjer, obrazac opisuje koliko memorije se dodjeljuje kada se koristi svaki tip podataka. Nakon proučavanja svih dostupnih informacija, programerima bi trebalo postati lakše da dizajniraju strukturu baze podataka i tabela na osnovu hardverskih mogućnosti servera.

NULL- specijalni pokazivač

U nekim slučajevima, prilikom popunjavanja baze podataka, dolazi do situacije da prilikom dodavanja zapisa u tabelu nema potrebe unositi podatke u sve kolone. Da biste to učinili, morate koristiti posebno null odredište ili NULL pokazivač. On koristi SQL kao pomoć. Tipovi podataka stupaca koji se ne moraju popunjavati su specificirani sa operatorom za uključivanje nul vrijednosti kada se kreiraju tabele. Također, NULL operator kada se koristi dodatni NOT prefiks može se koristiti za označavanje obaveznog popunjavanja svih vrijednosti. NULL pokazivač nema tip. Jednostavno ukazuje na praznu vrijednost u tabelama baze podataka. Iz tog razloga, može se kombinirati s jednim od gore navedenih tipova podataka.

SQL tipovi podataka.

Opis

Vrste nizova

Niz znakova konstantne dužine

CHAR (broj_ znakova)

Niz znakova promjenjive dužine

VARCHAR (broj_znakova)

Veliki niz znakova promjenjive dužine

Big binary

varijabilni objekat

Numerički egzaktni tipovi

Integer

Integer. Broj bitova je veći ili jednak INTEGER

Integer. Broj pražnjenja

manje od ili jednako INTEGER

Broj fiksne tačke

(broj_cifre - ukupan broj cifara, skala - decimalna mjesta)

(NUMERIČKI | DECIMAL | DEC) (broj cifara, skala)

Numerički neprecizni tipovi

Broj s pomičnim zarezom

Broj s pomičnim zarezom. Broj cifara je veći ili jednak REAL

DOUBLE PRECISION

Broj s pomičnim zarezom

FLOAT (broj cifara)

Privremeni tipovi

Datum. Sadrži godinu, mjesec i dan

Vremenska oznaka. Sadrži godinu, mjesec, dan, sat, minute i sekunde

TIMESTAMP (skala)

Vrijeme. Sadrži sat, minute i sekunde (skala - količina

predznaci u razlomcima sekunde). Moguća indikacija vremenske zone

Vremenska skala)

Period.

Boolean tip

Prihvata logičke vrijednosti

      1. Literali

Literali su najjednostavniji izrazi koji su vrijednosti odgovarajućih tipova. Svaki tip podataka ima način predstavljanja svojih literala tipa. Sljedeći literali su dostupni u SQL-u:

    znakovni nizovi (primjer: "niz znakova"),

    binarni nizovi (primjer: X "1AFFD561"),

    brojevi (primjeri: 27 -863 0,173 .8582 -9572,5619 11,54E7 .94E194 93E-12 -29,629E27),

    privremeni (DATUM "2005-12-07" VRIJEME "HH: MI: SS" VREMENSKA OZNAKA "GGGG-MM-DD HH: MI: SS"),

    logičke (TAČNO, LAŽNO, NEPOZNATO).

      1. Operatori i izrazi

Operateri su jezičke konstrukcije koje specificiraju operacije nad elementima podataka i kao rezultat vraćaju novu vrijednost. Stavke podataka koje se koriste u operatorima nazivaju se operandi ili argumenti. Operatori su predstavljeni kao specijalni znakovi ili ključne riječi. Na primjer, operator množenja je predstavljen zvjezdicom (*), a null test operator je predstavljen ključnom riječi IS NULL.

Postoje dvije glavne vrste operatera. Unarni imaju samo jedan operand i obično su predstavljeni u sljedećem formatu:

operand operator

Binarne datoteke rade na dva operanda i predstavljene su na sljedeći način:

operand operator operand

Osim toga, postoje posebni operatori koji koriste više od dva operanda. Tip operatora je određen tipom argumenata koji se koriste i tipom vraćenog rezultata. Dostupni su operateri sljedećih tipova:

    string (||);

    aritmetika;

    mozgalica;

    predikati poređenja;

    posebni predikati;

    operatori nad skupovima (tabelama).

Za svaku kolonu obavezno je definisati, pored jedinstvenog naziva kolone unutar tabele, i tip podataka. Dodjeljivanje tipa podataka svakoj koloni jedan je od prvih koraka koji se poduzimaju prilikom dizajniranja tablice. Tipovi podataka definiraju važeće vrijednosti podataka za svaku kolonu.

2.3.1 Tipovi char i varchar.

To su tipovi znakovnih podataka fiksne ili promjenjive dužine.

char [(n)] je znakovni podatak koji nije Unicode fiksne dužine s dužinom od n bajtova. Vrijednost za n mora biti između 1 i 8000. Veličina memorije za ovu vrstu podataka je n bajtova. ISO sinonim za char je znak.

varchar [(n | max)] - podaci znakova promjenljive dužine, nisu u Unicode-u; n može biti u rasponu od 1 do 8.000; max znači da je maksimalna veličina memorije 2 ^ 31-1 bajta. Veličina memorije jednaka je stvarnoj dužini podataka plus dva bajta. Uneseni podaci mogu imati 0 znakova. ISO sinonimi za varchar su char varira ili karakter varira.

Char ili varchar podaci mogu biti jedan znak ili niz s maksimalnom dužinom od 8000 znakova za char podatke i do 2 ^ 31 karaktera za podatke varchar.

Varchar tipovi podataka mogu imati dva oblika. Varchar podaci mogu biti određene maksimalne dužine u znakovima, na primjer varchar (6) označava da ovaj tip podataka može pohraniti najviše šest znakova, ili može biti u obliku varchar (max), što povećava maksimalan broj znakova koji se mogu pohraniti u podatke ovog tipa, do 2 ^ 31.

Znakovne konstante moraju biti zatvorene u jednostruke (") ili dvostruke navodnike ("). Preporučuje se stavljanje karakternih konstanti u jednostruke navodnike. Ograđivanje karakternih konstanti u dvostrukim navodnicima ponekad nije dozvoljeno kada je QUOTED IDENTIFIER UKLJUČENO.

Ovaj primjer Transact-SQL koda dodjeljuje vrijednost varijabli znakova:

DECLARE @MyCharVar CHAR (25)

SET @MyCharVar = "Ricardo Adocicados"

Ako koristite jednostruke navodnike za zatvaranje karakterne konstante koja sadrži ugniježđeni jednostruki navodnik, koristite dva pojedinačna navodnika da predstavite ugniježđeni jednostruki navodnik.

Na primjer:

SET @MyCharVar = "O" "Leary"

Ako su podaci koji se pohranjuju duži od dozvoljenog broja znakova, skraćuju se. Na primjer, ako je kolona definirana kao char (10) i u njoj je pohranjena vrijednost "Ovo je vrlo dugačak niz znakova", tada SQL Server skraćuje niz znakova na "Ovo je važeće".

Tip podataka char postaje tip podataka fiksne dužine ako je specificirana klauzula NOT NULL. Ako je vrijednost kraća od dužine stupca umetnuta u stupac char s klauzulom NOT NULL, ta vrijednost se dodaje udesno s razmacima do veličine kolone. Na primjer, ako je kolona definirana kao char (10) i vrijednost "music" treba biti pohranjena u njoj, SQL Server pohranjuje podatke kao "music ____", gdje je "_" razmak.

2.3.2 Tipovi podataka nchar i nvarchar.

To su tipovi znakova konstantne dužine (nchar) ili varijabilne dužine (nvarchar) koji sadrže Unicode podatke i koriste UCS-2 skup znakova.

nchar [(n)] - Unicode znakovni podaci, dužine n znakova. Argument n mora biti između 1 i 4000. Veličina memorije je dva puta n bajtova. ISO sinonimi za nchar su nacionalni char i nacionalni karakter.

nvarchar [(n | max)] - promjenjive dužine Unicode znakovni podaci. Argument n može biti u rasponu od 1 do 4000. Argument max specificira da je maksimalna veličina memorije 2 ^ 31-1 (2,147,483,647) bajta. Veličina memorije u bajtovima je dvostruko veća od broja unesenih znakova + 2 bajta. Uneseni podaci mogu imati 0 znakova. ISO sinonimi za nvarchar su nacionalni karakter koji varira i nacionalni karakter varira.

Lista ispod pokazuje da Microsoft SQL Server podržava većinu tipova podataka SQL 2003. Također, SQL Server podržava dodatne tipove podataka koji se koriste za jedinstvenu identifikaciju redova podataka u tabeli i na mnogim serverima, kao što je UNIQUEIDENTIFIER, što je u skladu sa " rast u širinu" hardversku filozofiju. koju zastupa Microsoft (tj. implementacija baze na mnoge servere na Intel platformama), umjesto "rasta u visinu" (tj. implementacija na jednom ogromnom moćnom UNIX serveru ili Windows Data Center Server) .

Zanimljiva sporedna napomena o datumima na SQL Serveru: SQL Server podržava datume koji počinju u 1753. godini. Ne možete pohraniti ranije datume u bilo koji tip podataka SQL Server baze podataka. Zašto? To je zato što je svijet engleskog govornog područja počeo koristiti gregorijanski kalendar 1753. (julijanski kalendar se koristio do septembra 1753.), a pretvaranje julijanskih u gregorijanske datume moglo bi biti prilično teško.

BIGINT (SQL 2003 tip podataka: BIGINT)

Pohranjuje predpisane i neoznačene cijele brojeve u rasponu -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807. Zauzima 8 bajtova. Pogledajte tip INT za pravila svojstva IDENTITY koja se također primjenjuju na tip BIGINT.

BINARY [(n)] (SQL 2003 tip podataka: BLOB)

Pohranjuje binarnu vrijednost fiksne dužine od 1 do 8000 bajtova. BINARNA vrijednost je duga n + 4 bajta.

BIT (SQL 2003 tip podataka: BOOLEAN)

Pohranjuje vrijednost 1, 0 ili NULL, što znači "nepoznato". Jedan bajt može pohraniti do 8 vrijednosti iz kolona BIT tablice. U još jedan bajt možete postaviti dodatnih 8 vrijednosti tipa BIT. BIT kolone se ne mogu indeksirati.

CHAR [(n)], CHARACTER [(n)] (SQL 2003 tip podataka: CHARACTER (n))

Pohranjuje znakovne podatke fiksne dužine od 1 do 8000 znakova. Svaki neiskorišteni prostor je po defaultu ispunjen prazninama. (Možete isključiti automatsko zatvaranje.) Tip je n bajtova.

KURSOR (SQL 2003 tip podataka: nema)

Poseban tip podataka koji se koristi za opisivanje kursora u obliku varijable ili parametra u OUTPUT pohranjenoj proceduri. Tip se ne može koristiti u izrazu CREATE TABLE. Tip CURSOR može biti NULL.

DATETIME (SQL 2003 tip podataka: TIMESTAMP)

Pohranjuje vrijednost datuma i vremena u rasponu od 01-01-1753 00:00:00 do 31-12-9999 23:59:59. Za pohranu je potrebno 8 bajtova.

DECIMAL (str. S). DEC (p, s), NUMERIC (p, s) (SQL 2003 tip podataka: DECIMAL (p, s). NUMERIC (p. S))

Pohranjuje decimalne razlomke dužine do 38 cifara. Vrijednosti p i s određuju preciznost i skalu, respektivno. Podrazumevana skala je 0. Prostor koji zauzima vrednost određen je preciznošću koja se koristi. Za preciznost 1-9 koristi se 5 bajtova. Za preciznost od 10-19 koristi se 9 bajtova. Sa preciznošću od 20-28, koristi se 13 bajtova. Preciznost 29-39 koristi 17 bajtova.

Pogledajte tip INT za pravila svojstva IDENTITY koja se također primjenjuju na tip DECIMAL.

DOUBLE PRECISION (SQL 2003 tip podataka: nema) Sinonim za FLOAT (53).

FLOAT [(n)] (SQL 2003 tip podataka: FLOAT, FLOAT (n))

Pohranjuje vrijednosti s pomičnim zarezom u rasponu od -1,79E + 308 do 1,79E + 308. Preciznost specificirana parametrom n može biti u rasponu od 1 do 53. Za pohranjivanje 7 cifara (i - od 1 do 24), 4 bajta su potrebno. Vrijednosti veće od 7 cifara su 8 bajtova.

SLIKA (SQL 2003 tip podataka: BLOB)

Pohranjuje binarnu vrijednost varijabilne dužine do 2,147,483,647 bajtova. Ovaj tip podataka se često koristi za skladištenje grafike, zvuka i datoteka kao što su Microsoft Word dokumenti i Microsoft Excel tabele. Vrijednostima IMAGE se ne može slobodno manipulirati. Kolone IMAGE i TO imaju mnoga ograničenja u pogledu načina na koji se mogu koristiti. Pogledajte opis tipa TEXT za listu naredbi i funkcija koje se primjenjuju na tip IMAGE.

INT (SQL 2003 tip podataka: INTEGER)

Pohranjuje predpisane ili neoznačene cijele brojeve u rasponu od -2,147,483,648 do 2,147,483,647. Zauzima 4 bajta. Svi cjelobrojni tipovi podataka, kao i tipovi koji pohranjuju decimalne razlomke, podržavaju svojstvo IDENTITY, identitet je automatski inkrementirani identifikator reda. Pogledajte odjeljak "Izjava CREATE / ALTERTABLE".

NOVAC (SQL 2003 tip podataka: nema)

Pohranjuje novčane vrijednosti u rasponu -922337203685477.5808 do 922337203685477.5807. Vrijednost je 8 bajtova.

NCHAR (n), NACIONALNI CHAR (n), NACIONALNI KARAKTER) (SQL 2003 tip podataka: NACIONALNI CIARAKTER (n))

Pohranjuje podatke u UNICODE formatu sa fiksnom dužinom do 4000 znakova. Za skladištenje je potrebno n * 2 bajta.

NTEXT, NACIONALNI TEKST (SQL 2003 tip podataka: NCLOB)

Pohranjuje fragmente teksta u UNICODE formatu dužine do 1,073,741,823 karaktera. Pogledajte opis tipa TEXT za listu naredbi i funkcija koje se primjenjuju na tip NTEXT.

Sinonim za tip DECIMAL. Pogledajte opis tipa INT za pravila koja se odnose na svojstvo IDENTITY.

NVARCHAR (n), NACIONALNI KARAKTER VARING (n), NACIONALNI KARAKTER VARING (n) (SQL 2003 tip podataka: NACIONALNI KARAKTER VARING (n))

Pohranjuje UNICODE podatke varijabilne dužine do 4000 znakova. Zauzeti prostor se računa kao dvostruka dužina svih znakova umetnutih u polje (broj znakova * 2). U SQL Serveru, sistemski parametar SET ANSI_PADDING] za polja NCHAR i NVARCHAR je uvijek ON.

REAL, FLOAT (24) (SQL 2003 podaci mun: REAL)

Pohranjuje vrijednosti s pomičnim zarezom u rasponu od -3,40E + 38 do 3,40E + 38. Potrebno je 4 bajta. Tip REAL je funkcionalno ekvivalentan tipu FLOAT (24).

ROWVERSION (SQL 2003 tip podataka: nema)

Jedinstveni broj pohranjen u bazi podataka koji se ažurira svaki put kada se red ažurira, a nazvan TIMESTAMP u ranijim verzijama.

SMALLDATETIME (SQL 2003 tip podataka: nema)

Pohranjuje datum i vrijeme u rasponu od "01-01-1900 00:00" do "06-06-2079 23:59" sa tačnošću u minuti. (Minute se zaokružuju naniže ako su sekunde 29.998 ili manje, inače se zaokružuju na veću vrijednost.) Vrijednost je 4 bajta.

SMALLINT (SQL 2003 tip podataka: SMALLINT)

Pohranjuje predpisane ili neoznačene cijele brojeve u rasponu od -32,768 do 32,767. Zauzima 2 bajta. Pogledajte opis tipa INT za pravila koja se odnose na svojstvo IDENTITY koja se također primjenjuju na ovaj tip.

SMALLMONEY (SQL 2003 tip podataka: nema)

Pohranjuje novčane vrijednosti u rasponu od 214748,3648 do -214748,3647. Vrijednosti su dugačke 4 bajta.

SQL VARIANT (SQL 2003 tip podataka: nema)

Pohranjuje vrijednosti koje su drugi tipovi podataka koje podržava SQL Server, isključujući TEXT, NTEXT, ROWVERSION i druge SQL_VARIANT vrijednosti. Može pohraniti do 8016 bajtova podataka, podržane su NULL i DEFAULT vrijednosti. SQL_VARIANT tip se koristi u stupcima, parametrima, varijablama i vrijednostima koje vraćaju funkcije i pohranjene procedure.

TABLICA (SQL 2003 tip podataka: nema)

Poseban tip koji pohranjuje skup podataka koji je rezultat rada posljednjeg procesa. Koristi se isključivo za proceduralnu obradu i ne može se koristiti u naredbama CREATE TABLE. Ovaj tip podataka smanjuje potrebu za kreiranjem privremenih tabela u mnogim aplikacijama. Može smanjiti potrebu za ponovnom kompilacijom procedura, čime se ubrzava izvršavanje pohranjenih procedura i UDF-ova.

TEKST (SQL 2003 tip podataka: CLOB)

Pohranjuje vrlo velike fragmente teksta do 2.147.483.647 znakova. TEXTn IMAGE vrijednostima je često mnogo teže manipulirati nego, recimo, VARCHAR vrijednostima. Na primjer, ne možete kreirati indeks na stupcu TEXT ili IMAGE. TEKST vrijednostima se može manipulirati pomoću funkcija DATALENGTH, PATINDEX, SUBSTRING. TEXTPTR i TEX-TVALID, kao i naredbe READTEXT, SET TEXTSIZE, UPDATETEXT i WR1TETEXT.

TIMESTAMP (SQL 2003 tip podataka: TIMESTAMP)

Pohranjuje automatski generirani binarni broj koji je jedinstven u trenutnoj bazi podataka i stoga se razlikuje od tipa podataka ANSI TIMESTAMP. TIMESTAMP je veličine 8 bajtova. Vrijednosti ROWVERSION sada su bolje prilagođene jedinstvenoj identifikaciji redova umjesto TIMESTAMP.

Pohranjuje neoznačene cijele brojeve u rasponu od 0 do 255 i zauzima 1 bajt. Pogledajte opis tipa / L / G za pravila koja se odnose na svojstvo IDENTITY koja se također primjenjuju na ovaj tip.

UNIQUEIDENTIFIER (SQL 2003 tip podataka: nema)

To je vrijednost koja je jedinstvena u svim bazama podataka i svim serverima. Predstavlja se kao xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx, pri čemu je svaki x heksadecimalni broj u rasponu 0-9 ili a-f. Jedine operacije koje se mogu izvesti nad vrijednostima ovog tipa su poređenje i NULL testovi. Ograničenja i svojstva mogu se koristiti na stupcima ovog tipa, s izuzetkom svojstva IDENTITY.

VARBINARY [(n)] (SQL 2003 tip podataka: BLOB)

Predstavlja binarnu vrijednost varijabilne dužine, do 8000 bajtova. Zauzeti prostor je veličina umetnutih podataka plus 4 bajta.

VARCHARf [(n)], CHAR VARYING [(n)], CHARACTER VARYING f (n) J (SQL 2003 tip podataka: CHARACTER VARYING [(n)]

Pohranjuje znakovne podatke fiksne dužine u rasponu od 1 do 8000 znakova. Zauzeti prostor je jednak stvarnoj veličini unesene vrijednosti u bajtovima, a ne vrijednosti p.

Top srodni članci