mysql create table tutorial with examples
I denna handledning kommer vi att undersöka användningen av MySQL CREATE TABLE-kommandot med syntax och programmeringsexempel:
CREATE TABLE-satsen är en del av DDL (Data Definition Language) i SQL.
Vi kommer att diskutera hur du kan SKAPA en tabell i en viss databas, nämna kolumnnamn och DB-motor när du skapar tabellen, tillsammans med reglerna kring namngivningskonventioner för SQL-tabeller.
Vad du kommer att lära dig:
Förutsättningar
Förutsättningen för att köra någon av SQL-kommandona är att ladda ner MySQL-servern. Den kostnadsfria community-upplagan kan laddas ner här.
Vi kommer också att använda MySQL Workbench SQL Client för alla exempel och diskussioner i denna handledning. Den kostnadsfria community-upplagan av MySQL Workbench kan laddas ner här (du kan välja version beroende på vilket operativsystem du arbetar med).
Om du inte vill använda MySQL Workbench - kan du också använda MySQL Command Line-klienten som levereras med standardinstallationen av MySQL Server.
MySQL CREATE TABLE Command
CREATE TABLE-kommandot är en del av DDL (Data Definition Language) -kommandon i MySQL och det tillåter en användare att skapa en ny tabell för den angivna databasen.
Notera: Kommandot CREATE TABLE finns för nästan alla relationsdatabaser - som MySQL, Postgres, SQL Server, etc.
MySQL CREATE TABLE Syntax
I den enklaste formen kan du använda kommandot CREATE TABLE med bara de grundläggande alternativen, dvs. tabellnamnet och kolumndefinitionerna.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... );
Låt oss förstå syntaxargumenten i detalj:
- tabellnamn: Detta borde vara namnet på den tabell som du försöker skapa. Det ska vara ett fullständigt kvalificerat namn (om du inte har en standarddatabasuppsättning). Till exempel, databasnamn.tabellnamn
Tabellnamnet kan anges utan citattecken eller med backtick-symbol som 'tableName' och 'databaseName'. `TableName ' - Kolumndefinition: En tabell i SQL måste bestå av minst en kolumn. Alla kolumndefinitioner måste bestå av kolumnnamn och kolumndatatyp. Du kan också valfritt inkludera andra kolumnegenskaper som primär nyckel, null, inte null, etc.
Låt oss se ett exempel på att använda ovanstående syntax för att skapa en tabell.
Vi skapar en tabell med namnet EMPLOYEE_DETAILS (i databasen - SAMPLE_DB) med kolumner
- namn: varchar (100)
- ålder: int
- adress: varchar (100)
CREATE TABLE SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) );
Nedan ges resultatet av tabellen:
Notera:
# 1) Observera användningen av (OM INTE EXISTERAR) det valfria kommandot i ovanstående syntax.
Det rekommenderas i allmänhet att använda detta kommando eftersom det skulle undvika att generera ett fel om tabellen vi försöker skapa redan finns i databasen.
Här är ett exempel på hur du använder med och utan OM INTE FINNER.
- Utan OM INTE EXISTS skulle generera ett fel om tabellen redan finns.
- Med IF NOT EXISTS genereras inte ett fel. Det kommer dock att visa en varning om att tabellen redan finns.
# 2) ”tabellnamnet” när du använder kommandot CREATE TABLE bör vara fullt kvalificerat med databasnamn, dvs hur vi har använt det är SAMPLE_DB.medarbetare_detaljer
De andra sätten att specificera tabellnamnet är att ställa in den aktuella databasen med kommandot ”ANVÄND”. T.ex. ANVÄND SAMPLE_DB; och sedan kör / använder du bara tabellnamnet istället för det fullständigt kvalificerade tabellnamnet.
SKAPA TABELL Med tabellalternativ
Tabellalternativen används för att optimera MySQL-tabellernas beteende. Dessa kan användas när du skapar en tabell med kommandot MySQL CREATE TABLE (eller senare via ALTER TABLE-kommandot).
Syntaxen är densamma med ytterligare tabellalternativ som kan anges.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... ) (table “” not found /)
;
Vi kommer att diskutera de mest använda alternativen nedan (En fullständig lista över tabellalternativ finns här ).
# 1) MOTOR
Den används för att specificera lagringsmotorn för tabellen, dvs. standardvärdet är InnoDB. Detta behöver inte ändras om det inte finns behov av någon specifik lagringsmotor. De andra giltiga värdena för lagringsmotorer är MEMORY, CSV, HEAP, etc.
Syntaxen för att specificera MOTOR som en del av MySQL CREATE TABLE ges nedan.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )ENGINE='MEMORY';
# 2) AUTO_INCREMENT
Det här alternativet används för att ställa in det ursprungliga AUTO_INCREMENT-värdet i tabellen, dvs. standardvärdet är 1, men du kan åsidosätta alla andra positiva heltal.
Notera: AUTO_INCREMENT kan anges för bara en kolumn på bordet och det ska vara den primära nyckeln. Låt oss se ett exempel på att ange automatisk inkrement som 10 och infoga en post för att validera om automatisk inkrement är korrekt inställd.
Vi använder samma tabell medarbetare_detaljer (se till att du släpper den befintliga tabellen innan du kör det här kommandot) med ett ytterligare id-fält markerat som primärnyckel.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details( id int not null AUTO_INCREMENT primary key, name varchar(100), age int, address varchar(100) )AUTO_INCREMENT=10;
Låt oss infoga en rad utan något värde för ID och se till att värdena infogas från värdet som börjar 10.
INSERT INTO SAMPLE_DB.employee_details(name,age,address) values ('aman kumar',20,'mumbai'); select * from SAMPLE_DB.employee_details;
# 3) CHECKSUM
Detta bör ställas in på 1 om du vill ha en kontrollsumma för hela tabellen. Det används vanligtvis för att säkerställa att det inte finns några skadade tabeller.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )CHECKSUM=1;
CHECKSUM håller en levande kontrollsumma för hela tabellen under eventuella inlägg eller uppdateringar
SKAPA TABELL med partitioneringsdetaljer
Vi kan också nämna användardefinierad partitionering om det behövs med hjälp av partitioneringsalternativen.
Partitionering som ett koncept används i stort sett för att distribuera innehållet i tabellerna över filsystemet för att säkerställa snabbare åtkomsttider och optimerade frågor. Partitionering delar upp ett stort bord i mindre tabeller beroende på de angivna strategierna eller partitioneringsnycklarna.
Låt oss se hur vi kan specificera partitioneringsdetaljer med MySQL CREATE TABLE Command.
Vi använder provtabellen medarbetare_detaljer och lägger till en ny heltalskolumn med namnet department_id som skulle användas som en partitions-hash-nyckel för att få en jämn fördelning av data.
Att också specificera antalet partitioner skulle indikera hur många faktiska partitioner som skulle skapas (i det här fallet 4). Om det inte anges skulle det som standard bara finnas en partition.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100), department_id int )PARTITION BY HASH (department_id) PARTITIONS 4;
Notera: I allmänhet beror nyckeln som skulle användas för att skapa partitioner på förväntade åtkomstmönster som skulle användas för tabellen. Antag i det här fallet att vi skulle fråga efter tabellen baserat på avdelnings-ID för det mesta, då är det vettigt att ha department_id som en del av hash-nyckeln.
MySQL tabellkloning och kopiering
Ibland kanske du vill skapa en klon av en befintlig tabell eller kopiera innehållet från en tabell till en annan tabell. MySQL stöder två sätt att uppnå detta enligt nedan.
- Med kommandot LIKE
- Använda SELECT-kommandot
Tabellkloning med LIKE COMMAND
Med kommandot LIKE kan du skapa en ny tabell med exakt samma kolumnnamn och egenskaper som de befintliga tabellerna.
Här är syntaxen med LIKE Command.
bubblasorterande fallande ordning c ++
CREATE TABLE tableName1 LIKE tableName2
Med kommandot ovan skulle en ny tabell, dvs. tabellnamn1, skapas med samma struktur och egenskaper som tabellnamn2.
Observera att med detta tillvägagångssätt - endast kolumnnamn och egenskaper klonas och inte den faktiska tabelldata.
Låt oss försöka skapa en tabell som heter medarbetare_detaljer och använda den här tabellen för att skapa en ny tabell med namnet student_detaljer med LIKE-alternativet.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100), department_id int ); CREATE TABLE SAMPLE_DB.student_details LIKE SAMPLE_DB.employee_details;
Nedan visas resultatet av kommandot ovan.
Tabellkloning med VÄLJ KOMMANDO
Detta tillvägagångssätt använder kommandot SELECT för att skapa en kopia av den befintliga tabellen till en ny tabell.
Med detta tillvägagångssätt kopieras även data från tabellen till den nya tabellen.
CREATE TABLE tableName1 AS SELECT * FROM tableName2;
Låt oss försöka skapa en tabell som heter medarbetare_detaljer och använda denna tabell för att skapa en ny tabell med namnet student_detaljer med alternativet VÄLJ.
CREATE TABLE SAMPLE_DB.student_details AS SELECT * FROM SAMPLE_DB.employee_details;
MySQL-tabellnamnkonventioner
I föregående avsnitt lärde vi oss att skapa tabeller MySQL. Låt oss nu se några regler som bör hållas i åtanke när du namnger tabellerna tillsammans med de begränsningar som gäller för MySQL.
Dessa konventioner / regler gäller för både SQL-tabeller och databaser.
# 1) Juridiska karaktärer i namn
till) Ociterade namn kan bestå av alla tecken i SQL Servers standardteckenuppsättning med undantag för att inte alla tecken kan vara siffror. Till exempel, '23test' är ett giltigt tabellnamn men inte '2345'.
Nedan följer listan över tecken som kan användas för ociterade namn:
ASCII: (0-9, a-z, A-Z $ _) (grundläggande latinska bokstäver, siffror 0-9, dollar, understrykning)
Utökat: U + 0080 .. U + FFFF
Läs mer om ASCII-koder här
b) Tabell- och databasnamn kan citeras med ett backtick-tecken (`) och kan innehålla valfri bokstav / tecken utom själva backticket. Med de citerade namnen kan du till och med ha tabell- / databasnamn med alla siffror.
Observera att för sådana tabeller måste du använda backticks runt tabellen och / eller databasnamnet för att komma åt data i sådana tabeller.
c) Tabell- och databasnamn får inte innehålla period '.' Eftersom den används som databas och tabellavgränsare.
d) Databas- och tabellnamnen kan innehålla - '$' och '_' specialtecken.
# 2) Namn Längd
Max tillåten längd för ett databas- eller tabellnamn i MySQL är 64 tecken.
# 3) Namnkval
Som diskuterats i de föregående avsnitten är en tabell alltid i MySQL i sammanhang med den databas som den ingår i. För att komma åt en tabell kan du därför använda ett fullständigt kvalificerat tabellnamn - vilket bara är en kombination av databasnamn åtskilt av en period och sedan kolumnnamnet.
Till exempel, för att välja alla element från tabellen 'EMPLOYEE_DETAILS' från databasen SAMPLE_DB kan du använda ett fullständigt kvalificerat namn enligt nedan.
SELECT * from SAMPLE_DB.EMPLOYEE_DETAILS;
DB- och tabellnamnen kan också anges som citerade med backticks separat som visas nedan.
SELECT * from `SAMPLE_DB`.`EMPLOYEE_DETAILS`;
Branschens rekommenderade konventioner och bästa praxis kring namngivningstabellerna och databaserna anges nedan.
- Namntabeller och databaser med gemener - Detta påskyndar vanligtvis att skriva och fråga DB särskilt för dem som är involverade i den dagliga frågan om DB.
- Använd understrykningar (‘_’) istället för mellanslag i tabell- och db-namn - Detta gör namnen mer läsbara.
- Använd självförklarande namn för tabellerna och databaserna - Till exempel, en tabell med information om den anställde kan namnges på olika sätt som medarbetarinfo, anställd_data, anställd, anställd_detaljer, anställd_namn_och_adress. Det vore vettigt att välja ett namn som är det mest självförklarande. Till exempel, vi kan välja tabellnamnet som ska vara anställd_detaljer eller anställd_info. Även om detta är en subjektiv diskussion, bör det komma överens om flera medlemmar i teamet som ska använda och skapa dessa enheter.
- Undvik att använda siffror i databas- och tabellnamn - Som exempel_db_2, test_tabell_1 etc.
Vanliga frågor och svar
F # 1) Hur skapar jag en tabell i MySQL med hjälp av Index?
Svar: Du kan lägga till ett INDEX mot vilken kolumn som helst (eller en kombination av kolumner) under själva skapandet av tabellen.
Låt oss se ett exempel på att lägga till ett index mot kolumnen department_id för tabellen medarbetare_detaljer.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int, age int, address varchar(100), department_id int, index(department_id) );
F # 2) Hur skapar jag en tabell med datum i MySQL?
Svar: Datum är en datatyp som ska associeras med vilken kolumn som helst när du skapar en tabell.
Se nedanstående exempel CREATE TABLE-kommando med kolumnen joining_date med DATETIME som datatyp för en provtabell medarbetare_detaljer.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int primary key, age int, address varchar(100), joining_date datetime, department_id int );
F # 3) Hur kan jag se tabellens struktur i MySQL?
Svar: När du har skapat en tabell, om du vill hänvisa till strukturen i tabellen som kolumner, index, etc, kan du använda kommandot DESCRIBE för att hämta detaljerna.
Syntax:
DESCRIBE tableName;
Låt oss skapa en tabell och se utdata för DESCRIBE-kommandot.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int primary key, age int, address varchar(100), department_id int ); DESCRIBE sample_db.employee_details;
Nedan visas resultatet av kommandot DESCRIBE.
F # 4) Hur lägger jag till en UTLÄNDSK NYCKEL i en tabell i MySQL?
Svar: Foreign Key används för att länka två tabeller i MySQL. För att kunna använda begränsningen för främmande nycklar borde du redan ha skapat den tabell som du hänvisar till.
>> Läs mer om MySQL utländsk nyckelbegränsning
Låt oss försöka förstå detta med ett exempel. Låt oss säga att vi har två tabeller, dvs. institutionen (som har information om de olika institutionerna som kollegiet har) och studentinformation (alla detaljer som gäller studenter).
Avdelningen har kolumner - id (primär nyckel) och namn.
Studentuppgifter - id (primär nyckel), ålder, adress och avdelnings-id (utländsk nyckel refererad från avdelningstabellen).
Nedan visas syntaxen för kommandot CREATE TABLE för båda dessa tabeller.
CREATE TABLE department ( name varchar(100), id INT NOT NULL, PRIMARY KEY (id) ); CREATE TABLE student_details ( name varchar(100), id int not null, age int, address varchar(100), department_id int, PRIMARY KEY (id), FOREIGN KEY (department_id) references department(id) ON DELETE CASCADE );
Hänvisa till syntaxen för UTLÄNDSK KEY-referens i tabellen student_detaljer där vi har nämnt förhållandet mellan kolumnerna och department_id ska refereras med kolumn-id från avdelningstabellen.
hur man öppnar en XML-fil i Word
Slutsats
CREATE TABLE-kommandot i MySQL som tillhör kommandon i kategorin Data Definition Language förklarades i detalj här.
Vi lärde oss om de olika tabellalternativen som MOTOR, CHECKSUM, etc som kan nämnas tillsammans med kommandot CREATE TABLE för att ytterligare egenskaper ska ställas in för tabellen.
Vi gick igenom sätten att skapa en klon av den befintliga tabellen i MySQL. Slutligen pratade vi om namngivningskonventionerna för tabellnamnen tillsammans med de branschrekommenderade bästa metoderna.
Glad läsning!!
Rekommenderad läsning
- MySQL Skapa vyhandledning med kodexempel
- MySQL-datatyper | Vad är olika datatyper i MySQL
- MySQL Insert In Table - Insert Statement Syntax & Exempel
- MySQL JOIN Handledning: Inre, yttre, kors, vänster, höger och själv
- Skillnad mellan SQL Vs MySQL Vs SQL Server (med exempel)
- Hur man använder PL SQL Infoga, uppdatera, ta bort och välj uttalande
- MongoDB Skapa databashandledning
- MongoDB Skapa användare och tilldela roller med exempel