Formát údajov SQL. NULL je špeciálny ukazovateľ. Iné typy údajov

  • 18.06.2019

VYMEDZENIE ŠTRUKTÚRY ÚDAJOV

otázky:

1. Dátové typy jazyka SQL, definované štandardom .. 1

2. Dátové typy používané v SQL serveri. 3

3. Výrazy a premenné. 5

4. Konštrukcie riadenia SQL. 6

5. Hlavné objekty štruktúry databázy servera SQL. 7

Typy údajov SQL definované štandardom

Údaje Sú súhrnné informácie uložené v databáze ako jeden z niekoľkých rôznych typov. Dátové typy stanovujú základné pravidlá pre údaje obsiahnuté v konkrétnom stĺpci tabuľky vrátane množstva pamäte, ktorá je mu pridelená.

V SQL existuje šesť skalárnych dátových typov definovaných štandardom. Ich stručný popis je uvedený v tabuľke.

Údaje o postave

Znakové údaje pozostávajú zo sekvencie znakov zahrnutých v znakovej sade definovanej tvorcami DBMS. Keďže znakové sady sú špecifické pre rôzne dialekty jazyka SQL, zoznam znakov, ktoré možno zahrnúť do údajových hodnôt typu znakov, závisí aj od implementácie. Najčastejšie používané znakové sady sú ASCII a EBCDIC. Formát používaný na definovanie údajov typu znakov je:

<символьный_тип>::=

(POSTAVA [ROZLISNE] [dĺžka] | [dĺžka])

Pri definovaní stĺpca so znakovým dátovým typom sa parameter dĺžky používa na určenie maximálneho počtu znakov, ktoré je možné umiestniť do tohto stĺpca (predvolená hodnota je 1). Reťazec znakov možno definovať ako pevnú alebo RÔZNU dĺžku. Ak je reťazec definovaný s pevnou dĺžkou hodnôt, potom keď sa do neho zadá menej znakov, hodnota sa doplní na zadanú dĺžku s medzerami napravo. Ak je reťazec definovaný s hodnotami premenlivej dĺžky, tak keď do neho zadáte menej znakov, do databázy sa uložia len zadané znaky, čo vám umožní dosiahnuť určitú úsporu v externej pamäti.

Bitové dáta

Typ bitu dáta sa používajú na definovanie bitových reťazcov, t.j. sekvencie binárnych číslic (bitov), ​​z ktorých každá môže mať hodnotu 0 alebo 1. Údaje bitového typu sú definované pomocou nasledujúceho formátu:

<битовый_тип>::=

BIT [dĺžka]

Presné čísla

Presný číselný typ údajov používa sa na definovanie čísel, ktoré majú presné zastúpenie, t.j. čísla pozostávajú z číslic, voliteľnej desatinnej čiarky a voliteľného znaku. Presné číselné údaje sú určené presnosťou a dĺžkou zlomkovej časti. Presnosť určuje celkový počet platných desatinných číslic čísla, ktorý zahŕňa dĺžku celej časti aj zlomkovej časti, ale bez samotnej desatinnej čiarky. Stupnica udáva počet desatinných miest v čísle.

<фиксированный_тип>::=

(NUMERICKÉ [presnosť [, mierka]] | (DECIMÁLNE | DEC)

[presnosť [, mierka]]

| (INTEGER | INT) | SMALLINT)

Typy ČÍSELNÉ a desiatkový sú určené na ukladanie čísel v desiatkovom formáte. Predvolená dĺžka zlomkovej časti je nula a predvolená presnosť závisí od implementácie. Typ INTEGER (INT) sa používa na ukladanie veľkých kladných alebo záporných celých čísel. Typ SMALLINT - na ukladanie malých kladných alebo záporných celých čísel; v tomto prípade sa výrazne zníži spotreba externej pamäte.

Zaokrúhlené čísla

Typ zaokrúhleného čísla používa sa na opis údajov, ktoré nemožno presne znázorniť na počítači, najmä reálnych čísel. Zaokrúhlené čísla alebo čísla s pohyblivou rádovou čiarkou sú znázornené vo vedeckej notácii, v ktorej je číslo zapísané pomocou mantisy vynásobenej určitou mocninou desiatich (poradie), napríklad: 10E3, + 5,2E6, -0,2E-4. Na definovanie údajov skutočného typu sa používa nasledujúci formát:

<вещественный_тип>::=

(PLÁVANIE [presnosť] | REAL |

DVOJNÁSOBNÁ PRESNOSŤ)

Parameter presnosť určuje počet platných číslic v mantise. Presnosť typov REAL a DOUBLE PRECISION závisí od implementácie.

dátum a čas

Dátum/čas Typ údajov sa používa na určenie bodov v čase s určitou špecifikovanou presnosťou. Štandard SQL podporuje nasledujúci formát:

<тип_даты/времени>::=

(DÁTUM | ČAS [presnosť] |

TIMESTAMP [presnosť])

Dátový typ DATE sa používa na ukladanie kalendárnych dátumov, ktoré zahŕňajú polia YEAR (rok), MONTH (mesiac) a DAY (deň). Dátový typ TIME sa používa na ukladanie časových pečiatok, ktoré zahŕňajú polia HOUR (hodiny), MINUTE (minúty) a SECOND (sekundy). Dátový typ TIMESTAMP - pre spoločné ukladanie dátumu a času. Parameter precision určuje počet zlomkov desatinných miest, ktoré určujú presnosť uloženia hodnoty do poľa SECOND. Ak je tento parameter vynechaný, predvolene sa nastaví na nulu pre stĺpce TIME (t. j. ukladajú sa celé sekundy), zatiaľ čo pre stĺpce TIMESTAMP je predvolená hodnota 6. Prítomnosť kľúčového slova WITH TIME ZONE určuje použitie polí TIMEZONE HOUR a TIMEZONE MINUTA, čím sa špecifikujú hodiny a minúty časového posunu zóny vo vzťahu k UTC (Greenwichský stredný čas).

Údaje INTERVAL sa používajú na vyjadrenie časových období.

Koncept domény

doména Je množina platných hodnôt pre jeden alebo viacero atribútov. Ak vaša databázová tabuľka alebo viaceré tabuľky obsahujú stĺpce, ktoré majú rovnaké charakteristiky, môžete opísať typ stĺpca a jeho správanie v rámci domény a potom namapovať každý z rovnakých stĺpcov na názov domény. Doména definuje všetky potenciálne hodnoty, ktoré možno priradiť atribútu.

Štandard SQL vám umožňuje definovať doménu pomocou nasledujúceho príkazu:

<определение_домена>::=

VYTVORIŤ DOMÉNU názov_domény

Dátový typ

[Predvolená hodnota]

[CHECK (valid_values)]

Každá doména, ktorú vytvoríte, má priradený názov, typ údajov, predvolenú hodnotu a množinu platných hodnôt. Je potrebné poznamenať, že zobrazený formát operátora je neúplný. Teraz pri vytváraní tabuľky môžete namiesto typu údajov zadať názov domény.

Odstránenie domén z databázy sa vykonáva pomocou operátora:

DROP DOMAIN domain_name [RESTRICT |

Ak je zadané kľúčové slovo CASCADE, všetky stĺpce tabuľky vytvorené pomocou domény, ktorá sa má zrušiť, sa automaticky upravia a popíšu sa ako obsahujúce typ údajov špecifikovaný v definícii domény, ktorá sa má zrušiť.

Alternatívou k doménam na serveri SQL Server sú vlastné typy údajov.

Typy údajov používané v SQL Server

Typy údajov systému

Jedným z hlavných krokov v procese vytvárania tabuľky je definovanie dátových typov pre jej polia. Typ údajov poľa tabuľky určuje typ informácií, ktoré sa umiestnia do tohto poľa. Pojem dátového typu v SQL Server je úplne adekvátny konceptu dátového typu v moderných programovacích jazykoch. SQL Server podporuje veľké množstvo rôznych typov údajov: textové, numerické, binárne (pozri tabuľku).

Tu je rýchly prehľad typov údajov servera SQL Server.

Na uloženie symbolických informácií použite dátové typy znakov, ktoré zahŕňajú CHAR (dĺžka), VARCHAR (dĺžka), NCHAR (dĺžka), NVARCHAR (dĺžka). Posledné dva slúžia na ukladanie znakov Unicode. Maximálna dĺžka je obmedzená na 8 000 znakov (4 000 pre znaky Unicode).

Ukladanie veľkých znakov (až 2 GB) sa vykonáva pomocou typov textových údajov TEXT a NTEXT.

TO celočíselné dátové typy zahŕňajú INT (INTEGER), SMALLINT, TINYINT, BIGINT. Na uloženie údajov celočíselného typu 4 bajty (rozsah od -231 do 231-1), 2 bajty (rozsah od -215 do 215-1), 1 bajt (rozsah od 0 do 255) alebo 8 bajtov (rozsah od - 263 až 263-1). Celočíselné objekty a výrazy možno použiť v akejkoľvek matematickej operácii.

Čísla obsahujúce desatinnú čiarku sa nazývajú necelé čísla. Neceločíselné údaje sú rozdelené do dvoch typov - desiatkový a približné.

TO desiatkový dátové typy sú DECIMÁLNE [(presnosť [, mierka])] alebo DEC a NUMERICKÉ [(presnosť [, mierka])]. Typy údajov DECIMAL a NUMERIC vám umožňujú určiť presný formát čísla s pohyblivou rádovou čiarkou. Parameter presnosť určuje maximálny počet číslic pre vstup tohto typu (pred a za desatinnou čiarkou v súčte) a parameter scale určuje maximálny počet číslic za desatinnou čiarkou. V normálnom režime vám server umožňuje zadať maximálne 28 číslic používaných v typoch DECIMAL a NUMERIC (od 2 do 17 bajtov).

TO približné dátové typy sú FLOAT (15 číslic, 8 bajtov) a REAL (7 číslic, 4 bajty). Tieto typy predstavujú údaje vo formáte s pohyblivou rádovou čiarkou, t.j. mantisa a poradie sa používajú na reprezentáciu čísel, čo zaisťuje rovnakú presnosť bez ohľadu na to, aká malá alebo veľká je hodnota.

Na ukladanie informácií o dátum a čas sú určené dátové typy ako DATETIME a SMALLDATETIME, ktoré používajú 8 a 4 bajty na vyjadrenie dátumu a času.

Dátové typy MONEY a SMALLMONEY umožniť ukladanie informácií o peňažnom type; poskytujú hodnoty s presnosťou na 4 desatinné miesta a používajú 8 a 4 bajty.

Typ údajov BIT umožňuje uložiť jeden bit, ktorý môže byť 0 alebo 1.

SQL Server implementuje množstvo špeciálne dátové typy.

Dátový typ ČASOVÁ ZNAČKA Používa sa ako indikátor zmien verzie riadkov v databáze.

Dátový typ JEDINEČNÝ IDENTIFIKÁTOR slúži na ukladanie celosvetovo jedinečných identifikačných čísel.

Dátový typ SYSNAME určené pre identifikátory objektov.

Dátový typ SQL_VARIANT umožňuje ukladať hodnoty ľubovoľného z dátových typov podporovaných serverom SQL okrem TEXT, NTEXT, IMAGE a TIMESTAMP.

Dátový typ TABLE, podobne ako dočasné tabuľky, poskytuje úložisko pre množinu riadkov, ktoré sa majú spracovať neskôr. Dátový typ TABLE je možné použiť iba na definovanie lokálnych premenných a návratových hodnôt z funkcií definovaných používateľom.

Dátový typ KURZOR je potrebný na prácu s objektmi, ako sú kurzory, a možno ho použiť len pre premenné a parametre uložených procedúr. Kurzory SQL Server sú komunikačným mechanizmom medzi serverom a klientom. Kurzor umožňuje klientskym aplikáciám pracovať nie s úplnou sadou údajov, ale len s jedným alebo niekoľkými riadkami.


© stránka 2015-2019
Všetky práva patria ich autorom. Táto stránka si nenárokuje autorstvo, ale poskytuje bezplatné používanie.
Dátum vytvorenia stránky: 2016-08-08

SQL dátové typy sú rozdelené do troch skupín:
- reťazec;
- s pohyblivou rádovou čiarkou (zlomkové čísla);
- celé čísla, dátum a čas.

SQL dátové typy reťazec

SQL dátové typy Popis
CHAR (veľkosť) Reťazce s pevnou dĺžkou (môžu obsahovať písmená, čísla a špeciálne znaky). Pevná veľkosť je uvedená v zátvorkách. Je možné zaznamenať až 255 znakov
VARCHAR (veľkosť)
TINYTEXT Môže uložiť maximálne 255 znakov.
TEXT
BLOB Môže uložiť maximálne 65 535 znakov.
MEDIUMTEXT
MEDIUMBLOB Môže uložiť maximálne 16 777 215 znakov.
LONGTEXT
LONGBLOB Môže uložiť maximálne 4 294 967 295 znakov.
ENUM (x, y, z atď.) Umožňuje zadať zoznam platných hodnôt. Do zoznamu typu údajov SQL ENUM môžete zadať až 65 535 hodnôt. Ak pri vkladaní hodnota nebude prítomná v zozname ENUM potom dostaneme prázdnu hodnotu. Možné hodnoty je možné zadať v nasledujúcom formáte: ENUM ("X", "Y", "Z")
SET Typ údajov SQL SET sa podobá ENUM okrem toho SET môže obsahovať až 64 hodnôt.

SQL dátové typy s pohyblivou rádovou čiarkou (zlomkové čísla) a celé čísla

SQL dátové typy- Dátum a čas

Vytvorenie tabuľky v databáze vytvára príkaz VYTVORIŤ TABUĽKU.

Syntax:

VYTVORIŤ TABUĽKU názov_tbl [(definícia_vytvoriť, ...)]

názov_tbl- Určuje názov tabuľky, ktorá sa vytvorí v aktuálnej databáze. Ak v čase volania príkazu neexistuje žiadna databáza VYTVORIŤ TABUĽKU nebol akceptovaný aktuálnym, potom dôjde k chybe vykonania príkazu.

AK NEEXISTUJE- Ak je zadaný tento parameter a dôjde k pokusu o vytvorenie tabuľky s duplicitným názvom (t. j. tabuľka s týmto názvom už v aktuálnej databáze existuje), tabuľka sa nevytvorí a nezobrazí sa chybové hlásenie. V opačnom prípade sa tabuľka tiež nevytvorí, ale príkaz vyhodí chybu.

create_definition- Určuje vnútornú štruktúru vytvorenej tabuľky (názvy a typy polí, kľúče, indexy atď.)

Možné syntaxe create_definition:

typ názvu stĺpca

PRIMÁRNY KĽÚČ (index_col_name, ...)

KEY (index_col_name, ...)

INDEX (index_col_name, ...)

UNIQUE (index_col_name, ...)

CUDZÍ KĽÚČ (index_col_name, ...)

názov_stĺpca- Určuje názov stĺpca vo vygenerovanej tabuľke.

Typ- Nastavuje typ údajov pre stĺpec názov_stĺpca.

Možné hodnoty parametrov typu:

§ INT [(dĺžka)]

§ BIGINT [(dĺžka)]

§ DOUBLE [(dĺžka, desatinné miesta)]

§ FLOAT [(dĺžka, desatinné miesta)]

§ DECIMAL (dĺžka, desatinné miesta)

§ CHAR (dĺžka)

§ VARCHAR (dĺžka)

- Označuje, či údajový stĺpec môže obsahovať hodnotu NULL alebo nie. Ak nie je zadaný, predvolená hodnota je NULL (t. j. môže obsahovať NULL).

- Nastaví predvolenú hodnotu pre tento stĺpec. Pri vkladaní nového záznamu do tabuľky príkazom VLOŽIŤ ak hodnota pre pole col_name nebola explicitne špecifikovaná, potom je hodnota nastavená predvolená hodnota.

- Keď je do tabuľky vložený nový záznam, pole s týmto atribútom automaticky získa číselnú hodnotu, o 1 väčšiu ako je najväčšia hodnota pre toto pole v aktuálnom čase. Táto funkcia sa zvyčajne používa na generovanie jedinečných identifikátorov reťazca. Stĺpec, pre ktorý je atribút použitý AUTOMATICKÝ PRÍRASTOK, musí byť typu celé číslo. V tabuľke s atribútom môže byť len jeden stĺpec AUTOMATICKÝ PRÍRASTOK... Tento stĺpec musí byť tiež indexovaný. Poradie čísel pre AUTO_INCREMENT začína na 1. Môžu to byť iba kladné čísla.

Nasledujúci príklad vytvorí tabuľku používateľov s 3 poliami, kde prvé pole je jedinečný identifikátor záznamu, druhé pole je používateľské meno a tretie pole je jeho vek:

vytvoriť tabuľku Water_Area (

id int auto_increment,

meno varchar (70),

obmedzenie primárny kľúč pk_Water_Area nezhlukovaný (id))

vytvoriť tabuľku Station (

id_Water_Area int nie je null,

meno varchar (20) nie je null,

Plavák zemepisnej šírky (4) null,

Plávajúca zemepisná dĺžka (4) nulová,

súradnice varchar (40) null,

súradnice_modern varchar (30) null,

komentár varchar (70) null

obmedzenie primárny kľúč pk_Station nezhlukovaný (id))

Zhodiť stôl.

Na zrušenie tabuľky použite príkaz DROP TABLE.

DROP TABLE názov_tbl [, názov_tbl, ...]

tbl_name – Názov tabuľky, ktorá sa má zrušiť.

IF EXISTS - Ak je zadaný tento parameter, pokus o vymazanie neexistujúcej tabuľky nevyvolá chybu. V opačnom prípade dôjde k chybe vykonania príkazu.

OBMEDZENIE a KASKÁDA Neprenášajú žiadne funkcie. Vľavo pre uľahčenie prenosu programu.

Stanica padacieho stola

Úprava tabuliek.

Na úpravu sa používa príkaz Alter Table.

Syntax:

ALTER TABLE Názov tabuľky1ADD | ALTER Názov poľa1Typ poľa [(nŠírka poľa [, nPresnosť])]]] | Názov poľa]

