Základní datové typy v sql. Datové typy používané v SQL serveru

DEFINICE DATOVÉ STRUKTURY

otázky:

1. Datové typy SQL definované standardem... 1

2. Datové typy používané na SQL serveru. 3

3. Výrazy a proměnné. 5

4. SQL ovládací konstrukce... 6

5. Základní objekty struktury databáze SQL serveru. 7

Datové typy SQL definované standardem

Data je agregovaná informace uložená v databázi jako jeden z několika různých typů. Datové typy definují základní pravidla pro data obsažená v konkrétním sloupci tabulky, včetně množství paměti pro něj alokované.

SQL má šest skalárních datových typů definovaných standardem. Jejich stručný popis je uveden v tabulce.

Údaje o postavách

Znaková data se skládají ze sekvence znaků obsažených v sadě znaků definované tvůrci DBMS. Protože znakové sady jsou specifické pro různé dialekty jazyka SQL, seznam znaků, které lze zahrnout do hodnot znakových dat, je také specifický pro implementaci. Nejčastěji používané znakové sady jsou ASCII a EBCDIC. K definování znakových dat se používá následující formát:

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

( CHARAKTER [ RŮZNÉ][délka] | [délka])

Při definování sloupce pomocí znakového datového typu se parametr length používá k určení maximálního počtu znaků, které lze do sloupce umístit (výchozí hodnota je 1). Řetězec znaků může být definován jako řetězec s pevnou nebo RŮZNOU délkou. Pokud je řetězec definován s pevnou délkou hodnot, pak když je do něj zadáno méně znaků, hodnota se doplní na zadanou délku s mezerami přidanými vpravo. Pokud je řetězec definován s hodnotou proměnné délky, pak pokud do něj zadáte méně znaků, budou do databáze uloženy pouze zadané znaky, což vám umožní dosáhnout určité úspory v externí paměti.

Bitová data

Typ bitu data se používají k definování bitových řetězců, tzn. sekvence binárních číslic (bitů), z nichž každá může mít hodnotu 0 nebo 1. Data bitového typu jsou definována pomocí následujícího formátu:

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

BIT [délka]

Přesná čísla

Přesný číselný datový typ slouží k určení čísel, která mají přesné zastoupení, tzn. čísla se skládají z číslic, volitelné desetinné čárky a volitelného znaku. Přesná data číselného typu jsou určena přesností a délkou zlomkové části. Přesnost udává celkový počet platných desetinných míst čísla, který zahrnuje délku celého čísla i zlomkové části, ale bez samotné desetinné čárky. Stupnice určuje počet desetinných míst čísla.

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

(NUMERICKÉ[přesnost[,měřítko]]|(DECIMAL|DEC)

[přesnost[, měřítko]]

| (INTEGER |INT)| SMALLINT)

Typy ČÍSELNÉ A DESETINNÝ jsou určeny k ukládání čísel v desítkovém formátu. Ve výchozím nastavení je délka zlomkové části nula a výchozí přesnost závisí na implementaci. Typ INTEGER (INT) se používá k ukládání velkých kladných nebo záporných celých čísel. Typ SMALLINT – pro ukládání malých kladných nebo záporných celých čísel; v tomto případě se výrazně sníží spotřeba externí paměti.

Zaokrouhlená čísla

Typ zaokrouhlených čísel používá se k popisu dat, která nemohou být přesně reprezentována počítačem, zejména reálných čísel. Zaokrouhlená čísla nebo čísla s plovoucí desetinnou čárkou jsou reprezentována vědeckým zápisem, ve kterém je číslo zapsáno pomocí mantisy vynásobené určitou mocninou deseti (exponent), například: 10E3, +5,2E6, -0,2E-4. Pro definování dat reálného typu se používá následující formát:

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

( FLOAT [přesnost] | REAL |

DVOJNÁSOBNÁ PŘESNOST)

Parametr přesnost udává počet platných číslic mantisy. Přesnost typů REAL a DOUBLE PRECISION závisí na implementaci.

datum a čas

Typ dat Datum/Čas používá se k určení bodů v čase s určitou specifikovanou přesností. Standard SQL podporuje následující formát:

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

(DATUM | ČAS[přesnost]|

TIMESTAMP[přesnost])

Datový typ DATE se používá k ukládání kalendářních dat, která zahrnují pole YEAR, MONTH a DAY. Datový typ TIME je pro ukládání časových razítek, včetně polí HOUR (hodiny), MINUTE (minuty) a SECOND (sekundy). Datový typ TIMESTAMP – pro společné ukládání data a času. Parametr přesnost určuje počet desetinných míst, která určují přesnost uložení hodnoty do pole DRUHÁ. Pokud je tento parametr vynechán, výchozí hodnota je nula pro sloupce TIME (to znamená, že se ukládají celé sekundy), zatímco pro pole TIMESTAMP je výchozí hodnota 6. Přítomnost klíčového slova WITH TIME ZONE určuje použití polí TIMEZONE HOUR a TIMEZONE MINUTA, čímž se nastaví hodiny a minuty zónového časového posunu ve vztahu k univerzálnímu koordinovanému času (Greenwichský čas).

K vyjádření časových úseků se používají data INTERVAL.

Koncept domény

Doména je sada platných hodnot pro jeden nebo více atributů. Pokud má databázová tabulka nebo více tabulek sloupce, které mají stejné charakteristiky, můžete popsat typ a chování sloupce z hlediska domény a pak každému ze stejných sloupců přiřadit název domény. Doména definuje všechny potenciální hodnoty, které lze atributu přiřadit.

