Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • OS
  • SQL: Tipuri de date. Sistemul de management al bazelor de date SQLite

SQL: Tipuri de date. Sistemul de management al bazelor de date SQLite

Toate valorile dintr-o coloană trebuie să fie de același tip de date. (Singurele excepții de la această regulă sunt valorile tipului de date SQL_VARIANT.) Tipurile de date utilizate în Transact-SQL pot fi clasificate după cum urmează:

    tipuri numerice;

    tipuri de caractere;

    tipuri temporare (date și/sau ore);

    alte tipuri de date.

Tipuri de date numerice

După cum v-ați putea aștepta din numele lor, tipurile de date numerice sunt folosite pentru a reprezenta numere. Aceste tipuri și scurtele lor descrieri sunt prezentate în tabelul de mai jos:

Tipuri de date numerice T-SQL
Tip de date Descriere
ÎNTREG

Reprezintă valori întregi de 4 octeți în intervalul -2 32 până la 2 32 - 1. INT este prescurtarea pentru INTEGER.

SMALLINT

Reprezintă valori întregi de 2 octeți în intervalul de la -32.768 la 32.767

TINYINT

Reprezintă valori întregi de 1 octet în intervalul de la 0 la 255

BIGINT

Reprezintă valori întregi de 8 octeți în intervalul -2 63 până la 2 63 - 1

DECIMAL (p, [s])

Reprezintă valorile punctului fix. Argumentul p (precizie) specifică numărul total de cifre, iar argumentul s (scale) specifică numărul de cifre la dreapta punctului zecimal așteptat. În funcție de valoarea argumentului p, valorile zecimale sunt stocate în 5 până la 17 octeți. DEC este o formă prescurtată pentru DECIMAL.

NUMERIC (p, [s])

Sinonim pentru DECIMAL.

REAL

Folosit pentru a reprezenta valori în virgulă mobilă. Intervalul valorilor pozitive este de aproximativ 2,23E -308 până la -1,18E -38. De asemenea, poate fi furnizată o valoare nulă.

FLOTĂ [(p)]

La fel ca REAL, reprezintă valori în virgulă mobilă [(p)]. Argumentul p specifică precizia. Pentru p< 25 представляемые значения имеют одинарную точность (требуют 4 байта для хранения), а при значении p >= 25 - precizie dublă (necesită 8 octeți pentru stocare).

BANI

Folosit pentru a reprezenta valori monetare. Valorile MONEY corespund valorilor DECIMALE de 8 octeți rotunjite la patru zecimale

BANI MICI

Reprezintă aceleași valori ca BANI, dar lungime de 4 octeți

Tipuri de date de caractere

Există două tipuri generale de tipuri de date de caractere. Șirurile pot fi reprezentate prin caractere pe un singur octet sau caractere Unicode. (Unicode folosește mai mulți octeți pentru a reprezenta un singur caracter.) În plus, șirurile pot avea lungimi diferite. Tabelul de mai jos listează categoriile de tipuri de date de caractere cu o scurtă descriere.

Tipuri de date de caractere T-SQL
Tip de date Descriere
CHAR [(n)]

Folosit pentru a reprezenta șiruri de caractere cu lungime fixă ​​de n caractere pe un singur octet. Valoarea maximă pentru n este 8000. CHARACTER (n) este o formă alternativă echivalentă a CHAR (n). Dacă n nu este specificat în mod explicit, atunci valoarea sa se presupune a fi 1.

VARCHAR [(n)]

Folosit pentru a reprezenta un șir de caractere pe un singur octet cu lungime variabilă (0< n < 8 000). В отличие от типа данных CHAR, количество байтов для хранения значений типа данных VARCHAR равно их действительной длине. Этот тип данных имеет два синонима: CHAR VARYING и CHARACTER VARYING.

NCHAR [(n)]

Folosit pentru a stoca șiruri de caractere Unicode cu lungime fixă. Principala diferență dintre tipurile de date CHAR și NCHAR este că fiecare caracter al unui șir NCHAR are 2 octeți, iar un șir CHAR are 1 octet. Prin urmare, un șir de date de tip NCHAR poate conține cel mult 4000 de caractere. Tipul NCHAR poate fi folosit pentru a stoca, de exemplu, caracterele alfabetului rus, deoarece codificările pe un singur octet nu permit acest lucru.

NVARCHAR [(n)]

Folosit pentru a stoca șiruri de caractere Unicode de lungime variabilă. Un șir NVARCHAR necesită 2 octeți pentru a stoca fiecare caracter, astfel încât un șir NVARCHAR poate conține cel mult 4000 de caractere.

Tipul de date VARCHAR este identic cu tipul de date CHAR, cu o diferență: dacă conținutul șirului CHAR (n) este mai scurt de n caractere, restul șirului este umplut cu spații. Și numărul de octeți ocupați de un șir VARCHAR este întotdeauna egal cu numărul de caractere din acesta.

Tipuri de date de timp

Următoarele tipuri de date temporare sunt acceptate în Transact-SQL:

Tipuri de date DATETIMEși SMALLDATETIME sunt folosite pentru a stoca data și ora ca valori întregi de 4 și, respectiv, 2 octeți. Valorile de tip DATETIME și SMALLDATETIME sunt stocate intern ca două valori numerice separate. Porțiunea de dată a valorilor DATETIME este stocată în intervalul 01/01/1753 până la 31/12/9999, iar porțiunea corespunzătoare a valorilor SMALLDATETIME este în intervalul 01/01/1900 până la 06/06/2079. Componenta de timp este stocată într-un al doilea câmp de 4 octeți (2 octeți pentru valorile SMALLDATETIME) ca trei sutimi de secundă (pentru DATETIME) sau minute (pentru SMALLDATETIME) de la miezul nopții.

