Prechod z ER diagramu na tabuľkový model

Práca s databázami priamo súvisí s meniacimi sa tabuľkami a údajmi, ktoré obsahujú. Ale skôr ako začnete, musíte vytvoriť tabuľky. Na automatizáciu tohto procesu existuje špeciálny proces - „VYTVORIŤ TABUĽKU“.

Prvá vec!

Pred porozumením procesu vytvárania tabuliek pomocou príkazu MS SQL "CREATE TABLE" je vhodné pozastaviť sa nad tým, čo potrebujete vedieť pred použitím funkcie.

V prvom rade treba vymyslieť názov tabuľky – musí byť jedinečný v porovnaní s ostatnými v databáze a dodržiavať niekoľko pravidiel. Názov musí začínať písmenom (a-z), za ktorým nasledujú písmená, čísla alebo podčiarkovníky a výsledná fráza nesmie byť vyhradené slovo. Dĺžka názvu tabuľky by nemala presiahnuť 18 znakov.

Po rozhodnutí o názve by ste mali vytvoriť štruktúru: vymyslieť názvy stĺpcov, premýšľať o type údajov, ktoré sa v nich používajú a ktoré polia musia byť vyplnené. Tu stojí za to okamžite definovať polia cudzích a primárnych kľúčov, ako aj možné obmedzenia hodnôt údajov.

Zostávajúce nuansy tabuľky sa dajú pomerne ľahko opraviť, takže vo fáze vytvárania tabuľky nemusia byť úplne premyslené.

Syntax

Po vytvorení štruktúry tabuľky môžete pristúpiť k jej tvorbe. Dá sa to urobiť celkom jednoducho pomocou SQL funkcie „CREATE TABLE“. V ňom je používateľ povinný zadať predtým vynájdený názov tabuľky a zoznam stĺpcov s uvedením typu a názvu pre každý z nich. Syntax funkcie je nasledovná:

CREATE TABLE názov_tabuľky
((údajový typ stĺpca_name …| table_constraint)
[,(údajový typ stĺpca_name …| table_constraint)]…)

Argumenty použité pri konštrukcii funkcie znamenajú nasledovné:

  • table_name - názov tabuľky
  • column_name - názov stĺpca
  • dátový typ – dátový typ použitý v tomto poli
  • DEFAULT je predvolený výraz použitý v stĺpci.

Je tiež možné použiť ďalšie dva argumenty funkcie:

  • column_constraint - parametre stĺpca
  • table_constraint - parametre tabuľky

V nich môže používateľ špecifikovať obmedzenia potrebné pre prácu alebo podmienky vyplnenia tabuľky.

Funkcie vytvárania tabuliek

Pri písaní dotazu s funkciou je niekedy potrebné nastaviť pravidlá pre vypĺňanie polí. Ak to chcete urobiť, musíte pridať atribúty špeciálnych funkcií, ktoré definujú konkrétnu množinu podmienok.

Ak chcete zistiť, či bunka môže obsahovať prázdnu hodnotu, po zadaní názvu a typu stĺpca by ste mali zadať jedno z kľúčových slov: NULL (môžu existovať prázdne hodnoty) alebo NOT NULL (pole musí byť vyplnené).

Pri vytváraní tabuľky je vo väčšine prípadov potrebné zjednotiť každý záznam, aby ste sa vyhli dvom identickým. Na to sa najčastejšie používa číslovanie riadkov. A aby to od používateľa nebolo potrebné vedieť posledné vydanie existujúce v tabuľke, vo funkcii "CREATE TABLE" stačí zadať stĺpec primárneho kľúča zápisom kľúčové slovo"Primárny kľúč" za príslušným poľom. Najčastejšie sa tabuľky spájajú pomocou primárneho kľúča.

Na zabezpečenie zreťazenia s primárnym kľúčom sa používa vlastnosť cudzieho kľúča „FOREIGN KEY“. Zadaním tejto vlastnosti pre stĺpec môžete zabezpečiť, že toto pole bude obsahovať hodnotu, ktorá sa zhoduje s hodnotou, ktorá sa nachádza v stĺpci primárneho kľúča tej istej alebo inej tabuľky. Týmto spôsobom je možné zabezpečiť konzistentnosť údajov.

Ak chcete poskytnúť kontrolu proti špecifikovanej množine alebo definícii, mali by ste použiť atribút CHECK. Je zapísaná ako posledná v zozname argumentov funkcií a má nejaký osobný parameter logický výraz. S jeho pomocou môžete obmedziť zoznam možných hodnôt, napríklad iba pomocou písmen „M“ a „F“ v poli tabuľky „Pohlavie“.

Okrem tých, ktoré sú prezentované, má funkcia oveľa viac špecifických atribútov, no v praxi sa používajú oveľa menej často.

Príklady

Pre úplné pochopenie princípu fungovania funkcie stojí za zváženie v praxi, ako CREATE TABLE (SQL) funguje. Nasledujúci príklad vytvorí tabuľku zobrazenú na obrázku:

VYTVORIŤ TABUĽKU Vlastné
(ID CHAR(10) NOT NULL Primárny kľúč,
Custom_name CHAR(20),
Custom_address CHAR(30),
Custom_city CHAR(20),
Custom_Country CHAR(20),
ArcDate CHAR(20))

Ako vidíte, parameter možná absencia hodnoty v bunke (NULL) možno vynechať, pretože je to predvolené nastavenie.

Po vytvorení prázdnych tabuliek je ďalším logickým krokom ich naplnenie údajmi a aktualizácia týchto údajov. V Transact-SQL na to existuje niekoľko príkazov: VLOŽIŤ – AKTUALIZOVAŤ.

V neskoršom štádiu návrhu však často vzniká potreba zmeniť samotnú schému tabuľky. Napríklad, ak sa zmenil primárny kľúč alebo typ údajov stĺpca. Aby sa staré tabuľky nevymazávali a nevytvárali znova pomocou CREATE TABLE so správnymi parametrami, používa sa príkaz ALTER TABLE. Aplikácia týchto troch konštruktov je diskutovaná nižšie.

Plniace tabuľky

Tabuľku môžete naplniť údajmi pomocou príkazu CREATE TABLE, ale efektívnejší prístup je oddeliť vytváranie a vypĺňanie tabuľky, najmä pre začiatočníkov v SQL, pretože:

  • vizuálne jasnejšie;
  • Výhodnejšie je, ak sa tabuľky vypĺňajú po etapách.

Ak chcete získať nasledujúce zobrazenie tabuľky:

ID. Nájomca

Dátum narodenia

Číslo apartmánu

Emailová adresa

Aleksin. V.V.

Gorbunov D.D.

[e-mail chránený]

Šimonová K.R.

Dormitotová K.S.

[e-mail chránený]

Budete ho musieť vytvoriť pomocou VYTVORIŤ TABUĽKU a vyplňte ho príkazom INSERT. Ďalšie pokyny pridá jeden riadok do tabuľky spolubývajúcich, ktorú sme už vytvorili:

Odstrániť predošlá verzia stoly DROP TABLE spolubývajúci; -- Vytvorte tabuľku. CREATE TABLE housemates(housemeateID int NOT NULL CONSTRAINT primary_id PRIMARY KEY, housemateName nvarchar(30) NOT NULL, BithDate date NOT NULL, apartment number int NOT NULL, Email nvarchar(30)); -- Vložte údaje do tabuľky USE GO INSERT INTO ( , , , ,) VALUES (100,"Aleksin V.V.","19721122",11," [e-mail chránený]"), (101,"Gorbunov D.D.","19220525",25," [e-mail chránený]"), (102," Simonová K.R. "," 19560211 ", 13," [e-mail chránený]"), (103,"Dormitotova K.S.","19770815",9," [e-mail chránený]")

Vo vyššie uvedenom príklade musíme rozlišovať medzi dvoma blokmi konštrukcie INSERT:

DO- ukazuje na tabuľku, do ktorej sa pridávajú údaje

HODNOTY- inicializácia linkového vstupu.

V parametroch (v zátvorkách) bloku DO Stĺpce sú uvedené v poradí, v akom sa zobrazujú. Záznam bez parametrov je prijateľný, ak je poradie stĺpcov pri vytváraní tabuľky a pri jej vypĺňaní rovnaké. Nasledujúci kód je identický s predchádzajúcim:

INSERT IN TO VALUES (100,"Aleksin. V.V.","19721122",11," [e-mail chránený]"), (101,"Gorbunov D.D.","19220525",25," [e-mail chránený]"), (102," Simonová K.R. "," 19560211 ", 13," [e-mail chránený]"), (103,"Dormitotova K.S.","19770815",9," [e-mail chránený]")

Ak potrebujete zmeniť objednávku plnenia, musíte to výslovne uviesť:

INSERT INTO (,,, ,) VALUES ("Alexin. V.V.",101,"19721122"," [e-mail chránený]",11), ("Gorbunov D.D.",102,"19220525"," [e-mail chránený]",25), ("Simonova K.R",103,"19560211"," [e-mail chránený]",13) ("Dormitotova K.S.",104,"19770815"," [e-mail chránený]",9)

V bloku VALUES sa inicializácia riadok po riadku vykonáva v poradí stĺpcov bloku INTO. Výplň riadkov je zoznam hodnôt buniek v zátvorkách. Hodnoty sú uvedené oddelené čiarkami a riadky sú od seba oddelené.

Konštrukciu INSERT môžete použiť len na tie stĺpce, ktoré ešte neobsahujú údaje. V opačnom prípade dôjde k chybe vykonania požiadavky.

Aktualizácia tabuľky

