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).
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ě.