Dacă doriți să stocați doar porțiunea de dată sau oră, utilizarea unei valori DATETIME sau SMALLDATETIME este oarecum incomod. Din acest motiv, tipurile de date au fost introduse în SQL Server DATAși TIMP care stochează doar componentele de dată și, respectiv, ale valorilor DATETIME. Valorile DATE au o lungime de 3 octeți, reprezentând intervalul de date de la 01/01/0001 la 31/12/9999. Valorile TIME sunt de 3-5 octeți și reprezintă timpul cu o precizie de 100 ns.

Tip de date DATETIME2 folosit pentru a reprezenta valorile datei și orei cu mare precizie. În funcție de cerințe, valorile de acest tip pot fi definite în lungimi diferite și ocupă de la 6 la 8 octeți. Componenta timp reprezintă timpul cu o precizie de 100 ns. Acest tip de date nu acceptă ora de vară.

Toate tipurile de date temporare discutate până acum nu acceptă fusurile orare. Tip de date DATETIMEOFFSET are o componentă pentru a stoca offset-ul fusului orar. Din acest motiv, valorile de acest tip sunt lungi de 6 până la 8 octeți. Toate celelalte proprietăți ale acestui tip de date sunt aceleași cu proprietățile corespunzătoare ale tipului de date DATETIME2.

În mod implicit, valorile datei Transact-SQL sunt definite ca un șir „mmm dd aaaa” (de exemplu, „10 ianuarie 1993”), cuprins între ghilimele simple sau duble. (Dar ordinea relativă a componentelor lunii, zilei și anului poate fi modificată folosind instrucțiunile SETARE FORMAT DATE... În plus, sistemul acceptă valori numerice pentru componenta lunii și separatorii / și -.) În mod similar, valoarea timpului este indicată într-un format de 24 de ore ca „hh: mm” (de exemplu, „22:24”) .

Transact-SQL acceptă diverse formate de intrare pentru valorile DATETIME. După cum s-a menționat, fiecare constituent este definit separat, astfel încât valorile datei și orei pot fi specificate în orice ordine sau separat. Dacă una dintre componente nu este specificată, sistemul folosește valoarea implicită pentru aceasta. (Ora implicită este 12:00 AM (înainte de amiază).)

Tipuri de date binare și pe biți

Există două tipuri de tipuri de date binare: BINARY și VARBINARY. Aceste tipuri de date descriu obiecte de date în formatul intern al sistemului și sunt folosite pentru a stoca șiruri de biți. Din acest motiv, valorile acestor tipuri sunt introduse folosind numere hexazecimale.

Valorile tipului de bit conțin doar un bit, astfel încât până la opt valori de acest tip pot fi stocate într-un octet. O scurtă descriere a proprietăților tipurilor de date binare și pe biți este dată în tabelul de mai jos:

Tip de date obiect mare

Tip de date LOB (Obiect Mare). folosit pentru a stoca obiecte de date de până la 2 GB în dimensiune. Astfel de obiecte sunt utilizate de obicei pentru stocarea unor cantități mari de date text și pentru încărcarea pluginurilor și fișierelor audio și video. Următoarele tipuri de date LOB sunt acceptate în Transact-SQL:

Începând cu SQL Server 2005, același model de programare se aplică atât valorilor standard ale tipului de date, cât și valorilor tipului de date LOB. Cu alte cuvinte, funcțiile de sistem convenabile și operatorii de șir pot fi utilizați pentru a lucra cu obiecte LOB.

În Motorul bazei de date parametrul MAX utilizat cu tipurile de date VARCHAR, NVARCHAR și VARBINARY pentru a defini valori pentru coloanele cu lungime variabilă. Când utilizați lungimea MAX implicită în loc să specificați în mod explicit lungimea unei valori, sistemul analizează lungimea unui anumit șir și decide dacă să stocheze acel șir ca valoare obișnuită sau ca valoare LOB. Parametrul MAX specifică faptul că valorile coloanei pot fi la fel de mari ca dimensiunea maximă a LOB pentru acest sistem.

Deși sistemul decide cum sunt stocate LOB-urile, setările implicite pot fi suprascrise utilizând procedura de sistem sp_tableoption cu argumentul LARGE_VALUE_TYPES_OUT_OF_ROW. Dacă acest argument este 1, atunci datele din coloanele declarate folosind parametrul MAX vor fi stocate separat de restul datelor. Dacă argumentul este 0, Motorul de baze de date stochează toate valorile de până la 8060 de octeți în rândul tabelului ca date normale, iar valorile mai mari sunt stocate în afara rândului în zona de stocare LOB.

Începând cu SQL Server 2008, pot utiliza coloanele VARBINARY (MAX). Atributul FILESTREAM pentru a salva datele BLOB (Obiect binar mare) direct pe sistemul de fișiere NTFS. Principalul avantaj al acestui atribut este că dimensiunea LOB-ului corespunzător este limitată doar de dimensiunea volumului sistemului de fișiere.

tip de date UNIQUEIDENTIFIER

După cum sugerează și numele, tipul de date UNIQUEIDENTIFIER este un număr de identificare neambiguu care este stocat ca șir binar de 16 octeți. Acest tip de date este strâns legat de identificator GUID (identificator unic global), care garantează neambiguitatea la scară globală. Astfel, acest tip de date permite identificarea unică a datelor și obiectelor din sistemele distribuite.

Puteți inițializa o coloană sau o variabilă UNIQUEIDENTIFIER utilizând funcția NEWID sau NEWSEQUENTIALID sau folosind o constantă șir formatată personalizat constând din cifre hexazecimale și cratime. Aceste caracteristici sunt discutate în articolul următor.

O coloană cu valori ale tipului de date UNIQUEIDENTIFIER poate fi accesată folosind interogarea cuvânt cheie ROWGUIDCOL pentru a indica faptul că coloana conține valori de identitate. (Acest cuvânt cheie nu generează nicio valoare.) Un tabel poate conține mai multe coloane UNIQUEIDENTIFIER, dar numai una dintre ele poate avea cuvântul cheie ROWGUIDCOL.

Tipul de date SQL_VARIANT

