Tranzacționați tipurile de date sql. SQL: Tipuri de date

Toate valorile dintr-o coloană trebuie să fie de același tip de date. (Singura excepție de la această regulă sunt valorile tipului de date SQL_VARIANT.) Tipurile de date utilizate în Transact-SQL pot fi împărțite în următoarele categorii:

    tipuri numerice;

    tipuri de caractere;

    tipuri temporare (date și/sau ore);

    alte tipuri de date.

Tipuri de date numerice

După cum vă puteți 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 o formă scurtă de 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 lungi de 8 octeți în intervalul -2 63 până la 2 63 - 1

DECIMAL(p,[s])

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

NUMERIC(p,[s])

Sinonim pentru DECIMAL.

REAL

Folosit pentru a reprezenta valori în virgulă mobilă. Gama de valori pozitive se extinde de la aproximativ 2,23E -308 la -1,18E -38. Poate fi reprezentată și o valoare nulă.

FLOTĂ[(p)]

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

BANI

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

BANI MICI

Reprezintă aceleași valori ca și tipul MONEY, 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 ca 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 scurtele lor descrieri.

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

Folosit pentru a reprezenta șiruri de caractere cu lungime fixă ​​formate din n caractere de un singur octet. Valoarea maximă a lui 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 cu lungime fixă ​​formate din caractere Unicode. Principala diferență dintre tipurile de date CHAR și NCHAR este că un șir NCHAR necesită 2 octeți pentru a stoca fiecare caracter, în timp ce un șir CHAR necesită 1 octet. Prin urmare, un șir de tip de date NCHAR poate conține cel mult 4000 de caractere. Tipul NCHAR poate fi folosit pentru a stoca, de exemplu, caractere ale 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ă. Fiecare caracter al unui șir de tip de date NVARCHAR necesită 2 octeți pentru stocare, astfel încât un șir de tip de date NVARCHAR poate conține cel mult 4000 de caractere.

Tipul de date VARCHAR este identic cu tipul de date CHAR, cu excepția unei diferențe: dacă conținutul unui șir CHAR(n) este mai scurt de n caractere, restul șirului este umplut cu spații. Iar 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

Transact-SQL acceptă următoarele tipuri de date temporare:

Tipuri de date DATETIMEȘi SMALLDATETIME sunt folosite pentru a stoca data și ora ca valori întregi de 4, respectiv 2 octeți lungime. Valorile de tip DATETIME și SMALLDATETIME sunt stocate intern ca două valori numerice separate. Componenta dată a valorilor de tip DATETIME este stocată în intervalul de la 01/01/1753 la 31/12/9999, iar componenta corespunzătoare a valorilor de tip SMALLDATETIME este stocată în intervalul de la 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 număr de trei sutimi de secundă (pentru DATETIME) sau numărul de minute (pentru SMALLDATETIME) care au trecut de la miezul nopții.

Dacă doriți să stocați doar componenta de dată sau oră, utilizarea valorilor DATETIME sau SMALLDATETIME este oarecum incomod. Din acest motiv, tipurile de date au fost introduse în SQL Server DATAȘi TIMP, care stochează numai componentele de dată și, respectiv, de oră ale valorilor DATETIME. Valorile DATE ocupă 3 octeți, reprezentând intervalul de date de la 01/01/0001 la 31/12/9999. Valorile TIME ocupă 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 cel mai apropiat 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 ocupă între 6 și 8 octeți. Toate celelalte proprietăți ale acestui tip de date sunt aceleași cu cele ale tipului de date DATETIME2.

Valorile date în Transact-SQL sunt definite implicit ca un șir de format „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 lună și delimitatorii / și -.) În mod similar, valoarea timpului este specificată în format de 24 de ore ca „hh:mm” (de exemplu, „22:24”) .

Transact-SQL acceptă diferite formate pentru introducerea valorilor DATETIME. După cum am menționat, fiecare componentă 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 LOB

Tip de date LOB (Obiect mare) folosit pentru a stoca obiecte de date de până la 2 GB. Astfel de obiecte sunt de obicei folosite pentru a stoca cantități mari de date text și pentru a încărca plug-in-uri și fișiere audio și video. Transact-SQL acceptă următoarele tipuri de date LOB:

Începând cu SQL Server 2005, același model de programare este utilizat pentru a accesa valorile tipurilor de date standard și valorile tipurilor de date LOB. Cu alte cuvinte, puteți utiliza funcții convenabile de sistem și operatori de șir 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 valorile coloanei cu lungime variabilă. Când se utilizează valoarea implicită a lungimii MAX în loc să specifice în mod explicit lungimea unei valori, sistemul examinează lungimea unui anumit șir și decide dacă să stocheze acel șir ca valoare obișnuită sau ca valoare LOB. Parametrul MAX specifică faptul că dimensiunea valorilor coloanei poate fi până la dimensiunea LOB maximă a sistemului.

Deși sistemul decide cum sunt stocate obiectele LOB, 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 setat la 1, atunci datele din coloanele declarate folosind parametrul MAX vor fi stocate separat de alte date. Dacă argumentul este 0, Motorul de baze de date stochează toate valorile de până la 8.060 de octeți în rândul tabelului ca date normale și stochează valori mai mari în afara rândului în zona de stocare LOB.

Începând cu SQL Server 2008, puteți utiliza VARBINARY(MAX) pentru coloanele de tip Atributul FILESTREAM pentru a salva date BLOB (Obiect binar mare) direct pe sistemul de fișiere NTFS. Principalul avantaj al acestui atribut este că dimensiunea obiectului LOB 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 unic de identificare care este stocat ca șir binar de 16 octeți. Acest tip de date este strâns legat de identificator GUID (identificator unic global - identificator unic la nivel global), care garantează unicitatea la scară globală. Astfel, acest tip de date permite ca datele și obiectele să fie identificate în mod unic în sistemele distribuite.

