Inleiding
MySQL onderhoudt de gegevens die het beheert in tabellen en databases. Tabellen slaan gegevens op binnen vooraf gedefinieerde schema's van kolommen en gegevenstypen. Databases zijn een structuur die meerdere tabellen, indexen, procedures kan bevatten en kan helpen bij het definiëren van een bereik voor privileges, aanpassingen en meer.
In deze handleiding laten we u zien hoe u tabellen en databases maakt in MySQL. We laten u zien hoe u sommige functies van beide structuren kunt beheren en vervolgens hoe u ze kunt verwijderen om ze op te schonen als u ze niet langer nodig hebt.
Vereisten
Om deze handleiding te volgen, moet u inloggen op een MySQL-server met een gebruiker met beheerdersrechten met behulp van de mysql
opdrachtregelclient.
Als u niet wilt inloggen met de root
MySQL-beheerdersaccount, uw gebruiker heeft minimaal de CREATE
. nodig privilege om de acties uit te voeren die in deze handleiding worden beschreven.
U kunt de beschikbare rechten van uw gebruiker controleren door te typen:
SHOW GRANTS\G
Hoe maak je een nieuwe database aan?
Het eerste dat we zullen laten zien hoe u dit moet doen, is een nieuwe database maken. In MySQL bevatten databases tabellen, indexen, procedures en andere bronnen die doorgaans betrekking hebben op een enkel project. Elk van deze bronnen moet in een database worden gemaakt, dus het is een goede eerste stap om te leren hoe u een nieuwe database kunt maken.
De basissyntaxis die wordt gebruikt om een nieuwe database te maken, ziet er als volgt uit:
CREATE DATABASE <db_name>;
Vervang <db_name>
met de naam die u aan uw database wilt geven voordat u de opdracht uitvoert. Deze opdracht maakt een database aan met de opgegeven naam en stelt de huidige gebruiker in als de eigenaar van de nieuwe database.
De database gebruikt de systeembrede standaardwaarden voor de karakterset, sortering en coderingseigenschappen:
- KARAKTERSET: stelt de tekenset voor de nieuwe database in. Dit is een lokalisatie-optie die van invloed is op welke tekens worden beschouwd als hoofdletters, kleine letters en cijfers.
- VERZAMELEN: stelt de sortering in , of sorteervolgorde voor de database. Dit is een lokalisatieoptie die bepaalt hoe artikelen worden georganiseerd wanneer ze worden besteld.
- ENCRYPTIE: stelt codering in voor de nieuwe database. Dit is een booleaanse optie die 'Y' voor ja of 'N' voor nee kan zijn.
U kunt de beschikbare tekensets voor uw installatie vinden door te typen:
SHOW CHARACTER SET;
Op dezelfde manier kunt u de beschikbare sorteringen vinden door te typen:
SHOW COLLATION;
Als u een niet-standaardwaarde voor een van deze parameters wilt specificeren, kunt u dit doen door ze als volgt toe te voegen na de hoofdaanmaakopdracht:
CREATE DATABASE <db_name> CHARACTER SET = 'utf8mb4' COLLATE = 'utf8mb4_0900_ai_ci' ENCRYPTION = 'Y';
Om de voorbeelden in deze handleiding te volgen, maakt u een database met de naam school
met behulp van de standaard landinstellingen van uw instantie en de UTF8-tekenset:
CREATE DATABASE school CHARACTER SET = 'utf8mb4';
Hiermee wordt uw nieuwe database gemaakt met behulp van de specificaties die u heeft opgegeven.
Bestaande databases weergeven
Om een lijst te maken van de databases die beschikbaar zijn op uw server, typt u:
SHOW DATABASES;
Dit geeft een lijst van alle databases die momenteel in de omgeving zijn gedefinieerd:
+--------------------+ Database |+--------------------+ information_schema | mysql | performance_schema | school | sys | testing |+--------------------+6 rows in set (0.00 sec)
U kunt controleren of de door u opgegeven instellingen zijn toegepast op de nieuwe school
database met behulp van de SHOW CREATE DATABASE
commando:
SHOW CREATE DATABASE school;
De uitvoer toont de opdracht en opties die zijn gebruikt om de database te maken, waarbij de opties worden opgevuld met de toegepaste standaardwaarden:
+----------+----------------------------------------------------------------------------------------------------------------------------------+ Database | Create Database |+----------+----------------------------------------------------------------------------------------------------------------------------------+ school | CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |+----------+----------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)
Hoe over te schakelen naar een andere database in MySQL
Zodra uw database is gemaakt, kunt u er op verschillende manieren mee werken.
De eerste optie is om de database als argument op te geven in elke opdracht die u gebruikt. Om tijd te besparen als u meerdere opdrachten uitvoert die verband houden met de databaseobjecten, kunt u de database ook "overschakelen naar" of "gebruiken" om uw nieuwe database in te stellen als de standaardcontext voor alle databasegerelateerde opdrachten die u gaat uitvoeren .
Om naar een andere database te gaan, typt u:
USE <db_name>;
In ons geval kunnen we overschakelen naar de school
database die we hebben gemaakt door te typen:
USE school;
Maak tabellen in databases
Nadat u een database hebt gemaakt, kunt u tabellen en andere objecten binnenin definiëren om uw gegevens op te slaan en te beheren. In MySQL bestaan tabellen uit een tabelnaam, de kolomdefinities (deze bevatten op hun beurt onder meer namen, gegevenstypen en beperkingen) en tabelopties.
Wat is de syntaxis van MySQL's CREATE TABLE
commando?
De basissyntaxis om tabellen te maken met MySQL's CREATE TABLE
commando ziet er als volgt uit:
CREATE TABLE <table_name> ( <column_name> <data_type> [<column_constraint>], [<table_constraint>,]);
We kunnen bovenstaande opdrachtsjabloon opsplitsen in de volgende componenten:
CREATE TABLE <table_name>
:De basiscreatieverklaring. De<table_name>
tijdelijke aanduiding moet worden vervangen door de naam van de tabel die u wilt gebruiken.<column_name> <data_type>
:definieert een basiskolom in de tabel. De<column_name>
tijdelijke aanduiding moet worden vervangen door de naam die u voor uw kolom wilt gebruiken. De<data_type>
specificeert het MySQL-gegevenstype van de kolom. Gegevens die in de tabel zijn opgeslagen, moeten voldoen aan de kolomstructuur en kolomgegevenstypen om te worden geaccepteerd.<column_constraint>
:Kolombeperkingen zijn optionele beperkingen die aanvullende vereisten voor gegevens toevoegen. U kunt bijvoorbeeld eisen dat invoeren geen null, unieke of positieve gehele getallen zijn.<table_constraint>
:Tabelbeperkingen zijn vergelijkbaar met kolombeperkingen, maar omvatten de interactie van meerdere kolommen. U kunt bijvoorbeeld een tabelbeperking hebben die controleert of eenDATE_OF_BIRTH
is vóórDATE_OF_DEATH
in een tabel.
Hoe maak je alleen tabellen als ze nog niet bestaan?
Het standaardgedrag van MySQL is om een fout te genereren als u een tabel probeert te maken die al bestaat. Echter, de optionele IF NOT EXISTS
clausule kan worden toegevoegd aan de aanmaakopdracht om dit gedrag te negeren.
U kunt de IF NOT EXISTS
. gebruiken clausule door deze in de opdracht in te voegen na de CREATE TABLE
zin maar voor de tabelnaam:
CREATE TABLE IF NOT EXISTS table_name ( column_name TYPE [column_constraint], [table_constraint,]);
Dit zal het gedrag van de opdracht als volgt wijzigen:Als de opgegeven tabelnaam al bestaat, zal MySQL een waarschuwing geven in plaats van een fout. De rest van het commandogedrag blijft hetzelfde.
Tabellen maken in MySQL-databases
De hierboven gegeven opdrachtsjabloon is voldoende om basistabellen te maken. Om ons voorbeeld te verbeteren, maken we twee tabellen in onze school
databank. Eén tafel heet supplies
en de andere zal teachers
genoemd worden :
In de supplies
tabel, nemen we de volgende velden op:
- id: Een unieke ID voor elk type schoolbenodigdheden.
- naam: De naam van een specifiek schoolitem.
- beschrijving: Een korte beschrijving van het item.
- fabrikant: De naam van de fabrikant van het artikel.
- kleur: De kleur van het item.
- inventaris: Het aantal artikelen dat we hebben voor een bepaald type schoolspullen. Dit mag nooit minder dan 0 zijn.
We kunnen de supplies
. maken tabel met de bovenstaande eigenschappen met behulp van de volgende SQL:
CREATE TABLE supplies ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), description VARCHAR(255), manufacturer VARCHAR(255), color VARCHAR(255), inventory INT CHECK (inventory >= 0));
Hiermee worden de supplies
. gemaakt tabel binnen de school
databank. De PRIMARY KEY
kolombeperking is een speciale beperking die wordt gebruikt om kolommen aan te geven die op unieke wijze records in de tabel kunnen identificeren. Als zodanig geeft de beperking aan dat de kolom niet null kan zijn en uniek moet zijn. MySQL maakt indexen voor kolommen met primaire sleutels om de querysnelheid te verhogen.
Controleer of de nieuwe tabel aanwezig is door te typen:
SHOW TABLES;
+------------------+ Tables_in_school |+------------------+ supplies |+------------------+1 row in set (0.01 sec)
U kunt controleren of het schema uw definitie weerspiegelt door te typen:
SHOW CREATE TABLE supplies\G
*************************** 1. row *************************** Table: suppliesCreate Table: CREATE TABLE `supplies` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `description` varchar(255) DEFAULT NULL, `manufacturer` varchar(255) DEFAULT NULL, `color` varchar(255) DEFAULT NULL, `inventory` int DEFAULT NULL, PRIMARY KEY (`id`), CONSTRAINT `supplies_chk_1` CHECK ((`inventory` >= 0))) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.00 sec
De kolommen, gegevenstypen en beperkingen die we hebben opgegeven, zijn aanwezig in de uitvoer, hoewel de volgorde en weergave mogelijk anders zijn.
Maak vervolgens een teachers
tafel. In deze tabel moeten de volgende kolommen aanwezig zijn:
- id :Een uniek werknemersidentificatienummer.
- voornaam :De voornaam van de leraar.
- achternaam :De achternaam van de leraar.
- onderwerp :Het vak waarvoor de leraar wordt ingehuurd om les te geven.
- grade_level :Het niveau van de studenten waarvoor de docent is ingehuurd om les te geven.
Maak de teachers
tabel met het bovenstaande schema met de volgende SQL:
CREATE TABLE teachers ( id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(255), last_name VARCHAR(255), subject VARCHAR(255), grade_level INT);
Tabellen maken met primaire sleutels en externe sleutels
U kunt informatie vinden over het maken van tabellen met primaire en externe sleutels in enkele van onze andere MySQL-handleidingen. Primaire sleutels en externe sleutels zijn beide typen databasebeperkingen binnen MySQL.
Een primaire sleutel is een speciale kolom of kolom die gegarandeerd uniek is voor alle rijen binnen dezelfde tabel. Alle primaire sleutels kunnen worden gebruikt om een specifieke rij uniek te identificeren. Primaire sleutels zorgen er niet alleen voor dat elke rij een unieke waarde heeft voor de primaire sleutelkolommen, ze zorgen er ook voor dat geen rijen NULL
bevatten waarden voor die kolom. Vaak gebruikt de primaire sleutel in MySQL het volgende formaat om een automatisch toegewezen oplopende primaire sleutel op te geven:id INT AUTO_INCREMENT PRIMARY KEY
.
Vreemde sleutels zijn een manier om ervoor te zorgen dat een kolom of kolommen in de ene tabel overeenkomen met de waarden in een andere tabel. Dit helpt om de referentiële integriteit tussen tabellen te waarborgen.
Tabellen bekijken in MySQL
In MySQL kun je tabellen op verschillende manieren weergeven, afhankelijk van de informatie die je zoekt.
Als u wilt zien welke tabellen beschikbaar zijn in uw database, typt u:
SHOW TABLES;
+------------------+ Tables_in_school |+------------------+ supplies | teachers |+------------------+2 rows in set (0.00 sec)
U kunt ook controleren of het schema voor de tabel overeenkomt met uw specificaties:
DESCRIBE teachers;
+--------------+--------------+------+-----+---------+----------------+ Field | Type | Null | Key | Default | Extra |+--------------+--------------+------+-----+---------+----------------+ id | int | NO | PRI | NULL | auto_increment | name | varchar(255) | YES | | NULL | | description | varchar(255) | YES | | NULL | | manufacturer | varchar(255) | YES | | NULL | | color | varchar(255) | YES | | NULL | | inventory | int | YES | | NULL | |+--------------+--------------+------+-----+---------+----------------+6 rows in set (0.00 sec)
De teachers
tabel lijkt overeen te komen met onze definitie.
Tabellen wijzigen met de ALTER TABLE
commando
Als u het schema van een bestaande tabel in MySQL moet wijzigen, kunt u de ALTER TABLE
gebruiken opdracht. De ALTER TABLE
commando lijkt erg op het CREATE TABLE
commando, maar werkt op een bestaande tafel.
Tabelsyntaxis wijzigen
De basissyntaxis voor het wijzigen van tabellen in MySQL ziet er als volgt uit:
ALTER TABLE <table_name> <change_command> <change_parameters>;
De <change_command>
geeft het exacte type wijziging aan dat u wilt aanbrengen, of het nu gaat om het instellen van verschillende opties op de tabel, het toevoegen of verwijderen van kolommen of het wijzigen van typen of beperkingen. De <change_parameters>
een deel van de opdracht bevat aanvullende informatie die MySQL nodig heeft om de wijziging te voltooien.
Kolommen aan tabellen toevoegen
U kunt een kolom toevoegen aan een MySQL-tabel met de ADD
opdracht wijzigen. De wijzigingsparameters bevatten de kolomnaam, het type en de opties, net zoals u ze zou specificeren in de CREATE TABLE
commando.
Om bijvoorbeeld een kolom toe te voegen met de naam missing_column
van de text
typ naar een tabel met de naam some_table
, typ je:
ALTER TABLE some_table ADD missing_column text;
Kolommen uit tabellen verwijderen
Als u in plaats daarvan een bestaande kolom wilt verwijderen, kunt u de DROP COLUMN
gebruiken commando in plaats daarvan. U moet de naam opgeven van de kolom die u wilt verwijderen als wijzigingsparameter:
ALTER TABLE some_table DROP COLUMN useless_column;
Het gegevenstype van een kolom wijzigen
Om het gegevenstype van een kolom te wijzigen, kunt u ALTER COLUMN
. gebruiken verander commando met de MODIFY COLUMN
kolom commando. De parameters in deze context omvatten de kolomnaam en het nieuwe type:
ALTER TABLE resident MODIFY COLUMN id INT;
Andere tabelwijzigingen
Veel andere soorten wijzigingen kunnen worden bereikt met de ALTER TABLE
opdracht. Voor meer informatie over de beschikbare opties, bekijk de officiële MySQL-documentatie voor ALTER TABLE
.
Drop tabellen
Als u een tabel wilt verwijderen, kunt u de DROP TABLE
. gebruiken SQL-instructie. Hiermee worden de tabel en alle daarin opgeslagen gegevens verwijderd.
De basissyntaxis ziet er als volgt uit:
DROP TABLE <table_name>;
Dit zal de tabel verwijderen als deze bestaat en een foutmelding geven als de tabelnaam niet bestaat.
Als u de tabel wilt verwijderen als deze bestaat en niets wilt doen als deze niet bestaat, kunt u de IF EXISTS
opnemen kwalificatie in de instructie:
DROP TABLE IF EXISTS <table_name>;
Tabellen die afhankelijkheden hebben van andere tabellen of objecten kunnen niet standaard worden verwijderd zolang die afhankelijkheden bestaan.
Verwijder de supplies
tabel die we eerder hebben gemaakt door te typen:
DROP TABLE supplies;
We behouden de teachers
database om aan te tonen dat de instructie om databases te verwijderen ook alle onderliggende objecten zoals tabellen verwijdert.
Drop databases
De DROP DATABASE
instructie vertelt MySQL om de opgegeven database te verwijderen. De basissyntaxis ziet er als volgt uit:
DROP DATABASE <database_name>;
Vervang de <database_name>
tijdelijke aanduiding met de naam van de database die u wilt verwijderen. Hiermee wordt de database verwijderd als deze wordt gevonden. Als de database niet kan worden gevonden, treedt er een fout op:
DROP DATABASE some_database;
ERROR 1008 (HY000): Can't drop database 'some_database'; database doesn't exist
Als u de database wilt verwijderen als deze bestaat en verder niets doet, voeg dan de optionele IF EXISTS
toe optie:
DROP DATABASE IF EXISTS some_database;
Query OK, 0 rows affected, 1 warning (0.00 sec)
Hiermee wordt de database verwijderd of wordt er niets gedaan als deze niet kan worden gevonden.
Om de school
te verwijderen database die we in deze handleiding hebben gebruikt, vermeldt u de bestaande databases op uw systeem:
SHOW DATABASES;
+--------------------+ Database |+--------------------+ information_schema | mysql | performance_schema | school | sys | testing |+--------------------+6 rows in set (0.00 sec)
Verwijder de school
database met het volgende commando:
DROP DATABASE school;
Hiermee wordt de school
. verwijderd database samen met de teachers
tabel gedefinieerd binnen.
Conclusie
Dit artikel behandelt de basisprincipes van het maken en verwijderen van databases en tabellen met MySQL. Dit zijn enkele van de meest elementaire commando's die nodig zijn om een databasesysteem op te zetten en de structuur van uw gegevens te definiëren.
Zoals eerder vermeld, de SQL-instructies die in deze MySQL-zelfstudie worden behandeld, met name de CREATE TABLE
statement, hebben veel extra parameters die kunnen worden gebruikt om het gedrag van het systeem te veranderen. U kunt hier meer over te weten komen door de officiële MySQL-documentatie te raadplegen.