sql >> Databasteknik >  >> RDS >> Mysql

Hur man skapar och tar bort databaser och tabeller i MySQL


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 en DATE_OF_BIRTH är före DATE_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.




  1. Ändra primärnyckel

  2. Hur AUTOINCREMENT fungerar i SQLite

  3. Valfritt argument i PL/pgSQL-funktionen

  4. MySQL sa:Dokumentation #1045 - Åtkomst nekad för användaren 'root'@'localhost' (med lösenord:NEJ)