Standard SQL umožňuje definovat doménu pomocí následujícího příkazu:

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

CREATE DOMAIN domain_name

datový typ

[Výchozí hodnota]

[CHECK (valid_values)]

Každé vytvořené doméně je přiřazen název, datový typ, výchozí hodnota a sada povolených hodnot. Je třeba poznamenat, že daný formát výpisu je neúplný. Nyní při vytváření tabulky můžete místo datového typu zadat název domény.

Odstranění domén z databáze se provádí pomocí příkazu:

DROP DOMAIN název_domény [ OMEZIT |

Pokud zadáte klíčové slovo CASCADE, všechny sloupce tabulky vytvořené pomocí odstraňované domény budou automaticky upraveny tak, aby obsahovaly data typu, který byl zadán v definici odstraňované domény.

Alternativou k doménám v prostředí SQL Server jsou uživatelské datové typy.

Datové typy používané v SQL serveru

Systémové datové typy

Jedním z hlavních bodů procesu tvorby tabulky je určení datových typů pro její pole. Datový typ pole tabulky určuje typ informací, které budou do tohoto pole umístěny. Koncept datového typu v SQL Serveru plně odpovídá konceptu datového typu v moderních programovacích jazycích. SQL server podporuje velké množství různých datových typů: textové, numerické, binární (viz tabulka).

Zde je rychlý přehled datových typů SQL Server.

Používají se k uložení symbolických informací datové typy znaků, které zahrnují CHAR (délka), VARCHAR (délka), NCHAR (délka), NVARCHAR (délka). Poslední dva jsou pro ukládání znaků Unicode. Maximální délka je omezena na 8000 znaků (4000 pro znaky Unicode).

Velký objem znakových dat (až 2 GB) se ukládá pomocí textových datových typů TEXT a NTEXT.

NA celočíselné datové typy zahrnují INT (INTEGER), SMALLINT, TINYINT, BIGINT. K uložení celočíselných dat jsou k dispozici 4 bajty (rozsah od -231 do 231-1), 2 bajty (rozsah od -215 do 215-1), 1 bajt (rozsah od 0 do 255) nebo 8 bajtů (rozsah od -263) použito, resp. Objekty a výrazy typu Integer lze použít v jakékoli matematické operaci.

Čísla, která obsahují desetinnou čárku, se nazývají neceločíselná čísla. Neceločíselná data se dělí na dva typy - desetinný A přibližný.

NA desetinný Datové typy zahrnují DECIMAL [(přesnost[,měřítko])] nebo DEC a NUMERICKÉ [(přesnost[,měřítko])]. Datové typy DECIMAL a NUMERIC umožňují nezávisle definovat formát přesnosti čísla s plovoucí desetinnou čárkou. Parametr přesnost udává maximální počet číslic vstupních dat tohoto typu (před a za desetinnou čárkou v součtu) a parametr scale udává maximální počet číslic umístěných za desetinnou čárkou. V normálním režimu vám server umožňuje zadat maximálně 28 číslic, používaných v typu DECIMAL a NUMERIC (od 2 do 17 bajtů).

NA přibližný Datové typy zahrnují FLOAT (přesnost až 15 číslic, 8 bajtů) a REAL (přesnost až 7 číslic, 4 bajty). Tyto typy představují data ve formátu s pohyblivou řádovou čárkou, tzn. mantisa a exponent se používají k reprezentaci čísel, což zajišťuje stejnou přesnost ve výpočtech bez ohledu na to, jak malá nebo velká hodnota je.

K ukládání informací o datum a čas Jsou určeny datové typy jako DATETIME a SMALLDATETIME, které používají 8 a 4 bajty k reprezentaci data a času.

Datové typy MONEY a SMALLMONEY umožnit ukládání informací peněžního typu; poskytují přesnost hodnoty na 4 desetinná místa a používají 8 respektive 4 bajty.

Datový typ BIT umožňuje uložit jeden bit, který může nabývat hodnot 0 nebo 1.

Prostředí SQL Server implementuje řadu speciální datové typy.

Datový typ ČASOVÉ RAZÍTKO používá se jako indikátor změny verze řádku v databázi.

Datový typ UNIKÁTNÍ IDENTIFIKÁTOR slouží k ukládání globálně jedinečných identifikačních čísel.

Datový typ SYSNAME určené pro identifikátory objektů.

Datový typ SQL_VARIANT umožňuje ukládat hodnoty libovolného datového typu podporovaného SQL Serverem s výjimkou TEXT, NTEXT, IMAGE a TIMESTAMP.

Datový typ STŮL, stejně jako dočasné tabulky, poskytují úložiště pro sadu řádků určených pro následné zpracování. Datový typ TABLE lze použít pouze k definování lokálních proměnných a návratových hodnot uživatelských funkcí.

Datový typ KURZOR potřebné pro práci s objekty, jako jsou kurzory, a lze je použít pouze pro proměnné a parametry uložených procedur. Kurzory SQL Server jsou mechanismem pro výměnu dat mezi serverem a klientem. Kurzor umožňuje klientským aplikacím pracovat nikoli s kompletní sadou dat, ale pouze s jedním nebo několika řádky.


©2015-2019 web
Všechna práva náleží jejich autorům. Tato stránka si nečiní nárok na autorství, ale poskytuje bezplatné použití.
Datum vytvoření stránky: 8. 8. 2016

SQL datové typy se dělí do tří skupin:
- tětiva;
- plovoucí bod (zlomková čísla);
- celá čísla, datum A čas.

SQL datové typy tětiva

SQL datové typy Popis
CHAR(velikost) Řetězce pevné délky (mohou obsahovat písmena, čísla a speciální znaky). Pevná velikost je uvedena v závorkách. Lze zaznamenat až 255 znaků
VARCHAR(velikost)
TINYTEXT Lze uložit maximálně 255 znaků.
TEXT
KAPKA Lze uložit maximálně 65 535 znaků.
STŘEDNÍ TEXT
STŘEDNÍ BLOB Lze uložit maximálně 16 777 215 znaků.
LONGTEXT
LONGBLOB Lze uložit maximálně 4 294 967 295 znaků.
ENUM(x,y,z atd.) Umožňuje zadat seznam platných hodnot. Do seznamu datových typů SQL ENUM můžete zadat až 65535 hodnot. Pokud při vkládání hodnota nebude v seznamu přítomna ENUM, pak dostaneme prázdnou hodnotu. Možné hodnoty můžete zadat v následujícím formátu: ENUM ("X", "Y", "Z")
SOUBOR SQL Data Type SET se podobá ENUM kromě toho SOUBOR může obsahovat až 64 hodnot.

SQL datové typy s plovoucí desetinnou čárkou (zlomková čísla) a celá čísla

SQL datové typy- Datum a čas

Vytvoření tabulky v databázi se provádí příkazem VYTVOŘIT TABULKU.

Syntax:

CREATE TABLE název_tbl [(vytvořit_definici,...)]

název_tbl- Určuje název tabulky, která bude vytvořena v aktuální databázi. Pokud v době volání příkazu neexistuje žádná databáze VYTVOŘIT TABULKU nebyla akceptována aktuálním příkazem, dojde k chybě provádění příkazu.

POKUD NEEXISTUJE- Pokud je tento parametr zadán a dojde k pokusu o vytvoření tabulky s duplicitním názvem (tj. tabulka se stejným názvem již v aktuální databázi existuje), tabulka se nevytvoří a nezobrazí se chybová zpráva. Jinak se tabulka také nevytvoří, ale příkaz způsobí chybu.

create_definition- Definuje vnitřní strukturu vytvářené tabulky (názvy a typy polí, klíče, indexy atd.)

Možné syntaxe create_definition:

typ název_sloupce

PRIMÁRNÍ KLÍČ (index_col_name,...)

KEY (index_col_name,...)

INDEX (index_col_name,...)

UNIQUE (index_col_name,...)

CIZÍ KLÍČ (index_col_name,...)

název_sloupce- Určuje název sloupce ve vytvořené tabulce.

Typ- Určuje datový typ pro sloupec název_sloupce.

Možné hodnoty parametrů typ:

§ INT[(délka)]

§ BIGINT[(délka)]

§ DOUBLE[(délka,desetinná čísla)]

§ FLOAT[(délka,desetinná čísla)]

§ DECIMAL(délka,desetinná místa)

§CHAR(délka)

§ VARCHAR(délka)

- Označuje, zda datový sloupec může obsahovat hodnotu NULL nebo ne. Pokud není uvedeno, výchozí je NULL (tj. může obsahovat NULL).

- Nastaví výchozí hodnotu pro tento sloupec. Při vkládání nového záznamu do tabulky příkazem VLOŽIT pokud hodnota pro pole název_sloupce nebyla explicitně zadána, je hodnota nastavena výchozí hodnota.

- Při vkládání nového záznamu do tabulky pole s tímto atributem automaticky obdrží číselnou hodnotu, která je o 1 větší než největší hodnota pro toto pole v aktuálním čase. Tato funkce se obvykle používá ke generování jedinečných identifikátorů řádků. Sloupec, pro který je atribut použit AUTO_INCREMENT, musí být typu celé číslo. Tabulka může mít pouze jeden sloupec atributů AUTO_INCREMENT. Tento sloupec musí být také indexován. Posloupnost čísel pro AUTO_INCREMENT začíná na 1. Mohou to být pouze kladná čísla.

Následující příklad vytvoří tabulku uživatelů se 3 poli, kde první pole je jedinečný identifikátor příspěvku, druhé pole je jméno uživatele a třetí pole je jeho věk:

vytvořit tabulku Water_Area(

id int auto_increment,

jméno varchar(70),

omezení primární klíč pk_Water_Area nonclustered(id))

vytvořit tabulku Station(

id_Water_Area int není null,

jméno varchar(20) není null,

Latitude float(4) null,

Plovoucí délka (4) null,

souřadnice varchar(40) null,

souřadnice_modern varchar(30) null,

komentář varchar(70) null

omezení primární klíč pk_Station nonclustered(id))

Smazání tabulky.

Chcete-li tabulku odstranit, použijte příkaz DROP TABLE.

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

tbl_name - Název tabulky, která má být odstraněna.

POKUD EXISTS – Pokud je zadán tento parametr, pak pokus o smazání neexistující tabulky nevyvolá chybu. V opačném případě se příkaz nezdaří.

RESTRICT a CASCADE Neposkytují žádné funkce. Vlevo pro zjednodušení přenosu programu.

Skládací stůl Stanice

Úprava tabulek.

Pro úpravu použijte příkaz Změnit tabulku.

Syntax:

ALTER TABLE Název_tabulky1ADD | ALTER FieldName1FieldType [(nFieldWidth [, nPrecision])] ]] | Název pole]

