Sådan opretter du en database i MySQL (Skab MySQL tabeller)

⚡ Smart opsummering

Oprettelse af en database i MySQL følger to dokumenterede stier: udførelse af en CREATE DATABASE-sætning eller generering af fysiske skemaer fra en ER-model via MySQL Fremadrettet udvikling af arbejdsbænke. Begge tilgange producerer identiske, produktionsklare tabeller.

  • 🗄️ Oprettelse af database: Kør CREATE DATABASE-film; eller CREATE SCHEMA, hvilket MySQL behandles som et synonym.
  • 🛡️ Sikre gentagelser: Tilføj IF NOT EXISTS, så et gentaget script springer oprettelsen over i stedet for at generere en duplikatnavn-fejl.
  • 🌐 Tegnsæt: Vælg utf8mb4 med utf8mb4_0900_ai_ci for flersprogede data; latin1 med latin1_swedish_ci passer til ældre skemaer, der kun er på engelsk.
  • 🧱 Oprettelse af tabel: CREATE TABLE definerer hvert feltnavn, datatype, PRIMARY KEY og lagringsmotoren, normalt InnoDB.
  • 🔢 Datatyper: Kolonnetyper falder i numeriske, tekst- og dato- eller tidsfamilier, plus ENUM-, SET-, BOOL- og binære varianter.
  • 🇧🇷 Forward Engineering: MySQL Workbench konverterer en godkendt ER-model til eksekverbare SQL-scripts og committer dem til en live server.

Trin til at oprette database i MySQL

En database i MySQL er en navngiven container til tabeller, visninger og relaterede objekter. Du kan oprette en på to måder:

1) Ved at udføre en simpel SQL-forespørgsel

2) Ved at bruge forward engineering i MySQL Workbench

As SQL begyndere, lad os først se på forespørgselsmetoden.

Sådan opretter du en database i MySQL

Sådan opretter du en database i MySQL:

CREATE DATABASE er SQL-kommandoen, der bruges til at oprette en database i MySQL.

Forestil dig, at du skal oprette en database med navnet "film". Du kan oprette en database i MySQL ved at udføre følgende SQL-kommando.

CREATE DATABASE movies;

Bemærk: Du kan også bruge kommandoen CREATE SCHEMA i stedet for CREATE DATABASE.

Sætningen virker kun én gang. Hvis du kører den igen, giver det en fejl, så lad os forbedre forespørgslen med flere parametre.

HVIS IKKE FINNES

En enkelt MySQL Serveren kan indeholde mange databaser. Når flere personer deler serveren, kan du prøve at oprette en database med navnet på en eksisterende.

HVIS IKKE FINNES instruerer MySQL serveren til at kontrollere, om der er en database med samme navn, før den oprettes. Databasen oprettes kun, hvis navnet er ledigt; uden denne klausul, MySQL kaster en fejl.

CREATE DATABASE IF NOT EXISTS movies;

Når databasenavnet er sikkert, er den næste beslutning hvordan MySQL skal gemme og sammenligne teksten i den.

Samling og tegnsæt

A tegnsæt bestemmer hvilke tegn en kolonne kan gemme, mens en sortering er sættet af regler brugt i sammenligning og sortering. Begge kan defineres på fire niveauer: server, database, tabel og kolonne.

Den valgte sortering afhænger af tegnsættet. For eksempel bruger latin1-tegnsættet latin1_swedish_ci sortering, som er den svenske rækkefølge uden forskel på store og små bogstaver.

CREATE DATABASE IF NOT EXISTS movies CHARACTER SET latin1 COLLATE latin1_swedish_ci;

For lokale sprog som arabisk eller kinesisk skal du vælge Unicode utf8mb4 tegnsæt, som gemmer alle Unicode-tegn, inklusive emoji. I MySQL 8.0, utf8mb4 er standardtegnsættet og utf8mb4_0900_ai_ci standardsorteringen.

CREATE DATABASE IF NOT EXISTS movies CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

Du kan finde listen over alle sorteringer og tegnsæt link..

Du kan se listen over eksisterende databaser ved at køre følgende SQL-kommando.

SHOW DATABASES;

Når databasen er på plads, kan du nu tilføje de tabeller, der rent faktisk skal indeholde posterne.

Sådan opretter du en tabel i MySQL

Kommandoen CREATE TABLE bruges til at oprette tabeller i en database.

Opret tabel i MySQL

Som diagrammet viser, tilhører hver tabel én database. Tabeller oprettes med Opret tabel sætning, som har følgende syntaks.

CREATE TABLE [IF NOT EXISTS] `TableName` (`fieldname` dataType [optional parameters]) ENGINE = storage Engine;

HER

  • "CREATE TABLE" er ansvarlig for oprettelsen af ​​tabellen i databasen.
  • “[HVIS IKKE FINDES]” er valgfri og opretter kun tabellen, hvis der ikke findes et matchende tabelnavn.
  • "`fieldName`" er navnet på feltet, og "datatype" definerer arten af ​​de data, der er gemt i det.
  • "[valgfrie parametre]" er ekstra information om et felt, f.eks. "AUTO_INCREMENT" eller NOT NULL.
  • "Storage Engine" administrerer tabellen, normalt InnoDB, som understøtter transaktioner og fremmednøgler.