Potreba aktualizovať tabuľky vzniká, ak je potrebné zmeniť údaje už zapísané do tabuľky. Vykonáva sa pomocou pokynov AKTUALIZOVAŤ. Ak INSERT funguje iba s prázdnymi tabuľkami, potom UPDATE funguje len s vyplnenými tabuľkami. Ak je požiadavka adresovaná prázdnym bunkám, dôjde k chybe.

Nasledujúci kód priradí nový Poštová schránka na obyvateľa domu s identifikačným číslom 103.

AKTUALIZOVAŤ NASTAVENIE spolubývajúcich Email = " [e-mail chránený]"WHERE housemeateID = 103

Blokovať SET- toto je blok zmien. Ak potrebujete aktualizovať hodnotu niekoľkých buniek, sú uvedené oddelené čiarkami.

AKTUALIZOVAŤ NASTAVENIE spolubývajúcich Email = " [e-mail chránený]", housemateName = "Rurik S.S." WHERE housemeateID = 103

Výmena stola

V neskorších fázach návrhu alebo po vývoji základne často vzniká potreba:

  • pridať alebo odstrániť stĺpec;
  • zmeniť typ stĺpca;
  • označte stĺpec alebo skupinu stĺpcov ako primárny alebo cudzí kľúč alebo odstráňte tieto obmedzenia.

Pre všetky tieto operácie existuje inštrukcia na prepísanie. ATER STÔL.

Na pridanie stĺpca sa používa príkaz ALTER TABLE s klauzulou ADD. Pridajme nový stĺpec do tabuľky spolubývajúcich z predchádzajúcej časti:

ALTER TABLE spolubývajúci ADD PhoneNumber nvarchar(12) NULL;

Musíte na to použiť vetu ZMENIŤ STĹPEC vnútri ALTER TABLE:

ALTER TABLE spolubývajúci ALTER COLUMN PhoneNumber char(25) NOT NULL;

Odstráni stĺpec pomocou PUSTIŤ STĹPEC vnútri ALTER TABLE:

ALTER TABLE spolubývajúci DROP COLUMN PhoneNumber;

Primárny alebo cudzí kľúč sa odstráni a pridá pomocou konštruktov ALTER TABLE ADD CONSTRAINT/DROP CONSTRAINT:

Odstráňte obmedzenie primárneho kľúča zo stĺpca housemeateID ALTER TABLE spolubývajúci DROP CONSTRAINT primary_id; --Priraďte stĺpec housemeateID ako primárny kľúč ALTER TABLE housemates ADD CONSTRAINT PK_ID PRIMARY KEY (housemeateID);

Ak sa pokúsite priradiť primárny kľúč k tabuľke, ktorá už existuje, prekladač dotazov vráti chybu. Preto, ak tabuľka už má primárny kľúč, mali by ste ho odstrániť a určiť skupinu stĺpcov ako primárny kľúč. Napríklad takto:

ALTER TABLE spolubývajúci DROP CONSTRAINT PK_ID; ALTER TABLE spolubývajúci PRIDAŤ OBMEDZENIE PK_ID, PK_AN PRIMÁRNY KĽÚČ (ID domu, číslo bytu);

SQL - Lekcia 3. Vytváranie tabuliek a ich napĺňanie informáciami

Takže sme sa zoznámili s dátovými typmi, teraz vylepšíme tabuľky pre naše fórum. Najprv sa na ne pozrime. A začnime tabuľkou používateľov. Máme v ňom 4 stĺpce:

Id_user sú celočíselné hodnoty, čo znamená, že typ bude int, obmedzme ho na 10 znakov – int (10).
name je hodnota reťazca varchar, obmedzme ho na 20 znakov - varchar(20).
email je hodnota reťazca varchar, obmedzme ho na 50 znakov - varchar(50).
heslo je hodnota reťazca varchar, obmedzíme ho na 15 znakov - varchar(15).

Všetky hodnoty polí sú povinné, čo znamená, že musíte pridať typ NOT NULL.

Id_user int (10) NOT NULL
názov varchar(20) NOT NULL
email varchar(50) NOT NULL

Prvý stĺpec, ako si pamätáte z konceptuálneho modelu našej databázy, je primárny kľúč (to znamená, že jeho hodnoty sú jedinečné a jednoznačne identifikujú záznam). Jedinečnosť je možné sledovať aj svojpomocne, ale nie je to racionálne. V SQL na to existuje špeciálny atribút - AUTOMATICKÝ PRÍRASTOK, ktorý pri prístupe k tabuľke na doplnenie údajov vypočíta maximálnu hodnotu tohto stĺpca, zvýši výslednú hodnotu o 1 a zapíše ju do stĺpca. V tomto stĺpci sa teda automaticky generuje jedinečné číslo, a preto je typ NOT NULL nadbytočný. Takže priraďme atribút stĺpcu s primárnym kľúčom:


názov varchar(20) NOT NULL
email varchar(50) NOT NULL
heslo varchar(15) NOT NULL