Puteți inițializa o coloană sau o variabilă de tip UNIQUEIDENTIFIER utilizând funcția NEWID sau NEWSEQUENTIALID sau folosind o constantă de șir de format special 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 într-o interogare cuvânt cheie ROWGUIDCOL pentru a indica faptul că coloana conține valori ID. (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.

Tip 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 de coloană SQL_VARIANT constă din două părți: valoarea în sine și informații care descriu acea valoare. Aceste informații conțin toate proprietățile tipului de date cu valoare reală, cum ar fi lungimea, scara și precizia.

Pentru a accesa și afișa informații despre valorile unei coloane de tip SQL_VARIANT, utilizați funcția SQL_VARIANT_PROPERTY.

Ar trebui să declarați un tip de coloană ca SQL_VARIANT numai dacă este cu adevărat necesar. De exemplu, dacă coloana este destinată să stocheze valori ale diferitelor tipuri de date sau dacă tipul de date care vor fi stocate în această coloană este necunoscut la crearea tabelului.

Tip de date HIERARCHYID

Tipul de date HIERARCHYID este utilizat pentru a stoca o ierarhie completă. De exemplu, o valoare de acest tip poate stoca o ierarhie a tuturor angajaților sau o ierarhie a dosarelor. Acest tip este implementat ca tip CLR definit de utilizator care acoperă mai multe funcții de sistem pentru crearea și lucrul cu nodurile 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 definită ca VARBINARY(8) sau BINARY(8) , în funcție de anulabilitatea coloanei. Pentru fiecare bază de date, sistemul menține un contor care crește de fiecare dată când este inserat sau actualizat orice rând care conține o celulă TIMESTAMP și atribuie acea valoare acelei celule. Astfel, folosind celule TIMESTAMP, puteți determina timpul relativ al ultimei modificări a rândurilor corespunzătoare din tabel. ( ROWVERSION este un sinonim pentru TIMESTAMP.)

În sine, valoarea stocată într-o coloană TIMESTAMP nu este importantă. Această coloană este utilizată de obicei pentru a determina dacă un anumit rând de 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, ambele vă permit să stocați LOB-uri și să economisiți spațiu pe disc. Acestea sunt următoarele opțiuni:

    stocarea datelor de tip 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). Proprietatea acestui tip de date este că obiectele binare mari (BLOB) sunt stocate în baza de date. Acest lucru 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 obiectelor LOB care sunt stocate pe 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 pentru a lucra cu aceste date puteți folosi instrucțiuni pentru modificarea datelor (SELECT, INSERT, UPDATE și DELETE);

    Sistemul de management al bazei de date oferă același nivel de securitate pentru datele FILESTREAM ca și pentru datele stocate în baza de date.

Coloane rare

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

Coloanele de acest tip vă permit să optimizați stocarea coloanelor ale căror valori majoritare sunt nule. Când se utilizează coloane rare, stocarea valorilor nule nu necesită spațiu pe disc, 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 în cazurile în care se așteaptă economii de cel puțin 20% din totalul spațiului pe disc.

Coloanele rare sunt definite în același mod ca și alte coloane din tabel; același lucru este valabil și pentru abordarea acestora. Aceasta înseamnă că puteți utiliza instrucțiunile SELECT, INSERT, UPDATE și DELETE pentru a accesa coloanele rare în același mod în care accesați coloanele obișnuite. Singura diferență se referă la crearea coloanelor rare: pentru a defini o anumită coloană ca rară, utilizați Argument SPARSE după numele coloanei, așa cum se arată în acest exemplu:

nume_coloană tip_date SPARSE

Mai multe coloane de tabel rare pot fi grupate într-un set de coloane. Acest set ar fi o modalitate alternativă de a stoca și de a accesa valori în toate coloanele rare ale unui tabel.

Valoare NULL

Null 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 se aplică. 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 atât +A cât și -A returnează nul. În expresiile binare, dacă valoarea unuia sau ambilor operanzi A și B este nulă, atunci rezultatul adunării, scăderii, înmulțirii, împărțirii și modulării acelor operanzi va fi, de asemenea, nul.

Dacă o expresie conține un operator de comparație și unul sau ambii operanzi ai săi este nul, rezultatul acelei operații va fi, de asemenea, nul.

Valoarea null 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 și pentru șirul gol și nul pentru tipurile de date caractere.

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

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

    NOT NULL dacă parametrul 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.)

Secțiunea 3. Bazele limbajuluiSQL

Curs 19. Grupuri de operatori. Tipuri de date

Limbajul bazei de date relaționale SQL a fost dezvoltat la mijlocul anilor '70 ca parte a unui proiect de cercetare asupra unui SGBD relațional experimental System R de la IBM . Acest proiect a inclus dezvoltarea unui SGBD și a unui limbaj relațional SEQUEL (Limba engleză structurată de interogări ). Acest nume reflecta doar parțial esența limbii. Limbajul era axat în principal pe formularea de interogări către o bază de date relațională, care erau convenabile și ușor de înțeles pentru utilizatori, de fapt, era deja un limbaj de bază de date relaționale cu drepturi depline și conținea, pe lângă operatori pentru formularea de interogări și manipularea bazei de date, următoarele; instrumente:

· definirea schemei bazei de date și manipularea acesteia;

· definirea constrângerilor de integritate și a declanșatorilor;

· crearea de vizualizări ale bazei de date;

· definirea structurilor straturilor fizice care sprijină execuția eficientă a interogărilor;

· automatizarea accesului la tabele și câmpurile acestora;

· suport pentru punctele de salvare a tranzacțiilor și rollback-uri.

La sfârșitul anilor '70, corporația Oracol a fost lansată o versiune modificată a limbii CONTINUARE , numit SQL . În 1983 compania IBM a lansat SQL ca parte a sistemului de baze de date DB 2.

Limbajul SQL a avut atât de mult succes încât puțin mai târziu, în 1986, Institutul Național American de Standarde ( ANSI ) l-a adoptat ca standard. După aceasta, standardul a fost deja revizuit de mai multe ori, în 1989, 1992, rezultând limbajul SQL Au fost făcute câteva modificări minore. În prezent, cel mai comun standard este SQL-92.

Tipuri de comenziSQL

Comenzi SQL , condiționat, poate fi împărțit în grupuri:

· DCL ( Date Control Limba) – limbaj de gestionare a datelor. Comenzile de limbă sunt concepute pentru a controla accesul la informațiile stocate în baza de date. (Tabelul 19.1);

· DDL (Limbaj de definire a datelor) – limbaj de definire a datelor. Comenzile sale sunt folosite pentru a crea și modifica structura obiectelor bazei de date (Tabelul 19.2);

· DML ( Date Manipulare Limba) – limbaj de manipulare a datelor. Folosit pentru a manipula informațiile conținute în obiectele bazei de date (Tabelul 19.3);

· DQL ( Date Interogare Limba) – limbajul de interogare a datelor. Grupul cel mai frecvent utilizat constă dintr-un singur operator SELECTAȚI , destinat generării de interogări către baza de date (Tabelul 19.4);

· TCL (Tranzacţie Control Limba) – limbajul de gestionare a tranzacțiilor (Tabelul 19.5);

CCL (Limbaj de control al cursorului). ) – limbaj de control al cursorului (Tabelul 19.6);

Limbajul SQL este non-procedural, dar, cu toate acestea, mediul SQL Server oferă o serie de constructe de control diferite, fără de care este imposibil să scrieți algoritmi eficienți, de exemplu, paranteze operator, condiții de buclă etc.

Tabel 19.1 - Instrumente de gestionare a datelor DCL

Operator

Descriere

ALTERA BAZA DE DATE

Modificarea setului de obiecte principale ale bazei de date

ALTER DBAREA

Modificarea unei zone de stocare a bazei de date existente

ALTERAȚI PAROLA

Schimbă parola pentru întreaga bază de date

CREAȚI BAZĂ DE DATE

Creează o nouă bază de date și își definește parametrii de bază

CREATE DBAREA

Creează o zonă de stocare și o pune la dispoziție pentru stocarea datelor

DROP BAZA DE DATE

Șterge baza de date (dacă aveți drepturi)

DROP DBAREA

Șterge o zonă de stocare dacă nu conține date active

ACORDA