Príkaz ALTER TABLE upravuje definíciu tabuľky jedným z nasledujúcich spôsobov:

Pridá stĺpec

Pridáva obmedzenie integrity

Prepíše stĺpec (typ údajov, veľkosť, predvolené nastavenie)

Odstráni stĺpec

Upravuje charakteristiky pamäte alebo iné parametre

Povolí, zakáže alebo odstráni obmedzenie integrity alebo spúšťač.

alter table Station

jedinečný (id_Water_Area, name)

alter table Station

pridať obmedzenie fk_Station_Relation_Water_Area cudzí kľúč (id_Water_Area) referencie Water_Area (id)

Nižšie uvedený zoznam ukazuje, že Microsoft SQL Server podporuje väčšinu dátových typov SQL 2003. SQL Server podporuje aj ďalšie dátové typy používané na jedinečnú identifikáciu dátových riadkov v tabuľke a na mnohých serveroch, ako napríklad UNIQUEIDENTIFIER, čo je v súlade s „ "rast do šírky" hardvérová filozofia. vyznávaná Microsoftom (čiže implementácia základne na mnohých serveroch na platformách Intel), namiesto "rastu do výšky" (čiže implementácia na jeden obrovský výkonný UNIX server alebo Windows Data Center Server) .

Zaujímavá poznámka na okraj k dátumom na serveri SQL Server: SQL Server podporuje dátumy začínajúce v roku 1753. Staršie dátumy nemôžete uložiť do žiadneho typu údajov databázy SQL Server. prečo? Je to preto, že anglicky hovoriaci svet začal používať gregoriánsky kalendár v roku 1753 (juliánsky kalendár sa používal do septembra 1753) a prevod juliánskeho na gregoriánsky dátum mohol byť dosť náročný.

BIGINT (typ údajov SQL 2003: BIGINT)

Ukladá celé čísla so znamienkom a bez znamienka v rozsahu -9 223 372 036 854 775 808 až 9 223 372 036 854 775 807. Zaberá 8 bajtov. Pravidlá vlastností IDENTITY, ktoré platia aj pre typ BIGINT, nájdete v type INT.

BINÁRNE [(n)] (typ údajov SQL 2003: BLOB)

Ukladá binárnu hodnotu pevnej dĺžky od 1 do 8 000 bajtov. BINARY hodnota je dlhá n + 4 bajty.

BIT (údajový typ SQL 2003: BOOLEAN)

Uloží hodnotu 1, 0 alebo NULL, čo znamená „neznámy“. Do jedného bajtu je možné uložiť až 8 hodnôt zo stĺpcov tabuľky BIT. Do jedného bajtu navyše môžete umiestniť ďalších 8 hodnôt typu BIT. Stĺpce BIT nemožno indexovať.

CHAR [(n)], CHARACTER [(n)] (údajový typ SQL 2003: CHARACTER (n))

Ukladá znakové údaje s pevnou dĺžkou od 1 do 8 000 znakov. Akékoľvek nevyužité miesto je štandardne vyplnené medzerami. (Automatické zatemnenie môžete vypnúť.) Typ je n bajtov.

KURZOR (typ údajov SQL 2003: žiadny)

Špeciálny dátový typ používaný na opis kurzora vo forme premennej alebo parametra do uloženej procedúry OUTPUT. Typ nemožno použiť v príkaze CREATE TABLE. Typ CURSOR môže byť NULL.

DATETIME (typ údajov SQL 2003: TIMESTAMP)