Teraz musíme určiť, že pole id_user je primárny kľúč. Na tento účel používa SQL kľúčové slovo PRIMÁRNY KĽÚČ(), názov poľa kľúča je uvedený v zátvorkách. Urobme zmeny:

Id_user int (10) AUTO_INCREMENT
názov varchar(20) NOT NULL
email varchar(50) NOT NULL
heslo varchar(15) NOT NULL
PRIMÁRNY KĽÚČ (id_user)

Tabuľka je teda hotová a jej finálna verzia vyzerá takto:

Vytvorte používateľov tabuľky (
id_user int (10) AUTO_INCREMENT,
názov varchar(20) NOT NULL,
email varchar(50) NOT NULL,
heslo varchar(15) NOT NULL,
PRIMÁRNY KĽÚČ (id_user)
);

Teraz sa pozrime na druhú tabuľku – témy. Ak argumentujeme podobne, máme nasledujúce polia:



id_author int (10) NOT NULL
PRIMÁRNY KĽÚČ (id_topic)

Ale v našom databázovom modeli je pole id_author cudzí kľúč, t.j. môže mať iba hodnoty, ktoré sú v poli id_user tabuľky používateľov. Na označenie tohto v SQL existuje kľúčové slovo CUDZÍ KĽÚČ(), ktorý má nasledujúcu syntax:

CUDZÍ KĽÚČ (názov_stĺpca_ktorý_je_cudzí_kľúč) REFERENCIE názov_nadradenej_tabuľky (názov_nadradeného_stĺpca);

Označme, že id_author je cudzí kľúč:

Id_topic int (10) AUTO_INCREMENT
topic_name varchar(100) NOT NULL
id_author int (10) NOT NULL
PRIMÁRNY KĽÚČ (id_topic)
CUDZÍ KĽÚČ (id_author) REFERENCIE používatelia (id_user)

Tabuľka je pripravená a jej konečná verzia vyzerá takto:

Vytvorte témy tabuľky (
id_topic int (10) AUTO_INCREMENT,
topic_name varchar(100) NOT NULL,

PRIMÁRNY KĽÚČ (id_topic),
CUDZÍ KĽÚČ (id_author) REFERENCIE používatelia (id_user)
);

Posledná zostávajúca tabuľka sú príspevky. Všetko je tu podobné, iba dva cudzie kľúče:

Vytvorte príspevky v tabuľke (
id_post int (10) AUTO_INCREMENT,
text správy NOT NULL,
id_author int (10) NOT NULL,
id_topic int (10) NOT NULL,
PRIMÁRNY KĽÚČ (id_post),
FOREIGN KEY (id_author) REFERENCES users (id_user),
CUDZÍ KĽÚČ (id_topic) REFERENCIE témy (id_topic)
);

Upozorňujeme, že tabuľka môže mať niekoľko cudzích kľúčov, ale v MySQL môže byť iba jeden primárny kľúč. V prvej lekcii sme vymazali našu databázu fóra, je čas ju znova vytvoriť.

Poďme spustiť MySQL server(Štart - Programy - MySQL - MySQL Server 5.1 - Klient príkazového riadka MySQL), zadajte heslo, vytvorte databázové fórum (vytvorte databázové fórum;), vyberte ho na použitie (použite fórum;) a vytvorte naše tri tabuľky:

Upozorňujeme, že jeden príkaz je možné napísať na niekoľko riadkov pomocou klávesu Enter (MySQL automaticky nahradí symbol Nový riadok->) a až za oddeľovačom (bodkočiarkou) stlačením klávesu Enter vykonáte dotaz.

Pamätajte, že ak ste niečo urobili zle, tabuľku alebo celú databázu môžete kedykoľvek zrušiť pomocou príkazu DROP. Opravte niečo príkazový riadok extrémne nepohodlné, takže niekedy (najmä v počiatočnej fáze) je jednoduchšie písať otázky v niektorom editore, napríklad v programe Poznámkový blok, a potom ich skopírovať a vložiť do čierneho okna.

Tabuľky sú teda vytvorené, aby sme sa o tom presvedčili, spomeňme si na tím zobraziť tabuľky:

A nakoniec sa pozrime na štruktúru tabuľky našich posledných príspevkov:

Teraz sú významy všetkých polí štruktúry jasné, okrem poľa DEFAULT. Toto je pole predvolenej hodnoty. Mohli by sme zadať predvolenú hodnotu pre niektorý stĺpec (alebo všetky). Napríklad, ak by sme mali pole s názvom „Married“ a napísali ENUM („áno“, „nie“), potom by malo zmysel nastaviť jednu z hodnôt ako predvolenú hodnotu. Syntax by bola:

Ženatý enum ("áno", "nie") NIE JE NULL predvolené ("áno")

Tie. toto kľúčové slovo sa píše oddelené medzerou za typom údajov a predvolená hodnota je uvedená v zátvorkách.