Oferă drepturi de acces la acțiunile cu obiecte de bază de date

REVOCA

Privește drepturile de acces la obiectele bazei de date sau asupra acțiunilor cu obiectele bazei de date

Tabelul 19.2 - Declarații de definire a datelor DDL

Operator

Descriere

CREAȚI TABEL

Creează un tabel nou în baza de date

DROP TABLE

Îndepărtează un tabel existent din baza de date

ALTER TABLE

Modifică structura tabelului sau constrângerile tabelului

CREATE VIEW

Creează o vizualizare (tabel virtual) corespunzătoare unora interogare SQL

DROP VIEW

Șterge o vizualizare creată anterior

ALTER VIEW

Modifică o vizualizare existentă

CREAȚI INDEX

Creează un index pe un tabel

INDICE DE CĂDERARE

Elimină un index existent

Tabelul 19.3 - Operatori de manipulare a datelor DML

Operator

Descriere

ȘTERGE

Șterge una sau mai multe înregistrări în funcție de condițiile de selecție. Utilizarea operatorului este în concordanță cu principiile menținerii integrității referențiale, astfel încât operatorul nu este întotdeauna executat corect, chiar dacă este scris corect sintactic.

INTRODUCE

Inserează una sau mai multe înregistrări, în funcție de condiția de selecție, în tabelul de bază

ACTUALIZAȚI

Actualizează valorile unuia sau mai multor câmpuri dintr-una sau mai multe înregistrări care corespund criteriilor de selecție

Tabelul 19.4 - Limbajul de interogare a datelor DQL

Operator

Descriere

SELECTAȚI

Un operator care realizează pe deplin capacitățile algebrei relaționale. Vă permite să generați relația rezultată corespunzătoare interogării

Tabelul 19.5- Controale tranzacțiilor TCL

Operator

Descriere

COMMIT

Finalizează o tranzacție (prelucrare complexă interconectată a informațiilor combinate în tranzacții)

ROLLBACK

Revenire la o tranzacție (anularea modificărilor efectuate în timpul unei tranzacții)

PUNCT DE SALVARE

Salvează un punct intermediar (stare) al bazei de date pentru a implementa caracteristica rollback

Tabel 19.6 - Controale cursor C C.L.

Operator

Descriere

DECLARA

Definește cursorul pentru cerere

DESCHIS

Deschide un cursor (Generează un ND virtual corespunzător descrierii cursorului)

FETCH

Citește următoarea linie din ND virtual al unui cursor deschis

ÎNCHIDE

Închide un cursor deschis

A PREGATI

Pregătește o instrucțiune SQL pentru execuție dinamică

A EXECUTA

Execută o instrucțiune SQL care a fost pregătită anterior pentru execuție dinamică

Tipuri de date de limbă SQL

SQL are șase tipuri de date scalare definite de standard. Scurta lor descriere este prezentată în tabelul 19.7

Tabelul 19.7 – tipuri de date de limbă SQL

Tip de date

reclame

Simbolic

CHAR | VARCHAR

Pe bit

BIT | PUȚIN VIERĂ

Numerele exacte

NUMERIC | DECIMAL | INTEGER | SMALLINT

Numere reale

FLOTĂ | REAL | PRECIZIE DUBLA

Data Ora

DATA | TIMP | TIMESTAMP-UL

Interval

INTERVAL

Tipuri de șiruri:

§ CHARACTER(n) sau CHAR(n) - șiruri de caractere de lungime constantă în n personaje. Când se specifică acest tip, fiecare valoare este întotdeauna alocată n caractere, iar dacă valoarea reală durează mai puțin de n caractere, apoi DBMS completează automat caracterele lipsă cu spații.

§ VARCHAR(n) - șiruri de caractere cu lungime variabilă.

Tipuri de biți:

§ În IT (n) - un șir de biți de lungime constantă.

§ BIT VARYING(n) - șir de biți de lungime variabilă.

Tipuri exacte:

§ NUMERIC[(n,m)] - numere exacte, aici și - numărul total de cifre din număr. le, m - numărul de cifre din stânga punctului zecimal.

§ DECIMAL[(n,m)] - numere exacte, aici n este numărul total de cifre din număr, m este numărul de cifre din stânga punctului zecimal.

§ DEC[(n,m)] - la fel ca DECIMAl.[(n,m)].

§ INTEGER sau INT - numere întregi.

§ SMALLINT - numere întregi mai mici.

Tipuri reale:

§ FLOAT[(n)] - numere de mare precizie stocate sub formă de virgulă mobilă. Aici n - numărul de octeți rezervați pentru stocarea unui număr. Gama de numere este specifică implementării.

§ REAL este un tip de număr real care corespunde numerelor în virgulă mobilă, mai puțin precis decât FLOAT.

§ DOUBLE PRECISION specifică un tip de date cu o precizie definită de implementare mai mare decât precizia definită de implementare pentru REAL.

Tipuri de dată/ora și interval:

§ DATE - data calendaristică.

§ TIME – format de timp.

§ T I ME S TAMR (acuratețe) - data și ora.

§ INTERVAL - interval de timp.

Majoritatea SGBD-urilor comerciale acceptă tipuri de date suplimentare care nu sunt specificate în standard. De exemplu, aproape toate SGBD-urile într-o formă sau alta acceptă un tip de date pentru reprezentarea unui volum mare de text nestructurat. Acest tip este similar cu tipul MEMO din SGBD-urile desktop. Aceste tipuri sunt numite diferit, de exemplu, în ORACLE acest tip se numește LONG, în DB2 - LONG VARCHAR, în SYBASE și MS SQL Server - TEXT.

Întrebări de control

1. Ce este limbajul SQL?

2. Ce au limbile în comun? SQL și algebră relațională?

3. Ce mijloace include limbajul? SQL?

4. Ce tipuri de comenzi se disting în limbaj? SQL?

5. DML.

6. Denumiți comenzile de bază ale limbii DDL.

7. Denumiți comenzile de bază ale limbii DCL.

8. Denumiți comenzile de bază ale limbii DQL.

9. Denumiți comenzile de bază ale limbajului de gestionare a tranzacțiilor.

10. Numiți principalele tipuri de date ale limbii SQL.

11. Denumiți tipurile de date șiruri ale limbii SQL.

12. Denumiți tipurile de date numerice ale limbii SQL.

13. Nume tipuri de reprezentare a datei și orei.

Astăzi, în lume există o cantitate imensă de tehnologii și instrumente concepute pentru stocarea informațiilor. Bazele de date sunt unul dintre cele mai comune instrumente. Pentru a lucra cu ele, se folosesc 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 un sens general. În mod convențional, un tip de date poate fi definit ca un grup de date caracterizat prin valorile sale - numerice, simbolice și așa mai departe - precum și 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 pentru programare pentru a rezolva problemele date. 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 cele mai comune tipuri de informații, dar cu o serie de completări specifice.

Tipuri de date: clasificare

