Jste připraveni začít vytvářet databáze a tabulky pomocí strukturovaný dotazovací jazyk? V tomto článku prozkoumáme proces ručního vytváření tabulek pomocí příkazů CREATE DATABASE a CREATE TABLE. Pokud jste v SQL nováčkem, možná budete chtít některé zkontrolovat Základy SQL První.
Obchodní požadavky
Než si sedneme za klávesnici, musíme se ujistit, že dobře rozumíme požadavkům zákazníka. Jaký je nejlepší způsob získání tohoto přehledu? Samozřejmě, že mluvíme se zákazníkem! Poté, co jsme si sedli s ředitelem lidských zdrojů společnosti XYZ, jsme se dozvěděli, že se jedná o prodejní společnost s widgety a primárně se zajímají o sledování informací o jejich prodejním personálu.
Společnost XYZ rozděluje své prodejní síly na východní a západní regiony, z nichž každá je rozdělena na mnoho teritorií pokrytých jednotlivými obchodními zástupci. Personální oddělení by chtělo sledovat teritorium pokryté každým zaměstnancem, stejně jako informace o platech a struktuře dohledu každého zaměstnance. Abychom splnili tyto požadavky, navrhli jsme databázi skládající se ze tří tabulek, které jsou uvedeny v
Entity-Relationship diagram na této straně.Výběr databázové platformy
Rozhodli jsme se použít Systém pro správu databází (nebo DBMS), který je postaven na Structured Query Language (SQL). Proto by všechny naše příkazy pro vytváření databází a tabulek měly být psány s ohledem na standardní ANSI SQL.
Další výhodou je, že použití SQL kompatibilního s ANSI zajistí, že tyto příkazy budou fungovat na jakémkoli systému DBMS, který podporuje standard SQL, včetně Oracle a Microsoft SQL Server. Pokud jste dosud nevybrali platformu pro svou databázi, provede vás proces výběru databázového softwaru.
Vytvoření databáze
Naším prvním krokem je vytvoření samotné databáze. Mnoho systémů pro správu databází nabízí v tomto kroku řadu možností přizpůsobení parametrů databáze, ale naše databáze umožňuje pouze jednoduché vytvoření databáze. Stejně jako u všech našich příkazů budete možná chtít nahlédnout do dokumentace k vašemu systému DBMS a zjistit, zda některé pokročilé parametry podporované vaším konkrétním systémem splňují vaše potřeby. K nastavení naší databáze použijeme příkaz CREATE DATABASE:
VYTVOŘIT personál DATABÁZE
Zvláštní pozornost věnujte použití velkých písmen použitých v příkladu výše. Mezi programátory SQL je běžnou praxí používat všechna velká písmena pro klíčová slova SQL, například „CREATE“ a „DATABASE“ při používání všech malých písmen pro uživatelsky definovaná jména, jako je „personální“ databáze název. Tyto konvence umožňují snadnou čitelnost.
Nyní, když jsme navrhli a vytvořili naši databázi, jsme připraveni začít vytvářet tři tabulky používané k ukládání osobních údajů společnosti XYZ Corporation.
Vytváření našeho prvního stolu
Naše první tabulka obsahuje osobní údaje pro každého zaměstnance naší společnosti. Musíme zahrnout jméno, plat, ID a manažera každého zaměstnance. Doporučuje se oddělit příjmení a křestní jména do samostatných polí, aby se v budoucnu zjednodušilo vyhledávání a třídění dat. Také budeme sledovat manažera každého zaměstnance vložením odkazu na ID zaměstnance manažera v každém záznamu zaměstnance. Nejprve se podívejme na požadovanou tabulku zaměstnanců.
Atribut ReportsTo ukládá ID správce pro každého zaměstnance. Ze ukázkových ukázkových záznamů můžeme určit, že Sue Scampi je manažerem Toma Kendalla i Johna Smitha. V databázi však nejsou žádné informace o správci Sue, jak naznačuje položka NULL v jejím řádku.
Nyní můžeme pomocí SQL vytvořit tabulku v naší personální databázi. Než to uděláme, ujistíme se, že jsme ve správné databázi, vydáním příkazu USE:
Personál USE;
Alternativně „DATABASE staff;“ příkaz by vykonával stejnou funkci. Nyní se můžeme podívat na příkaz SQL použitý k vytvoření tabulky našich zaměstnanců:
VYTVOŘIT TABULKU zaměstnanců
(zaměstnanec INTEGER NENÍ NULL,
příjmení VARCHAR (25) NOT NULL,
křestní jméno VARCHAR (25) NOT NULL,
reportsto INTEGER NULL);
Stejně jako u výše uvedeného příkladu si všimněte, že programovací konvence diktuje, že používáme všechna velká písmena pro klíčová slova SQL a malá písmena pro sloupce a tabulky pojmenované uživatelem. Výše uvedený příkaz se zpočátku může zdát matoucí, ale ve skutečnosti je za ním jednoduchá struktura. Zde je obecný pohled, který by mohl věci trochu vyjasnit:
VYTVOŘIT TABULKU název_tabulky
(možnosti datového typu název_atributu,
...,
možnosti atributu_název datového typu);
Atributy a datové typy
V předchozím příkladu je název tabulky zaměstnanci a my zahrnujeme čtyři atributy: identifikátor zaměstnance, příjmení, jméno a sestava. Datový typ označuje typ informací, které si přejeme uložit do každého pole. ID zaměstnance je jednoduché celé číslo, takže budeme používat datový typ INTEGER jak pro pole id zaměstnance, tak pro pole reportsto. Jména zaměstnanců budou řetězci znaků proměnné délky a neočekáváme, že by některý zaměstnanec měl jméno nebo příjmení delší než 25 znaků. Proto pro tato pole použijeme typ VARCHAR (25).
NULL hodnoty
Můžeme také určit NULL nebo NOT NULL v poli možností příkazu CREATE. Toto jednoduše řekne databázi, zda jsou pro tento atribut při přidávání řádků do databáze povoleny hodnoty NULL (nebo prázdné). V našem příkladu personální oddělení vyžaduje, aby pro každého zaměstnance bylo uloženo ID zaměstnance a celé jméno. Ne každý zaměstnanec má však manažera (generální ředitel se nikomu nehlásí!), Takže v tomto poli povolujeme NULL záznamy. Všimněte si, že NULL je výchozí hodnota a vynechání této možnosti implicitně povolí hodnoty NULL pro atribut.
Sestavení zbývajících tabulek
Nyní se podívejme na tabulku teritorií. Z rychlého pohledu na tato data se zdá, že musíme uložit celé číslo a dva řetězce s proměnnou délkou. Stejně jako v našem předchozím příkladu neočekáváme, že ID oblasti spotřebuje více než 25 znaků. Některá naše území však mají delší názvy, takže povolenou délku tohoto atributu rozšíříme na 40 znaků.
Podívejme se na odpovídající SQL:
VYTVOŘIT TABULKU území
(Teritoriální INTEGER NENÍ NULL,
území Popis VARCHAR (40) NOT NULL,
regionid VARCHAR (25) NOT NULL);
Nakonec použijeme tabulku EmployeeTerritories k uložení vztahů mezi zaměstnanci a teritoriemi. Podrobné informace o každém zaměstnanci a území jsou uloženy v našich předchozích dvou tabulkách. Proto do této tabulky potřebujeme uložit pouze dvě celočíselná identifikační čísla. Pokud potřebujeme rozšířit tyto informace, můžeme použít JOIN v našich příkazech pro výběr dat k získání informací z více tabulek.
Tato metoda ukládání dat snižuje redundanci v naší databázi a zajišťuje optimální využití prostoru na našich úložných jednotkách. Příkazu JOIN se budeme podrobně věnovat v budoucím výukovém programu. Tady je kód SQL pro implementaci naší finální tabulky:
VYTVOŘIT TABULKU zaměstnavatelská území
(zaměstnanec INTEGER NENÍ NULL,
teritoriální INTEGER NENÍ NULL);
Mechanismus SQL poskytuje možnost změnit strukturu databáze po vytvoření
Pokud jste dnes obzvlášť chytrí, možná jste si všimli, že jsme při implementaci našich databázových tabulek „omylem“ vynechali jeden z požadavků na design. Ředitel lidských zdrojů společnosti XYZ požadoval, aby databáze sledovala informace o platech zaměstnanců, a my jsme to zanedbali, abychom to poskytli v databázových tabulkách, které jsme vytvořili.
Vše však není ztraceno. K přidání tohoto atributu do naší existující databáze můžeme použít příkaz ALTER TABLE. Chceme plat uložit jako celočíselnou hodnotu. Syntaxe je velmi podobná syntaxi příkazu CREATE TABLE, zde je:
ALTER TABLE zaměstnanci
PŘIDAT plat INTEGER NULL;
Všimněte si, že jsme zadali, že pro tento atribut jsou povoleny hodnoty NULL. Ve většině případů neexistuje žádná možnost při přidávání sloupce do existující tabulky. To je způsobeno skutečností, že tabulka již obsahuje řádky bez záznamu pro tento atribut. Proto DBMS automaticky vloží hodnotu NULL k vyplnění prázdnoty.