Ale vráťme sa k našim stolom. Teraz musíme zadať údaje do našich tabuliek. Na weboch väčšinou zadávate informácie do nejakých html formulárov, potom skript v nejakom jazyku (php, java...) tieto údaje vytiahne z formulára a vloží do databázy. Robí to prostredníctvom SQL dotazu na zadávanie údajov do databázy. Zatiaľ nevieme, ako písať skripty v PHP, ale teraz sa naučíme, ako posielať SQL dotazy na zadávanie údajov.

Na tento účel sa používa operátor VLOŽIŤ. Môžete použiť dva typy syntaxe. Prvá možnosť sa používa na zadanie údajov do všetkých polí tabuľky:

INSERT INTO VALUES názov_tabuľky ("hodnota_prvého_stĺpca","hodnota_druhého_stĺpca", ..., "hodnota_posledného_stĺpca");


Skúsme do tabuľky používateľov pridať nasledujúce hodnoty:

INSERT INTO users VALUES ("1","sergey", " [e-mail chránený]", "1111");

Druhá možnosť sa používa na zadávanie údajov do niektorých polí tabuľky:

INSERT INTO názov_tabuľky ("názov_stĺpca", "názov_stĺpca") VALUES ("hodnota_prvého_stĺpca","hodnota_druhého_stĺpca");


V našej tabuľke používateľov sú všetky polia povinné, ale naše prvé pole má kľúčové slovo AUTO_INCREMENT (t. j. je vyplnené automaticky), takže tento stĺpec môžeme preskočiť:

INSERT INTO users (meno, email, heslo) VALUES ("valera", " [e-mail chránený]", "2222");

Ak by sme mali polia s typom NULL, t.j. voliteľné, mohli by sme ich tiež ignorovať. Ak sa však pokúsite ponechať pole s hodnotou NOT NULL prázdne, server zobrazí chybové hlásenie a požiadavku nedokončí. Okrem toho pri zadávaní údajov server kontroluje vzťahy medzi tabuľkami. Preto nebudete môcť pridať hodnotu do poľa, ktoré je cudzím kľúčom, ktorý neexistuje v súvisiacej tabuľke. Overíte si to zadaním údajov do zvyšných dvoch tabuliek.

Najprv však pridajte informácie o niekoľkých ďalších používateľoch. Ak chcete pridať niekoľko riadkov naraz, stačí uviesť zátvorky s hodnotami oddelenými čiarkami:

Teraz zadáme údaje do druhej tabuľky – témy. Všetko je rovnaké, ale musíme si uvedomiť, že hodnoty v poli id_author musia byť prítomné v tabuľke používateľov:

Teraz skúsme pridať ďalšiu tému, ale s id_author, ktorý nie je v tabuľke users (keďže sme pridali len 5 užívateľov do tabuľky users, tak id=6 neexistuje):

Server vyhodí chybu a povie, že nemôže zadať takýto riadok, pretože pole, ktoré je cudzím kľúčom, obsahuje hodnotu, ktorá nie je v tabuľke súvisiacich používateľov.

Teraz pridajme pár riadkov do tabuľky príspevkov, nezabúdajme, že v nej máme 2 cudzie kľúče, t.j. id_author a id_topic, ktoré zadáme, musia byť prítomné v priradených tabuľkách:

Máme teda 3 tabuľky, v ktorých sú údaje. Vynára sa otázka – ako vidieť, aké údaje sú v tabuľkách uložené. To je to, čo budeme robiť v nasledujúcej lekcii.

Ak ste potrebovali uložiť výslednú sadu údajov, ktoré boli vrátené dotazom SQL, tento článok vás bude zaujímať, pretože sa v ňom pozrieme na príkaz SELECT DO, s pomocou ktorej Microsoft SQL Server, môžete vytvoriť novú tabuľku a vyplniť ju výsledkom SQL dotaz.

Začneme samozrejme popisom samotného príkazu SELECT INTO a potom prejdeme na príklady.

SELECT INTO v Transact-SQL

VYBERTE DO– inštrukcia v jazyku T-SQL, ktorá vytvorí novú tabuľku a vloží do nej výsledné riadky z SQL dotazu. Štruktúra tabuľky, t.j. počet a názvy stĺpcov, ako aj typy údajov a vlastnosti umožňujúce nulovanie budú založené na stĺpcoch ( výrazov) špecifikované v zozname výberu zdroja v príkaze SELECT. Príkaz SELECT INTO sa zvyčajne používa na spojenie údajov z niekoľkých tabuliek a zobrazení, vrátane niektorých údajov výpočtov, do jednej tabuľky.

Ak chcete použiť príkaz SELECT INTO, musíte mať povolenie CREATE TABLE v databáze, v ktorej sa vytvorí nová tabuľka.

Príkaz SELECT INTO má dva argumenty:

  • new_table - meno nový stôl;
  • skupina súborov – skupina súborov. Ak nie je zadaný žiadny argument, použije sa predvolená skupina súborov. Táto príležitosť k dispozícii od Microsoft SQL Server 2017.