Ukladá hodnotu dátumu a času v rozsahu 01-01-1753 00:00:00 až 31-12-9999 23:59:59. Úložisko vyžaduje 8 bajtov.

DESETINNÉ (str. S). DEC (p, s), NUMERIC (p, s) (typ údajov SQL 2003: DECIMAL (p, s). NUMERIC (p. S))

Ukladá desatinné zlomky dlhé až 38 číslic. Hodnoty p a s určujú presnosť a mierku. Predvolená mierka je 0. Priestor, ktorý zaberá hodnota, je určený použitou presnosťou. Pre presnosť 1-9 sa používa 5 bajtov. Pre presnosť 10-19 sa používa 9 bajtov. S presnosťou 20-28 sa používa 13 bajtov. Presnosť 29-39 používa 17 bajtov.

Pravidlá vlastností IDENTITY, ktoré platia aj pre typ DECIMAL, nájdete v type INT.

DOUBLE PRECISION (typ údajov SQL 2003: žiadny) Synonymum pre FLOAT (53).

FLOAT [(n)] (typ údajov SQL 2003: FLOAT, FLOAT (n))

Ukladá hodnoty s pohyblivou rádovou čiarkou v rozsahu od -1,79E + 308 do 1,79E + 308. Presnosť špecifikovaná parametrom n môže byť v rozsahu od 1 do 53. Na uloženie 7 číslic (a - od 1 do 24) sú 4 bajty požadovaný. Hodnoty väčšie ako 7 číslic sú 8 bajtov.

IMAGE (údajový typ SQL 2003: BLOB)

Ukladá binárnu hodnotu premenlivej dĺžky až do 2 147 483 647 bajtov. Tento typ údajov sa často používa na ukladanie grafiky, zvuku a súborov, ako sú dokumenty programu Microsoft Word a tabuľky programu Microsoft Excel. S hodnotami IMAGE nemožno voľne manipulovať. Stĺpce IMAGE a TO majú veľa obmedzení, pokiaľ ide o spôsob ich použitia. Pozrite si popis typu TEXT, kde nájdete zoznam príkazov a funkcií, ktoré sa vzťahujú na typ IMAGE.

INT (typ údajov SQL 2003: INTEGER)

Ukladá celé čísla so znamienkom alebo bez znamienka v rozsahu -2 147 483 648 až 2 147 483 647. Zaberá 4 bajty. Všetky celočíselné typy údajov, ako aj typy, ktoré ukladajú desatinné zlomky, podporujú vlastnosť IDENTITY, identita je automaticky zvýšený identifikátor riadka. Pozrite si časť „Vyhlásenie CREATE / ALTERTABLE“.

PENIAZE (údajový typ SQL 2003: žiadny)

Ukladá peňažné hodnoty v rozsahu -922337203685477,5808 až 922337203685477,5807. Hodnota je 8 bajtov.

NCHAR (n), NATIONAL CHAR (n), NATIONAL CHARACTER) (typ údajov SQL 2003: NATIONAL CIARACTER (n))

Ukladá dáta vo formáte UNICODE s pevnou dĺžkou do 4000 znakov. Úložný priestor vyžaduje n * 2 bajtov.

NTEXT, NÁRODNÝ TEXT (údajový typ SQL 2003: NCLOB)

Ukladá fragmenty textu vo formáte UNICODE s dĺžkou až 1 073 741 823 znakov. V popise typu TEXT nájdete zoznam príkazov a funkcií, ktoré sa vzťahujú na typ NTEXT.

Synonymum pre typ DECIMAL. Pravidlá súvisiace s vlastnosťou IDENTITY nájdete v popise typu INT.

NVARCHAR (n), NATIONAL CHAR VARYING (n), NATIONAL CHARACTER VARYING (n) (údajový typ SQL 2003: NATIONAL CHARACTER VARYING (n))

Ukladá dáta UNICODE s premenlivou dĺžkou do 4000 znakov. Obsadené miesto sa vypočíta ako dvojnásobok dĺžky všetkých znakov vložených do poľa (počet znakov * 2). V SQL Server je systémový parameter SET ANSI_PADDING] pre polia NCHAR a NVARCHAR vždy zapnutý.

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

Ukladá hodnoty s pohyblivou rádovou čiarkou v rozsahu -3,40E + 38 až 3,40E + 38. Trvá to 4 bajty. Typ REAL je funkčne ekvivalentný typu FLOAT (24).

ROWVERSION (typ údajov SQL 2003: žiadny)

Jedinečné číslo uložené v databáze, ktoré sa aktualizuje vždy, keď sa aktualizuje riadok, v starších verziách nazývané TIMESTAMP.

SMALLDATETIME (typ údajov SQL 2003: žiadny)

Ukladá dátum a čas v rozsahu „01-01-1900 00:00“ až „06-06-2079 23:59“ s presnosťou na minúty. (Minúty sa zaokrúhlia nadol, ak sú sekundy 29,998 alebo menej, inak sa zaokrúhlia nahor na vyššiu hodnotu.) Hodnota je 4 bajty.

SMALLINT (typ údajov SQL 2003: SMALLINT)

Ukladá celé čísla so znamienkom alebo bez znamienka v rozsahu -32 768 až 32 767. Zaberá 2 bajty. Pravidlá súvisiace s vlastnosťou IDENTITY, ktoré sa vzťahujú aj na tento typ, nájdete v popise typu INT.

SMALLMONEY (údajový typ SQL 2003: žiadny)

Ukladá peňažné hodnoty v rozsahu 214748,3648 až -214748,3647. Hodnoty sú dlhé 4 bajty.

SQL VARIANT (typ údajov SQL 2003: žiadny)

Ukladá hodnoty, ktoré sú inými typmi údajov podporovanými serverom SQL, okrem hodnôt TEXT, NTEXT, ROWVERSION a iných hodnôt SQL_VARIANT. Dokáže uložiť až 8016 bajtov dát, podporované sú hodnoty NULL a DEFAULT. Typ SQL_VARIANT sa používa v stĺpcoch, parametroch, premenných a hodnotách vrátených funkciami a uloženými procedúrami.

TABUĽKA (typ údajov SQL 2003: žiadny)

Špeciálny typ, ktorý uchováva množinu údajov vyplývajúcu z práce posledného procesu. Používa sa výlučne na procesné spracovanie a nemožno ho použiť v príkazoch CREATE TABLE. Tento typ údajov znižuje potrebu vytvárať dočasné tabuľky v mnohých aplikáciách. Môže znížiť potrebu rekompilácie procedúr, a tým urýchliť vykonávanie uložených procedúr a UDF.

TEXT (typ údajov SQL 2003: CLOB)

Ukladá veľmi veľké fragmenty textu s dĺžkou až 2 147 483 647 znakov. S hodnotami TEXTn IMAGE sa často manipuluje oveľa ťažšie ako napríklad s hodnotami VARCHAR. Napríklad nemôžete vytvoriť index v stĺpci TEXT alebo IMAGE. S hodnotami TEXT možno manipulovať pomocou funkcií DATALENGTH, PATINDEX, SUBSTRING. TEXTPTR a TEX-TALID, ako aj príkazy READTEXT, SET TEXTSIZE, UPDATETEXT a WR1TETEXT.

TIMESTAMP (typ údajov SQL 2003: TIMESTAMP)

