Skapa databaser och tabeller i SQL

Är du redo att börja skapa databaser och tabeller med Structured Query Language? I den här artikeln undersöker vi processen att skapa tabeller manuellt med kommandona CREATE DATABASE och CREATE TABLE. Om du är ny på SQL kanske du vill granska några SQL-grunder först.

Affärskrav

Innan vi sätter oss vid tangentbordet måste vi se till att vi har en gedigen förståelse för kundens krav. Vad är det bästa sättet att få denna insikt? Prata med kunden, förstås! Efter att ha satt oss ner med XYZs personalchef har vi lärt oss att de är ett widgetförsäljningsföretag och främst är intresserade av att spåra information om sin säljpersonal.

XYZ Corporation delar upp sin säljstyrka i östra och västra regioner, som var och en är indelad i många territorier som omfattas av enskilda säljare. HR-avdelningen vill spåra det område som täcks av varje anställd samt varje anställds löneinformation och tillsynsstruktur. För att uppfylla dessa krav har vi utformat en databas som består av tre tabeller, som visas i Enhets-förhållande diagram på den här sidan.

instagram viewer

Välja en databasplattform

Vi har bestämt oss för att använda en databashanteringssystem (eller DBMS) som bygger på Structured Query Language (SQL). Därför bör alla våra kommandon för att skapa databaser och tabeller skrivas med standard ANSI SQL i åtanke.

Som en extra fördel kommer användning av ANSI-kompatibel SQL att se till att dessa kommandon fungerar på alla DBMS som stöder SQL-standarden, inklusive Oracle och Microsoft SQL Server. Om du inte har valt en plattform för din databas ännu, leder databasprogramvarualternativ dig genom urvalsprocessen.

Skapa databasen

Vårt första steg är att skapa själva databasen. Många databashanteringssystem erbjuder en serie alternativ för att anpassa databasparametrar i det här steget, men vår databas tillåter endast enkel skapande av en databas. Som med alla våra kommandon kanske du vill läsa dokumentationen för ditt DBMS för att avgöra om några avancerade parametrar som stöds av ditt specifika system uppfyller dina behov. Låt oss använda kommandot CREATE DATABASE för att ställa in vår databas:

SKAPA DATABASE-personal

Notera den stora bokstaven som används i exemplet ovan. Det är vanligt för SQL-programmerare att använda alla versaler för SQL-nyckelord som "CREATE" och "DATABAS" medan alla små bokstäver används för användardefinierade namn som "personal" -databasen namn. Dessa konventioner möjliggör enkel läsbarhet.

Nu när vi har utformat och skapat vår databas är vi redo att börja skapa de tre tabellerna som används för att lagra XYZ Corporations personaldata.

Skapa vårt första bord

Vår första tabell består av personuppgifter för varje anställd i vårt företag. Vi måste inkludera varje anställds namn, lön, ID och chef. Det är god designpraxis att separera efternamn och förnamn i separata fält för att förenkla datasökning och sortering i framtiden. Vi kommer också att hålla reda på varje anställds chef genom att infoga en referens till chefens anställd-ID i varje anställdspost. Låt oss först ta en titt på önskat anställdstabell.

Attributet ReportsTo lagrar chefs-ID för varje anställd. Från de exemplar som visas kan vi fastställa att Sue Scampi är chef för både Tom Kendall och John Smith. Det finns dock ingen information i databasen om Sue's manager, vilket anges av NULL-posten i hennes rad.

Nu kan vi använda SQL för att skapa tabellen i vår personaldatabas. Innan vi gör det, låt oss se till att vi är i rätt databas genom att utfärda ett USE-kommando:

ANVÄNDA personal;

Alternativt kan "DATABASE-personalen;" kommandot skulle utföra samma funktion. Nu kan vi ta en titt på SQL-kommandot som används för att skapa våra anställdas tabell:

SKAPA TABELL anställda
(medarbetare INTEGER INTE NULL,
efternamn VARCHAR (25) INTE NULL,
förnamn VARCHAR (25) INTE NULL,
rapporterar till INTEGER NULL);