Gruparea datelor după tip există de mult timp. A fost cauzată de necesitatea de a structura toate volumele de informații pentru a asigura ușurința procesării. 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 tipuri de informații pointeri, întregi, logice, virgulă mobilă și șir. 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 caractere. În acest caz, vorbim despre caractere și litere speciale, care împreună vor fi procesate ca șiruri în orice interogare SQL. Mai jos sunt tipurile de date care formează 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 la 255.

— VAR CHAR (dimensiune) — similar cu tipul anterior, acest tip vă permite să stocați șiruri de caractere a căror lungime nu depășește 255 de caractere. Principala diferență dintre acest tip și CHAR este că aici cantitatea necesară de memorie este alocată pentru a stoca o valoare de acest 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, al căror volum nu depășește 65535 caractere.

— BLOB – acest tip este similar cu tipul TEXT. Vă permite să salvați informații text î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 desene, informații audio, documente electronice și alte lucruri.

— TEXT MEDIU – acest tip a fost dezvoltat pe baza tipului TEXT. Datorită dimensiunii crescute la 16777215 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 16777215 caractere.

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

— LONG BLOB – face posibilă plasarea datelor mari în baza de date - 4294967295 caractere.

- ENUM este un tip de date special care este utilizat pentru a specifica o listă de valori diferite. 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. Dacă se adaugă valori care nu sunt în lista dată, 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 conține 64 de parametri care pot fi inițializați de mai multe elemente ale argumentelor date.

Tabel cu tipuri de date fracționale

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

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

— DOUBLE (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 ar trebui să ia în considerare cu siguranță tipul de stocare și metode de procesare a informațiilor, astfel încât datele să rămână neschimbate în orice moment.

Date întregi

Un grup separat de numere, care formează una dintre clasele principale, sunt numere întregi. Tipurile de date întregi se bazează pe tipul de bază INTEGER cu o anumită extensie 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) – caracterizat printr-un interval ușor crescut de date stocate de la -32768 la 32767.
  • MEDIUMINT (dimensiune) – folosit pentru a stoca numere cu dimensiuni de la -223 la 223-1.
  • BIGINT (dimensiune) – acoperă intervalul de valori întregi de la -263 la 263-1.

Dacă alegeți tipul de date potrivit, puteți economisi în mod semnificativ memorie și, în același timp, puteți reduce costul timpului de server atunci când executați interogările SQL necesare. Tipurile de date și intervalul lor determină cantitatea de stocare necesară. Dezvoltatorii ar trebui să fie conștienți de faptul că utilizarea unor intervale mari de atribute poate genera costuri crescute de memorie. Ar trebui să analizați clar problemele rezolvate și să identificați situațiile în care se cunoaște intervalul aproximativ de date și este definită condiția de utilizare a numerelor cu semne. Dacă gama de argumente utilizate este mică și toate numerele sunt pozitive, atunci ar fi mai corect să se folosească un tip 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 atunci când se dezvoltă sisteme care depind direct de sincronizare.

  • 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 simbol, cu excepția numerelor, poate fi folosit ca delimitator.
  • TIME – vă permite să introduceți valori de timp î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 prezentate 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 - indicator special

În unele cazuri, la popularea unei baze de date, apare o situație când, la adăugarea unei înregistrări la un tabel, nu este nevoie să introduceți informații în toate coloanele. Pentru a face acest lucru, trebuie să utilizați un indicator special de destinație gol sau NULL. Folosește limbajul SQL ca instrument auxiliar. Tipurile de date pe coloană care sunt opționale sunt specificate cu o clauză de activare la crearea tabelelor. De asemenea, operatorul NULL, atunci când se utilizează prefixul suplimentar NOT, poate fi folosit pentru a indica faptul că toate valorile trebuie completate. 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 prezentate mai sus.

Tipuri de date SQL sunt împărțite în trei grupe:
şir;
punctul de plutire (numere fracționare);
numere întregi, DataȘi timp.

  1. Tipuri de date SQLşir
    Tipuri de date SQL Descriere
    CHAR(dimensiune) Șiruri de caractere cu lungime fixă ​​(pot conține litere, cifre și caractere speciale). Mărimea fixă ​​este indicată în paranteze. Pot fi înregistrate până la 255 de caractere
    VARCHAR(dimensiune)
    TINYTEXT Poate stoca maximum 255 de caractere.
    TEXT
    BLOB Poate stoca maximum 65.535 de caractere.
    TEXT MEDIU
    MEDIUMBLOB Poate stoca maximum 16.777.215 caractere.
    TEXT LUNG
    LONGBLOB Poate stoca maximum 4.294.967.295 de caractere.
    ENUM(x,y,z,etc.) Vă permite să introduceți o listă de valori valide. Puteți introduce până la 65535 de valori în Tip de date SQL ENUM listă. Dacă, la inserare, valoarea nu va fi prezentă în listă ENUM, atunci vom obține o valoare goală.
    Puteți introduce valori posibile în următorul format: ENUM ("X", "Y", "Z")
    A STABILIT Tip de date SQL SET amintește ENUM cu excepția că A STABILIT poate conține până la 64 de valori.
  2. Tipuri de date SQL virgulă mobilă (numere fracționale) și numere întregi
    Tipuri de date SQL Descriere
    TINYINT(dimensiune) Poate stoca numere de la -128 la 127
    SMALLINT(dimensiune) Interval de la -32.768 la 32.767
    MEDIUMINT(dimensiune) Interval de la -8.388.608 la 8.388.607
    INT(dimensiune) Interval de la -2.147.483.648 la 2.147.483.647
    BIGINT(dimensiune) Interval de la -9.223.372.036.854.775.808 la 9.223.372.036.854.775.807
    FLOAT(dimensiune,d) Număr cu virgulă mobilă de mică precizie.
    DUBLĂ (dimensiune, d) Număr cu virgulă mobilă cu precizie dublă.
    DECIMAL(dimensiune,d) Un număr fracționar stocat ca șir.
  3. Tipuri de date SQL- Data si ora

Tipuri de date MySQL

Tipuri de date MySQL sunt împărțite în următoarele tipuri:

  • Numeric tipuri de date
    Tipuri de date octet Din Inainte de
    TINYINT 1 -128 127
    SMALLINT 2 -32768 32767
    MEDIUMINT 3 -8388608 8388607
    INT 4 -2147483648 2147483647
    BIGINT 8 -9223372036854775808 9223372036854775807
  • Tipuri de date data si ora
  • Caracter Tipuri de date

Tipuri de date Oracle

