Skip to main content

Databases en tabellen maken in SQL

Create MySQL Database - MySQL Workbench Tutorial (Juni- 2025)

Create MySQL Database - MySQL Workbench Tutorial (Juni- 2025)
Anonim

Ben je klaar om te beginnen met het maken van databases en tabellen met de gestructureerde zoekopdrachttaal? In dit artikel verkennen we het handmatig aanmaken van tabellen met de opdrachten CREATE DATABASE en CREATE TABLE. Als u nog niet bekend bent met SQL, wilt u misschien eerst enkele SQL-basics bekijken.

Zakelijke vereisten

Voordat we aan het toetsenbord gaan zitten, moeten we ervoor zorgen dat we een goed begrip hebben van de vereisten van de klant. Wat is de beste manier om dit inzicht te verkrijgen? Praten met de klant, natuurlijk! Nadat we met de Human Resources Director van XYZ hebben gezeten, hebben we geleerd dat ze een widgetverkoopbedrijf zijn en vooral geïnteresseerd zijn in het volgen van informatie over hun verkooppersoneel.

XYZ Corporation verdeelt zijn verkoopafdeling in oostelijke en westelijke regio's, die elk zijn onderverdeeld in vele gebieden die door individuele verkoopvertegenwoordigers worden bestreken. De HR-afdeling wil het grondgebied van elke werknemer volgen, evenals de salarisinformatie en toezichtstructuur van elke medewerker. Om aan deze vereisten te voldoen, hebben we een database ontworpen die uit drie tabellen bestaat, die worden weergegeven in het diagram Entity-Relationship op deze pagina.

Een databaseplatform kiezen

We hebben besloten om een ​​databasebeheersysteem (of DBMS) te gebruiken dat is gebaseerd op de Structured Query Language (SQL). Daarom moeten al onze opdrachten voor het maken van databases en tabellen worden geschreven met standaard ANSI SQL in gedachten.

Als extra voordeel zorgt het gebruik van ANSI-compatibele SQL ervoor dat deze opdrachten werken op elke DBMS die de SQL-standaard ondersteunt, waaronder Oracle en Microsoft SQL Server. Als u nog geen platform voor uw database hebt geselecteerd, leidt Database Software Options u door het selectieproces.

De database maken

Onze eerste stap is om de database zelf te maken. Veel databasebeheersystemen bieden een reeks opties om databaseparameters in deze stap aan te passen, maar onze database staat alleen de eenvoudige aanmaak van een database toe. Zoals met al onze opdrachten, kunt u de documentatie van uw DBMS raadplegen om te bepalen of geavanceerde parameters die door uw specifieke systeem worden ondersteund, aan uw behoeften voldoen. Laten we de CREATE DATABASE-opdracht gebruiken om onze database in te stellen:

CREATE DATABASE-personeel

Let vooral op het hoofdlettergebruik in het bovenstaande voorbeeld. Het is gebruikelijk onder SQL-programmeurs om alle hoofdletters te gebruiken voor SQL-trefwoorden zoals "CREATE" en "DATABASE", terwijl alle kleine letters worden gebruikt voor door de gebruiker gedefinieerde namen, zoals de naam van de "personeel" -database. Deze conventies zorgen voor eenvoudige leesbaarheid.

Nu we onze database hebben ontworpen en gemaakt, zijn we klaar om de drie tabellen te maken die worden gebruikt voor het opslaan van de personeelsgegevens van XYZ Corporation.

Onze eerste tabel maken

Onze eerste tabel bestaat uit de persoonlijke gegevens voor elke medewerker van ons bedrijf. We moeten de naam, het salaris, de ID en de manager van elke medewerker vermelden. Het is een goede ontwerppraktijk om de voor- en achternamen te scheiden in afzonderlijke velden om het zoeken en sorteren van gegevens in de toekomst te vereenvoudigen. We houden ook de manager van elke medewerker bij door een verwijzing naar de medewerker-ID van de manager in elk werknemersrecord in te voegen. Laten we eerst eens kijken naar de gewenste medewerkerstafel.

Het kenmerk ReportsTo slaat de manager-ID op voor elke medewerker. Uit de getoonde voorbeeldrecords kunnen we vaststellen dat Sue Scampi de manager is van zowel Tom Kendall als John Smith. Er is echter geen informatie in de database over Sue's manager, zoals aangegeven door de NULL-vermelding in haar rij.

Nu kunnen we SQL gebruiken om de tabel in onze personeelsdatabase te maken. Voordat we dit doen, zorgen we ervoor dat we in de juiste database zitten door een USE-opdracht te geven:

GEBRUIK personeel;

Als alternatief kan het "DATABASE-personeel"; commando zou dezelfde functie uitvoeren. Nu kunnen we de SQL-opdracht bekijken die is gebruikt om de tabel van onze medewerkers te maken:

CREATE TABLE-medewerkers (employeeid INTEGER NOT NULL, achternaam VARCHAR (25) NOT NULL, voornaam VARCHAR (25) NOT NULL, rapportsto INTEGER NULL);

Zoals met het bovenstaande voorbeeld, moet u er rekening mee houden dat de programmeerconventie dicteert dat we alle hoofdletters gebruiken voor SQL-sleutelwoorden en kleine letters voor kolommen en tabellen met de naam van de gebruiker. Het bovenstaande commando lijkt in eerste instantie verwarrend, maar er zit eigenlijk een eenvoudige structuur achter. Hier is een algemene weergave die misschien een beetje opheldert:

MAAK TAFEL table_name (attribute_name datatype opties, …, attribute_name datatype options);

Attributen en gegevenstypen

In het vorige voorbeeld is de tabelnaam werknemers en omvatten we vier kenmerken: employeeid, achternaam, voornaam en rapportstatus. Het datatype geeft het type informatie aan dat we in elk veld willen opslaan. De werknemer-ID is een eenvoudig geheel getal, dus we zullen het INTEGER-gegevenstype gebruiken voor zowel het veld employeeid als het veld reportsto. De namen van de werknemers zijn tekenreeksen van variabele lengte en we verwachten niet dat een werknemer een voor- of achternaam heeft die langer is dan 25 tekens. Daarom gebruiken we het VARCHAR (25) -type voor deze velden.

NULL-waarden

We kunnen ook NULL of NOT NULL opgeven in het optieveld van de CREATE-instructie. Dit vertelt de database eenvoudig of NULL (of lege) waarden zijn toegestaan ​​voor dat kenmerk bij het toevoegen van rijen aan de database. In ons voorbeeld vereist de HR-afdeling dat een werknemers-ID en volledige naam voor elke medewerker worden opgeslagen. Niet elke werknemer heeft echter een manager (de CEO rapporteert aan niemand!), Dus we staan ​​NULL-vermeldingen toe op dat gebied.Let op: NULL is de standaardwaarde en als u deze optie weglaat, worden impliciet NULL-waarden voor een kenmerk toegestaan.

De overgebleven tafels bouwen

Laten we nu de territorietabel bekijken. Van een snelle blik op deze gegevens, lijkt het erop dat we een string met een integer en twee variabele lengte moeten opslaan. Net als bij ons vorige voorbeeld verwachten we niet dat de regiocode meer dan 25 tekens zal bevatten. Sommige van onze territoria hebben echter langere namen, dus we breiden de toegestane lengte van dat kenmerk uit tot 40 tekens.

Laten we naar de bijbehorende SQL kijken:

MAAK TAFEL-territoria (territoryid INTEGER NOT NULL, territorium Beschrijving VARCHAR (40) NOT NULL, regionid VARCHAR (25) NOT NULL);

Ten slotte gebruiken we de tabel EmployeeTerritories om de relaties tussen werknemers en territoria op te slaan. Gedetailleerde informatie over elke medewerker en elk territorium wordt opgeslagen in onze vorige twee tabellen. Daarom hoeven we alleen de twee geheeltallige getalnummers in deze tabel op te slaan. Als we deze informatie moeten uitbreiden, kunnen we JOIN gebruiken in onze opdrachten voor gegevensselectie om informatie uit meerdere tabellen te verkrijgen.

Deze methode voor het opslaan van gegevens vermindert de redundantie in onze database en zorgt voor optimaal gebruik van de ruimte op onze opslagstations. We zullen de JOIN-opdracht uitvoerig behandelen in een toekomstige zelfstudie. Hier is de SQL-code om onze finaletafel te implementeren:

CREËER TABEL werknemerseigenaren (employeeid INTEGER NOT NULL, territoryid INTEGER NOT NULL);

De mechanisme-SQL biedt de mogelijkheid om de structuur van een database na het maken te wijzigen

Als u vandaag bijzonder alert bent, is het u misschien opgevallen dat we bij het implementeren van onze databasetabellen "per ongeluk" één van de ontwerpvereisten hebben weggelaten. De HR-directeur van XYZ Corporation verzocht de database om de salarisinformatie voor medewerkers te volgen en we verzuimden dit te regelen in de databasetabellen die we hebben gemaakt.

Echter, alles is niet verloren. We kunnen de opdracht ALTER TABLE gebruiken om dit kenmerk toe te voegen aan onze bestaande database. We willen het salaris opslaan als een geheel getal. De syntaxis lijkt veel op die van de opdracht CREATE TABLE, hier is het:

ALTER TABLE-medewerkers VOER het salaris INTEGER NULL TOE;

We hebben aangegeven dat NULL-waarden zijn toegestaan ​​voor dit kenmerk. In de meeste gevallen is er geen optie bij het toevoegen van een kolom aan een bestaande tabel. Dit komt door het feit dat de tabel al rijen bevat zonder invoer voor dit kenmerk. Daarom voegt de DBMS automatisch een NULL-waarde in om de leegte te vullen.