Příkaz ALTER TABLE změní definici tabulky jedním z následujících způsobů:

Přidá sloupec

Přidá omezení integrity

Přepíše sloupec (datový typ, velikost, výchozí hodnota)

Odstraní sloupec

Upravuje charakteristiky paměti nebo jiné parametry

Povolí, zakáže nebo odstraní omezení integrity nebo spouštěč.

změnit stolní stanici

jedinečný(id_Water_Area, name)

změnit stolní stanici

přidat omezení fk_Station_Relation_Water_Area cizí klíč (id_Water_Area) reference Water_Area (id)

V moderním světě existuje velké množství nástrojů a technologií určených pro ukládání informací. Jednou z nejrozšířenějších metod jsou databáze, pro práci se kterými se používají různé systémy řízení. Tento způsob ukládání předpokládá, že všechna data jsou jasně strukturována a zadávána do speciálních tabulek. Ty se zase skládají ze sloupců atributů určitého datového typu.

Typ dat - co to je?

Dnes existuje několik definic, které vysvětlují pojem „datový typ“. Každý z nich má však jeden obecný význam. Proto jej lze konvenčně definovat jako skupinu dat charakterizovanou svými hodnotami (symbolické, číselné atd.), jakož i operacemi aplikovanými na příslušné hodnoty.