MySQL Opret tabeleksempel

Nedenfor er en MySQL eksempel på at oprette en tabel i en database:

CREATE TABLE IF NOT EXISTS `MyFlixDB`.`Members` (
  `membership_number` INT AUTO_INCREMENT ,
  `full_names` VARCHAR(150) NOT NULL ,
  `gender` VARCHAR(6) ,
  `date_of_birth` DATE ,
  `physical_address` VARCHAR(255) ,
  `postal_address` VARCHAR(255) ,
  `contact_number` VARCHAR(75) ,
  `email` VARCHAR(255) ,
  PRIMARY KEY (`membership_number`) )
ENGINE = InnoDB;

Bemærk: den korrekte MySQL søgeordet er AUTO_INCREMENT med et understregningstegn. AUTOINCREMENT tilhører SQLite og giver anledning til en syntaksfejl i MySQL.

Hver kolonne har en datatype, så vælg omhyggeligt: ​​hverken undervurder eller overvurder det forventede datainterval.

MySQL Datatyper

Datatyper definerer arten af ​​de data, der kan gemmes i en bestemt kolonne i en tabel.

MySQL har 3 hovedkategorier af datatyper, nemlig:

  1. Numerisk
  2. tekst
  3. Dato/tidspunkt

Numeriske datatyper

Numeriske datatyper bruges til at gemme numeriske værdier. Det er meget vigtigt at sikre, at dataområdet ligger mellem den nedre og øvre grænse for den valgte numeriske datatype.

TINYINT( ) -128 til 127 normalt
0 til 255 USIGNET.
SMALLINT( ) -32768 til 32767 normalt
0 til 65535 USIGNET.
MEDIUMINT( ) -8388608 til 8388607 normalt
0 til 16777215 USIGNET.
INT( ) -2147483648 til 2147483647 normalt
0 til 4294967295 USIGNET.
BIGINT( ) -9223372036854775808 til 9223372036854775807 normalt
0 til 18446744073709551615 USIGNET.
FLOAT Et lille omtrentligt tal med et flydende decimaltegn.
DOBBELT( , ) Et stort tal med et flydende decimaltegn.
DECIMAL( , ) En DOBBELT gemt som en streng, der tillader et fast decimaltegn. Valg til lagring af valutaværdier.

Tekstdatatyper

Som navnet på datatypekategorien antyder, bruges disse til at gemme tekstværdier. Sørg altid for, at længden af ​​dine tekstdata ikke overstiger kolonnens maksimale længde.

CHAR( ) En fast sektion fra 0 til 255 tegn.
VARCHAR( ) En variabel sektion fra 0 til 255 tegn lang.
TINYTEXT En streng med en maksimal længde på 255 tegn.
TEKST En streng med en maksimal længde på 65535 tegn.
Blob En streng med en maksimal længde på 65535 tegn.
MIDDELTEKST En streng med en maksimal længde på 16777215 tegn.
MELLEMBLOB En streng med en maksimal længde på 16777215 tegn.
LANGTEKST En streng med en maksimal længde på 4294967295 tegn.
LANGBLOB En streng med en maksimal længde på 4294967295 tegn.

Dato- og tidsdatatyper

Dato- og klokkeslætsdatatyper gemmer kalender- og urværdier i et fast format, hvilket sikrer pålidelig sortering og sammenligning.

INFORMATION ÅÅÅÅ-MM-DD
DATO TID ÅÅÅÅ-MM-DD HH: MM: SS
TIDSSTEMPEL ååååmmddttmmss
TIME HH: MM: SS

Andre datatyper

Udover ovenstående findes der også andre datatyper MySQL.

ENUM Sådan gemmer du en tekstværdi valgt fra en liste over foruddefinerede tekstværdier
SET Dette bruges også til at gemme tekstværdier valgt fra en liste over foruddefinerede tekstværdier. Det kan have flere værdier.
BOOL Synonym for TINYINT(1), bruges til at gemme booleske værdier
Binary Ligesom CHAR; forskellen er, at tekster gemmes i binært format.
VARBINARY Ligesom VARCHAR; forskellen er, at tekster gemmes i binært format.

Lad os nu se på en forespørgsel til oprettelse af en tabel, der bruger alle datatyperne. Undersøg den, og identificer, hvordan hver datatype er defineret i nedenstående oprettelsestabel. MySQL eksempel.