Ukladá automaticky vygenerované binárne číslo, ktoré je jedinečné v aktuálnej databáze, a preto sa líši od typu údajov ANSI TIMESTAMP. TIMESTAMP má veľkosť 8 bajtov. Hodnoty ROWVERSION sú teraz vhodnejšie na jedinečnú identifikáciu riadkov namiesto TIMESTAMP.

Ukladá celé čísla bez znamienka v rozsahu 0 až 255 a zaberá 1 bajt. Pravidlá súvisiace s vlastnosťou IDENTITY, ktoré platia aj pre tento typ, nájdete v popise typu / L / G.

UNIQUEIDENTIFIER (typ údajov SQL 2003: žiadny)

Je to hodnota, ktorá je jedinečná naprieč všetkými databázami a všetkými servermi. Je vyjadrené ako xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx, kde každé x je hexadecimálne číslo v rozsahu 0-9 alebo a-f. Jediné operácie, ktoré je možné vykonať s hodnotami tohto typu, sú porovnávacie a NULL testy. V stĺpcoch tohto typu možno použiť obmedzenia a vlastnosti, s výnimkou vlastnosti IDENTITY.

VARBINARY [(n)] (typ údajov SQL 2003: BLOB)

Predstavuje binárnu hodnotu premenlivej dĺžky až do 8000 bajtov. Obsadené miesto je veľkosť vložených dát plus 4 bajty.