Rozsah použití datových typů je mnohostranný. Používají se nejen pro ukládání informací, ale také při programování k řešení různých problémů. Při navrhování programů je běžnou praxí vyvíjet a používat vlastní datové typy se specifickou sadou operací. Vlastní však vždy vycházejí ze základních datových typů. Standard SQL je také založen na použití nejběžnějších základních typů, avšak s řadou specifických doplňků.

Klasifikace datových typů

Seskupování dat podle typu vzniklo již dávno a bylo způsobeno potřebou pohodlnějšího zpracování. V současné době tvoří základ stávajících datových typů dva: znakový a číselný.

Na jejich základě byla vyvinuta moderní klasifikace zahrnující ukazatele, logické, celočíselné, plovoucí desetinné čárky a datové typy řetězců. SQL - klasifikace plně pokrývá vše výše uvedené. Pro některé moderní DBMS však existují další doplňky. Patří mezi ně Oracle a MySQL.

Základní datové typy

Ty, které se používají k vytvoření atributů tabulek, které splňují jazykové standardy, jsou rozděleny do 4 tříd:

  • řetězcové hodnoty;
  • zlomky;
  • celočíselné hodnoty;
  • hodnoty data a času.

Datový typ řetězce

První skupina hodnot umožňuje ukládat jakákoli data reprezentovaná jako znaky.

Mohou to být speciální znaky, čísla a písmena, které budou společně zpracovány jako řetězce v libovolném datovém typu, jehož tabulkový výpis je uveden níže, tvoří první skupinu.

Slouží k ukládání řetězců. Parametr v závorkách umožňuje zafixovat délku uloženého řetězce. Maximální velikost v bajtech, kterou lze zadat pro řetězec, je 255.

Podobně jako předchozí typ umožňuje ukládat řetězce dlouhé až 255 znaků. Rozdíl oproti CHAR je však v tom, že pro uložení hodnoty tohoto typu je přiděleno požadované množství paměti. To znamená, že řetězec skládající se z 5 znaků bude vyžadovat 6 bajtů paměti. V prvním případě bude paměť pro hodnotu přidělena podle zadaného parametru.

Slouží k uložení řetězcových dat o délce až 255 znaků.

Slouží k uložení textových informací, jejichž velikost nepřesahuje 65 535 písmen.

Daný datový typ je podobný typu TEXT a umožňuje ukládat textové informace do databáze, jejíž objem může dosáhnout 65 535 znaků. Ale v praxi se používá k ukládání zvukových dat, výkresů, elektronické dokumentace atd.

Byl vyvinut na základě typu TEXT, ale umožňuje uložit více dat díky zvětšené velikosti až na 16 777 215 písmen nebo symbolů.

Slouží k ukládání elektronických dokumentů do databáze, jejichž velikost nepřesahuje 16 777 215 znaků.

Funkčně podobný předchozím typům, ale se zvýšenou kapacitou paměti až na 4 gigabajty.

Umožňuje umístit velké množství dat do databáze (4 294 967 295 znaků).

ENUM (a, b, c atd.)

Speciální datový typ používaný k určení seznamu možných hodnot. Umožňuje zadat 65535 hodnot. Řetězce daného typu mohou mít jednu hodnotu z těch, které jsou uvedeny v sadě. V případě, že budou přidány hodnoty, které v daném seznamu nejsou, budou do tabulky zapsány prázdné hodnoty.

Určuje sadu platných hodnot. Na rozdíl od předchozího typu slouží k tomu, aby obsahoval 64 parametrů, které lze inicializovat libovolným nebo více prvky z daných argumentů.

Tabulka zlomkových datových typů

K ukládání čísel s pohyblivou řádovou čárkou se používají zlomkové datové typy SQL. V praxi jsou zpravidla nastaveny různé finanční ukazatele. V závislosti na požadované přesnosti se použije jedna ze tří uvedených:

Například v bankovních výpočtech dosahuje přesnost zlomkové části 8 nebo 10 číslic. První dva typy nelze v této oblasti použít.

Ukládání finančních ukazatelů ve formě řetězců výrazně zjednodušuje řešení mnoha problémů. Při řešení finančních problémů nebo provádění různých SQL operací má však konverze datových typů velký význam. Vývojáři musí vzít v úvahu typ úložiště a metody zpracování, aby zajistili, že data zůstanou vždy nezměněna.

Integer datový typ

Celá čísla jsou samostatná skupina čísel, která tvoří jednu z hlavních tříd. Integer SQL datové typy jsou založeny na použití základního typu s určitým rozšířením jeho vlastností.

Výběrem správného datového typu můžete ušetřit značné množství paměti a zkrátit čas serveru strávený spouštěním nezbytných SQL dotazů. Typy dat, respektive jejich rozsah, určují množství potřebného úložného prostoru.

Proto je důležité, aby si vývojáři pamatovali, že použití velkých rozsahů atributů s sebou nese zvýšené náklady na paměť. Je nutné jasně analyzovat řešené problémy a identifikovat případy, kdy je znám přibližný rozsah a je definována podmínka použití čísel se znaménkem. Pokud je rozsah použitých argumentů malý a všechna čísla jsou kladná, pak by bylo správnější použít typ bez znaménka tvořený atributem UNSIGNED.

Datové typy data a času

Při učení základů SQL jsou datové typy data a času obzvláště zajímavé.

Použití následujících typů poskytuje další výhody při vývoji systémů, které závisí na načasování.

Hlavním účelem je uložit datum ve formátu ROK-MĚSÍC-DEN („RRRR-MM-DD“ nebo „uuuu-mm-dd“). Hodnoty jsou obvykle odděleny „-“, ale jako oddělovač lze použít jakýkoli znak kromě čísel.

Umožňuje zadat dočasné hodnoty do buňky tabulky. Všechny hodnoty jsou uvedeny ve formátu „hh:mm:ss“

Kombinuje funkce předchozích dvou typů. Formát úložiště je prezentován následovně: „uuuu-mm-dd hh:mm:ss“.

Ukládá datum a čas vypočítaný podle počtu sekund, které uplynuly od půlnoci 1. ledna 1970, do zadané hodnoty.

Slouží k ukládání ročních hodnot ve dvou nebo čtyřmístném formátu.

Co ještě potřebujete vědět?

Všechny tyto typy dat jsou podrobně systematizovány společností Microsoft. Podrobněji rozvinula datové typy SQL.

Společnost například podrobně popisuje, kolik paměti v bajtech je přiděleno při použití jednotlivých typů. Po prostudování dostupných informací je pro vývojáře jednodušší navrhnout strukturu tabulek a celé databáze na základě hardwarových možností serveru.

Speciální ukazatel - NULL

Někdy při naplňování databáze nastává situace, kdy při přidávání záznamu do tabulky není potřeba zadávat informace do všech sloupců. K tomu se používá speciální prázdný ukazatel hodnoty - NULA, který jako pomůcku používá jazyk SQL. Při vytváření tabulek jsou datové typy sloupců, které není nutné vyplňovat, specifikovány příkazem, který umožňuje zahrnutí hodnot null. V jiném případě operátor NULA s dodatečnou přílohou NE lze použít k označení, že musí být vyplněny všechny hodnoty.

Ukazatel NULA nemá žádný typ, ale jednoduše ukazuje na prázdnou hodnotu v databázových tabulkách. Proto jej lze kombinovat s kterýmkoli z výše uvedených typů.

Sekce 3 Základy jazykaSQL

Přednáška 19. Skupiny operátorů. Typy dat

Jazyk relační databáze SQL byl vyvinut v polovině 70. let jako součást výzkumného projektu experimentálního relačního DBMS System R od IBM . Tento projekt zahrnoval vývoj relačního DBMS a jazyka SEQUEL (Strukturovaný anglický dotazovací jazyk ). Tento název pouze částečně odrážel podstatu jazyka. Jazyk byl zaměřen především na formulaci dotazů do relační databáze, které byly pro uživatele pohodlné a srozumitelné, ve skutečnosti se již jednalo o plnohodnotný relační databázový jazyk a obsahoval kromě operátorů pro formulování dotazů a manipulaci s databází následující; nástroje:

· definování databázového schématu a manipulace s ním;

· definování integritních omezení a spouštěčů;

· vytváření databázových pohledů;

· definování struktur fyzické vrstvy, které podporují efektivní provádění dotazů;

· automatizace přístupu k tabulkám a jejich polím;

· podpora bodů pro uložení transakcí a vrácení zpět.

Koncem 70. let korpor Věštec byla vydána upravená verze jazyka POKRAČOVÁNÍ , volal SQL . V roce 1983 spol IBM vydala SQL jako součást databázového systému DB 2.

jazyk SQL byla tak úspěšná, že o něco později, v roce 1986, American National Standards Institute ( ANSI ) jej přijal jako standard. Poté byla norma již několikrát revidována, v roce 1989, 1992, což vedlo k tomu, že jazyk SQL Byly provedeny některé drobné změny. V současnosti je nejrozšířenějším standardem SQL-92.

Typy příkazůSQL

SQL příkazy , podmíněně, lze rozdělit do skupin:

· DCL ( Data Řízení Jazyk) – jazyk pro správu dat. Jazykové příkazy jsou navrženy pro řízení přístupu k informacím uloženým v databázi. (tabulka 19.1);