Tipul de date SQL_VARIANT poate fi folosit pentru a stoca valori de diferite tipuri în același timp, cum ar fi valori numerice, șiruri și date. (Excepția sunt valorile TIMESTAMP.) Fiecare valoare dintr-o coloană SQL_VARIANT are două părți: valoarea în sine și informațiile care descriu valoarea. Aceste informații conțin toate proprietățile tipului de date real al valorii, cum ar fi lungimea, scara și precizia.

Funcția SQL_VARIANT_PROPERTY este utilizată pentru a accesa și afișa informații despre valorile unei coloane de tip SQL_VARIANT.

Ar trebui să declarați un tip de coloană ca SQL_VARIANT numai dacă aveți nevoie. De exemplu, dacă o coloană este destinată să stocheze valori ale diferitelor tipuri de date sau dacă, la crearea unui tabel, tipul de date care vor fi stocate în această coloană este necunoscut.

tip de date HIERARCHYID

Tipul de date HIERARCHYID este utilizat pentru a stoca ierarhia completă. De exemplu, acest tip de valoare poate stoca ierarhia tuturor angajaților sau ierarhia folderelor. Acest tip este implementat ca tip CLR definit de utilizator care cuprinde mai multe funcții de sistem pentru crearea și lucrul cu noduri ierarhice. Următoarele funcții, printre altele, aparțin metodelor acestui tip de date: GetLevel (), GetAncestor (), GetDescendant (), Read () și Write ().

Tip de date TIMESTAMP

Tipul de date TIMESTAMP specifică o coloană care este VARBINARY (8) sau BINARY (8), în funcție de proprietatea coloanei, să fie nulă. Pentru fiecare bază de date, sistemul menține un contor care crește ori de câte ori este inserat sau actualizat orice rând care conține o celulă TIMESTAMP și atribuie acea celulă acelei celule. Astfel, folosind celule de tip TIMESTAMP, puteți determina timpul relativ al ultimei modificări a rândurilor corespunzătoare din tabel. ( ROWVERSION este sinonim cu TIMESTAMP.)

În sine, valoarea stocată într-o coloană TIMESTAMP nu este importantă. Această coloană este folosită în mod obișnuit pentru a determina dacă un anumit rând dintr-un tabel s-a modificat de la ultima accesare.

Opțiuni de stocare

Începând cu SQL Server 2008, există două opțiuni de stocare diferite, fiecare dintre acestea putând salva LOB-uri și economisi spațiu pe disc. Acestea sunt următoarele opțiuni:

    stocarea datelor FILESTREAM;

    depozitare folosind coloane rare.

Aceste opțiuni de stocare sunt discutate în următoarele subsecțiuni.

Stocarea datelor FILESTREAM

După cum am menționat mai devreme, SQL Server acceptă stocarea obiectelor mari (LOB) prin tipul de date VARBINARY (MAX). O proprietate a acestui tip de date este că obiectele binare mari (BLOB) sunt stocate în baza de date. Această circumstanță poate cauza probleme de performanță atunci când stocați fișiere foarte mari, cum ar fi fișiere audio sau video. În astfel de cazuri, aceste date sunt stocate în afara bazei de date în fișiere externe.

Stocarea de date FILESTREAM acceptă gestionarea LOB-urilor care sunt stocate în sistemul de fișiere NTFS. Principalul avantaj al acestui tip de stocare este că, deși datele sunt stocate în afara bazei de date, acestea sunt gestionate de baza de date. Astfel, acest tip de stocare are următoarele proprietăți:

    Datele FILESTREAM pot fi salvate folosind instrucțiunea CREATE TABLE, iar instrucțiunile de modificare a datelor (SELECT, INSERT, UPDATE și DELETE) pot fi folosite pentru a manipula datele.

    sistemul de management al bazei de date oferă același nivel de securitate pentru datele FILESTREAM ca și pentru datele stocate într-o bază de date.

Coloane rare

Scopul opțiunii de stocare oferite de coloanele rare este semnificativ diferit de scopul de stocare al tipului FILESTREAM. În timp ce scopul stocării FILESTREAM este de a stoca LOB-uri în afara bazei de date, scopul coloanelor rare este de a minimiza spațiul pe disc pe care îl ocupă baza de date.

Coloanele de acest tip vă permit să optimizați stocarea coloanelor cu cele mai multe dintre valorile lor fiind nule. Când utilizați coloane rare, nu aveți nevoie de spațiu pe disc pentru a stoca valori nule, dar, pe de altă parte, stocarea valorilor non-nule necesită încă 2 până la 4 octeți, în funcție de tipul acestora. Din acest motiv, Microsoft recomandă utilizarea coloanelor rare numai atunci când vă așteptați la cel puțin 20% din economiile totale de spațiu pe disc.

Coloanele rare sunt definite în același mod ca și alte coloane dintr-un tabel; adresa către ei se realizează în mod similar. Aceasta înseamnă că puteți utiliza instrucțiunile SELECT, INSERT, UPDATE și DELETE pentru a accesa coloanele rare în același mod în care ați folosi coloanele obișnuite. Singura diferență este despre crearea coloanelor rare: pentru a defini o anumită coloană, se folosește sparse Argument SPARSE după numele coloanei, așa cum se arată în acest exemplu:

tipul de date nume_coloană SPARSE

Mai multe coloane rare dintr-un tabel pot fi grupate într-un set de coloane. Un astfel de set ar fi o modalitate alternativă de stocare și accesare a valorilor în toate coloanele rare ale tabelului.

Valoare NULL

Valoarea nulă este o valoare specială care poate fi atribuită unei celule de tabel. Această valoare este utilizată de obicei atunci când informațiile dintr-o celulă sunt necunoscute sau nu sunt aplicabile. De exemplu, dacă nu cunoașteți numărul de telefon de acasă al unui angajat al companiei, vă recomandăm să setați celula corespunzătoare din coloana home_telephone la null.