Tipuri de date Oracle

  • CHAR– șiruri de text fixe de până la 2000 de octeți. Tastați valoarea CHAR căptușit la lungimea specificată cu spații.
  • VARCHAR 2— șiruri de text cu lungime variabilă de până la 4000 de octeți.
  • NUMĂR- date numerice.
  • ZECIMAL- date numerice
  • DATA- folosit pentru a stoca datele.
  • BRUT- folosit pentru a stoca date binare de până la 2000 de octeți.
  • LUNG- folosit pentru a stoca date text cu o lungime de până la 2 GB
  • LUNG RAW- folosit pentru a stoca date binare de până la 2 GB
  • RÂNDUL- folosit pentru a stoca identificatori RÂNDUL Bază de date Oracolîntr-un format special (adresele rândurilor de tabel).
  • BLOB- Sunt salvate până la 4 GB de date binare. Datele de acest tip sunt stocate în afara tabelului, dar în tabel Oracol există doar indicii către obiecte
  • CLOB, NCLOB— sunt salvate până la 4 GB de date text. NCLOB este tipul de date NLS lungime mare mare ( NLS mijloace Set de limbi naționale– un set pentru limbile naționale – și este folosit pentru a lucra Oracolîn alte limbi decât engleza. În engleză, este necesar 1 octet pentru a stoca un caracter, iar în unele limbi ale lumii cu seturi mari de caractere (japoneză, chineză, coreeană), limbi în care textul este citit de la dreapta la stânga (araba, ebraică) sunt necesari mai multi octeti pentru a stoca un caracter). Datele de acest tip sunt stocate în afara tabelului, iar tabelul conține doar pointeri către obiecte.
  • BFILE— sunt salvate până la 4 GB de date nestructurate și în fișierele sistemului de operare (fișiere externe).

ANSI SQL standardul recunoaște doar text și numărul, în timp ce majoritatea programelor comerciale folosesc alte tipuri speciale, cum ar fi DATAȘi TIMP- de fapt, tipuri aproape standard. Unele pachete acceptă și tipuri precum BANIȘi BINAR. Tipuri de date, recunoscute de ANSI, constau din șiruri de caractere și diferite tipuri de numere, care pot fi clasificate ca exacte numere și numere aproximative.

CARACTER(lungime) definește o specificație a șirurilor de caractere, unde lungime specifică lungimea șirurilor de caractere de un anumit tip. Valorile de acest tip trebuie incluse între ghilimele simple. Majoritatea implementărilor acceptă șiruri de lungime variabilă pentru tipurile de date VARCHARȘi LUNG VARCHAR(sau pur și simplu LUNG).

În timp ce un câmp ca CHAR poate aloca întotdeauna memorie pentru numărul maxim de caractere care pot fi stocate într-un câmp, câmp VARCHAR având în vedere orice număr de caractere, poate aloca doar o anumită cantitate de memorie pentru a stoca conținutul real al câmpului, deși SQL poate crea un spațiu de memorie suplimentar pentru a ține evidența lungimii curente a câmpului. Camp VARCHAR poate avea orice lungime, inclusiv un maxim definit de implementare. Acest maxim poate varia de la 254 la 2048 de caractere pentru VARCHARși până la 16.000 de caractere pentru LUNG. LUNG folosit de obicei pentru text cu caracter explicativ sau pentru date care nu pot fi ușor comprimate în valori simple de câmp; VARCHAR poate fi folosit pentru orice șir de text a cărui lungime poate varia.

Extragerea și modificarea câmpurilor VARCHAR- proces mai complex și, prin urmare, mai lent decât extragerea și modificarea câmpurilor CHAR.În plus, puțină memorie VARCHAR rămâne întotdeauna nefolosit pentru a se asigura că întreaga lungime a șirului este conținută. Când utilizați astfel de tipuri, ar trebui să fie posibil ca câmpurile să fie combinate cu alte câmpuri.

Tipuri numerice exacte sunt numere, cu sau fără virgulă, care pot fi reprezentate ca [+|-]<целое без знака>[.<целое без знака>] și să fie specificat ca:

DECIMAL(precizie [, scară])- argumentul dimensiunea are două părți: precizie și scară. Scara nu poate depăși precizia. Precizia indică câte cifre semnificative are un număr. Scara specifică numărul maxim de cifre la dreapta punctului zecimal. Scala = zero face câmpul echivalent cu un număr întreg.

NUMERIC(precizie [, scară])- la fel ca ZECIMAL cu excepția faptului că zecimala maximă nu poate depăși argumentul de precizie

ÎNTREG- un număr fără virgulă zecimală. Echivalent ZECIMAL, dar fără numerele din dreapta punctului zecimal, adică. cu scară egală cu 0. Argumentul dimensiune nu este utilizat (este setat automat la o valoare dependentă de implementare).

SMALLINT- la fel ca ÎNTREG, cu excepția faptului că, în funcție de implementare, dimensiunea implicită poate (sau nu) să fie mai mică decât ÎNTREG.

Tipuri numerice aproximative sunt numere în notație exponențială (bază 10), reprezentate ca <литеральное значение точного числа>E<целое со знаком> și specificat după cum urmează:

FLOAT[(precizie)]- număr în virgulă mobilă. Argumentul de dimensiune este format dintr-un singur număr care specifică precizia minimă.

REAL- la fel ca PLUTI cu excepția faptului că nu este folosit niciun argument de dimensiune. Precizia este setată implicit în funcție de implementare.

PRECIZIE DUBLA- la fel ca REAL, cu excepția faptului că acuratețea definită de implementare pentru PRECIZIE DUBLA trebuie să depășească acuratețea definită de implementare REAL.

Accesați tipurile de date

Accesați tipurile de date sunt împărțite în următoarele grupe:

  • Text– maxim 255 de octeți.
  • Memo - până la 64000 de octeți.
  • Numeric— 1,2,4 sau 8 octeți Pentru un tip numeric, dimensiunea câmpului poate fi după cum urmează:
    • octet— numere întregi de la -0 la 255, ocupă 1 octet când sunt stocate
    • întreg— numere întregi de la -32768 la 32767, durează 2 octeți
    • întreg lung— numere întregi de la -2147483648 la 2147483647, durează 4 octeți
    • punctul de plutire— numere precise la 6 cifre de la –3,4*1038 la 3,4*1038, durează 4 octeți
    • punctul de plutire— numere cu precizie de la –1,797*10308 la 1,797*10308, durează 8 octeți
  • Data Ora— 8 octeți
  • Monetar- 8 octeți, date privind sumele monetare, stocate cu 4 zecimale.
  • Tejghea- un întreg lung unic generat de Access la crearea fiecărei înregistrări noi - 4 octeți.
  • Logic— date logice 1 bit.
  • Câmp obiect OLE– până la 1 gigaoctet, imagini, diagrame și alte obiecte OLE din aplicații Windows. Obiecte OLE pot fi legate sau încorporate.
  • Hiperlinkuri— un câmp în care sunt stocate hyperlinkuri. Un hyperlink poate fi de orice tip UNC(un format standard pentru specificarea unei căi care include un server de fișiere de rețea) sau URL (adresa unui obiect, document, pagină sau alt tip de obiect pe Internet sau Intranet. URL-ul definește protocolul de acces și adresa finală ).
  • Vrăjitorul de înlocuire— un câmp care vă permite să selectați o valoare dintr-un alt tabel Accesuri sau dintr-o listă de valori folosind o casetă combinată. Cel mai adesea folosit pentru câmpurile cheie. Are aceeași dimensiune ca și cheia primară, care este și un câmp de căutare, de obicei 4 octeți. ( Cheia principala– unul sau mai multe câmpuri, a căror combinație de valori identifică în mod unic fiecare înregistrare din tabel Accesuri. Nu permite nedefinit.Null. valorile trebuie să aibă întotdeauna un index unic. Servește pentru a lega un tabel cu cheile secundare ale altor tabele).