· DDL (Data Definition Language) – jazyk pro definici dat. Jeho příkazy slouží k vytváření a změně struktury databázových objektů (tab. 19.2);

· DML ( Data Manipulace Jazyk) – jazyk pro manipulaci s daty. Používá se k manipulaci s informacemi obsaženými v databázových objektech (tabulka 19.3);

· DQL ( Data Dotaz Jazyk) – jazyk dotazu na data. Nejčastěji používaná skupina tvořená pouze jedním operátorem VYBRAT , určený pro generování dotazů do databáze (tabulka 19.4);

· TCL (Transakce Řízení Jazyk) – jazyk správy transakcí (tabulka 19.5);

CCL (jazyk ovládání kurzoru ) – jazyk ovládání kurzoru (tabulka 19.6);

Jazyk SQL je neprocedurální, ale prostředí SQL Serveru poskytuje řadu různých řídicích konstrukcí, bez kterých nelze psát efektivní algoritmy, například závorky operátorů, podmínky smyčky atd.

Tabulka 19.1 - Nástroje pro správu dat DCL

Operátor

Popis

ALTER DATABÁZI

Změna sady hlavních databázových objektů

ALTER DBAREA

Změna existující oblasti úložiště databáze

ZMĚNIT HESLO

Změní heslo pro celou databázi

VYTVOŘIT DATABÁZI

Vytvoří novou databázi a definuje její základní parametry

VYTVOŘTE DBAREA

Vytvoří úložnou oblast a zpřístupní ji pro ukládání dat

DROP DATABASE

Smaže databázi (pokud máte práva)

DROP DBAREA

Odstraní oblast úložiště, pokud neobsahuje aktivní data

GRANT

Poskytuje přístupová práva k akcím s databázovými objekty

ZRUŠIT

Odebírá přístupová práva k databázovým objektům nebo k akcím s databázovými objekty

Tabulka 19.2 - Příkazy k definici dat DDL

Operátor

Popis

VYTVOŘIT TABULKU

Vytvoří novou tabulku v databázi

DOP STŮL

Odebere existující tabulku z databáze

ALTER TABULKA

Změní strukturu tabulky nebo omezení tabulky

VYTVOŘIT ZOBRAZENÍ

Vytvoří pohled (virtuální tabulku) odpovídající některým SQL dotaz

POHLED POHLEDEM

Odstraní dříve vytvořený pohled

ALTER VIEW

Upraví existující pohled

VYTVOŘIT INDEX

Vytvoří index na nějaké tabulce

DROP INDEX

Odebere existující index

Tabulka 19.3 - Operátory manipulace s daty DML

Operátor

Popis

VYMAZAT

Odstraní jeden nebo více záznamů podle podmínek výběru. Použití operátoru je v souladu se zásadami zachování referenční integrity, takže operátor není vždy proveden správně, i když je napsán syntakticky správně

VLOŽIT

Vloží jeden nebo více záznamů podle podmínky výběru do základní tabulky

AKTUALIZACE

Aktualizuje hodnoty jednoho nebo více polí v jednom nebo více záznamech, které odpovídají kritériím výběru

Tabulka 19.4 - Jazyk dotazu na data DQL

Operátor

Popis

VYBRAT

Operátor, který si plně uvědomuje možnosti relační algebry. Umožňuje vygenerovat výsledný vztah odpovídající dotazu

Tabulka 19.5 – Ovládací prvky transakcí TCL

Operátor

Popis

SPÁCHAT

Dokončí transakci (komplexní propojené zpracování informací spojených do transakcí)

NÁVRAT

Vrácení transakce zpět (vracení změn provedených během transakce)

ULOŽIT BOD

Uloží mezilehlý bod (stav) databáze pro implementaci funkce vrácení zpět

Tabulka 19.6 – Ovládací prvky kurzoru C C.L.

Operátor

Popis

PROHLÁSIT

Definuje kurzor pro požadavek

OTEVŘENO

Otevře kurzor (Vygeneruje virtuální ND odpovídající popisu kurzoru)

VYNÉST

Přečte další řádek z virtuálního ND otevřeného kurzoru

ZAVŘÍT

Zavře otevřený kurzor

PŘIPRAVIT

Připraví příkaz SQL pro dynamické provádění

VYKONAT

Provede příkaz SQL, který byl dříve připraven pro dynamické provádění

Jazykové datové typy SQL

SQL má šest skalárních datových typů definovaných standardem. Jejich stručný popis je uveden v tabulce 19.7

Tabulka 19.7 – jazykové datové typy SQL

Datový typ

reklamy

Symbolický

CHAR | VARCHAR

bitový

BIT | TROCHU SE LIŠÍ

Přesná čísla

ČÍSELNÉ | DESETINNÉ | CELÉ ČÍSLO | SMALLINT

Reálná čísla

PLOVÁT | SKUTEČNÉ | DVOJNÁSOBNÁ PŘESNOST

Čas schůzky

DATUM | ČAS | ČASOVÉ RAZÍTKO

Interval

INTERVAL

Typy řetězců:

§ CHARACTER(n) nebo CHAR(n) - znakové řetězce konstantní délky in n postavy. Při zadávání tohoto typu je vždy přiřazena každá hodnota n znaků, a pokud skutečná hodnota trvá méně než n znaků, pak DBMS automaticky doplní chybějící znaky mezerami.