Dacă valoarea oricărui operand al oricărei expresii aritmetice este nulă, valoarea rezultatului evaluării acelei expresii va fi, de asemenea, nulă. Prin urmare, în operațiile aritmetice unare, dacă valoarea expresiei A este nulă, atunci ambii + A și -A returnează nul. În expresiile binare, dacă valoarea unuia sau ambilor operanzi A și B este nulă, atunci rezultatul operației de adunare, scădere, înmulțire, împărțire și împărțire modulo acestor operanzi va fi și el nul.

Dacă expresia conține un operator de comparare și valoarea unuia sau ambilor operanzi ai acestei operații este nulă, rezultatul acestei operații va fi și el nul.

Valoarea nulă trebuie să fie diferită de toate celelalte valori. Pentru tipurile de date numerice, valoarea 0 și null nu sunt aceleași. Același lucru este valabil pentru șirul gol și nul pentru tipurile de date caractere.

Valorile nule pot fi stocate într-o coloană de tabel numai dacă sunt permise în mod explicit în definiția coloanei. Pe de altă parte, valorile nule nu sunt permise pe o coloană dacă NOT NULL este specificat în mod explicit în definiția acesteia. Dacă este specificat în mod explicit NULL sau NOT NULL pentru o coloană cu un tip de date (cu excepția tipului TIMESTAMP), atunci sunt atribuite următoarele valori:

    NULL dacă valoarea parametrului ANSI_NULL_DFLT_ON Instrucțiunea SET este activată.

    NOT NULL dacă valoarea parametrului ANSI_NULL_DFLT_OFF al instrucțiunii SET este activată.

Dacă instrucțiunea set nu este activată, coloana va fi implicit la NOT NULL. (Valorile nule nu sunt permise pentru coloanele TIMESTAMP.)

Astăzi, în lume există un număr mare de tehnologii și mijloace de stocare a informațiilor. Bazele de date sunt unul dintre cele mai comune instrumente. Pentru a lucra cu ele sunt folosite diverse sisteme de control. Această metodă de stocare presupune că toate informațiile sunt clar structurate și introduse în tabele speciale. Tabelele, la rândul lor, constau din coloane de atribute ale unui anumit tip de informații.

Ce este un tip de date?

Astăzi, există mai multe definiții care explică esența conceptului de „tip de date”. Fiecare dintre ele are o semnificație generală. În mod convențional, un tip de date poate fi desemnat ca un grup de date caracterizat prin valorile sale - numerice, simbolice și așa mai departe - precum și prin operațiuni care pot fi aplicate valorilor în cauză. Domeniul de utilizare a diferitelor tipuri de date este foarte multidimensional. Datele pot fi folosite nu numai pentru stocarea informațiilor, ci și în programare pentru a rezolva sarcinile atribuite. Atunci când dezvoltați programe, practica de a utiliza propriile tipuri de date cu un set specific de operațiuni a devenit larg răspândită. Informațiile despre utilizator se bazează întotdeauna pe tipuri de date de bază. Standardul SQL se bazează pe utilizarea celor mai comune tipuri de informații, dar cu o serie de completări specifice.

Tipuri de date: clasificare

Gruparea datelor după tip a apărut cu mult timp în urmă. A fost cauzată de necesitatea de a structura toate volumele de informații pentru a asigura confortul prelucrării acestora. Astăzi, toate tipurile de date existente se bazează pe două tipuri de bază: caracter și numeric. Pe baza acestor date, a fost elaborată o clasificare modernă, care include pointeri, număr întreg, boolean, virgulă mobilă numerică și tip șir de informații. Toate cele de mai sus sunt acoperite în totalitate de clasificarea SQL. Cu toate acestea, există suplimente speciale pentru sistemele moderne de gestionare a bazelor de date. Acestea includ MySQL și Oracle.

Tipuri de date de bază

Tipurile de date care sunt utilizate pentru a crea atribute de tabel care îndeplinesc standardele limbajului SQL pot fi împărțite în 4 clase: valori de șir, fracții, valori întregi, valori de timp și date.

Tip de date șir

Primul tip de date vă permite să stocați orice informație prezentată sub formă de simboluri. În acest caz, vorbim despre caractere și litere speciale, care împreună vor fi tratate ca șiruri în orice interogare SQL. Mai jos sunt tipurile de date care alcătuiesc primul grup:

- CHAR (dimensiune) - acest tip este folosit pentru a stoca șiruri. Parametrul specificat între paranteze vă permite să fixați lungimea șirului stocat. Pentru un șir, puteți seta dimensiunea maximă în octeți - 255.

- VAR CHAR (dimensiune) - prin analogie cu tipul anterior, acest tip permite stocarea șirurilor de caractere, a căror lungime nu depășește 255 de caractere. Principala diferență a acestui tip față de CHAR este că aici este alocată cantitatea necesară de memorie pentru a stoca valoarea acestui tip. Astfel, pentru un șir format din 5 caractere, vor fi necesari 6 octeți de memorie. În primul caz, memoria pentru stocarea valorii va fi alocată în conformitate cu parametrul specificat.

- TEXT MINUS - acest tip este folosit pentru a stoca informații text, a căror dimensiune nu depășește 65535 caractere.

- BLOB - acest tip este similar cu tipul TEXT. Permite stocarea informațiilor textuale în baza de date, al căror volum poate fi de până la 65.535 de caractere. Cu toate acestea, în practică, acest tip poate fi folosit pentru a stoca imagini, informații audio, documente electronice și multe altele.

- TEXT MEDIU - acest tip a fost dezvoltat pe baza tipului TEXT. Datorită dimensiunii crescute de 16777.215 caractere, acest tip vă permite să stocați mai multe date.

- MEDIU MBLOB - utilizat pentru stocarea documentelor electronice în baza de date, a căror dimensiune nu depășește 16.777.215 caractere.

- TEXT LUNG - similară ca funcționalitate cu tipurile de date anterioare, cu toate acestea, are o capacitate de memorie crescută la 4 GB.

- LONG BLOB - vă permite să plasați date mari în baza de date - 4294967295 caractere.