VARCHARf [(n)], CHAR VARYING [(n)], CHARACTER VARYING f (n) J (údajový typ SQL 2003: CHARACTER VARYING [(n)]

Ukladá znakové údaje s pevnou dĺžkou v rozsahu od 1 do 8 000 znakov. Obsadené miesto sa rovná skutočnej veľkosti zadanej hodnoty v bajtoch a nie hodnote p.

Všetky hodnoty v stĺpci musia mať rovnaký typ údajov. (Jediné výnimky z tohto pravidla sú hodnoty typu údajov SQL_VARIANT.) Typy údajov používané v Transact-SQL možno kategorizovať takto:

    číselné typy;

    typy postáv;

    dočasné typy (dátumy a / alebo časy);

    iné typy údajov.

Číselné typy údajov

Ako by ste mohli očakávať z ich názvu, číselné dátové typy sa používajú na reprezentáciu čísel. Tieto typy a ich krátky popis sú uvedené v tabuľke nižšie:

Typy číselných údajov T-SQL
Dátový typ Popis
INTEGER

Predstavuje 4-bajtové celočíselné hodnoty v rozsahu -2 32 až 2 32 - 1. INT je skratka pre INTEGER.

SMALLINT

Predstavuje 2-bajtové celočíselné hodnoty v rozsahu -32 768 až 32 767

TINYINT

Predstavuje 1-bajtové celočíselné hodnoty v rozsahu 0 až 255

VEĽKÝ

Predstavuje 8-bajtové celočíselné hodnoty v rozsahu -2 63 až 2 63 - 1

DECIMÁLNE (p, [s])

Predstavuje pevné bodové hodnoty. Argument p (presnosť) určuje celkový počet číslic a argument s (mierka) určuje počet číslic napravo od očakávanej desatinnej čiarky. V závislosti od hodnoty argumentu p sú desiatkové hodnoty uložené v 5 až 17 bajtoch. DEC je skrátená forma pre DECIMAL.

NUMERIC (p, [s])

Synonymum pre DECIMAL.

REÁLNY

Používa sa na vyjadrenie hodnôt s pohyblivou rádovou čiarkou. Rozsah kladných hodnôt je približne 2,23E -308 až -1,18E -38. Je možné zadať aj nulovú hodnotu.

PLÁVAŤ [(p)]

Rovnako ako REAL predstavuje hodnoty s pohyblivou rádovou čiarkou [(p)]. Argument p určuje presnosť. Pre p< 25 представляемые значения имеют одинарную точность (требуют 4 байта для хранения), а при значении p >= 25 - dvojitá presnosť (vyžaduje 8 bajtov na uloženie).

PENIAZE

Používa sa na reprezentáciu peňažných hodnôt. Hodnoty MONEY zodpovedajú 8-bajtovým DECIMAL hodnotám zaokrúhleným na štyri desatinné miesta

MALÉ PENIAZE

Predstavuje rovnaké hodnoty ako PENIAZE, no má dĺžku 4 bajty

Typy údajov znakov

Existujú dva všeobecné typy dátových typov znakov. Reťazce môžu byť reprezentované jednobajtovými znakmi alebo znakmi Unicode. (Unicode používa na vyjadrenie jedného znaku viacero bajtov.) Okrem toho môžu mať reťazce rôznu dĺžku. V tabuľke nižšie sú uvedené kategórie typov údajov so stručným popisom.

Typy údajov znakov T-SQL
Dátový typ Popis
CHAR [(n)]

Používa sa na reprezentáciu reťazcov s pevnou dĺžkou n jednobajtových znakov. Maximálna hodnota pre n je 8000. CHARACTER (n) je alternatívna ekvivalentná forma CHAR (n). Ak n nie je explicitne špecifikované, potom sa predpokladá, že jeho hodnota je 1.

VARCHAR [(n)]

Používa sa na reprezentáciu reťazca jednobajtových znakov s premenlivou dĺžkou (0< n < 8 000). В отличие от типа данных CHAR, количество байтов для хранения значений типа данных VARCHAR равно их действительной длине. Этот тип данных имеет два синонима: CHAR VARYING и CHARACTER VARYING.

NCHAR [(n)]

Používa sa na ukladanie reťazcov s pevnou dĺžkou znakov Unicode. Hlavný rozdiel medzi typmi údajov CHAR a NCHAR je v tom, že každý znak reťazca NCHAR má 2 bajty a reťazec CHAR má 1 bajt. Preto reťazec údajového typu NCHAR môže obsahovať maximálne 4 000 znakov. Typ NCHAR je možné použiť na ukladanie napríklad znakov ruskej abecedy, od r jednobajtové kódovania to neumožňujú.

NVARCHAR [(n)]

Používa sa na ukladanie reťazcov znakov Unicode s premenlivou dĺžkou. Reťazec NVARCHAR vyžaduje 2 bajty na uloženie každého znaku, takže reťazec NVARCHAR môže obsahovať maximálne 4 000 znakov.

Typ údajov VARCHAR je identický s typom údajov CHAR s jedným rozdielom: ak je obsah reťazca CHAR (n) kratší ako n znakov, zvyšok reťazca je doplnený medzerami. A počet bajtov obsadených reťazcom VARCHAR sa vždy rovná počtu znakov v ňom.

Typy časových údajov

V Transact-SQL sú podporované nasledujúce dočasné typy údajov:

Typy údajov DÁTUM ČAS a SMALLDATETIME sa používajú na uloženie dátumu a času ako celočíselných hodnôt 4 a 2 bajtov. Hodnoty typu DATETIME a SMALLDATETIME sú interne uložené ako dve samostatné číselné hodnoty. Časť hodnôt DATETIME s dátumom je uložená v rozsahu 01/01/1753 až 31/12/9999 a zodpovedajúca časť hodnôt SMALLDATETIME je v rozsahu 01/01/1900 až 06/06/2079. Časová zložka je uložená v druhom 4-bajtovom (2-bajtovom pre hodnoty SMALLDATETIME) ako tri stotiny sekundy (pre DATETIME) alebo minúty (pre SMALLDATETIME) od polnoci.

Ak chcete uložiť iba časť dátumu alebo času, použitie hodnoty DATETIME alebo SMALLDATETIME je trochu nepohodlné. Z tohto dôvodu boli v SQL Server zavedené dátové typy DÁTUM a ČAS ktoré uchovávajú iba dátumové a časové zložky hodnôt DATETIME. Hodnoty DATE sú dlhé 3 bajty a predstavujú rozsah dátumov od 01/01/0001 do 31/12/9999. Hodnoty TIME sú 3-5 bajtov a predstavujú čas s presnosťou 100 ns.

Dátový typ DATETIME2 používa sa na zobrazenie hodnôt dátumu a času s vysokou presnosťou. V závislosti od požiadaviek môžu byť hodnoty tohto typu definované v rôznych dĺžkach a zaberajú od 6 do 8 bajtov. Časová zložka predstavuje čas s presnosťou 100 ns. Tento typ údajov nepodporuje letný čas.

Všetky doteraz diskutované dočasné typy údajov nepodporujú časové pásma. Dátový typ DATETIMEOFFSET obsahuje komponent na uloženie posunu časového pásma. Z tohto dôvodu sú hodnoty tohto typu dlhé 6 až 8 bajtov. Všetky ostatné vlastnosti tohto typu údajov sú rovnaké ako zodpovedajúce vlastnosti typu údajov DATETIME2.

V predvolenom nastavení sú hodnoty dátumu Transact-SQL definované ako reťazec „mmm dd yyyy“ (napríklad „10. január 1993“), uzavretý v jednoduchých alebo dvojitých úvodzovkách. (Ale relatívne poradie prvkov mesiaca, dňa a roku možno zmeniť pomocou inštrukcie NASTAVTE FORMÁT DÁTUMU... Okrem toho systém podporuje číselné hodnoty pre zložku mesiaca a / a - oddeľovače.) Podobne je časová hodnota uvedená v 24-hodinovom formáte ako "hh: mm" (napríklad "22:24") .

Transact-SQL podporuje rôzne vstupné formáty pre hodnoty DATETIME. Ako už bolo spomenuté, každá zložka je definovaná samostatne, takže hodnoty dátumu a času môžu byť špecifikované v ľubovoľnom poradí alebo samostatne. Ak jeden z komponentov nie je špecifikovaný, systém preň použije predvolenú hodnotu. (Predvolený čas je 00:00 (pred poludním).)

Binárne a bitové dátové typy

Existujú dva typy binárnych dátových typov: BINARY a VARBINARY. Tieto dátové typy popisujú dátové objekty vo vnútornom formáte systému a používajú sa na ukladanie bitových reťazcov. Z tohto dôvodu sa hodnoty týchto typov zadávajú pomocou hexadecimálnych čísel.

Hodnoty typu bit obsahujú iba jeden bit, takže do jedného bajtu možno uložiť až osem hodnôt tohto typu. Stručný popis vlastností binárnych a bitových dátových typov je uvedený v tabuľke nižšie:

Typ údajov veľkého objektu

Dátový typ LOB (Large OBject). slúži na ukladanie dátových objektov do veľkosti 2 GB. Takéto objekty sa zvyčajne používajú na ukladanie veľkého množstva textových údajov a na načítanie zásuvných modulov a audio a video súborov. V Transact-SQL sú podporované nasledujúce typy údajov LOB:

Počnúc serverom SQL Server 2005 sa rovnaký programovací model vzťahuje na štandardné hodnoty typu údajov aj hodnoty typu údajov LOB. Inými slovami, na prácu s objektmi LOB možno použiť pohodlné systémové funkcie a reťazcové operátory.

V databázovom stroji parameter MAX používa sa s typmi údajov VARCHAR, NVARCHAR a VARBINARY na definovanie hodnôt pre stĺpce s premenlivou dĺžkou. Keď namiesto explicitného zadania dĺžky hodnoty použijete predvolenú MAX dĺžku, systém analyzuje dĺžku špecifického reťazca a rozhodne, či sa má tento reťazec uložiť ako bežná hodnota alebo ako hodnota LOB. Parameter MAX určuje, že hodnoty stĺpcov môžu byť také veľké, ako je maximálna veľkosť LOB pre tento systém.

Hoci o spôsobe uloženia objektov LOB rozhoduje systém, predvolené nastavenia možno prepísať pomocou systémovej procedúry sp_tableoption s argumentom LARGE_VALUE_TYPES_OUT_OF_ROW. Ak je tento argument 1, údaje v stĺpcoch deklarovaných pomocou parametra MAX budú uložené oddelene od ostatných údajov. Ak je argument 0, databázový stroj uloží všetky hodnoty do 8060 bajtov v riadku tabuľky ako normálne údaje a väčšie hodnoty sa uložia mimo riadku v úložnej oblasti LOB.

Od SQL Server 2008 možno použiť stĺpce VARBINARY (MAX). atribút FILESTREAM na uloženie údajov BLOB (binárny veľký objekt) priamo v súborovom systéme NTFS. Hlavnou výhodou tohto atribútu je, že veľkosť zodpovedajúceho LOB je obmedzená iba veľkosťou zväzku súborového systému.

Typ údajov UNIQUEIDENTIFIER

Ako už názov napovedá, dátový typ UNIQUEIDENTIFIER je jednoznačné identifikačné číslo, ktoré je uložené ako 16-bajtový binárny reťazec. Tento typ údajov úzko súvisí s identifikátorom GUID (globálne jedinečný identifikátor), čo zaručuje jednoznačnosť v celosvetovom meradle. Tento typ údajov teda umožňuje jedinečnú identifikáciu údajov a objektov v distribuovaných systémoch.

Stĺpec alebo premennú UNIQUEIDENTIFIER môžete inicializovať pomocou funkcie NEWID alebo NEWSEQUENTIALID alebo pomocou vlastnej formátovanej reťazcovej konštanty pozostávajúcej zo hexadecimálnych číslic a pomlčiek. Tieto funkcie sú popísané v nasledujúcom článku.

Pomocou dotazu je možné pristupovať k stĺpcu s hodnotami dátového typu UNIQUEIDENTIFIER Kľúčové slovo ROWGUIDCOL na označenie, že stĺpec obsahuje hodnoty identity. (Toto kľúčové slovo negeneruje žiadne hodnoty.) Tabuľka môže obsahovať viacero stĺpcov UNIQUEIDENTIFIER, ale iba jeden z nich môže mať kľúčové slovo ROWGUIDCOL.

Typ údajov SQL_VARIANT

Dátový typ SQL_VARIANT možno použiť na ukladanie hodnôt rôznych typov súčasne, ako sú číselné hodnoty, reťazce a dátumy. (Výnimkou sú hodnoty TIMESTAMP.) Každá hodnota v stĺpci SQL_VARIANT má dve časti: samotnú hodnotu a informácie popisujúce hodnotu. Tieto informácie obsahujú všetky vlastnosti skutočného typu údajov hodnoty, ako je dĺžka, mierka a presnosť.

Funkcia SQL_VARIANT_PROPERTY sa používa na prístup a zobrazenie informácií o hodnotách stĺpca typu SQL_VARIANT.

Typ stĺpca by ste mali deklarovať ako SQL_VARIANT iba vtedy, ak to naozaj potrebujete. Napríklad, ak je stĺpec určený na ukladanie hodnôt rôznych typov údajov, alebo ak pri vytváraní tabuľky nie je známy typ údajov, ktoré budú uložené v tomto stĺpci.

Typ údajov HIERARCHYID

Dátový typ HIERARCHYID sa používa na uloženie kompletnej hierarchie. Tento typ hodnoty môže napríklad uchovávať hierarchiu všetkých zamestnancov alebo hierarchiu priečinkov. Tento typ je implementovaný ako užívateľsky definovaný typ CLR, ktorý zahŕňa niekoľko systémových funkcií na vytváranie a prácu s uzlami hierarchie. Medzi metódy tohto dátového typu patria okrem iného nasledujúce funkcie: GetLevel (), GetAncestor (), GetDescendant (), Read () a Write ().

Typ údajov TIMESTAMP

Typ údajov TIMESTAMP určuje stĺpec, ktorý má hodnotu VARBINARY (8) alebo BINARY (8), v závislosti od vlastnosti stĺpca, na hodnotu null. Pre každú databázu systém udržiava počítadlo, ktoré sa zvyšuje vždy, keď je vložený alebo aktualizovaný riadok obsahujúci bunku TIMESTAMP, a priraďuje túto bunku k danej bunke. Pomocou buniek typu TIMESTAMP teda môžete určiť relatívny čas poslednej úpravy príslušných riadkov tabuľky. ( ROWVERSION je synonymom pre TIMESTAMP.)

Samotná hodnota uložená v stĺpci TIMESTAMP nie je dôležitá. Tento stĺpec sa bežne používa na určenie, či sa konkrétny riadok v tabuľke zmenil od posledného prístupu k nemu.

Možnosti ukladania

Počnúc serverom SQL Server 2008 existujú dve rôzne možnosti ukladania, z ktorých každá môže ušetriť LOB a ušetriť miesto na disku. Sú to nasledujúce možnosti:

    ukladanie údajov FILESTREAM;

    ukladanie pomocou riedkych stĺpcov.

Tieto možnosti ukladania sú popísané v nasledujúcich podkapitolách.

Ukladanie údajov FILESTREAM

Ako už bolo spomenuté, SQL Server podporuje ukladanie veľkých objektov (LOB) prostredníctvom dátového typu VARBINARY (MAX). Vlastnosťou tohto typu údajov je, že v databáze sú uložené veľké binárne objekty (BLOB). Táto okolnosť môže spôsobiť problémy s výkonom pri ukladaní veľmi veľkých súborov, ako sú audio alebo video súbory. V takýchto prípadoch sú tieto údaje uložené mimo databázy v externých súboroch.

Úložisko údajov FILESTREAM podporuje správu objektov LOB, ktoré sú uložené v súborovom systéme NTFS. Hlavnou výhodou tohto typu úložiska je, že hoci sú dáta uložené mimo databázy, spravuje ich databáza. Tento typ úložiska má teda nasledujúce vlastnosti:

    Údaje FILESTREAM možno uložiť pomocou príkazu CREATE TABLE a príkazy na úpravu údajov (SELECT, INSERT, UPDATE a DELETE) možno použiť na manipuláciu s údajmi.

    systém správy databázy poskytuje rovnakú úroveň zabezpečenia pre údaje FILESTREAM ako pre údaje uložené v databáze.

Riedke kolóny

Účel možnosti ukladania, ktorú poskytujú riedke stĺpce, sa výrazne líši od účelu ukladania typu FILESTREAM. Zatiaľ čo účelom úložiska FILESTREAM je ukladať objekty LOB mimo databázy, účelom riedkych stĺpcov je minimalizovať miesto na disku, ktoré databáza zaberá.

Stĺpce tohto typu vám umožňujú optimalizovať ukladanie stĺpcov, pričom väčšina ich hodnôt je nulová. Pri použití riedkych stĺpcov nepotrebujete miesto na disku na ukladanie hodnôt null, no na druhej strane ukladanie hodnôt, ktoré nie sú null, vyžaduje ďalšie 2 až 4 bajty v závislosti od ich typu. Z tohto dôvodu spoločnosť Microsoft odporúča používať riedke stĺpce iba vtedy, keď očakávate aspoň 20 % celkovej úspory miesta na disku.

Riedke stĺpce sú definované rovnakým spôsobom ako ostatné stĺpce v tabuľke; adresa k nim sa vykonáva podobným spôsobom. To znamená, že na prístup k riedkym stĺpcom môžete použiť príkazy SELECT, INSERT, UPDATE a DELETE rovnakým spôsobom, ako by ste použili bežné stĺpce. Jediný rozdiel je vo vytváraní riedkych stĺpcov: na definovanie konkrétneho stĺpca sa používa riedky SPARSE argument za názvom stĺpca, ako je znázornené v tomto príklade:

názov_stĺpca údajový typ SPARSE

Viacero riedkych stĺpcov v tabuľke možno zoskupiť do množiny stĺpcov. Takáto množina by bola alternatívnym spôsobom ukladania a prístupu k hodnotám vo všetkých riedkych stĺpcoch tabuľky.

Hodnota NULL

Hodnota null je špeciálna hodnota, ktorú možno priradiť bunke tabuľky. Táto hodnota sa zvyčajne používa, keď informácie v bunke nie sú známe alebo sa nedajú použiť. Ak napríklad nepoznáte domáce telefónne číslo zamestnanca spoločnosti, odporúčame nastaviť príslušnú bunku v stĺpci domáci_telefón na hodnotu null.

Ak je hodnota ktoréhokoľvek operandu ľubovoľného aritmetického výrazu nulová, hodnota výsledku vyhodnotenia tohto výrazu bude tiež nulová. Preto v unárnych aritmetických operáciách, ak je hodnota výrazu A nulová, potom obe + A aj -A vrátia hodnotu null. Ak je v binárnych výrazoch hodnota jedného alebo oboch operandov A a B nulová, potom výsledok operácie sčítania, odčítania, násobenia, delenia a delenia modulo tieto operandy bude tiež nulový.

Ak výraz obsahuje porovnávací operátor a hodnota jedného alebo oboch operandov tejto operácie je nulová, výsledok tejto operácie bude tiež null.

Hodnota null sa musí líšiť od všetkých ostatných hodnôt. Pre číselné typy údajov nie sú hodnoty 0 a null rovnaké. To isté platí pre prázdny reťazec a null pre znakové dátové typy.

Hodnoty Null môžu byť uložené v stĺpci tabuľky iba vtedy, ak je to explicitne povolené v definícii stĺpca. Na druhej strane, hodnoty null nie sú povolené v stĺpci, ak je v jeho definícii explicitne uvedené NOT NULL. Ak je pre stĺpec s typom údajov (s výnimkou typu TIMESTAMP) explicitne zadaná hodnota NULL alebo NOT NULL, potom sú priradené nasledujúce hodnoty:

    NULL, ak hodnota parametra ANSI_NULL_DFLT_ON Príkaz SET je zapnutý.

    NOT NULL, ak je hodnota parametra ANSI_NULL_DFLT_OFF príkazu SET zapnutá.

Ak príkaz set nie je aktivovaný, stĺpec bude štandardne nastavený na NOT NULL. (Nulové hodnoty nie sú povolené pre stĺpce TIMESTAMP.)

V tejto publikácii zvážime dátové typy v SQL... Chcel by som upozorniť na skutočnosť, že rôzne DBMS podporujú rôznu množinu dátových typov, preto táto publikácia obsahuje najbežnejšie dátové typy v SQL implementáciách rôznych DBMS.

Je dôležité vedieť, že pre správne a kompetentné navrhnutie databázy môže správny dátový typ v SQL výrazne uľahčiť prácu ostatným vývojárom. Neodporúčam vám preto preskakovať časť o dátových typoch a vždy, keď sa zoznámite s novým, všímajte si dátové typy, ktoré program podporuje a ako tieto dátové typy spracováva.

Zoberme si dátové typy, ktoré sú v jazyku SQL. Každý stĺpec tabuľky (atribút) musí mať typ údajov pre hodnoty, ktoré sú v stĺpci uložené. Typ údajov pre stĺpec sa určuje pri vytváraní tabuľky alebo ešte lepšie, keď je definovaná v kroku.

Jazyk SQL rozdeľuje údaje do piatich typov:

  1. Celočíselný typ údajov SQL.
  2. Skutočný typ údajov SQL.
  3. Typy údajov dátumu a času SQL.
  4. Typ údajov reťazca SQL.
  5. Typ údajov reťazca Unicode SQL.

Pozrime sa, čo každý z SQL dátové typy a aké hodnoty nám umožňujú uchovávať.

Integer dátový typSQL

Integer dátový typ v SQL pomerne široký a závisí od implementácie DBMS, pod tabuľkami sú len niektoré typické príklady celočíselného dátového typu SQL.

Typ údajov SQL od predtým
bigint -9,223,372,036,854,775,808 9,223,372,036,854,775,807
int -2,147,483,648 2,147,483,647
smallint -32,768 32,767
tinyint 0 255
trocha 0 1
desiatkový -10^38 +1 10^38 -1
číselné -10^38 +1 10^38 -1
peniaze -922,337,203,685,477.5808 +922,337,203,685,477.5807
malé peniaze -214,748.3648 +214,748.3647

Ešte raz zopakujem, že množina celých čísel dátové typy v SQLúplne závisí od DBMS.

Skutočný dátový typSQL

Skutočný typ údajov SQL, rovnako ako typ celočíselných údajov, úplne závisí od implementácie DBMS.

Typ údajov reťazcaSQL

V SQL je oveľa viac údajových typov reťazcov, pozrite si špecifikáciu DBMS a zistite, aký údajový typ možno použiť pre hodnoty reťazca.

Typ údajov SQL Popis
char Maximálna dĺžka je 8 000 znakov (všetky hodnoty v stĺpci majú pevnú veľkosť, ako je uvedené pri deklarovaní stĺpca). Poznámka: jednotka Typ údajov SQL char- symbol.
varchar Maximálna dĺžka je 8000 znakov (všetky hodnoty v stĺpci majú rôznu veľkosť v závislosti od počtu znakov, ale nie viac ako veľkosť, ktorá bola špecifikovaná pri deklarovaní stĺpca). Poznámka: jednotka Typ údajov SQL varchar- symbol.
varchar (max.) Typ údajov SQL varchar (max)- symbol.
text Maximálna dĺžka je 2 147 483 647 znakov. Poznámka: jednotka Text dátového typu SQL- symbol.

Typ údajov reťazca Unicode SQL

Áno, niektoré DBMS alokujú dátový typ reťazca v kódovaní Unicode, pretože v reťazcoch Unicode sa minie najmenej 8 bajtov na napísanie jedného znaku, takže alokujeme dátový typ reťazca unicode v SQL.

Typ údajov SQL Popis
nchar Maximálna dĺžka je 4 000 znakov (všetky hodnoty v stĺpci majú pevnú veľkosť, ako je uvedené pri deklarovaní stĺpca). Poznámka: jednotka Typ údajov SQL nchar- symbol.
nvarchar Maximálna dĺžka je 4000 znakov (všetky hodnoty v stĺpci majú rôznu veľkosť v závislosti od počtu znakov, ale nie viac ako veľkosť, ktorá bola špecifikovaná pri deklarovaní stĺpca). Poznámka: jednotka Typ údajov SQL nvarchar- symbol.
nvarchar (max.) Maximálna dĺžka je 231 znakov. Poznámka: jednotka Typ údajov SQL nvarchar (max)- symbol.
ntext Maximálna dĺžka je 1 073 741 823 znakov. Variabilná dĺžka. Poznámka: jednotka Typ údajov SQL ntext- symbol.

Binárny dátový typ vSQL

Binárny dátový typ v SQL slúži na ukladanie informácií v binárnej forme (ako postupnosť bajtov).

Typ údajov SQL Popis
binárne Maximálna dĺžka je 8 000 bajtov (všetky hodnoty v stĺpci majú pevnú veľkosť, ako je uvedené pri deklarovaní stĺpca). Všimnite si, že jednotkami typu binárnych údajov sú bajty.
varbinárne Maximálna dĺžka je 8 000 bajtov (všetky hodnoty v stĺpci majú rôznu veľkosť v závislosti od počtu znakov, ale nie väčšiu ako veľkosť, ktorá bola špecifikovaná pri deklarovaní stĺpca). Všimnite si, že jednotkami dátového typu varbinary sú bajty.
varbinárny (max.) Maximálna dĺžka je 231 bajtov. Všimnite si, že jednotky typu varbinary (max) údajov sú bajty.
obrázok Maximálna dĺžka 2 147 483 647 bajtov (všetky hodnoty v stĺpci majú rôznu veľkosť v závislosti od počtu znakov, ale nie viac ako veľkosť, ktorá bola špecifikovaná pri deklarovaní stĺpca). Všimnite si, že jednotkami typu obrazových údajov sú bajty.

Chcem upozorniť na skutočnosť, že každý DBMS podporuje svoju vlastnú sadu dátových typov a dimenzií, preskúmali sme základné dátové typy jazyka SQL, v ďalšej téme sa pozrieme na dátové typy, ktoré SQLite3 podporuje.

Podpísané a nepodpísané typy údajov v SQL

Chcem vás upozorniť na skutočnosť, že v niektorých DBMS možno číselné dátové typy rozdeliť na podpísané a nepodpísané. A to sú úplne iné typy údajov.

Ak napríklad uložíte id INTEGER UNSIGNED do jednej tabuľky a id_table1 INTEGER SIGNED do inej, tieto dva stĺpce nemôžete implementovať, pretože majú odlišné typy údajov. Buďte opatrní a vždy si prečítajte popisy dátových typov, keď začnete používať nový DBMS.

Uveďme si príklad praktického využitia dátových typov SIGNED a UNSIGNED. Napríklad MySQL má dátový typ TINYINT, ktorý zaberá jeden bajt a je ideálny na ukladanie veku, preto do stĺpca s typom TINYINT môžete zapisovať celé čísla od 0 do 256 (od dvoch do ôsmej mocniny, v jednom byte 8 bitov a jeden bit môže mať dve hodnoty: nula alebo jedna), ak je stĺpec bez znamienka, ak je stĺpec so znamienkom, môžu sa doň zapisovať čísla od -128 do 127 (jeden bit pripadne na znamienko).