mysql create table tutorial with examples
I denne vejledning vil vi undersøge brugen af MySQL CREATE TABLE-kommandoen med syntaks og programmeringseksempler:
CREATE TABLE-sætning er en del af DDL (Data Definition Language) i SQL.
Vi vil diskutere de måder, hvorpå du kan Opret en tabel i en given database, nævne kolonnenavne og DB-motor, mens du opretter tabellen sammen med reglerne omkring navngivningskonventioner for SQL-tabeller.
Hvad du lærer:
- Forudsætninger
- MySQL CREATE TABLE Kommando
- Konklusion
Forudsætninger
Forudsætningen for at køre nogen af SQL-kommandoerne er at downloade MySQL-serveren. Den gratis community-udgave kan downloades her.
Vi bruger også MySQL Workbench SQL Client til alle eksemplerne og diskussionerne i denne vejledning. Den gratis community-udgave af MySQL Workbench kan downloades her (du kan vælge versionen afhængigt af det operativsystem, du arbejder på).
Hvis du ikke vil bruge MySQL Workbench - kan du også bruge MySQL Command Line-klienten, der følger med standardinstallationen af MySQL Server.
MySQL CREATE TABLE Kommando
CREATE TABLE-kommandoen er en del af DDL-kommandosættet (Data Definition Language) i MySQL, og det giver brugeren mulighed for at oprette en ny tabel til den givne database.
Bemærk: CREATE TABLE-kommandoen findes til næsten alle relationsdatabaser - som MySQL, Postgres, SQL Server osv.
MySQL CREATE TABLE Syntaks
I den enkleste form kan du bruge kommandoen CREATE TABLE med kun de grundlæggende muligheder, dvs. tabelnavnet og søjledefinitionerne.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... );
Lad os forstå syntaksargumenterne i detaljer:
- tabelnavn: Dette skal være navnet på den tabel, du prøver at oprette. Det skal være et fuldt kvalificeret navn (hvis du ikke har et standarddatabasesæt). For eksempel, databaseName.tableName
Tabellens navn kan angives uden anførselstegn eller med backtick-symbol som 'tabelnavn' og 'databasenavn'. 'Tabelnavn' - Kolonnedefinition: En tabel i SQL skal bestå af mindst en kolonne. Alle kolonnedefinitioner skal bestå af kolonnenavn såvel som kolonnens datatype. Du kan også valgfrit medtage de andre kolonneegenskaber som primærnøgle, null, ikke null osv.
Lad os se et eksempel på brug af ovenstående syntaks til at oprette en tabel.
Vi opretter en tabel med navnet EMPLOYEE_DETAILS (i databasen - SAMPLE_DB) med kolonner
- navn: varchar (100)
- alder: int
- adresse: varchar (100)
CREATE TABLE SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) );
Nedenfor vises output fra tabeloprettelsen:
Bemærk:
Nr. 1) Bemærk brugen af (HVIS IKKE FINDER) den valgfri kommando i ovenstående syntaks.
Det anbefales generelt at bruge denne kommando, da det ville undgå at generere en fejl, hvis den tabel, vi prøver at oprette, allerede findes i databasen.
Her er et eksempel på brug med og uden HVIS IKKE eksisterer.
- Uden IF NOT EXISTS ville der genereres en fejl, hvis tabellen allerede findes.
- Med IF NOT EXISTS genereres der ikke en fejl. Det vil dog vise en advarsel om, at tabellen allerede findes.
# 2) 'TableName', mens du bruger kommandoen CREATE TABLE, skal være fuldt kvalificeret med databasenavn, dvs. den måde, vi har brugt det på er SAMPLE_DB.medarbejder_detaljer
De andre måder at specificere tabelnavnet på er at opsætte den aktuelle database ved hjælp af kommandoen 'BRUG'. For eksempel. BRUG SAMPLE_DB; og derefter kører / bruger kun tabelnavnet i stedet for det fuldt kvalificerede tabelnavn.
Opret TABEL Med tabelindstillinger
Tabelindstillingerne bruges til at optimere MySQL-tabellernes opførsel. Disse kan anvendes, mens du opretter en tabel ved hjælp af kommandoen MySQL CREATE TABLE (eller senere via ALTER TABLE-kommandoen).
Syntaksen forbliver den samme med yderligere tabelindstillinger, der kan specificeres.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... ) (table “” not found /)
;
Vi vil diskutere de mest anvendte muligheder nedenfor (En komplet liste over tabelindstillinger kan findes her ).
# 1) MOTOR
Det bruges til at specificere lagringsmotoren til tabellen, dvs. standardværdien er InnoDB. Dette er ikke nødvendigt at ændre, medmindre der er behov for en specifik lagermotor. De andre gyldige værdier for lagermotorer er MEMORY, CSV, HEAP osv.
Syntaksen til angivelse af MOTOR som en del af MySQL CREATE TABLE er angivet nedenfor.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )ENGINE='MEMORY';
# 2) AUTO_INCREMENT
Denne indstilling bruges til at indstille den indledende AUTO_INCREMENT-værdi i tabellen, dvs. standardværdien er 1, men du kan tilsidesætte enhver anden positiv heltalværdi.
Bemærk: AUTO_INCREMENT kan angives for kun en kolonne på bordet, og det skal være den primære nøgle. Lad os se et eksempel på at angive automatisk forøgelse som 10 og indsætte en post for at validere, hvis automatisk forøgelse er indstillet korrekt.
Vi bruger den samme tabel medarbejder_detaljer (sørg for at droppe den eksisterende tabel, før du kører denne kommando) med et ekstra id-felt markeret som den primære nøgle.
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;
Lad os indsætte en række uden værdi for ID og sikre, at værdierne indsættes fra den værdi, der starter 10.
INSERT INTO SAMPLE_DB.employee_details(name,age,address) values ('aman kumar',20,'mumbai'); select * from SAMPLE_DB.employee_details;
# 3) CHECKSUM
Dette skal indstilles til 1, hvis du vil have et kontrolsum for hele tabellen gemt. Det bruges generelt til at sikre, at der ikke er ødelagte tabeller.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )CHECKSUM=1;
CHECKSUM holder et live kontrolsum af hele bordet under eventuelle indsatser eller opdateringer
Opret TABEL med partitionsoplysninger
Vi kan også nævne den brugerdefinerede partitionering, hvis det kræves ved hjælp af inddelingsindstillingerne.
Partitionering som et koncept bruges bredt til at distribuere indholdet af tabellerne på tværs af filsystemet for at sikre hurtigere adgangstider og optimerede forespørgsler. Partitionering opdeler et stort bord i mindre tabeller afhængigt af de angivne strategier eller partitioneringsnøgler.
Lad os se, hvordan vi kan specificere partitioneringsdetaljer med MySQL CREATE TABLE-kommandoen.
Vi bruger prøvetabellen medarbejderdetaljer og tilføjer en ny heltalskolonne med navnet department_id, der ville blive brugt som en partitions-hash-nøgle for at få en jævn fordeling af data.
At angive antallet af partitioner angiver også, hvor mange faktiske partitioner der oprettes (i dette tilfælde 4). Hvis ikke angivet, ville der som standard bare være 1 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;
Bemærk: Generelt vil den nøgle, der ville blive brugt til at oprette partitioner, afhænge af forventede adgangsmønstre, der ville blive brugt til tabellen. Antag i dette tilfælde, at vi forespørger tabellen baseret på afdelings-ID det meste af tiden, så det er fornuftigt at have department_id som en del af hash-nøglen.
MySQL tabelkloning og kopiering
Til tider vil du måske oprette en klon af en eksisterende tabel eller kopiere indholdet fra en tabel til en anden tabel. MySQL understøtter 2 måder at opnå dette som vist nedenfor.
- Brug af LIKE-kommandoen
- Brug SELECT-kommandoen
Tabelkloning ved hjælp af LIKE COMMAND
Med kommandoen LIKE kan du oprette en ny tabel med nøjagtig de samme kolonnenavne og egenskaber som de eksisterende tabeller.
Her er syntaksen ved hjælp af LIKE Command.
hvordan man åbner xml-fil i krom
CREATE TABLE tableName1 LIKE tableName2
Med ovenstående kommando oprettes en ny tabel, dvs. tabelnavn1, med samme struktur og egenskaber som tabelnavn2.
Bemærk, at med denne tilgang - kun kolonnenavne og egenskaber bliver klonet og ikke de faktiske tabeldata.
Lad os prøve at oprette en tabel ved navn medarbejder_detaljer og bruge denne tabel til at oprette en ny tabel med navnet student_detaljer ved hjælp af LIKE-indstillingen.
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;
Nedenfor er output fra ovenstående kommando.
Tabelkloning ved hjælp af VÆLG KOMMANDO
Denne tilgang bruger kommandoen SELECT til at oprette en kopi af den eksisterende tabel til en ny tabel.
Med denne tilgang kopieres dataene fra tabellen også til den nye tabel.
CREATE TABLE tableName1 AS SELECT * FROM tableName2;
Lad os prøve at oprette en tabel med navnet medarbejder_detaljer og bruge denne tabel til at oprette en ny tabel med navnet student_detaljer ved hjælp af indstillingen VÆLG.
CREATE TABLE SAMPLE_DB.student_details AS SELECT * FROM SAMPLE_DB.employee_details;
MySQL tabel navngivning konventioner
I de foregående afsnit lærte vi om oprettelse af tabeller MySQL. Lad os nu se nogle regler, der skal holdes for øje, mens du navngiver bordene sammen med de begrænsninger, der gælder med hensyn til MySQL.
eksempler på klientserverapplikation og webbaseret applikation
Disse konventioner / regler gælder for både SQL-tabeller såvel som databaser.
# 1) Juridiske tegn i navne
til) Ikke-citerede navne kan bestå af alle tegn i SQL Server-standardtegnsættet med en undtagelse, at ikke alle tegn kan være cifre. For eksempel, '23test' er et gyldigt tabelnavn, men ikke '2345'.
Nedenfor er listen over tegn, der kan bruges til ikke-citerede navne:
ASCII: (0-9, a-z, A-Z $ _) (grundlæggende latinske bogstaver, cifre 0-9, dollar, understregning)
Udvidet: U + 0080 .. U + FFFF
Lær mere om ASCII-koder her
b) Tabel- og databasenavne kan citeres med et backtick-tegn (`) og kan indeholde ethvert bogstav / tegn undtagen backtick-tegnet selv. Med de citerede navne kan du endda have tabel / database navne med alle cifre.
Bemærk, at for sådanne tabeller skal du bruge backticks rundt om tabellen og / eller databasenavn for at få adgang til data inde i sådanne tabeller.
c) Tabel- og databasenavne kan ikke indeholde punktum '.', Da det bruges som en database- og tabeladskiller.
d) Database- og tabelnavne kan indeholde - '$' og '_' specialtegn.
# 2) Navn Længde
Maks. Tilladt længde for et database- eller tabelnavn i MySQL er 64 tegn.
# 3) Navn kvalifikationer
Som diskuteret i de foregående afsnit er en tabel i MySQL altid i sammenhæng med den database, som den er en del af. Derfor, for at få adgang til en tabel, kan du bruge et fuldt kvalificeret tabelnavn - hvilket kun er kombinationen af databasenavn adskilt af en periode og derefter kolonnenavnet.
For eksempel, for at vælge alle elementerne fra tabellen 'EMPLOYEE_DETAILS' fra databasen SAMPLE_DB, kan du bruge et fuldt kvalificeret navn som nedenfor.
SELECT * from SAMPLE_DB.EMPLOYEE_DETAILS;
DB- og tabelnavne kan også specificeres som citeret med backticks separat som vist nedenfor.
SELECT * from `SAMPLE_DB`.`EMPLOYEE_DETAILS`;
Branchens anbefalede konventioner og bedste praksis omkring navngivningstabeller og databaser er angivet nedenfor.
- Navngiv tabeller og databaser med små bogstaver - Dette fremskynder generelt indtastning og forespørgsel på DB, især for dem der er involveret i daglige forespørgsler om DB.
- Brug understregninger (‘_’) i stedet for mellemrum i tabel- og db-navne - Dette gør navnene mere læselige.
- Brug selvforklarende navne til tabellerne og databaser - For eksempel, en tabel, der indeholder detaljer om medarbejderen, kan navngives på forskellige måder som medarbejderinfo, medarbejderdata, medarbejder, medarbejderdetaljer, medarbejdernavn og adresse. Det ville være fornuftigt at vælge et navn, der er det mest selvforklarende. For eksempel, vi kan vælge det tabelnavn, der skal være medarbejder_detaljer eller medarbejder_info. Selvom dette er en subjektiv diskussion, skal det vedtages af flere medlemmer af teamet, der skal bruge og oprette disse enheder.
- Undgå at bruge tal i database- og tabelnavne - Ligesom sample_db_2, test_table_1 osv.
Ofte stillede spørgsmål og svar
Q # 1) Hvordan oprettes en tabel i MySQL ved hjælp af Index?
Svar: Du kan tilføje en INDEX mod en hvilken som helst kolonne (eller en kombination af kolonner) under selve tabellen.
Lad os se et eksempel på tilføjelse af et indeks mod kolonnen department_id for tabel medarbejderdetaljer.
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) );
Q # 2) Hvordan oprettes en tabel med dato i MySQL?
Svar: Dato er en datatype, der skal knyttes til en hvilken som helst kolonne, mens du opretter en tabel.
Se nedenstående eksempel CREATE TABLE-kommando med kolonnen joining_date, der har DATETIME som datatype for en eksempeltabel medarbejder_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 );
Spørgsmål nr. 3) Hvordan kan jeg se strukturen på tabellen i MySQL?
Svar: Når du har oprettet en tabel, og hvis du vil henvise til strukturens struktur som kolonner, indekser osv., Kan du bruge kommandoen BESKRIVELSE til at hente detaljerne.
Syntaks:
DESCRIBE tableName;
Lad os oprette en tabel og se output for kommandoen DESCRIBE.
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;
Nedenfor er output fra kommandoen DESCRIBE.
Spørgsmål nr. 4) Hvordan tilføjer jeg en UDENLANDSK KEY til en tabel i MySQL?
Svar: Foreign Key bruges til at linke 2 tabeller sammen i MySQL. For at bruge begrænsningen med fremmednøglen skulle du allerede have oprettet den tabel, du henviser til.
>> Lær mere om MySQL udenlandsk nøglebegrænsning
Lad os prøve at forstå dette med et eksempel. Lad os sige, at vi har to tabeller, dvs. afdeling (som har detaljer om de forskellige afdelinger, som kollegiet har) og studenteroplysninger (alle detaljer vedrørende studerende).
Afdelingen har kolonner - id (primær nøgle) og navn.
Elevoplysninger - id (primær nøgle), alder, adresse & department_id (fremmed nøgle henvist til fra afdelingstabellen).
Nedenfor er syntaksen for kommandoen CREATE TABLE for begge disse 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 );
Henvis til syntaksen for UDENLANDSK KEY-reference i tabellen student_detaljer, hvor vi har nævnt forholdet mellem kolonnerne og department_id skal refereres til ved kolonne-id fra afdelingstabellen.
Konklusion
CREATE TABLE-kommandoen i MySQL, der hører til kommandoer i kategorien Data Definition Language, blev forklaret detaljeret her.
Vi lærte om de forskellige tabelindstillinger som MOTOR, CHECKSUM osv., Der kunne nævnes sammen med kommandoen Opret TABEL for at have yderligere egenskaber, der indstilles til tabellen.
Vi gik igennem måderne til at oprette en klon af den eksisterende tabel i MySQL. Endelig talte vi om navngivningskonventionerne for tabelnavne sammen med de branchens anbefalede bedste praksis.
God læselyst!!
Anbefalet læsning
- MySQL Opret visningsvejledning med kodeeksempler
- MySQL-datatyper | Hvad er forskellige datatyper i MySQL
- MySQL indsæt i tabel - Indsæt erklæringens syntaks og eksempler
- MySQL JOIN Tutorial: Indre, ydre, kryds, venstre, højre og selv
- Forskellen mellem SQL Vs MySQL Vs SQL Server (med eksempler)
- Sådan bruges PL SQL Indsæt, opdater, slet og vælg erklæring
- MongoDB Opret databasevejledning
- MongoDB Opret bruger og tildel roller med eksempler