- ENUM este un tip de date special care este folosit pentru a specifica o listă de valori distincte. Acest tip vă permite să specificați 65535 de valori. Șirurile de caractere de acest tip pot lua doar una dintre toate valorile specificate în set. În cazul în care se va realiza adăugarea valorilor care nu sunt în lista specificată, valorile goale vor fi scrise în tabel.

- SET - acest tip de date specifică un set de valori valide. Spre deosebire de tipul anterior, este folosit pentru a deține 64 de parametri care pot fi inițializați cu mai multe elemente ale argumentelor date.

Tabel cu tipuri de date fracționale

Tipul de date SQL fracționat este utilizat pentru a stoca numere în virgulă mobilă. De regulă, în practică, acest tip de date caracterizează diferiți indicatori financiari. În funcție de precizia necesară, puteți utiliza unul dintre mai multe tipuri prezentate mai jos.

FLOAT (dimensiune) - folosit pentru a stoca numere fracționale de precizie specificată - d;

- DUBLĂ (dimensiune) - folosită pentru stocarea fracțiilor cu precizie binară;

- DECIMAL (dimensiune, d) - folosit pentru a stoca valori fracționale sub formă de șiruri. Este folosit în calculele bancare, unde precizia părții fracționale poate ajunge la 8 sau 10 cifre.

Primele două tipuri nu pot fi utilizate în acest domeniu. Stocarea indicatorilor financiari sub formă de șiruri poate facilita foarte mult rezolvarea multor probleme practice. Atunci când se efectuează tranzacții și se rezolvă probleme financiare, conversia tipului de date SQL este de mare importanță. Dezvoltatorii trebuie să țină cont de tipul de stocare și de metodele de procesare a informațiilor, astfel încât datele să rămână constant neschimbate.

Date întregi

Numerele întregi sunt un grup separat de numere care formează una dintre clasele principale. Tipurile de date întregi se bazează pe tipul INTEGER de bază cu unele extensii de proprietate.

  • INT (dimensiune) - este responsabil pentru stocarea datelor întregi în intervalul [-231; 231-1].
  • TINYINT (dimensiune) - Folosit pentru a stoca numere în intervalul de la -128 la 127.
  • SMALLINT (dimensiune) - se caracterizează printr-un interval ușor crescut de date stocate de la -32768 la 32767.
  • MEDIUMINT (dimensiune) - folosit pentru a stoca numere de la -223 la 223-1.
  • BIGINT (dimensiune) - Acoperă intervalul de valori întregi de la -263 la 263-1.

Alegerea tipului de date potrivit poate economisi în mod semnificativ memorie, reducând în același timp timpul de server atunci când se execută interogările SQL necesare. Tipurile de date și intervalele lor determină cantitatea de stocare necesară. Dezvoltatorii ar trebui să fie conștienți de faptul că utilizarea unor intervale mari de atribute poate crește supraîncărcarea memoriei. Este necesar să se analizeze clar problemele de rezolvat și să se identifice situațiile în care se cunoaște intervalul aproximativ de date și se determină condiția de utilizare a numerelor cu semne. Dacă se folosește o gamă mică de argumente utilizate și toate numerele sunt pozitive, atunci ar fi mai corect să se folosească tipul nesemnat pentru care este destinat atributul UNSIGNED.

Tipuri de date de oră și dată

Tipurile de date de oră și dată sunt de mare interes atunci când învățați elementele de bază ale SQL. Utilizarea următoarelor tipuri poate oferi beneficii suplimentare în cazul dezvoltării de sisteme care depind direct de timp.

  • DATA – scopul principal al acestui tip este de a stoca data în formatul „an-lună-zi”. Valorile sunt de obicei separate prin „-”. Cu toate acestea, uneori orice caracter, cu excepția numerelor, poate fi folosit ca separator.
  • TIME - face posibilă introducerea unor valori temporare într-o celulă de tabel. Valorile sunt specificate în formatul „hh: mm: ss”.
  • DATĂ ORA - acest tip combină funcțiile celor două anterioare. Formatul de stocare a datelor în acest caz arată astfel „aaaa-mm-zz: hh: mm: ss”.
  • TIME STAMP - acest tip stochează data și ora, calculate după numărul de secunde care au trecut de la miezul nopții 01/01/1970 până la valoarea specificată.
  • AN (M) - Folosit pentru a stoca valori anuale în format de două sau patru cifre.

Ce altceva ar trebui să știi? Toate tipurile de date de mai sus au fost sistematizate de Microsoft. Ea a dezvoltat, de asemenea, tipuri de date SQL mai detaliat. Deci, de exemplu, formularul descrie câtă memorie este alocată atunci când se utilizează fiecare tip de date. După ce au studiat toate informațiile disponibile, dezvoltatorilor ar trebui să devină mai ușor să proiecteze structura bazei de date și a tabelelor pe baza capacităților hardware ale serverului.

NULL- pointer special

În unele cazuri, la completarea bazei de date, apare o situație când, la adăugarea unei înregistrări la tabel, nu este nevoie să introduceți informații în toate coloanele. Pentru a face acest lucru, trebuie să utilizați destinația specială nulă sau pointerul NULL. El folosește SQL ca ajutor. Tipurile de date de coloane care nu trebuie să fie populate sunt specificate cu un operator pentru a include valori nule atunci când sunt create tabelele. De asemenea, operatorul NULL la utilizarea prefixului suplimentar NOT poate fi folosit pentru a indica completarea obligatorie a tuturor valorilor. Un pointer NULL nu are niciun tip. Pur și simplu indică o valoare goală în tabelele bazei de date. Din acest motiv, poate fi combinat cu unul dintre tipurile de date de mai sus.

Tipuri de date SQL.

Descriere

Tipuri de șiruri

Șir de caractere de lungime constantă

CHAR (număr_ de caractere)

Șir de caractere cu lungime variabilă

VARCHAR (num_chars)

Șir de caractere de lungime variabilă mare

Binar mare

obiect variabil

Tipuri numerice exacte

Întreg

Întreg. Numărul de biți este mai mare sau egal cu INTEGER

Întreg. Numărul de evacuări

mai mic sau egal cu INTEGER

Număr punct fix

(number_digits - numărul total de cifre, scară - zecimale)

(NUMERIC | DECIMAL | DEC) (număr de cifre, scară)

Tipuri numerice imprecise

Număr în virgulă mobilă

Număr în virgulă mobilă. Numărul de cifre este mai mare sau egal cu REAL

PRECIZIE DUBLA

Număr în virgulă mobilă

FLOAT (număr de cifre)

Tipuri temporare

Data. Conține anul, luna și ziua

Timestamp-ul. Conține an, lună, zi, oră, minute și secunde

TIMESTAMP (scara)

Timp. Conține oră, minute și secunde (scara - cantitate

semne în fracțiunea de secundă). Posibilă indicare a fusului orar

TIME (scara)

Perioadă.

tip boolean

Acceptă valori booleene

      1. Literale

Literale sunt cele mai simple expresii care sunt valori ale tipurilor corespunzătoare. Fiecare tip de date are o modalitate de a-și reprezenta literalele de tip. Următoarele literale sunt disponibile în SQL:

    șiruri de caractere (exemplu: „șir de caractere”),

    șiruri binare (exemplu: X "1AFFD561"),

    numere (exemple: 27 -863 0,173 .8582 -9572,5619 11,54Е7 .94Е194 93Е-12 -29,629Е27),

    temporar (DATA „2005-12-07” ORA „HH: MI: SS” TIMESTAMP „AAAA-LL-ZZ HH: MI: SS”),

    logic (ADEVĂRAT, FALS, NECUNOSCUT).

      1. Operatori și expresii

Operatori sunt constructe de limbaj care specifică operații asupra elementelor de date și returnează ca rezultat o nouă valoare. Elementele de date utilizate în operatori se numesc operanzi sau argumente. Operatorii sunt reprezentați ca caractere speciale sau cuvinte cheie. De exemplu, operatorul de multiplicare este reprezentat printr-un asterisc (*), iar operatorul de testare nul este reprezentat de cuvântul cheie IS NULL.

Există două tipuri principale de operatori. Cele unare au un singur operand și sunt de obicei reprezentate în următorul format:

operator de operand

Binarele operează pe doi operanzi și sunt reprezentate după cum urmează:

operand operator operand

În plus, există operatori speciali care folosesc mai mult de doi operanzi. Tipul unui operator este determinat de tipul de argumente utilizate și de tipul rezultatului returnat. Sunt disponibili operatori de următoarele tipuri:

    șir (||);

    aritmetic;

    joc de inteligență;

    predicate de comparație;

    predicate speciale;

    operatori peste seturi (tabele).

Pentru fiecare coloană, este obligatoriu să se definească, pe lângă numele unic al coloanei din tabel, și tipul de date. Atribuirea unui tip de date fiecărei coloane este unul dintre primii pași luați la proiectarea unui tabel. Tipurile de date definesc valorile valide ale datelor pentru fiecare coloană.

2.3.1 Tipurile char și varchar.

Sunt tipuri de date cu caractere cu lungime fixă ​​sau variabilă.

char [(n)] este un caracter de lungime fixă, non-Unicode, cu o lungime de n octeți. Valoarea pentru n trebuie să fie între 1 și 8000. Dimensiunea de stocare pentru acest tip de date este de n octeți. Sinonimul ISO pentru char este caracter.

varchar [(n | max)] - date de caractere cu lungime variabilă, nu în Unicode; n poate varia de la 1 la 8.000; max înseamnă că dimensiunea maximă de stocare este de 2 ^ 31-1 octeți. Dimensiunea de stocare este egală cu lungimea reală a datelor plus doi octeți. Datele introduse pot avea 0 caractere. Sinonimele ISO pentru varchar variază caracterul sau caracterul variază.

Datele Char sau varchar pot fi un singur caracter sau șir cu o lungime maximă de 8000 de caractere pentru datele char și până la 2 ^ 31 de caractere pentru datele varchar.

Tipurile de date Varchar pot lua două forme. Datele Varchar pot avea lungimea maximă specificată în caractere, de exemplu varchar (6) indică faptul că acest tip de date poate stoca maximum șase caractere sau poate avea forma varchar (max), care mărește numărul maxim de caractere care pot fi stocate în acest tip de date, până la 2 ^ 31.

