mysql create table tutorial with examples
I denne opplæringen vil vi utforske bruken av MySQL CREATE TABLE-kommandoen med syntaks og programmeringseksempler:
CREATE TABLE-setningen er en del av DDL (Data Definition Language) i SQL.
Vi vil diskutere måtene du kan lage en tabell i en gitt database, nevne kolonnenavn og DB-motor mens du lager tabellen, sammen med reglene rundt navngivningskonvensjoner for SQL-tabeller.
Hva du vil lære:
- Forutsetninger
- MySQL CREATE TABLE Kommando
- Konklusjon
Forutsetninger
Forutsetningen for å kjøre noen av SQL-kommandoene er å laste ned MySQL-serveren. Den gratis fellesskapsutgaven kan lastes ned her.
Vi vil også bruke MySQL Workbench SQL Client for alle eksemplene og diskusjonene i denne opplæringen. Den gratis fellesskapsutgaven av MySQL Workbench kan lastes ned her (du kan velge versjonen avhengig av operativsystemet du jobber med).
I tilfelle du ikke vil bruke MySQL Workbench - kan du også bruke MySQL Command Line-klienten som følger med standardinstallasjonen av MySQL Server.
MySQL CREATE TABLE Kommando
CREATE TABLE-kommandoen er en del av DDL-kommandosett (Data Definition Language) i MySQL, og det tillater en bruker å lage en ny tabell for den gitte databasen.
Merk: CREATE TABLE-kommandoen eksisterer for nesten alle relasjonsdatabaser - som MySQL, Postgres, SQL Server, etc.
MySQL CREATE TABLE Syntaks
I den enkleste formen kan du bruke CREATE TABLE-kommandoen med bare de grunnleggende alternativene, dvs. tabellnavnet og kolonnedefinisjonene.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... );
La oss forstå syntaksargumentene i detalj:
- tabellnavn: Dette skal være navnet på tabellen du prøver å lage. Det skal være et fullt kvalifisert navn (i tilfelle du ikke har et standard databasesett). For eksempel, databaseName.tableName
Tabellnavnet kan spesifiseres uten anførselstegn eller med tilbakeslagssymbol som 'tableName' og 'databaseName'. `TableName ' - Kolonnedefinisjon: En tabell i SQL må bestå av minst en kolonne. Alle kolonnedefinisjonene må bestå av kolonnenavn samt kolonnedatatypen. Du kan også velge å inkludere de andre kolonneegenskapene som primærnøkkel, null, ikke null osv.
La oss se et eksempel på bruk av syntaksen ovenfor for å lage en tabell.
Vi vil lage en tabell 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 resultatet av tabellopprettelsen:
Merk:
# 1) Legg merke til bruken av (IF NOT EXISTS) den valgfrie kommandoen i syntaksen ovenfor.
Det anbefales generelt å bruke denne kommandoen, da det ville unngå å generere en feil hvis tabellen vi prøver å lage allerede er til stede i databasen.
Her er et eksempel på bruk med og uten IF NOT EXISTS.
- Uten HVIS IKKE EXISTS ville generert en feil hvis tabellen allerede eksisterer.
- Med IF NOT EXISTS vil det ikke generere en feil. Det vil imidlertid vise en advarsel om at tabellen allerede eksisterer.
# 2) 'tableName' mens du bruker kommandoen CREATE TABLE, bør være fullstendig kvalifisert med databasenavn, dvs. måten vi har brukt den på er SAMPLE_DB.medarbeider_detaljer
De andre måtene å spesifisere tabellnavnet på er å sette opp gjeldende database ved hjelp av kommandoen ‘BRUK’. F.eks. BRUK SAMPLE_DB; og kjører / bruker bare tabellnavnet i stedet for det fullt kvalifiserte tabellnavnet.
LAG TABELL Med tabellalternativer
Tabellalternativene brukes for å optimalisere oppførselen til MySQL-tabellene. Disse kan brukes mens du lager en tabell ved hjelp av MySQL CREATE TABLE-kommandoen (eller senere via ALTER TABLE-kommandoen).
Syntaksen forblir den samme med flere tabellalternativer som kan spesifiseres.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... ) (table “” not found /)
;
Vi vil diskutere de mest brukte alternativene nedenfor (En komplett liste over tabellalternativer finner du her ).
# 1) MOTOR
Den brukes til å spesifisere lagringsmotoren for tabellen, dvs. standardverdien er InnoDB. Dette er ikke nødvendig å endres med mindre det er behov for en spesifikk lagringsmotor. De andre gyldige verdiene for lagringsmotorer er MEMORY, CSV, HEAP, etc.
Syntaksen for å spesifisere MOTOR som en del av MySQL CREATE TABLE er gitt nedenfor.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )ENGINE='MEMORY';
# 2) AUTO_INCREMENT
Dette alternativet brukes til å angi den opprinnelige AUTO_INCREMENT-verdien i tabellen, dvs. standardverdien er 1, men du kan overstyre til en hvilken som helst annen positiv heltalsverdi.
Merk: AUTO_INCREMENT kan spesifiseres for bare en kolonne på bordet, og det skal være den primære nøkkelen. La oss se et eksempel på å spesifisere automatisk økning som 10 og sette inn en post for å validere hvis automatisk økning er satt riktig.
Vi bruker den samme tabellen ansatte_detaljer (sørg for å slippe den eksisterende tabellen før du kjører denne kommandoen) med et ekstra id-felt merket som primærnøkkel.
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;
La oss sette inn en rad uten verdi for ID og sikre at verdiene setter inn fra verdien fra 10.
INSERT INTO SAMPLE_DB.employee_details(name,age,address) values ('aman kumar',20,'mumbai'); select * from SAMPLE_DB.employee_details;
# 3) CHECKSUM
Dette bør settes til 1 hvis du vil ha et kontrollsum for hele tabellen. Det brukes vanligvis for å sikre at det ikke er noen ødelagte tabeller.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )CHECKSUM=1;
CHECKSUM holder en live kontrollsum av hele tabellen under innlegg eller oppdateringer
OPPRETT TABELL Med partisjonsdetaljer
Vi kan også nevne den brukerdefinerte partisjoneringen om nødvendig ved hjelp av partisjoneringsalternativene.
Partisjonering som konsept brukes i stor grad til å distribuere innholdet i tabellene over filsystemet for å sikre raskere tilgangstider og optimaliserte spørsmål. Partisjonering deler et stort bord i mindre tabeller, avhengig av de angitte strategiene eller partisjoneringsnøklene.
La oss se hvordan vi kan spesifisere partisjonsdetaljer med MySQL CREATE TABLE-kommandoen.
Vi vil bruke eksempeltabellen ansatte_detaljer og legge til en ny heltallskolonne med navnet department_id som vil bli brukt som en partisjon-hash-nøkkel for å ha en jevn fordeling av data.
Å spesifisere antall partisjoner vil også indikere hvor mange faktiske partisjoner som vil bli opprettet (i dette tilfellet 4). Hvis ikke spesifisert, vil det som standard bare være en partisjon.
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;
Merk: Vanligvis vil nøkkelen som skal brukes til å lage partisjoner avhenge av forventede tilgangsmønstre som vil bli brukt til bordet. Anta i dette tilfellet at vi vil spørre tabellen basert på avdelings-ID for det meste, så er det fornuftig å ha department_id som en del av hash-nøkkelen.
MySQL tabellkloning og kopiering
Noen ganger vil du kanskje opprette en klon av en eksisterende tabell eller kopiere innholdet fra en tabell til en annen tabell. MySQL støtter to måter å oppnå dette som vist nedenfor.
- Bruke LIKE-kommandoen
- Bruke SELECT-kommandoen
Tabellkloning ved hjelp av LIKE COMMAND
Med LIKE-kommandoen kan du opprette en ny tabell med nøyaktig samme kolonnenavn og egenskaper som de eksisterende tabellene.
Her er syntaksen ved hjelp av LIKE Command.
boble sortering fallende rekkefølge c ++
CREATE TABLE tableName1 LIKE tableName2
Med kommandoen ovenfor vil en ny tabell, dvs. tableName1, opprettes med samme struktur og egenskaper som tableName2.
Vær oppmerksom på at med denne tilnærmingen - bare kolonnenavn og egenskaper blir klonet og ikke de faktiske tabelldataene.
La oss prøve å lage en tabell med navnet medarbeider_detaljer og bruke denne tabellen til å lage en ny tabell med navnet student_detaljer ved hjelp av 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;
Nedenfor er utdataene fra kommandoen ovenfor.
Tabellkloning ved hjelp av VELG KOMMANDO
Denne tilnærmingen bruker SELECT-kommandoen for å lage en kopi av den eksisterende tabellen til en ny tabell.
Med denne tilnærmingen blir dataene fra tabellen også kopiert til den nye tabellen.
CREATE TABLE tableName1 AS SELECT * FROM tableName2;
La oss prøve å lage en tabell som heter medarbeider_detaljer og bruke denne tabellen til å opprette en ny tabell med navnet student_detaljer ved hjelp av VELG-alternativet.
CREATE TABLE SAMPLE_DB.student_details AS SELECT * FROM SAMPLE_DB.employee_details;
MySQL tabellnavnkonvensjoner
I de forrige avsnittene lærte vi om å lage tabeller MySQL. La oss nå se noen regler som du bør huske på når du navngir bordene sammen med begrensningene som gjelder med hensyn til MySQL.
Disse konvensjonene / reglene gjelder både SQL-tabeller og databaser.
# 1) Juridiske tegn i navn
til) Ikke-siterte navn kan bestå av alle tegn i SQL Servers standard tegnsett, med unntak av at ikke alle tegnene kan være sifre. For eksempel, ‘23test’ er et gyldig tabellnavn, men ikke ‘2345’.
Nedenfor er listen over tegn som kan brukes til ikke-siterte navn:
ASCII: (0-9, a-z, A-Z $ _) (grunnleggende latinske bokstaver, sifre 0-9, dollar, understrek)
Utvidet: U + 0080 .. U + FFFF
Lær mer om ASCII-koder her
b) Tabell- og databasenavn kan siteres med et backtick-tegn (`) og kan inneholde hvilken som helst bokstav / karakter bortsett fra backtick-tegnet selv. Med de siterte navnene kan du til og med ha tabell- / databasenavn som har alle sifrene.
Vær oppmerksom på at for slike tabeller må du bruke backticks rundt tabellen og / eller databasenavn for å få tilgang til data i slike tabeller.
c) Tabell- og databasenavn kan ikke inneholde punktum ‘.’ Som det brukes som en database- og tabellseparator.
d) Database- og tabellnavnene kan inneholde - '$' og '_' spesialtegn.
# 2) Navn Lengde
Maks tillatt lengde for et database- eller tabellnavn i MySQL er 64 tegn.
# 3) Navnekvalifiseringer
Som diskutert i de foregående avsnittene, i MySQL er en tabell alltid i sammenheng med databasen den er en del av. Derfor, for å få tilgang til en tabell, kan du bruke et fullt kvalifisert tabellnavn - som ikke er noe annet enn kombinasjonen av databasenavnet atskilt med en periode og deretter kolonnenavnet.
For eksempel, for å velge alle elementene fra tabellen ‘EMPLOYEE_DETAILS’ fra databasen SAMPLE_DB, kan du bruke et fullt kvalifisert navn som nedenfor.
SELECT * from SAMPLE_DB.EMPLOYEE_DETAILS;
DB- og tabellnavnene kan også spesifiseres som sitert med backticks separat som vist nedenfor.
SELECT * from `SAMPLE_DB`.`EMPLOYEE_DETAILS`;
Bransjens anbefalte konvensjoner og beste praksis rundt navngivningstabellene og databasene er gitt nedenfor.
- Navngi tabeller og databaser med små bokstaver - Dette gir vanligvis raskere skriving og spørring av DB, spesielt for de som er involvert i daglige spørsmål om DB.
- Bruk understreking (‘_’) i stedet for mellomrom i tabell- og db-navn - Dette gjør navnene mer lesbare.
- Bruk selvforklarende navn på tabellene og databasene - For eksempel, en tabell som inneholder detaljer om den ansatte kan navngis på forskjellige måter, for eksempel ansatt_info, ansatt_data, ansatt, ansatt_detaljer, ansatt_navn_og_adresse. Det vil være fornuftig å velge et navn som er mest selvforklarende. For eksempel, vi kan velge tabellnavnet som skal være ansatt_detaljer eller ansatt_info. Selv om dette er en subjektiv diskusjon, bør det avtales av flere medlemmer av teamet som skal bruke og opprette disse enhetene.
- Unngå å bruke tall i database- og tabellnavn - Som sample_db_2, test_table_1 osv.
Ofte stilte spørsmål og svar
Q # 1) Hvordan lage en tabell i MySQL ved hjelp av Index?
Svar: Du kan legge til en INDEKS mot hvilken som helst kolonne (eller kombinasjon av kolonner) under selve tabellopprettelsen.
La oss se et eksempel på å legge til en indeks mot kolonnen department_id for tabell ansatte_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) );
Q # 2) Hvordan lage en tabell med dato i MySQL?
Svar: Dato er en datatype som skal knyttes til en hvilken som helst kolonne mens du oppretter en tabell.
Se eksemplet nedenfor CREATE TABLE-kommandoen med joining_date-kolonnen som har DATETIME som datatype for en eksempeltabell medarbeider_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 # 3) Hvordan kan jeg se strukturen til tabellen i MySQL?
Svar: Etter at du har opprettet en tabell, hvis du vil referere til strukturen i tabellen som kolonner, indekser osv., Kan du bruke DESCRIBE-kommandoen til å hente detaljene.
Syntaks:
DESCRIBE tableName;
La oss lage en tabell og se utdataene for DESCRIBE-kommandoen.
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 utgangen av DESCRIBE-kommandoen.
Spørsmål nr. 4) Hvordan legger jeg til en UTENLANDSK Nøkkel til et bord i MySQL?
forskjell mellom black box testing og whitebox testing
Svar: Foreign Key brukes til å koble to tabeller sammen i MySQL. For å kunne bruke begrensningen for fremmednøkkel, bør du allerede ha opprettet tabellen du henviser til.
>> Lær mer om MySQL Foreign Key Constraint
La oss prøve å forstå dette med et eksempel. La oss si at vi har to tabeller, dvs. institutt (som har detaljer om de forskjellige instituttene som høgskolen har) og studentdetaljer (alle detaljer knyttet til studenter).
Avdelingen har kolonner - id (primærnøkkel) og navn.
Studentdetaljer - id (primærnøkkel), alder, adresse og avdeling_id (utenlandsk nøkkel referert fra avdelingstabellen).
Nedenfor er syntaksen for CREATE TABLE-kommandoen for begge disse tabellene.
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 UTENLANDSK Nøkkelhenvisning i tabellen student_detaljer der vi har nevnt forholdet mellom kolonnene og avdelings-ID skal refereres til ved kolonne-ID fra avdelingstabellen.
Konklusjon
CREATE TABLE-kommandoen i MySQL som tilhører kommandoer i kategorien Data Definition Language ble forklart i detalj her.
Vi lærte om de forskjellige tabellalternativene som MOTOR, CHECKSUM, etc som kan nevnes sammen med CREATE TABLE-kommandoen for å ha flere egenskaper som blir satt for tabellen.
Vi gikk gjennom måtene å lage en klon av den eksisterende tabellen i MySQL. Til slutt snakket vi om navnekonvensjonene for tabellnavnene sammen med de bransjeanbefalte beste praksis.
Glad lesning !!
Anbefalt lesing
- MySQL Lag visningsveiledning med kodeeksempler
- MySQL datatyper | Hva er forskjellige datatyper i MySQL
- MySQL Sett inn i tabellen - Sett inn uttalelsessyntaks og eksempler
- MySQL JOIN Opplæring: indre, ytre, kryss, venstre, høyre og selv
- Forskjellen mellom SQL Vs MySQL Vs SQL Server (med eksempler)
- Slik bruker du PL SQL Sett inn, oppdater, slett og velg uttalelse
- MongoDB Opprette databaseopplæring
- MongoDB Opprett bruker og tildel roller med eksempler