Dôležité body o príkaze SELECT INTO

  • Inštrukciu možno použiť na vytvorenie tabuľky na aktuálnom serveri, vytvorenie tabuľky na vzdialenom serveri nie je podporované;
  • Novú tabuľku môžete vyplniť údajmi buď z aktuálnej databázy a aktuálneho servera, alebo z inej databázy alebo zo vzdialeného servera. Napríklad uveďte celé meno databázy vo formulári database_schema.table_name alebo v prípade vzdialeného servera, linked_server.database.schema.table_name;
  • Stĺpec identity v novej tabuľke nededí vlastnosť IDENTITY, ak: príkaz obsahuje spojenie (JOIN, UNION), klauzulu GROUP BY, agregátna funkcia, aj keď je stĺpec identity súčasťou výrazu, je získaný zo vzdialeného zdroja údajov alebo sa vo výberovom zozname vyskytuje viackrát. Vo všetkom podobné prípady stĺpec identity nededí vlastnosť IDENTITY a je vytvorený ako NOT NULL;
  • Príkaz SELECT INTO nemôžete použiť na vytvorenie rozdelenej tabuľky, aj keď je zdrojová tabuľka rozdelená;
  • Môžete zadať bežnú tabuľku aj dočasnú tabuľku ako novú tabuľku, ale nemôžete zadať premennú tabuľky ani parameter s hodnotou tabuľky;
  • Vypočítaný stĺpec, ak sa nejaký nachádza vo výberovom zozname príkazu SELECT INTO, v novej tabuľke sa stáva normálnym, t.j. nevypočítané;
  • SELECT INTO nemožno použiť s klauzulou COMPUTE;
  • Pomocou SELECT INTO sa indexy, obmedzenia a spúšťače neprenesú do novej tabuľky, v prípade potreby sa musia vytvoriť dodatočne po vykonaní príkazu;
  • Klauzula ORDER BY nezaručuje, že riadky v novej tabuľke budú vložené v určenom poradí.
  • Atribút FILESTREAM sa neprenesie do novej tabuľky. Objekty BLOB FILESTREAM v novej tabuľke budú objekty BLOB typu varbinary(max) a budú mať limit 2 GB;
  • Množstvo údajov zapísaných do protokolu transakcií počas operácií SELECT INTO závisí od modelu obnovy. V databázach, ktoré používajú hromadne protokolovaný model obnovy, a jednoduchý model, hromadné operácie, ktoré zahŕňajú SELECT INTO, sú minimálne protokolované. Z tohto dôvodu môže byť príkaz SELECT INTO efektívnejší ako samostatné príkazy na vytvorenie tabuľky a príkazy INSERT na jej naplnenie údajmi.

Príklady použitia SELECT INTO

Všetky príklady spustím v Microsoft SQL Server 2016 Express DBMS.

Počiatočné údaje

Najprv si vytvoríme dve tabuľky a naplníme ich údajmi, v príkladoch tieto tabuľky spojíme.

CREATE TABLE TestTable( IDENTITY(1,1) NOT NULL, NOT NULL, (100) NOT NULL, NULL) ON GO CREATE TABLE TestTable2( IDENTITY(1,1) NOT NULL, (100) NOT NULL) ON GO VLOŽIŤ DO TestTable VALUES (1,"Klávesnica", 100), (1, "Myš", 50), (2, "Telefón", 300) VLOŽIŤ DO Testovacej tabuľky 2 HODNOTY (" Počítačové komponenty"), ("Mobilné zariadenia") GO SELECT * FROM TestTable SELECT * FROM TestTable2

Príklad 1 - Vytvorenie tabuľky pomocou SELECT INTO so spájaním údajov

Predstavme si, že potrebujeme zlúčiť dve tabuľky a výsledný výsledok uložiť do novej tabuľky ( napríklad potrebujeme získať produkty s názvom kategórie, do ktorej patria).

Operácia SELECT INTO SELECT T1.ProductId, T2.CategoryName, T1.ProductName, T1.Price INTO TestTable3 FROM TestTable T1 LEFT JOIN TestTable2 T2 ON T1.CategoryId = T2.CategoryId --Výber údajov z novej tabuľky SELECTTable3 * FROM


V dôsledku toho sme vytvorili tabuľku s názvom TestTable3 a naplnili ju kombinovanými údajmi.

Príklad 2 - Vytvorenie dočasnej tabuľky pomocou SELECT INTO so zoskupením údajov

Teraz povedzme, že potrebujeme zoskupené údaje, napríklad informácie o počte produktov v určitej kategórii a tieto údaje potrebujeme uložiť do dočasnej tabuľky, napríklad tieto informácie použijeme iba v príkazoch SQL, takže nie je potrebné vytvárať plnohodnotný stôl.