CREATE TABLE `all_data_types` (
    `varchar` VARCHAR( 20 )  ,
    `tinyint` TINYINT  ,
    `text` TEXT  ,
    `date` DATE  ,
    `smallint` SMALLINT  ,
    `mediumint` MEDIUMINT  ,
    `int` INT  ,
    `bigint` BIGINT  ,
    `float` FLOAT( 10, 2 )  ,
    `double` DOUBLE  ,
    `decimal` DECIMAL( 10, 2 )  ,
    `datetime` DATETIME  ,
    `timestamp` TIMESTAMP  ,
    `time` TIME  ,
    `year` YEAR  ,
    `char` CHAR( 10 )  ,
    `tinyblob` TINYBLOB  ,
    `tinytext` TINYTEXT  ,
    `blob` BLOB  ,
    `mediumblob` MEDIUMBLOB  ,
    `mediumtext` MEDIUMTEXT  ,
    `longblob` LONGBLOB  ,
    `longtext` LONGTEXT  ,
    `enum` ENUM( '1', '2', '3' )  ,
    `set` SET( '1', '2', '3' )  ,
    `bool` BOOL  ,
    `binary` BINARY( 20 )  ,
    `varbinary` VARBINARY( 20 )
) ENGINE = MYISAM;

De bedste fremgangsmåder til at skabe en MySQL Database

Et par konventioner holder dine scripts læsbare:

  • Brug store bogstaver til SQL-nøgleord, f.eks. “DROP SCHEMA IF EXISTS `MyFlixDB`;”
  • Afslut alle dine SQL-kommandoer med semikolon.
  • Undgå at bruge mellemrum i skema-, tabel- og feltnavne. Brug i stedet understregninger til at adskille skema-, tabel- eller feltnavne.
  • Foretræk InnoDB frem for MyISAM til nye tabeller, fordi InnoDB understøtter transaktioner, låsning på rækkeniveau og fremmednøgler.

Forespørgselsmetoden er fuldført. Den anden rute når den samme database fra en visuel model i stedet for håndskrevet SQL.

Sådan opretter du MySQL Arbejdsbænk ER-diagram Fremadrettet ingeniørarbejde

MySQL Workbench har hjælpeprogrammer, der understøtter forward engineering. Fremadrettet ingeniørarbejde er det tekniske udtryk, der beskriver processen med automatisk oversættelse af en logisk model til en fysisk implementering.

Vi skabte en ER diagram i vores ER-modellering lektion. Vi vil nu bruge ER-modellen til at generere de SQL-scripts, der opretter vores database.

Oprettelse af MyFlix-databasen fra MyFlix ER-modellen

Trin 1) Åbn ER-modellen af ​​MyFlix-databasen som du har oprettet tidligere.

Trin 2) Vælg forward engineer

Klik på menuen Database, og vælg Forward Engineer.

Vælg fremadrettet ingeniør i MySQL Workbench

Trin 3) Forbindelsesmuligheder

Det næste vindue giver dig mulighed for at oprette forbindelse til en instans af MySQL server. Klik på rullelisten med gemte forbindelser, og vælg lokal vært. Klik på Udfør.

Forbindelsesmuligheder i guiden til viderestilling af tekniker

Trin 4) Vælg de viste muligheder nedenfor

Vælg de viste muligheder nedenfor i den guide, der vises. Klik på Næste.

Muligheder for videresendelse af teknikere til MyFlix-databasen

Trin 5) Behold standardvalgene, og klik på Næste

Den næste skærm viser en oversigt over objekter i vores EER-diagram. Vores MyFlix-database har 5 tabeller. Behold standardindstillingerne, og klik på Næste.

Oversigt over objekter i MyFlix EER-diagrammet

Trin 6) Revse SQL-scriptet

Vinduet nedenfor viser et eksempel på det SQL-script, der opretter vores database. Gem scriptet i en *.sql-fil, eller kopier det til udklipsholderen, og klik derefter på Næste.

Forhåndsvisning af det genererede SQL-script

Trin 7) Forpligt fremskridt

Vinduet nedenfor vises, når databasen er oprettet på den valgte MySQL serverinstans. Tabellerne fra ER-modellen findes nu fysisk på serveren.

Fremadrettet engineering commit statusvindue

Databasen sammen med dummy-data er vedhæftet. Vi vil bruge denne database i de følgende lektioner. Du skal blot importere den i MySQL Arbejdsbænk til at komme i gang.

Klik her for at downloade MyFlixDB

Ofte Stillede Spørgsmål

Der er ingen forskel i MySQLCREATE SCHEMA er et alias for CREATE DATABASE, og begge bygger det samme objekt. I andre systemer, som f.eks. Oracle, et skema og en database forbliver separate begreber.

Kør DROP DATABASE IF EXISTS-film; fra klienten eller fra MySQL WorkbenchKommandoen sletter databasen og alle tabeller i den permanent, så tag først en sikkerhedskopi.

Kontoen skal have CREATE-privilegiet på globalt niveau. Administratorer tildeler det med GRANT CREATE ON *.* TO 'bruger'@'localhost';. Uden dette privilegium returnerer serveren en "adgang nægtet"-fejl.

Ja. AI-assistenter omdanner en simpel beskrivelse af dine enheder til CREATE TABLE-scripts med nøgler og datatyper. Gennemgå altid de genererede typer, længder og begrænsninger, før du kører scriptet på en produktionsserver.

AI-funktioner i moderne databaseklienter læser dine ER diagram eller forespørge på historikken og foreslå normaliseringsrettelser, indekskandidater og datatypekorrektioner. Forslagene fremskynder designgennemgange, men et menneske godkender stadig hver ændring.

Opsummer dette indlæg med: