Introduktion
MySQL underhåller den data som hanteras i tabeller och databaser. Tabeller lagrar data inom fördefinierade scheman för kolumner och datatyper. Databaser är en struktur som kan innehålla flera tabeller, index, procedurer och hjälpa till att definiera ett utrymme för privilegier, anpassningar och mer.
I den här guiden visar vi dig hur du skapar tabeller och databaser i MySQL. Vi visar dig hur du hanterar vissa funktioner i båda strukturerna och sedan tar vi upp hur du tar bort dem för att städa upp om du inte längre behöver dem.
Förutsättningar
För att följa den här guiden måste du logga in på en MySQL-server med en användare med administratörsbehörighet med mysql
kommandoradsklient.
Om du inte vill logga in med root
MySQL-administratörskonto, din användare behöver åtminstone CREATE
behörighet att utföra de åtgärder som beskrivs i den här guiden.
Du kan kontrollera din användares tillgängliga behörigheter genom att skriva:
SHOW GRANTS\G
Hur skapar du en ny databas?
Det första vi ska visa hur man gör är att skapa en ny databas. I MySQL innehåller databaser tabeller, index, procedurer och andra resurser som vanligtvis är relaterade till ett enskilt projekt. Var och en av dessa resurser måste skapas i en databas, så att lära sig hur man skapar en ny databas är ett bra första steg.
Den grundläggande syntaxen som används för att skapa en ny databas ser ut så här:
CREATE DATABASE <db_name>;
Ersätt
med det namn du vill ge din databas innan du kör kommandot. Detta kommando kommer att skapa en databas med det angivna namnet och ställa in den nuvarande användaren som den nya databasens ägare.
Databasen kommer att använda de systemomfattande standardinställningarna för egenskaperna för teckenuppsättning, sortering och kryptering:
- TEckenuppsättning: ställer in teckenuppsättningen för den nya databasen. Detta är ett lokaliseringsalternativ som påverkar vilka tecken som anses vara versaler, gemener och siffror.
- SAMLERA: ställer in sorteringen , eller sorteringsordning för databasen. Detta är ett lokaliseringsalternativ som avgör hur artiklar organiseras när de beställs.
- KRYPTERING: ställer in kryptering för den nya databasen. Detta är ett booleskt alternativ som kan vara antingen "Y" för ja eller "N" för nej.
Du kan hitta de teckenuppsättningar som är tillgängliga för din installation genom att skriva:
SHOW CHARACTER SET;
På samma sätt kan du hitta tillgängliga sorteringar genom att skriva:
SHOW COLLATION;
Om du vill ange ett icke-standardvärde för en av dessa parametrar, kan du göra det genom att lägga till dem efter huvudsatsen för skapande så här:
CREATE DATABASE <db_name> CHARACTER SET = 'utf8mb4' COLLATE = 'utf8mb4_0900_ai_ci' ENCRYPTION = 'Y';
För att följa exemplen i den här guiden, skapa en databas som heter skola
med hjälp av din instanss standardinställningar och teckenuppsättningen UTF8:
CREATE DATABASE school CHARACTER SET = 'utf8mb4';
Detta kommer att skapa din nya databas med de specifikationer du angav.
Lista befintliga databaser
För att lista de databaser som är tillgängliga på din server, skriv:
SHOW DATABASES;
Detta kommer att lista var och en av de databaser som för närvarande är definierade i miljön:
+--------------------+ Database |+--------------------+ information_schema | mysql | performance_schema | school | sys | testing |+--------------------+6 rows in set (0.00 sec)
Du kan verifiera att inställningarna du angav tillämpades på den nya skolan
databas med hjälp av SHOW CREATE DATABASE
kommando:
SHOW CREATE DATABASE school;
Utdatan kommer att visa kommandot och alternativen som används för att skapa databasen, fylla ut alternativen med vilka standardvärden som helst som tillämpas:
+----------+----------------------------------------------------------------------------------------------------------------------------------+ 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)
Hur man byter till en annan databas i MySQL
När din databas väl har skapats kan du antingen arbeta med den på några olika sätt.
Det första alternativet är att ange databasen som ett argument i varje kommando du använder. För att spara tid om du kör flera kommandon relaterade till databasens objekt kan du även "växla till" eller "använda" databasen för att ställa in din nya databas som standardkontext för alla databasrelaterade kommandon som du kommer att köra .
För att byta till en annan databas, skriv:
USE <db_name>;
I vårt fall kan vi byta till skolan
databas vi skapade genom att skriva:
USE school;
Skapa tabeller i databaser
När du har skapat en databas kan du definiera tabeller och andra objekt inuti för att lagra och hantera dina data. I MySQL består tabeller av ett tabellnamn, kolumndefinitionerna (dessa i sin tur inkluderar bland annat namn, datatyper och begränsningar) och tabellalternativ.
Vad är syntaxen för MySQL:s CREATE TABLE
kommando?
Den grundläggande syntaxen för att skapa tabeller med MySQL:s CREATE TABLE
kommandot ser ut så här:
CREATE TABLE <table_name> ( <column_name> <data_type> [<column_constraint>], [<table_constraint>,]);
Vi kan dela upp kommandomallen ovan i följande komponenter:
SKAPA TABELL
:Det grundläggande skapandet.
platshållaren ska ersättas med namnet på tabellen du vill använda.
:Definierar en grundläggande kolumn i tabellen.
platshållaren ska ersättas med det namn du vill använda för din kolumn.
anger MySQL-datatypen för kolumnen. Data som lagras i tabellen måste överensstämma med kolumnstrukturen och kolumndatatyperna för att accepteras.
:Kolumnbegränsningar är valfria begränsningar som lägger till ytterligare krav för data. Du kan till exempel kräva att poster inte är null, unika eller positiva heltal.
:Tabellbegränsningar liknar kolumnbegränsningar men involverar interaktion mellan flera kolumner. Du kan till exempel ha en tabellrestriktion som kontrollerar att enDATE_OF_BIRTH
är föreDATE_OF_DEATH
i en tabell.
Hur skapar du tabeller endast om de inte redan finns?
MySQL:s standardbeteende är att skapa ett felmeddelande om du försöker skapa en tabell som redan finns. Men den valfria OM INTE FINNS
sats kan läggas till i skapandesatsen för att åsidosätta detta beteende.
Du kan använda koden OM INTE FINNS
sats genom att infoga den i kommandot efter CREATE TABLE
fras men före tabellnamnet:
CREATE TABLE IF NOT EXISTS table_name ( column_name TYPE [column_constraint], [table_constraint,]);
Detta kommer att ändra kommandots beteende enligt följande:Om det angivna tabellnamnet redan finns, kommer MySQL att ge en varning istället för ett fel. Resten av kommandobeteendet förblir detsamma.
Skapa tabeller i MySQL-databaser
Kommandomallen ovan räcker för att skapa grundläggande tabeller. För att främja vårt exempel skapar vi två tabeller i vår skola
databas. En tabell kommer att kallas tillbehör
och den andra kommer att kallas lärare
:
I tillbehör
tabell, kommer vi att inkludera följande fält:
- id: Ett unikt ID för varje typ av skolmaterial.
- namn: Namnet på ett specifikt skolobjekt.
- beskrivning: En kort beskrivning av föremålet.
- tillverkare: Namnet på artikeltillverkaren.
- färg: Objektets färg.
- inventering: Antalet artiklar vi har för en viss typ av skolutbud. Detta bör aldrig vara mindre än 0.
Vi kan skapa tillbehör
tabell med ovanstående egenskaper med följande 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));
Detta skapar tillbehör
tabell inom skolan
databas. PRIMÄRNYCKLEN
kolumnbegränsning är en speciell begränsning som används för att indikera kolumner som unikt kan identifiera poster i tabellen. Som sådan anger begränsningen att kolumnen inte kan vara null och måste vara unik. MySQL skapar index för primärnyckelkolumner för att öka frågehastigheten.
Kontrollera att den nya tabellen finns genom att skriva:
SHOW TABLES;
+------------------+ Tables_in_school |+------------------+ supplies |+------------------+1 row in set (0.01 sec)
Du kan verifiera att schemat återspeglar din definition genom att skriva:
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
Kolumnerna, datatyperna och begränsningarna som vi angav finns i utdata, även om ordningen och visningen kan vara annorlunda.
Skapa sedan en lärare
tabell. I den här tabellen bör följande kolumner finnas:
- id :Ett unikt anställds identifieringsnummer.
- förnamn :Lärarens förnamn.
- efternamn :Lärarens efternamn.
- ämne :Ämnet som läraren anlitas för att undervisa i.
- grade_level :Betygsnivån för elever som läraren är anställd för att undervisa.
Skapa lärarna
tabell med ovanstående schema med följande SQL:
CREATE TABLE teachers ( id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(255), last_name VARCHAR(255), subject VARCHAR(255), grade_level INT);
Så skapar du tabeller med primärnycklar och främmande nycklar
Du kan hitta information om att skapa tabeller med primära och främmande nycklar i några av våra andra MySQL-guider. Primära nycklar och främmande nycklar är båda typer av databasrestriktioner inom MySQL.
En primärnyckel är en speciell kolumn eller kolumn som garanterat är unik över rader i samma tabell. Alla primärnycklar kan användas för att unikt identifiera en specifik rad. Primära nycklar säkerställer inte bara att varje rad har ett unikt värde för primärnyckelkolumnerna, de säkerställer också att inga rader innehåller NULL
värden för den kolumnen. Ofta använder primärnyckeln i MySQL följande format för att ange en automatiskt tilldelad inkrementerande primärnyckel:id INT AUTO_INCREMENT PRIMARY KEY
.
Främmande nycklar är ett sätt att säkerställa att en kolumn eller kolumner i en tabell matchar värdena i en annan tabell. Detta hjälper till att säkerställa referensintegritet mellan tabeller.
Så visar du tabeller i MySQL
I MySQL kan du lista tabeller på några olika sätt beroende på vilken information du letar efter.
Om du vill se vilka tabeller som finns tillgängliga i din databas, skriv:
SHOW TABLES;
+------------------+ Tables_in_school |+------------------+ supplies | teachers |+------------------+2 rows in set (0.00 sec)
Du kan också kontrollera att schemat för tabellen matchar dina specifikationer:
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)
lärarna
tabellen verkar matcha vår definition.
Hur man ändrar tabeller med ALTER TABLE
kommando
Om du behöver ändra schemat för en befintlig tabell i MySQL kan du använda ALTER TABLE
kommando. ALTER TABLE
kommandot är mycket likt CREATE TABLE
kommando, men fungerar på en befintlig tabell.
Ändra tabellsyntax
Den grundläggande syntaxen för att ändra tabeller i MySQL ser ut så här:
ALTER TABLE <table_name> <change_command> <change_parameters>;
anger exakt vilken typ av ändring du vill göra, oavsett om det handlar om att ställa in olika alternativ i tabellen, lägga till eller ta bort kolumner eller ändra typer eller begränsningar.
en del av kommandot innehåller ytterligare information som MySQL behöver för att slutföra ändringen.
Lägga till kolumner i tabeller
Du kan lägga till en kolumn i en MySQL-tabell med ADD
ändra kommando. Ändringsparametrarna inkluderar kolumnnamn, typ och alternativ, precis som du skulle ange dem i SKAPA TABELL
kommando.
Till exempel för att lägga till en kolumn som heter missing_column
av texten
skriv till en tabell som heter some_table
, skulle du skriva:
ALTER TABLE some_table ADD missing_column text;
Ta bort kolumner från tabeller
Om du istället vill ta bort en befintlig kolumn kan du använda DROP COLUMN
kommando istället. Du måste ange namnet på den kolumn du vill ta bort som en ändringsparameter:
ALTER TABLE some_table DROP COLUMN useless_column;
Ändra datatypen för en kolumn
För att ändra datatypen för en kolumn kan du använda ALTER COLUMN
ändra kommandot med MODIFY COLUMN
kolumnkommando. Parametrarna i detta sammanhang inkluderar kolumnnamnet och dess nya typ:
ALTER TABLE resident MODIFY COLUMN id INT;
Andra tabelländringar
Många andra typer av ändringar kan uppnås med ALTER TABLE
kommando. För mer information om tillgängliga alternativ, kolla in den officiella MySQL-dokumentationen för ALTER TABLE
.
Släpptabeller
Om du vill ta bort en tabell kan du använda DROP TABLE
SQL-sats. Detta kommer att radera tabellen samt all data som lagras i den.
Den grundläggande syntaxen ser ut så här:
DROP TABLE <table_name>;
Detta kommer att radera tabellen om den finns och skapa ett fel om tabellnamnet inte finns.
Om du vill ta bort tabellen om den finns och inte göra något om den inte finns, kan du inkludera OM FINNS
kvalificerare i uttalandet:
DROP TABLE IF EXISTS <table_name>;
Tabeller som har beroenden till andra tabeller eller objekt kan inte tas bort som standard medan dessa beroenden existerar.
Ta bort tillbehör
tabell vi skapade tidigare genom att skriva:
DROP TABLE supplies;
Vi behåller lärarna
databas för att visa att satsen att ta bort databaser också tar bort alla underordnade objekt som tabeller.
Släpp databaser
DROP DATABASE
uttalande säger till MySQL att ta bort den angivna databasen. Den grundläggande syntaxen ser ut så här:
DROP DATABASE <database_name>;
Ersätt
platshållare med namnet på databasen du vill ta bort. Detta kommer att radera databasen om den hittas. Om databasen inte kan hittas kommer ett fel att uppstå:
DROP DATABASE some_database;
ERROR 1008 (HY000): Can't drop database 'some_database'; database doesn't exist
Om du vill ta bort databasen om den finns och annars inte gör något, inkludera den valfria OM FINNS
alternativ:
DROP DATABASE IF EXISTS some_database;
Query OK, 0 rows affected, 1 warning (0.00 sec)
Detta tar bort databasen eller gör ingenting om den inte kan hittas.
För att ta bort skolan
databas som vi använde i den här guiden, lista de befintliga databaserna på ditt system:
SHOW DATABASES;
+--------------------+ Database |+--------------------+ information_schema | mysql | performance_schema | school | sys | testing |+--------------------+6 rows in set (0.00 sec)
Ta bort skolan
databas med följande kommando:
DROP DATABASE school;
Detta tar bort skolan
databas tillsammans med lärarna
tabell definierad inom.
Slutsats
Den här artikeln behandlade grunderna i hur man skapar och tar bort databaser och tabeller med MySQL. Det här är några av de mest grundläggande kommandona som krävs för att konfigurera ett databassystem och för att definiera strukturen för dina data.
Som nämnts tidigare täcks SQL-satserna i denna MySQL-handledning, särskilt CREATE TABLE
uttalande, har många ytterligare parametrar kan användas för att ändra systemets beteende. Du kan ta reda på mer om dessa genom att kolla in den officiella MySQL-dokumentationen.