Constantele caracterelor trebuie incluse între ghilimele simple ("") sau duble ("). Se recomandă includerea constantelor caracterelor între ghilimele simple. Includerea constantelor de caractere între ghilimele duble nu este uneori permisă atunci când IDENTIFICATORUL CITATE este ACTIVAT.

Acest exemplu de cod Transact-SQL atribuie o valoare unei variabile caracter:

DECLARE @MyCharVar CHAR (25)

SET @MyCharVar = „Ricardo Adocicados”

Dacă utilizați ghilimele simple pentru a include o constantă de caractere care conține ghilimele simple imbricate, utilizați două ghilimele simple pentru a reprezenta ghilimelele simple imbricate.

De exemplu:

SET @MyCharVar = "O" "Leary"

Dacă datele de stocat sunt mai lungi decât numărul permis de caractere, acestea sunt trunchiate. De exemplu, dacă o coloană este definită ca fiind char (10) și valoarea „Acesta este într-adevăr un șir de caractere foarte lung” este stocată în ea, atunci SQL Server trunchiază șirul de caractere la „Acesta este valid”.

Tipul de date char devine un tip de date cu lungime fixă ​​dacă este specificată clauza NOT NULL. Dacă o valoare mai mică decât lungimea coloanei este inserată într-o coloană char cu clauza NOT NULL, acea valoare este completată la dreapta cu spații la dimensiunea coloanei. De exemplu, dacă o coloană este definită ca caracter (10) și valoarea „muzică” urmează să fie stocată în ea, SQL Server stochează datele ca „muzică ____”, unde „_” este un spațiu.

2.3.2 Tipurile de date nchar și nvarchar.

Acestea sunt tipuri de date de caractere cu lungime constantă (nchar) sau cu lungime variabilă (nvarchar) care conțin date Unicode și utilizează setul de caractere UCS-2.

nchar [(n)] - Date de caractere Unicode, lungime de n caractere. Argumentul n trebuie să fie între 1 și 4000. Dimensiunea de stocare este de două ori n octeți. Sinonimele ISO pentru nchar sunt caracter național și caracter național.

nvarchar [(n | max)] - date de caractere Unicode cu lungime variabilă. Argumentul n poate varia de la 1 la 4000. Argumentul max specifică faptul că dimensiunea maximă de stocare este de 2 ^ 31-1 (2.147.483.647) octeți. Dimensiunea de stocare în octeți este de două ori numărul de caractere introduse + 2 octeți. Datele introduse pot avea 0 caractere. Sinonimele ISO pentru nvarchar variază caracterul național și caracterul național variază.

Lista de mai jos arată că Microsoft SQL Server acceptă majoritatea tipurilor de date SQL 2003. De asemenea, SQL Server acceptă tipuri de date suplimentare utilizate pentru a identifica în mod unic rândurile de date dintr-un tabel și pe multe servere, cum ar fi UNIQUEIDENTIFIER, care este în conformitate cu „ „creștere în lățime” filozofie hardware. profesat de Microsoft (adică implementarea bazei pe multe servere pe platforme Intel), în loc de „creștere în înălțime” (adică implementare pe un server UNIX uriaș puternic sau Windows Data Center Server) .

O notă secundară interesantă despre datele de pe SQL Server: SQL Server acceptă date începând cu anul 1753. Nu puteți stoca date anterioare în niciun tip de date de bază de date SQL Server. De ce? Acest lucru se datorează faptului că lumea vorbitoare de limbă engleză a început să folosească calendarul gregorian în 1753 (calendarul iulian a fost folosit până în septembrie 1753), iar convertirea datelor iuliane în datele gregoriene ar putea fi destul de dificilă.

BIGINT (tip de date SQL 2003: BIGINT)

Stochează numere întregi semnate și nesemnate în intervalul -9 223 372 036 854 775 808 până la 9 223 372 036 854 775 807. Ocupă 8 octeți. Consultați tipul INT pentru regulile de proprietate IDENTITY care se aplică și tipului BIGINT.

BINAR [(n)] (tip de date SQL 2003: BLOB)

Stochează o valoare binară de lungime fixă ​​de la 1 la 8000 de octeți. O valoare BINAR are n + 4 octeți.

BIT (tip de date SQL 2003: BOOLEAN)

Stochează valoarea 1, 0 sau NULL, care înseamnă „necunoscut”. Un octet poate stoca până la 8 valori din coloanele tabelului BIT. Într-un alt octet, puteți plasa încă 8 valori de tip BIT. Coloanele BIT nu pot fi indexate.

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

Stochează date de caractere cu o lungime fixă ​​de la 1 la 8000 de caractere. Orice spațiu neutilizat este umplut implicit cu spații libere. (Puteți dezactiva golirea automată.) Tipul este de n octeți.

CURSOR (tip de date SQL 2003: niciunul)

Un tip de date special folosit pentru a descrie un cursor sub forma unei variabile sau a unui parametru la o procedură stocată OUTPUT. Tipul nu poate fi utilizat într-o instrucțiune CREATE TABLE. Tipul CURSOR poate fi NULL.

DATETIME (tip de date SQL 2003: TIMESTAMP)

Stochează o valoare de dată și oră în intervalul 01-01-1753 00:00:00 până la 31-12-9999 23:59:59. Stocarea necesită 8 octeți.

DECIMAL (p. S). DEC (p, s), NUMERIC (p, s) (tip de date SQL 2003: DECIMAL (p, s). NUMERIC (p. S))

Stochează fracții zecimale de până la 38 de cifre. Valorile p și s determină precizia și, respectiv, scara. Scara implicită este 0. Spațiul ocupat de valoare este determinat de precizia utilizată. Pentru precizia 1-9, sunt utilizați 5 octeți. Pentru precizie 10-19, sunt utilizați 9 octeți. Cu o precizie de 20-28, sunt utilizați 13 octeți. Precizia 29-39 utilizează 17 octeți.

Consultați tipul INT pentru regulile de proprietate IDENTITY care se aplică și tipului DECIMAL.

DOUBLE PRECISION (Tip de date SQL 2003: niciunul) Sinonim pentru FLOAT (53).

FLOAT [(n)] (tip de date SQL 2003: FLOAT, FLOAT (n))

Stochează valori în virgulă mobilă în intervalul de la -1,79E + 308 la 1,79E + 308. Precizia specificată de parametrul n poate varia de la 1 la 53. Pentru a stoca 7 cifre (și - de la 1 la 24), sunt 4 octeți. necesar. Valorile mai mari de 7 cifre sunt de 8 octeți.

IMAGINE (tip de date SQL 2003: BLOB)

Stochează o valoare binară de lungime variabilă de până la 2.147.483.647 de octeți. Acest tip de date este adesea folosit pentru a stoca grafică, sunet și fișiere, cum ar fi documente Microsoft Word și foi de calcul Microsoft Excel. Valorile IMAGE nu pot fi manipulate liber. Coloanele IMAGE și TO au multe restricții cu privire la modul în care pot fi utilizate. Consultați descrierea tipului TEXT pentru o listă de comenzi și funcții care se aplică tipului IMAGINE.

INT (tip de date SQL 2003: INTEGER)

Stochează numere întregi semnate sau nesemnate în intervalul de la -2.147.483.648 la 2.147.483.647. Ocupă 4 octeți. Toate tipurile de date întregi, precum și tipurile care stochează fracții zecimale, acceptă proprietatea IDENTITY, identitatea este un identificator de rând incrementat automat. Consultați secțiunea „Instrucțiunea CREATE/ALTERTABLE”.

BANI (tip de date SQL 2003: niciunul)

Stochează valori monetare în intervalul -922337203685477,5808 până la 922337203685477,5807. Valoarea este de 8 octeți.

NCHAR (n), NATIONAL CHAR (n), NATIONAL CHARACTER) (tip de date SQL 2003: NATIONAL CIARACTER (n))

