Är du redo att börja skapa databaser och tabeller med det strukturerade frågetalet? I den här artikeln utforskar vi processen för att skapa tabeller manuellt med kommandona CREATE DATABASE och CREATE TABLE. Om du är ny på SQL, kanske du vill granska några SQL-basics först.
Företagskrav
Innan vi sätter oss ner på tangentbordet måste vi se till att vi har en god 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 suttit ner hos XYZs personalchef har vi lärt oss att de är ett widgetförsäljningsföretag och är främst intresserade av att spåra information om deras säljare.
XYZ Corporation delar sin försäljningskraft i östra och västra regioner, som var och en är indelad i många territorier som omfattas av enskilda försäljningsrepresentanter. HR-avdelningen vill spåra det område som varje anställd täcker samt varje anställdas löninformation och övervakningsstruktur. För att uppfylla dessa krav har vi utformat en databas som består av tre tabeller, som visas i Entity-Relationship-diagrammet på den här sidan.
Välja en databasplattform
Vi har bestämt oss för att använda ett databashanteringssystem (eller DBMS) som bygger på Structured Query Language (SQL). Därför bör alla våra databas- och tabellkommandon kommandon skrivas med standard ANSI SQL i åtanke.
Som en tillägg kommer användningen av ANSI-kompatibel SQL att säkerställa 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, går Database Software Options dig igenom valprocessen.
Skapa databasen
Vårt första steg är att skapa databasen själv. Många databashanteringssystem erbjuder en rad alternativ för att anpassa databasparametrar vid detta steg, men vår databas tillåter bara den enkla skapandet av en databas. Som med alla våra kommandon kanske du önskar att konsultera 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
Observera den kapitalisering som används i exemplet ovan. Det är vanligt att SQL-programmerare använder alla stora bokstäver för SQL-nyckelord som "CREATE" och "DATABASE", medan alla små bokstäver används för användardefinierade namn som "personal" -databasens namn. Dessa konventioner ger 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 Corporation personaldata. Vårt första bord 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 en bra designpraxis att separera de sista och förnamnen i separata fält för att förenkla datasökning och sortering i framtiden. Vi håller också koll på varje anställds chef genom att lägga in en hänvisning till chefsansvarets ID i varje anställningsrekord. Låt oss först titta på önskad personalbord. Rapporterna till attributet lagrar managerns ID för varje anställd. Från de visade urvalet kan vi bestämma att Sue Scampi är chef för både Tom Kendall och John Smith. Det finns dock ingen information i databasen på Sue's manager, som indikeras av NULL-posten i hennes rad. Nu kan vi använda SQL för att skapa bordet 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: USE personal;
Alternativt kan "DATABASE personal" 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 bord: CREATE TABLE anställda (anställd INTEGER INTE NULL, efternamn VARCHAR (25) INTE NULL, förnamn VARCHAR (25) NOT NULL, reportto INTEGER NULL);
Som med ovanstående exempel, notera att programmeringskonventionen dikterar att vi använder alla stora bokstäver för SQL-nyckelord och små bokstäver för användarnamnet kolumner och tabeller. Kommandot ovan kan verka förvirrande först, men det finns faktiskt en enkel struktur bakom den. Här är en generaliserad vy som kan rensa saker upp lite: Skapa tabell tabellnamn (attributnamn datatypalternativ, …, attributnamn datatypalternativ); I föregående exempel är tabellnamnet anställda och vi inkluderar fyra attribut: anställd, efternamn, förnamn och reportto. Datatypen anger vilken typ av information vi vill lagra i varje fält. Medarbetar-ID är ett enkelt heltal, så vi använder INTEGER-datatypen för både employeeid-fältet och fältet reportto. Medarbetarnas namn kommer att vara teckensträngar av varierande längd och vi förväntar oss inte att någon anställd har ett för- eller efternamn längre än 25 tecken. Därför använder vi VARCHAR-typen (25) för dessa fält. Vi kan också ange antingen NULL eller NOT NULL i alternativfältet i CREATE-satsen. Detta berättar helt enkelt till 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 ska sparas för varje anställd. Men inte varje anställd 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. Låt oss nu titta på territoriet bordet. Från en snabb titt på dessa data verkar det som om vi behöver lagra ett heltal och två strängar med variabel längd. Precis som med vårt tidigare exempel förväntar vi oss inte att region-idet förbrukar mer än 25 tecken. Vissa av våra territorier har dock längre namn, så vi utvidgar den tillåtna längden på det attributet till 40 tecken. Låt oss titta på motsvarande SQL: Skapa TABLE-territorier (territoryid INTEGER NOT NULL, territorium Beskrivning VARCHAR (40) NOT 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 tidigare två tabeller. Därför behöver vi bara lagra de två integeridentifieringsnumren i den här tabellen. Om vi behöver expandera denna information kan vi använda en JOIN i våra kommandon för val av dataval för att få information från flera tabeller. Denna metod att lagra data minskar redundansen i vår databas och garanterar optimal användning av utrymme på våra lagringsenheter. Vi kommer att täcka kommandot JOIN i djupet i en framtida handledning. Här är SQL-koden för att implementera vårt finalbord: CREATE TABLE employeeterritories (anställd INTEGER INTE NULL, territoryid INTEGER NOT NULL); Om du är särskilt smart idag har du kanske märkt att vi av misstag utelämnade ett av designkraven när vi genomförde våra databas tabeller. XYZ Abp: s HR-direktör begärde att databasen spårar anställdas löninformation och vi försummade att tillhandahålla detta i databastabellerna vi skapade. Men allt är inte förlorat. Vi kan använda kommandot ALTER TABLE för att lägga till det här attributet i vår befintliga databas. Vi vill lagra lön som ett heltal. Syntaxen är ganska lik den för CREATE TABLE-kommandot, här är det: ALTER TABLE anställda ADD lön INTEGER NULL;
Observera att vi angav 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å det faktum att tabellen redan innehåller rader utan post för detta attribut. Därför sätter DBMS automatiskt ett NULL-värde för att fylla tomrummet. Skapa vårt första bord
Attribut och datatyper
NULL värden
Bygga de återstående tabellerna
Mekanismen SQL tillhandahåller att ändra strukturen i en databas efter skapandet