Som med exemplet ovan, notera att programmeringskonventionen dikterar att vi använder alla stora bokstäver för SQL-nyckelord och små bokstäver för användarnamn kolumner och tabeller. Kommandot ovan kan tyckas förvirrande först, men det finns faktiskt en enkel struktur bakom det. Här är en generaliserad vy som kan rensa upp saker:

SKAPA TABELL tabellnamn
(attribut_name datatypalternativ,
...,
attribut_name datatypalternativ);

Attribut och datatyper

I föregående exempel är tabellnamnet anställda och vi inkluderar fyra attribut: anställd, efternamn, förnamn och rapport till. Datatypen anger vilken typ av information vi vill lagra i varje fält. Anställds-ID: t är ett enkelt heltal, så vi använder INTEGER-datatypen för både medarbetaridfältet och rapportfältet. Anställdas namn kommer att vara teckensträngar med variabel längd och vi förväntar oss inte att någon anställd har ett för- eller efternamn som är längre än 25 tecken. Därför använder vi typen VARCHAR (25) för dessa fält.

NULL Värden

Vi kan också ange antingen NULL eller INTE NULL i alternativfältet i CREATE-uttalandet. Detta berättar helt enkelt databasen om NULL (eller tomma) värden är tillåtna för det attributet när du lägger till rader i databasen. I vårt exempel kräver HR-avdelningen att ett anställd ID och fullständigt namn lagras för varje anställd. Men inte alla anställda har en chef (VD rapporterar till ingen!) Så vi tillåter NULL-poster i det fältet. Observera att NULL är standardvärdet och att utelämna detta alternativ tillåter implicit NULL-värden för ett attribut.

Bygga de återstående tabellerna

Låt oss nu titta på territorietabellen. Från en snabb titt på dessa data verkar det som om vi måste lagra ett heltal och två strängar med variabel längd. Som med vårt tidigare exempel, förväntar vi oss inte att Region-IDen förbrukar mer än 25 tecken. Vissa av våra territorier har dock längre namn, så vi utökar den tillåtna längden på det attributet till 40 tecken.

Låt oss titta på motsvarande SQL:

SKAPA TABELL-territorier
(territoriumid INTEGER INTE NULL,
territorium Beskrivning VARCHAR (40) INTE NULL,
regionid VARCHAR (25) NOT NULL);

Slutligen använder vi tabellen EmployeeTerritories för att lagra relationerna mellan anställda och territorier. Detaljerad information om varje anställd och territorium lagras i våra två tidigare tabeller. Därför behöver vi bara lagra de två heltalsidentifieringsnumren i denna tabell. Om vi ​​behöver utöka denna information kan vi använda JOIN i våra datavalskommandon för att få information från flera tabeller.

Denna metod för lagring av data minskar redundansen i vår databas och säkerställer optimal användning av utrymme på våra lagringsenheter. Vi kommer att täcka JOIN-kommandot på djupet i en framtida handledning. Här är SQL-koden för att implementera vår finaltabell:

SKAPA TABELL anställda
(medarbetare INTEGER INTE NULL,
territorium INTEGER INTE NULL);

Mekanismen SQL tillhandahåller för att ändra strukturen i en databas efter skapandet

Om du är särskilt skicklig idag kanske du har märkt att vi "av misstag" utelämnade ett av designkraven när vi implementerade våra databastabeller. XYZ Corporations HR-chef begärde att databasen skulle spåra anställdas löneinformation och vi försummade att tillhandahålla detta i databastabellerna vi skapade.

Men allt går inte förlorat. Vi kan använda ALTER TABLE-kommandot för att lägga till detta attribut i vår befintliga databas. Vi vill lagra lönen som ett heltal. Syntaxen liknar den för kommandot CREATE TABLE, här är den:

ALTER TABLE anställda
LÄGG TILL LÖN INTEGER NULL;

Observera att vi specificerade att NULL-värden är tillåtna för detta attribut. I de flesta fall finns det inget alternativ när du lägger till en kolumn i en befintlig tabell. Detta beror på att tabellen redan innehåller rader utan post för detta attribut. Därför infogar DBMS automatiskt ett NULL-värde för att fylla tomrummet.