Vytvorte dočasnú tabuľku (#TestTable) pomocou príkazu SELECT INTO SELECT T2.CategoryName, COUNT(T1.ProductId) AS CntProduct INTO #TestTable FROM TestTable T1 LEFT JOIN TestTable2 T2 ON T1.CategoryId = T2.CategoryId.Category BY T1 - Získavanie údajov z dočasnej tabuľky SELECT * FROM #TestTable


Ako vidíte, dokázali sme vytvoriť dočasnú tabuľku #TestTable a naplniť ju zoskupenými údajmi.

Pozreli sme sa teda na príkaz SELECT INTO v jazyku T-SQL; v mojej knihe „T-SQL Programmer’s Way“ podrobne hovorím o všetkých konštrukciách jazyk T-SQL (Odporúčam prečítať), a to je zatiaľ všetko!

Pred vytvorením tabuľky SQL musíte definovať databázový model. Navrhnite ER diagram, v ktorom definujete entity, atribúty a vzťahy.

Základné pojmy

Entity sú objekty alebo fakty, o ktorých musia byť uložené informácie. Napríklad zamestnanec firmy alebo projekty realizované firmou. Atribúty sú komponenty, ktoré popisujú alebo kvalifikujú entitu. Napríklad atribút entity „zamestnanec“ je mzda a atribútom entity „projekt“ sú odhadované náklady. Spojenia sú asociácie medzi dvoma prvkami. Môže byť obojsmerný. Existuje aj rekurzívne spojenie, teda spojenie entity so sebou samým.

Je tiež potrebné určiť kľúče a podmienky, za ktorých sa bude udržiavať integrita databázy. Čo to znamená? Inými slovami, obmedzenia, ktoré pomôžu udržiavať databázy v správnej a konzistentnej forme.

Prechod z ER diagramu na tabuľkový model

Pravidlá prechodu na tabuľkový model:

  1. Previesť všetky entity na tabuľky.
  2. Preveďte všetky atribúty na stĺpce, to znamená, že každý atribút entity sa musí objaviť v názve stĺpca tabuľky.
  3. Previesť jedinečné identifikátory na primárne kľúče.
  4. Preveďte všetky vzťahy na cudzie kľúče.
  5. Vytvorte SQL tabuľku.

Vytvorenie databázy

Najprv musíte spustiť server MySQL. Ak ho chcete spustiť, prejdite do ponuky Štart, potom na Programy, potom na MySQL a MySQL Server a vyberte MySQL-Command-Line-Client.

Na vytvorenie databázy použite príkaz Create Database. Táto funkcia má nasledujúci formát:

VYTVORIŤ DATABÁZU názov_databázy.

Obmedzenia týkajúce sa názvu databázy sú nasledovné:

  • dĺžka je až 64 znakov a môže obsahovať písmená, čísla, symboly "" a "";
  • meno môže začínať číslom, ale musí obsahovať písmená.

Musíte si zapamätať všeobecné pravidlo: každá požiadavka alebo príkaz končí oddeľovačom. V SQL je bežné používať ako oddeľovač bodkočiarku.

Server musí uviesť, s ktorou databázou bude musieť pracovať. Existuje na to vyhlásenie USE. Tento operátor má jednoduchú syntax: USE n názov_databázy.

Vytvorenie SQL tabuľky

Takže sa navrhne model, vytvorí sa databáza a serveru sa presne povie, ako s ňou pracovať. Teraz môžete začať vytvárať SQL tabuľky. Existuje jazyk pre definíciu údajov (DDL). Slúži na vytváranie MS SQL tabuľky, ako aj na definovanie objektov a prácu s ich štruktúrou. DDL obsahuje sadu príkazov.

Vytvorenie SQL Server tabuľky

Pomocou jediného príkazu DDL môžete vytvárať rôzne databázové objekty zmenou jeho parametrov. Používa sa príkaz Create Table. Formát tt vyzerá takto:

VYTVORIŤ TADLE table_name,(názov_stĺpca1 názov _stĺpec2 dátový typ [column_constraint], [table_constraints]).

Syntax tohto príkazu by mala byť podrobnejšie opísaná:

  • Názov tabuľky musí mať maximálne 30 znakov a začínať písmenom. Povolené sú iba abecedné znaky, písmená a symboly „_“, „$“ a „#“. Používanie cyriliky je povolené. Je dôležité poznamenať, že názvy tabuliek by nemali byť rovnaké ako názvy iných objektov alebo vyhradené slová databázového servera, ako napríklad stĺpec, tabuľka, index atď.
  • Pre každý stĺpec musíte zadať typ údajov. Existuje štandardná sada, ktorú používa väčšina. Napríklad Char, Varchar, Number, Date, Null type atď.

  • Parameter Default umožňuje nastaviť predvolenú hodnotu. To zaisťuje, že v tabuľke nie sú žiadne hodnoty null. Čo to znamená? Predvolenou hodnotou môže byť symbol, výraz, funkcia. Je dôležité si zapamätať, že tento predvolený dátový typ sa musí zhodovať so vstupným dátovým typom stĺpca.
  • Obmedzenia v každom stĺpci sa používajú na vynútenie podmienok integrity pre údaje na úrovni tabuľky. Existujú aj iné nuansy. Je zakázané vymazať tabuľku, ak sú na nej závislé iné tabuľky.

Ako pracovať s databázou

Veľké projekty často vyžadujú vytvorenie viacerých databáz, z ktorých každá vyžaduje veľa tabuliek. Samozrejme, je nemožné, aby si používatelia uchovali všetky informácie v hlave. K tomu je možné zobraziť štruktúru databáz a tabuliek v nich. Existuje niekoľko príkazov, konkrétne:

  • ZOBRAZIŤ DATABÁZY - zobrazí na obrazovke všetky vytvorené SQL databázy;
  • SHOW TABLES - zobrazí zoznam všetkých tabuliek pre aktuálnu databázu, ktoré sú vybrané príkazom USE;
  • POPISOVAŤ názov_tabuľky- zobrazuje popis všetkých stĺpcov tabuľky.
  • ALTER TABLE - umožňuje zmeniť štruktúru tabuľky.

Posledný príkaz umožňuje:

  • pridať stĺpec alebo obmedzenie do tabuľky;
  • zmeniť existujúci stĺpec;
  • odstrániť stĺpec alebo stĺpce;
  • odstrániť obmedzenia integrity.

Syntax tohto príkazu je: ALTER TABLE názov_tabuľky( | | | | [(ZAPNÚŤ | VYPNÚŤ) KONŠTANT názov_obmedzenia ] | }.

Existujú aj ďalšie príkazy:

  • PREMENOVAŤ - premenovanie tabuľky.
  • TRUNCATE TABLE - odstráni všetky riadky z tabuľky. Táto funkcia môže byť potrebná, keď je potrebné znova vyplniť tabuľku, ale nie je potrebné ukladať predchádzajúce údaje.

Sú aj situácie, keď sa štruktúra databázy zmenila a tabuľku treba vymazať. Na to existuje príkaz DROP. Samozrejme, najprv je potrebné vybrať databázu, z ktorej chcete tabuľku vymazať, ak sa líši od aktuálnej.

Syntax príkazu je pomerne jednoduchá: DROP TABLE názov_tables.

IN SQL Access vytváranie tabuliek a ich úpravu sa vykonáva pomocou rovnakých príkazov, ktoré sú uvedené vyššie.

Pomocou CREATE TABLE môžete vytvoriť prázdnu tabuľku a potom ju vyplniť údajmi. To však nie je všetko. Tabuľku môžete vytvoriť aj priamo z inej tabuľky. Páči sa ti to? To znamená, že je možné definovať tabuľku a naplniť ju údajmi z inej tabuľky. Na to existuje špeciálne kľúčové slovo AS.

Syntax je veľmi jednoduchá:

  • VYTVORIŤ TABUĽKU názov_tables[(column_definition)] AS poddotaz;
  • column_definition - názvy stĺpcov, pravidlá integrity pre novovytvorené stĺpce tabuľky a predvolené hodnoty;
  • poddotaz - vráti riadky, ktoré je potrebné pridať do novej tabuľky.

Takýto príkaz teda vytvorí tabuľku s určitými stĺpcami, vloží do nej riadky, ktoré sa vrátia v dotaze.

Dočasné tabuľky

Dočasné tabuľky sú tabuľky, ktorých údaje sa vymažú na konci každej relácie alebo skôr. Používajú sa na zaznamenávanie stredných hodnôt alebo výsledkov. Môžu byť použité ako pracovné listy. Dočasné môžete definovať v ľubovoľnej relácii, ale ich údaje môžete použiť iba v aktuálnej relácii. Vytváranie dočasných tabuliek SQL je podobné bežným tabuľkám pomocou príkazu CREATE TABLE. Ak chcete systému ukázať, že tabuľka je dočasná, musíte použiť parameter GLOBAL TEMPORARY.

Klauzula ON COMMIT nastavuje životnosť údajov v takejto tabuľke a môže robiť nasledovné:

  • VYMAZAŤ RIADKY - vymazanie dočasnej tabuľky (vymazanie všetkých údajov relácie) po každom dokončení transakcie. Toto je zvyčajne predvolená hodnota.
  • ZACHOVAŤ RIADKY - ponechať údaje na použitie v ďalšej transakcii. Okrem toho môžete stôl vyčistiť až po skončení relácie. Ale sú tu niektoré zvláštnosti. Ak je transakcia vrátená späť (ROLLBACK), tabuľka sa vráti do stavu na konci predchádzajúcej transakcie.

Syntax na vytvorenie dočasnej tabuľky možno znázorniť takto: CREATE TABLE názov_tables,(názovstĺpec_1 dátový typ [column_constraint], názov _stĺpec2 dátový typ [column_constraint], [table_constraints]).