Tipuri de date SQL Server

Microsoft SQL Server SQL 2003. De asemenea SQL Server suportă suplimentar tipuri de date, folosit pentru a identifica în mod unic rânduri de date dintr-un tabel și pe mai multe servere, cum ar fi UNIQUEIDENTIFIER , care este în concordanță cu filozofia hardware Microsoft „în primul rând” (adică, implementarea unei baze pe mai multe servere pe platforme Intel) în loc de „înalt-înalt”. înălțime" (adică implementare pe un server UNIX uriaș puternic sau Windows Data Center Server).

Tipuri de date utilizat în SQL Server:

  • BIGINT ( tip de date SQL2003: B1GINT)
    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 SQL2003: BLOB)
    Stochează o valoare binară cu lungime fixă ​​de la 1 la 8000 de octeți. O valoare BINAR ocupă n + 4 octeți.
  • BIT ( tip de date SQL2003: BOOLEAN)
    Stochează valorile 1, 0 sau NULL, care înseamnă „necunoscut”. Un octet poate stoca până la 8 valori din coloanele de tip tabel BIT. Încă un octet poate găzdui valori suplimentare de 8 BIT Coloanele de tip BIT nu pot fi indexate.
  • CHAR[(n)] , CARACTER[(n)] ( tip de date SQL2003: CARACTER[(n)])
    Stochează date de caractere cu lungime fixă ​​de la 1 la 8000 de caractere. Orice spațiu nefolosit este umplut implicit cu spații. (Umplutura automată poate fi dezactivată.) Tipul ocupă n octeți.
  • CURSOR ( tip de date SQL2003: lipsește)
    Un tip de date special folosit pentru a descrie un cursor sub forma unei variabile sau a unui parametru de procedură stocată OUTPUT. Tipul nu poate fi utilizat într-o instrucțiune CREATE TABLE. Tipul CURSOR poate fi NULL.
  • DATETIME (tip de date SQL2003: 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 (pag. s) , DEC (pag. s) , NUMERIC (p, s) ( tip de date SQL2003: DECIMAL (p, s) , NUMERIC (p. s))
    Stochează zecimale cu o lungime de până la 38 de cifre. Valorile p și s determină precizia și, respectiv, scara. Scala implicită este 0. Spațiul pe care îl ocupă valoarea este determinat de precizia utilizată.
    Pentru precizia 1-9, se folosesc 5 octeți.
    Pentru precizia 10-19, se folosesc 9 octeți.
    Cu o precizie de 20-28, sunt utilizați 13 octeți.
    Cu precizie 29-39, sunt utilizați 17 octeți.
    Consultați tipul INT pentru regulile de proprietate IDENTITY care se aplică și tipului DECIMAL.
  • PRECIZIE DUBLA ( tip de date SQL2003: lipsește)
    Sinonim pentru FLOAT(53) .
  • FLOAT[(n)] ( tip de date SQL2003: FLOAT, FLOAT(n))
    Stochează valori în virgulă mobilă în intervalul -1,79E + 308 la 1,79E + 308. Precizia, determinată de parametrul și, poate varia de la 1 la 53. Pentru a stoca 7 cifre (n - de la 1 la 24) necesită 4 octeți. Valorile mai mari de 7 cifre ocupă 8 octeți.
  • IMAGINE ( tip de date SQL2003: BLOB)
    Stochează o valoare binară cu lungime variabilă de până la 2.147.483.647 de octeți. Acest tip de date este adesea folosit pentru a stoca elemente grafice, audio și fișiere precum documente MS Word și foi de calcul MS Excel. Valorile de tip IMAGE nu pot fi manipulate liber. Coloanele IMAGE și TEXT 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ă și tipului IMAGINE.
  • INT (tip de date SQL2003: INTEGER)
    Stochează numere întregi semnate sau nesemnate în intervalul -2.147.483.648 până 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, care este un identificator de rând incrementat automat. Consultați secțiunea „Instrucțiunea CREATE/ALTER TABLE” din Capitolul 3.
  • BANI (tip de date SQL2003: lipsește)
    Stochează valorile valutare în intervalul -922337203685477,5808 până la 922337203685477,5807. Valoarea durează 8 octeți.
  • NCHAR(n) , NATIONAL CHAR(n) , NATIONAL CHARACTER(n) ( tip de date SQL2003: PERSONAJ NAȚIONAL(n))
    Stochează date UNICODE cu lungime fixă ​​de până la 4000 de caractere. Stocarea necesită n*2 octeți.
  • NTEXT, TEXT NAȚIONAL ( tip de date SQL2003: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ă și tipului NTEXT.
  • NUMERIC(p, s) ( tip de date SQL2003: DECIMAL (p, s))
    Sinonim pentru tipul DECIMAL. Consultați descrierea tipului INT pentru regulile legate de proprietatea IDENTITY.
  • NVARCHAR(n) , NAȚIONAL CHAR VARYING(n) , NATIONAL CHARACTER VARYING(n) ( tip de date SQL2003: CARACTER NAȚIONAL VARIAZĂ(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, opțiunea de sistem SET ANSI_PADDINGX pentru câmpurile NCHAR și NVARCHAR este întotdeauna ON.
  • REAL , FLOAT(24) ( tip de date SQL2003: REAL)
    Stochează valori în virgulă mobilă în intervalul -3,40E+38 până la 3,40E+38. Ocupă 4 octeți. Tipul REAL este echivalent funcțional cu tipul FLOAT(24).
  • ROWVERSION ( tip de date SQL2003: lipsește)
    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 SQL2003: lipsește)
    Stochează data și ora în intervalul „01-01-1900 00:00” până la „06-06-2079 23:59” cu precizie minute. (Minutele sunt rotunjite în jos dacă valoarea secundelor este de 29,998 sau mai puțin, în caz contrar, sunt rotunjite în sus.) Valoarea ocupă 4 octeți.
  • SMALLINT ( tip de date SQL2003: 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 SQL2003: lipsește)
    Stochează valori valutare în intervalul de la 214748,3648 la -214748,3647. Valorile ocupă 4 octeți.
  • SQLVARIANT( tip de date SQL2003: lipsește)
    Stochează valori legate de alte tipuri de date acceptate de SQL Server, cu excepția 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 valorile returnate ale funcțiilor și procedurilor stocate.
  • MASA ( tip de date SQL2003: lipsește)
    Un tip special care stochează setul de date rezultat ca rezultat al 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 nevoia de recompilări de proceduri, accelerând astfel execuția procedurilor stocate și a funcțiilor definite de utilizator.
  • TEXT ( tip de date SQL2003: CLOB)
    Stochează bucăți foarte mari de text cu o lungime de până la 2.147.483.647 de caractere. Valorile TECHNIC 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ă de tip TEXT sau IMAGINE. Valorile TEXT pot fi manipulate folosind funcțiile DATALENGTH, PATINDEX, SUBSTRING, TEXTPTR și TEXTVALID, precum și comenzile READTEXT, SET TEXTSIZE, UPDATETEXT și WRITETEXT.
  • TIMESTAMP-UL ( tip de date SQL2003: TIMESTAMP)
    Stochează un număr binar generat automat, care este unic în baza de date curentă și, prin urmare, distinct de tipul de date ANSI TIMESTAMP. Tipul TIMESTAMP ocupă 8 octeți. În prezent, în loc de TIMESTAMP, este mai bine să folosiți valorile ROWVERSION pentru a identifica în mod unic rândurile.
  • TINYINT
    Stochează numere întregi fără semn în intervalul de la 0 la 255 și ocupă 1 octet. Consultați descrierea tipului INT pentru regulile legate de proprietatea IDENTITY care se aplică și acestui tip.
  • IDENTIFICATOR UNIC ( tip de date SQL2003: lipsește)
    Reprezintă o valoare unică pentru toate bazele de date și pentru toate serverele. Reprezentat ca xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx, în care fiecare „x” reprezintă un număr hexazecimal în intervalul 0-9 sau a - f. Singurele operațiuni care pot fi efectuate pe valori de acest tip sunt compararea și testarea pentru NULL. Coloanele de acest tip pot folosi constrângeri și proprietăți, cu excepția proprietății IDENTITY.
  • VARBINAR[(n)] ( tip de date SQL2003: BLOB)
    Reprezintă o valoare binară cu lungime variabilă, de până la 8000 de octeți. Spațiul ocupat este dimensiunea datelor introduse plus 4 octeți.
  • VARCHARf(n)] , CAR VARYING [(n)] , CHARACTER VARYING [(n)] ( tip de date SQL2003: CARACTERE VARIABILE (n))
    Stochează date de caractere cu lungime fixă, cu dimensiuni cuprinse între 1 și 8000 de caractere. Spațiul ocupat este dimensiunea reală a valorii introduse în octeți, nu valoarea n.

Tipuri de date PostgreSQL

Bază de date PostgreSQL acceptă majoritatea tipurilor de date SQL2003 plus un set imens de tipuri pentru stocarea datelor spațiale și geometrice. PostgreSQL se mândrește cu un set bogat de operatori și funcții concepute special pentru tipurile de date geometrice. Aceasta include funcții precum rotația, căutarea intersecției și scalarea. ÎN PostgreSQL Există, de asemenea, suport pentru versiuni suplimentare ale tipurilor de date existente, care tind să ocupe mai puțin spațiu pe disc decât versiunile originale corespunzătoare. De exemplu, în PostgreSQL Sunt oferite mai multe variante de tip INTEGER pentru stocarea numerelor mari si mici, respectiv ocupand mai mult sau mai putin spatiu.

  • BJGSERJAL
  • BIT ( tip de date SQL2003: BIT)
    Șir de biți cu lungime fixă.
  • BIT VARYING(n) varbit(n) ( tip de date SQL2003: VARIAȚI DE BIȚI)
    Indică un șir de biți de lungime variabilă de n biți.
  • BOOL , BOOLEAN ( tip de date SQL2003: BOOLEAN)
    Stochează o valoare booleană (adevărat/fals/necunoscut). Valorile recomandate sunt cuvintele cheie TRUE și FALSE, totuși PostgreSQL permite mai multe valori literale pentru „adevărat”: TRUE, t, adevărat, y, da și 1. Valorile valide pentru „fals” sunt: ​​FALSE, f, false, n, nu și 0.
  • CUTIE ((xl, y I), (x2, y2)) ( tip de date SQL2003: lipsește)
    Stochează valori care definesc o zonă dreptunghiulară pe un plan. Valorile ocupă 32 de octeți și sunt prezentate sub forma ((xl, yl), (x2, y2)), care corespunde colțurilor opuse ale dreptunghiului (dreapta sus și respectiv stânga jos). Parantezele exterioare sunt opționale.
  • BYTEA ( tip de date SQL2003: OBIECT BINAR MARE)
    Date brute, binare utilizate, de exemplu, pentru a stoca grafică, sunet și documente. Acest tip de stocare necesită 4 octeți plus dimensiunea reală a șirului de biți.
  • CHAR(n) , CHARA CTER(n) ( tip de date SQL2003: CARACTER(n))
    Conține un șir de caractere cu lungime fixă ​​adăugită cu spații până la lungimea n. Încercarea de a introduce o valoare mai mare de n are ca rezultat o eroare (cu excepția cazului în care caracterele suplimentare sunt spații, caz în care sunt tăiate pentru a avea n caractere).
  • CIDR(x.x.x.xZy) ( tip de date SQL2003: lipsește)
    Descrie o adresă de rețea sau gazdă în formatul protocolului IP versiunea 4. Adresa ocupă 12 octeți. Valorile valide sunt orice adrese de rețea permise de protocolul IPv4. În tipul CIDR, datele sunt reprezentate sub forma x.x.x.x/y, unde x.x.x.x este adresa IP și y este numărul de biți de masca de rețea. CIDR nu permite biți non-zero la dreapta bitului zero al măștii de rețea.
  • CERCUL x, y, r (tip de date SQL2003: lipsește)
    Descrie un cerc pe un plan. Valorile ocupă!’ 24 de octeți și sunt prezentate sub forma x, y, r. Valorile * și y reprezintă coordonatele centrului cercului, iar r este lungimea razei acestuia. Valorile pentru x, y și r pot fi delimitate prin paranteze sau acolade dacă se dorește.
  • DATE (tip de date SQL2003: DATE)
    Stochează o dată calendaristică (an, zi și lună) fără ora din zi. Ocupă 4 octeți. Datele trebuie să fie în intervalul 4713 î.Hr. până la 32767 și. e. Limita de rezoluție pentru tipul DATE este, desigur, de o zi.
  • DATETIME (tip de date SQL2003: T1MESTAMP)
    Stochează o dată calendaristică care indică ora din zi.
  • DECIMAL [(p, s)], NUMERIC [(p. s)] (tip de date SQL2003: DECIMAL (SCALA DE PRECIZIE), NUMERIC (x, p))
    Stochează valori numerice exacte cu o precizie (p) de 9 și o scară (s) de zero, fără limită superioară.
  • FLOAT4, REAL (tip de date SQL2003: FLOAT(p))
    Stochează valori în virgulă mobilă cu o precizie de 8 sau mai puțin și 6 zecimale.
  • FLOAT8, PRECIZIE DUBLĂ (tip de date SQL2003: FLOAT(p), 7
  • INET (x.x.x.x/y)
    Stochează o adresă de rețea sau gazdă în formatul protocolului IP versiunea 4. Adresa durează 12 octeți. Valorile valide sunt orice adrese de rețea permise de protocolul IPv4, x.x.x.x este adresa IP, y este numărul de biți de mască de rețea. Masca de rețea implicită este 32. Spre deosebire de CIDR, INET permite biți non-zero în dreapta măștii de rețea.
  • SMALLINT (tip de date SQL2003: SMALLINT)
    Stochează numere întregi semnate și nesemnate de doi octeți în intervalul -32.768 până la 32.767 Sinonim: INT72.
  • INTEGER (tip de date SQL2003: INTEGER)
    Stochează numere întregi cu semnătură sau fără semn pe 4 octeți în intervalul -2.147.483.648 până la 2.147.483.647 Sinonim: 1NT4.
  • INT8 (tip de date SQL2003: lipsește)
    Stochează numere întregi semnate sau nesemnate de 8 octeți în intervalul -9.223.372.036.854.775.808 până la 9.223.372.036.854.775.807.
  • INTERVAL(p) (tip de date SQL2003: lipsește)
    Stochează valorile de interval de timp utilizate în mod obișnuit în intervalul -178.000.000 până la 178.000.000 de ani. Ocupă 12 octeți. Cea mai mică rezoluție a tipului INTERVAL este microsecunda. Acest tip de stocare a datei diferă de standardul ANSI, care necesită un specificator de interval, cum ar fi INTERVAL YEAR TO MONTH.
  • LINE ((xl, y I), (x2, y2)) (tip de date SQL2003: lipsește)
    Stochează informații despre o linie dreaptă pe un plan, fără puncte finale. Valorile ocupă 32 de octeți și sunt reprezentate sub forma ((xl, yl), (x2, y2)), care indică punctul de început și de sfârșit al liniei. Parantezele din sintaxa de tip LINE sunt opționale.
  • LSEG ((xl, yl), (x2, y2)) (tip de date SQL2003: lipsește)
    Stochează un segment de linie (LSEG) pe un plan, cu puncte finale. Valorile ocupă 32 de octeți și sunt reprezentate sub forma ((xl, yl), (x2, y2)). Parantezele din sintaxa de tip LSEG sunt opționale. Pentru cei interesați, un „segment” este ceea ce majoritatea oamenilor numesc în mod obișnuit o linie. De exemplu, liniile de pe terenul de joc sunt de fapt segmente.
  • MACADDR (tip de date SQL2003: lipsește)
    Poate stoca valoarea adresei MAC a plăcii de rețea a computerului. Ocupă 6 octeți.
    Tipul MACADDR permite mai multe forme de adresare corespunzatoare industriale
    standarde, de exemplu:
    08002В:010203
    08002В-010203
    0800.2В01.0203
    08-00-2В-01-02-03
    08:00:2B:01:02:03
  • BANI, DECIMAL(9,2) (tip de date SQL2003: niciunul)
    Stochează valorile valutare în format american în intervalul -21474836.48 până la 21474836.47.
  • NUMERIC [(p, s)], DECIMAL[(p, s)] (tip de date SQL2003: niciunul)
    Stochează date numerice precise cu precizie (p) și scară (s).
  • OID (tip de date SQL2003: lipsește)
    Stochează identificatori unici de obiect.
  • PATH ((xl, y), ... n), Path ((xl, yl), ... n) (tip de date SQL2003: lipsește)
    Descrie un contur geometric deschis sau închis pe un plan. Valorile sunt prezentate sub forma ((xl, yl), ... n) și ocupă 4 + 32 octeți. Fiecare pereche de valori (x, y) corespunde unui punct de contur. Contururile sunt fie deschise, când primul și ultimul punct nu coincid, fie închise, când primul și ultimul punct sunt identici. Pentru a indica contururile închise, expresia este inclusă în paranteze, iar pentru a indica contururile deschise, este cuprinsă între paranteze drepte.
  • POINT(x,y) (tip de date SQL2003: niciunul)
    Stochează o valoare care descrie un punct geometric pe un plan. Ocupă 16 octeți. Valorile sunt prezentate ca (x, y). Point este baza altor tipuri de date spațiale bidimensionale acceptate în PostgreSQL. Parantezele din acest tip de sintaxă sunt opționale.
  • POLYGONE ((x1,y1), ... n) (tip de date SQL2003: niciunul)
    Stochează o valoare care descrie un contur geometric închis pe un plan. Ocupă 4 + 32n octeți. Valorile sunt prezentate sub forma ((xl, yl), ... n). Tipul POLYGONE este în esență echivalent cu tipul folosit pentru a stoca o cale închisă.
  • SERIAL, SER1AL4 (tip de date SQL2003: niciunul)
    Stochează o valoare unică a ID-ului întreg, incrementată automat, utilizată pentru indexare și referințe încrucișate. Acest tip stochează până la 4 octeți de date (interval de numere de la 1 la 2.147.483.647). Tabelele definite cu acest tip de date nu pot fi abandonate direct. Mai întâi trebuie să lansați comanda DROP SEQUENCE și numai după aceea emiteți comanda DROP TABLE.
  • SER1AL8, BIGSERIAL (tip de date SQL2003: lipsește)
    Stochează o valoare unică a ID-ului întreg care se incrementa automat, utilizată pentru indexare și referințe încrucișate. Acest tip stochează până la 8 octeți de date (interval de numere de la 1 la 9.223.372.036.854.775.807). Tabelele definite cu acest tip de date nu pot fi abandonate direct. Mai întâi trebuie să lansați comanda DROP SEQUENCE și numai după aceea emiteți comanda DROP TABLE.
  • TEXT (tip de date SQL2003: CLOB)
    Stochează o gamă largă de șiruri de caractere de lungime variabilă de până la 1 gigaoctet. PostgreSQL comprimă automat șirurile TEXT, astfel încât spațiul pe disc poate fi mai mic decât dimensiunea șirurilor.
  • TIME [(p)] (tip de date SQL2003: TIME) Stochează ora fie fără fus orar (folosește 8 octeți), fie cu fusul orar în care se află serverul bazei de date (folosește 12 octeți). Interval de valori valid: 00:00:00.00 - 23:59:59.99. Cea mai mică valoare este de 1 microsecundă. Rețineți că pe majoritatea sistemelor UNIX, informațiile despre fusul orar sunt disponibile numai pentru datele din 1902 până în 2038.
  • TIMESPAN (tip de date SQL2003: lipsește)
    Stochează o valoare care reprezintă o anumită perioadă de timp. Cel mai asemănător tip cu TIMESPAN în standardul ANSI este tipul INTERVAL.
  • TIMESTAMP [(r)] ( tip de date SQL2003: TIMESTAMP)
    Data și ora stocate cu și fără fusul orar al serverului de baze de date. Intervalul acceptabil de valori este de la 4713 î.Hr. e. până la N1.465.001 e. O valoare TIMESTAMP are 8 octeți. Cea mai mică valoare este de 1 microsecundă. Rețineți că pe majoritatea sistemelor UNIX, informațiile despre fusul orar sunt disponibile numai pentru datele din 1902 până în 2038.
  • TIMETZ ( tip de date SQL2003: TIME WI TIMEZONE)
    Stochează valoarea orei din zi, ținând cont de fusul orar.
  • VARCHAR(n) , CARACTER VARYLNG(n) ( tip de date SQL2003: CARACTERE VARIABILE(n))
    Stochează șiruri de caractere cu lungime variabilă de până la n. Spațiile finale nu sunt stocate.