§ VARCHAR(n) - znakové řetězce proměnné délky.

Typy bitů:

§ V IT (n) - řetězec bitů konstantní délky.

§ BIT VARYING(n) - bitový řetězec proměnné délky.

Přesné typy:

§ NUMERIC[(n,m)] - přesná čísla, zde a - celkový počet číslic v čísle. le, m - počet číslic vlevo od desetinné čárky.

§ DECIMAL[(n,m)] - přesná čísla, zde n je celkový počet číslic v čísle, m je počet číslic nalevo od desetinné čárky.

§ DEC[(n,m)] - totéž jako DECIMAl.[(n,m)].

§ INTEGER nebo INT - celá čísla.

§ SMALLINT - menší rozsah celých čísel.

Skutečné typy:

§ FLOAT[(n)] - čísla s vysokou přesností uložená ve formě s plovoucí desetinnou čárkou. Tady n - počet bajtů vyhrazených pro uložení jednoho čísla. Rozsah čísel je specifický pro implementaci.

§ REAL je typ reálného čísla, který odpovídá číslům s pohyblivou řádovou čárkou, méně přesný než FLOAT.

§ DOUBLE PRECISION určuje datový typ s přesností definovanou implementací větší, než je přesnost definovaná implementací pro REAL.

Typy data/času a interval:

§ DATE - kalendářní datum.

§ TIME – formát času.

§ T I ME S TAMR (přesnost) - datum a čas.

§ INTERVAL - časový interval.

Většina komerčních DBMS podporuje další datové typy, které nejsou specifikovány ve standardu. Například téměř všechny DBMS v té či oné formě podporují datový typ pro reprezentaci velkoobjemového nestrukturovaného textu. Tento typ je podobný typu MEMO v desktopových DBMS. Tyto typy se nazývají odlišně, například v ORACLE se tento typ nazývá LONG, v DB2 - LONG VARCHAR, v SYBASE a MS SQL Server - TEXT.

Kontrolní otázky

1. Co je jazyk SQL?

2. Co mají jazyky společného? SQL a relační algebra?

3. Jaké prostředky zahrnuje jazyk? SQL?

4. Jaké typy příkazů se v jazyce rozlišují? SQL?

5. DML.

6. Vyjmenuj základní příkazy jazyka DDL.

7. Vyjmenuj základní příkazy jazyka DCL.

8. Vyjmenuj základní příkazy jazyka DQL.

9. Pojmenujte hlavní příkazy jazyka správy transakcí.

10. Pojmenujte hlavní datové typy jazyka SQL.

11. Pojmenujte datové typy řetězců jazyka SQL.

12. Pojmenujte číselné datové typy jazyka SQL.

13. Jméno typy zobrazení data a času.

Poslední aktualizace: 07/12/2017

Když vytváříte tabulku, musíte určit konkrétní datový typ pro všechny její sloupce. Datový typ určuje, jaké hodnoty lze uložit do sloupce a kolik místa zaberou v paměti.

Jazyk T-SQL poskytuje mnoho různých typů. Podle povahy významů lze všechny rozdělit do skupin.

Číselné datové typy

    BIT: ukládá hodnotu 0 nebo 1. Ve skutečnosti je to analog typu Boolean v programovacích jazycích. Zabírá 1 bajt.

    TINYINT: ukládá čísla od 0 do 255. Zabírá 1 bajt. Dobré pro ukládání malých čísel.

    SMALLINT: ukládá čísla od –32 768 do 32 767 Zabírá 2 bajty

    INT: ukládá čísla od –2 147 483 648 do 2 147 483 647 Zabírá 4 bajty. Nejpoužívanější typ pro ukládání čísel.

    BIGINT: ukládá velmi velká čísla od -9,223,372,036,854,775,808 do 9,223,372,036,854,775,807, která zabírají 8 bajtů v paměti.

    DECIMAL: ukládá čísla s pevnou přesností. Trvá od 5 do 17 bajtů v závislosti na počtu desetinných míst.

    Tento typ může mít dva parametry přesnost a měřítko: DECIMAL(přesnost, měřítko) .

    Parametr přesnosti představuje maximální počet číslic, které může číslo uložit. Tato hodnota musí být mezi 1 a 38. Výchozí hodnota je 18.

    Parametr scale představuje maximální počet číslic, které může číslo obsahovat za desetinnou čárkou. Tato hodnota musí být v rozsahu od 0 do hodnoty parametru přesnosti. Ve výchozím nastavení je 0.

    NUMERIC: Tento typ je podobný typu DECIMAL.

    SMALLMONEY: Ukládá zlomkové hodnoty od -214748,3648 do 214748,3647. Určeno pro ukládání peněžních hodnot. Zabírá 4 bajty. Ekvivalentní typu DECIMAL(10,4) .

    PENÍZE: ukládá zlomkové hodnoty od -922,337,203,685,477,5808 do 922,337,203,685,477,5807. Představuje peněžní hodnoty a zabírá 8 bajtů. Ekvivalentní typu DECIMAL(19,4) .

    FLOAT: Ukládá čísla od –1,79E+308 do 1,79E+308. Trvá od 4 do 8 bajtů v závislosti na zlomkové části.

    Může být definováno jako FLOAT(n) , kde n představuje počet bitů, které se používají k uložení desetinné části čísla (mantisa). Výchozí n = 53.

    REAL : Ukládá čísla od –340E+38 do 3,40E+38. Zabírá 4 bajty. Ekvivalent k typu FLOAT(24).