Stochează date în format UNICODE cu o lungime fixă ​​de până la 4000 de caractere. Stocarea necesită n * 2 octeți.

NTEXT, TEXT NATIONAL (tip de date SQL 2003: NCLOB)

Stochează fragmente de text în format UNICODE cu o lungime de până la 1.073.741.823 de caractere. Consultați descrierea tipului TEXT pentru o listă de comenzi și funcții care se aplică tipului NTEXT.

Un sinonim pentru tipul DECIMAL. Consultați descrierea tipului INT pentru regulile legate de proprietatea IDENTITY.

NVARCHAR (n), NATIONAL CHAR VARYING (n), NATIONAL CHARACTER VARYING (n) (tip de date SQL 2003: NATIONAL CHARACTER VARYING (n))

Stochează date UNICODE cu lungime variabilă de până la 4000 de caractere. Spațiul ocupat este calculat ca de două ori lungimea tuturor caracterelor introduse în câmp (număr de caractere * 2). În SQL Server, parametrul de sistem SET ANSI_PADDING] pentru câmpurile NCHAR și NVARCHAR este întotdeauna ON.

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

Stochează valori în virgulă mobilă în intervalul -3,40E + 38 până la 3,40E + 38. Este nevoie de 4 octeți. Tipul REAL este echivalent funcțional cu tipul FLOAT (24).

ROWVERSION (tip de date SQL 2003: niciuna)

Un număr unic stocat în baza de date care este actualizat ori de câte ori este actualizat un rând, numit TIMESTAMP în versiunile anterioare.

SMALLDATETIME (tip de date SQL 2003: niciunul)

Stochează data și ora în intervalul „01-01-1900 00:00” până la „06-06-2079 23:59” cu o precizie a minutelor. (Minutele sunt rotunjite în jos dacă secundele sunt 29,998 sau mai puțin, altfel sunt rotunjite la o valoare mai mare.) Valoarea este de 4 octeți.

SMALLINT (tip de date SQL 2003: SMALLINT)

Stochează numere întregi semnate sau nesemnate în intervalul de la -32.768 la 32.767. Ocupă 2 octeți. Consultați descrierea tipului INT pentru regulile legate de proprietatea IDENTITY care se aplică și acestui tip.

SMALLMONEY (tip de date SQL 2003: niciunul)

Stochează valori monetare în intervalul 214748,3648 până la -214748,3647. Valorile sunt lungi de 4 octeți.

VARIANTA SQL (tip de date SQL 2003: niciuna)

Stochează valori care sunt alte tipuri de date acceptate de SQL Server, excluzând TEXT, NTEXT, ROWVERSION și alte valori SQL_VARIANT. Poate stoca până la 8016 octeți de date, valorile NULL și DEFAULT sunt acceptate. Tipul SQL_VARIANT este utilizat în coloane, parametri, variabile și valori returnate de funcții și proceduri stocate.

TABLE (Tip de date SQL 2003: niciunul)

Un tip special care stochează setul de date rezultat din munca ultimului proces. Folosit exclusiv pentru procesarea procedurală și nu poate fi folosit în instrucțiunile CREATE TABLE. Acest tip de date reduce nevoia de a crea tabele temporare în multe aplicații. Poate reduce necesitatea recompilării procedurilor, accelerând astfel execuția procedurilor stocate și a UDF-urilor.

TEXT (tip de date SQL 2003: CLOB)

Stochează fragmente foarte mari de text cu o lungime de până la 2.147.483.647 de caractere. Valorile TEXTn IMAGE sunt adesea mult mai dificil de manipulat decât, să zicem, valorile VARCHAR. De exemplu, nu puteți crea un index pe o coloană TEXT sau IMAGINE. Valorile TEXT pot fi manipulate folosind funcțiile DATALENGTH, PATINDEX, SUBSTRING. TEXTPTR și TEX-TVALID, precum și comenzile READTEXT, SET TEXTSIZE, UPDATETEXT și WR1TETEXT.

TIMESTAMP (tip de date SQL 2003: TIMESTAMP)

Stochează un număr binar generat automat, care este unic în baza de date curentă și, prin urmare, diferit de tipul de date ANSI TIMESTAMP. TIMESTAMP are o dimensiune de 8 octeți. Valorile ROWVERSION sunt acum mai potrivite pentru identificarea unică a rândurilor în loc de TIMESTAMP.

Stochează numere întregi fără semn în intervalul de la 0 la 255 și ocupă 1 octet. Consultați descrierea tipului / L / G pentru regulile legate de proprietatea IDENTITATE care se aplică și acestui tip.

UNIQUEIDENTIFIER (tip de date SQL 2003: niciunul)

Este o valoare unică pentru toate bazele de date și pentru toate serverele. Este reprezentat ca xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx, unde fiecare x este un număr hexazecimal în intervalul 0-9 sau a-f. Singurele operațiuni care pot fi efectuate pe valori de acest tip sunt testele de comparație și NULL. Constrângerile și proprietățile pot fi utilizate pe coloanele de acest tip, cu excepția proprietății IDENTITY.

VARBINARY [(n)] (tip de date SQL 2003: BLOB)

Reprezintă o valoare binară de lungime variabilă, până la 8000 de octeți. Spațiul ocupat este dimensiunea datelor introduse plus 4 octeți.

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

Stochează date de caractere cu o lungime fixă ​​cuprinsă între 1 și 8000 de caractere. Spațiul ocupat este egal cu dimensiunea reală a valorii introduse în octeți, și nu cu valoarea lui p.

Top articole similare