Příklady číselných sloupců: Plat MONEY, Celková váha DECIMAL(9,2), Věk INT, Přebytek FLOAT

Datové typy představující datum a čas

    DATUM: Termíny obchodů od 0001-01-01 (1. ledna 0001) do 9999-12-31 (31. prosince 9999). Zabírá 3 bajty.

    TIME: Ukládá čas v rozsahu 00:00:00,0000000 až 23:59:59,9999999. Zabere 3 až 5 bajtů.

    Může mít tvar TIME(n) , kde n představuje počet číslic od 0 do 7 ve zlomcích sekund.

    DATETIME: Ukládá data a časy od 01.01.1753 do 31.12.9999. Zabírá 8 bajtů.

    DATETIME2 : Ukládá data a časy v rozsahu 01/01/0001 00:00:00,0000000 až 31/12/9999 23:59:59,9999999. Zabírá od 6 do 8 bajtů v závislosti na přesnosti času.

    Může mít tvar DATETIME2(n) , kde n představuje počet číslic od 0 do 7 ve zlomcích sekund.

    SMALLDATETIME: ukládá data a časy v rozsahu od 01.01.1900 do 06.06.2079, tedy nejbližší data. Zabírá od 4 bajtů.

    DATETIMEOFFSET: Ukládá data a časy v rozsahu 0001-01-01 až 9999-12-31. Ukládá podrobné časové informace s přesností 100 nanosekund. Zabírá 10 bajtů.

Běžné formáty data:

    rrrr-mm-dd - 2017-07-12

    dd/mm/rrrr – 07/12/2017

    mm-dd-rr - 07-12-17

    V tomto formátu jsou dvoumístná čísla od 00 do 49 považována za data v rozsahu 2000-2049. A čísla od 50 do 90 jsou jako rozsah čísel 1950 - 1999.

    dd měsíc, yyyy – 12. července 2017

Běžné formáty času:

  • hh:mi am/pm - 13:21 pm

    hh:mi:ss - 1:21:34

    hh:mi:ss:mmm - 1:21:34:12

    hh:mi:ss:nnnnnnnn - 1:21:34:1234567

Řetězcové datové typy

    CHAR: Ukládá řetězec o délce 1 až 8 000 znaků. Přiděluje 1 bajt pro každý znak. Není vhodný pro mnoho jazyků, protože ukládá znaky, které nejsou Unicode.

    Počet znaků, které může sloupec uložit, je předán v závorkách. Například sloupec typu CHAR(10) přidělí 10 bajtů. A pokud do sloupce uložíme řetězec kratší než 10 znaků, bude doplněn mezerami.

    VARCHAR: ukládá řetězec. Pro každý znak je přidělen 1 bajt. Můžete zadat konkrétní délku sloupce - od 1 do 8000 znaků, například VARCHAR(10) . Pokud musí mít řetězec více než 8000 znaků, pak je velikost nastavena na MAX a pro uložení řetězce lze přidělit až 2 GB: VARCHAR(MAX) .

    Není vhodný pro mnoho jazyků, protože ukládá znaky, které nejsou Unicode.

    Na rozdíl od typu CHAR, pokud je ve sloupci s typem VARCHAR(10) uložen řetězec 5 znaků, bude ve sloupci uloženo přesně pět znaků.

    NCHAR: Ukládá řetězec Unicode o délce 1 až 4 000 znaků. Pro každý znak jsou přiděleny 2 bajty. Například NCHAR(15)

    NVARCHAR: Ukládá řetězec kódovaný Unicode. Pro každý znak jsou přiděleny 2 bajty. Můžete nastavit konkrétní velikost od 1 do 4 000 znaků: . Pokud řádek musí mít více než 4000 znaků, pak je velikost nastavena na MAX a pro uložení řádku lze alokovat až 2 GB.

Další dva typy, TEXT a NTEXT, jsou zastaralé, a proto se nedoporučují. Místo toho se používají VARCHAR a NVARCHAR.

Příklady definování sloupců řetězce:

E-mail VARCHAR(30), komentář NVARCHAR(MAX)

Binární datové typy

    BINARY: Ukládá binární data jako sekvenci 1 až 8 000 bajtů.

    VARBINARY : Ukládá binární data jako sekvenci 1 až 8 000 bajtů nebo až 2^31-1 bajtů při použití hodnoty MAX (VARBINARY(MAX)).

Jiný binární typ, typ IMAGE, je zastaralý a doporučuje se místo něj použít typ VARBINARY.

Jiné datové typy

    UNIQUEIDENTIFIER: Jedinečný GUID (v podstatě řetězec s jedinečnou hodnotou), který zabírá 16 bajtů.

    TIMESTAMP: nějaké číslo, které ukládá číslo verze řádku v tabulce. Zabírá 8 bajtů.

    CURSOR: Představuje sadu řetězců.

    HIERARCHYID: Představuje pozici v hierarchii.

    SQL_VARIANT: Může ukládat data jakéhokoli jiného datového typu T-SQL.

    XML: Ukládá dokumenty XML nebo fragmenty dokumentů XML. Zabírá až 2 GB paměti.

    TABLE: Představuje definici tabulky.

    GEOGRAPHY: Ukládá geografická data, jako je zeměpisná šířka a délka.

    GEOMETRIE : Ukládá souřadnice místa v rovině.




Horní