Hvordan lage en database i MySQL (Skape MySQL Tabeller)

โšก Smart oppsummering

Opprette en database i MySQL fรธlger to velprรธvde baner: รฅ utfรธre en CREATE DATABASE-setning, eller รฅ generere fysiske skjemaer fra en ER-modell gjennom MySQL Fremtidsrettet utvikling av arbeidsbenker. Begge tilnรฆrmingene produserer identiske, produksjonsklare tabeller.

  • ๐Ÿ—„๏ธ Oppretting av database: Kjรธr CREATE DATABASE-filmer; eller CREATE SCHEMA, som MySQL behandles som et synonym.
  • ๐Ÿ›ก๏ธ Trygge gjentakelser: Legg til IF NOT EXISTS slik at et gjentatt skript hopper over opprettelsen i stedet for รฅ generere en duplikatnavn-feil.
  • ๐ŸŒ Tegnsett: Velg utf8mb4 med utf8mb4_0900_ai_ci for flersprรฅklige data; latin1 med latin1_swedish_ci passer til eldre engelsksprรฅklige skjemaer.
  • ๐Ÿงฑ Tabelloppretting: CREATE TABLE definerer hvert feltnavn, datatype, PRIMARY KEY og lagringsmotoren, vanligvis InnoDB.
  • ๐Ÿ”ข Datatyper: Kolonnetyper faller inn i numeriske, tekst- og dato- eller klokkeslettfamilier, i tillegg til ENUM-, SET-, BOOL- og binรฆre varianter.
  • โš™๏ธ Forward Engineering: MySQL Workbench konverterer en godkjent ER-modell til kjรธrbare SQL-skript og lagrer dem pรฅ en aktiv server.

Trinn for รฅ opprette database i MySQL

En database i MySQL er en navngitt beholder for tabeller, visninger og relaterte objekter. Du kan opprette en pรฅ to mรฅter:

1) Ved รฅ utfรธre en enkel SQL-spรธrring

2) Ved รฅ bruke forward engineering i MySQL Workbench

As SQL nybegynner, la oss fรธrst se nรฆrmere pรฅ spรธrringsmetoden.

Hvordan lage en database i MySQL

Her er hvordan du oppretter en database i MySQL:

CREATE DATABASE er SQL-kommandoen som brukes til รฅ lage en database i MySQL.

Tenk deg at du mรฅ opprette en database med navnet ยซfilmerยป. Du kan opprette en database i MySQL ved รฅ kjรธre fรธlgende SQL-kommando.

CREATE DATABASE movies;

Merk: Du kan ogsรฅ bruke kommandoen CREATE SCHEMA i stedet for CREATE DATABASE.

Setningen fungerer bare รฉn gang. ร… kjรธre den pรฅ nytt gir en feil, sรฅ la oss forbedre spรธrringen med flere parametere.

HVIS IKKE FINNES

En enkelt MySQL Serveren kan inneholde mange databaser. Nรฅr flere personer deler den serveren, kan du prรธve รฅ opprette en database med navnet pรฅ en eksisterende.

HVIS IKKE FINNES instruerer MySQL serveren for รฅ se etter en database med samme navn fรธr den opprettes. Databasen opprettes bare hvis navnet er ledig; uten denne klausulen, MySQL gir en feil.

CREATE DATABASE IF NOT EXISTS movies;

Nรฅr databasenavnet er trygt, er neste avgjรธrelse hvordan MySQL skal lagre og sammenligne teksten i den.

Samling og tegnsett

A tegnsett bestemmer hvilke tegn en kolonne kan lagre, mens en sortering er settet med regler brukt i sammenligning og sortering. Begge kan defineres pรฅ fire nivรฅer: server, database, tabell og kolonne.

Sorteringen du velger avhenger av tegnsettet. For eksempel bruker latin1-tegnsettet latin1_swedish_ci sortering, som er den svenske rekkefรธlgen som ikke skiller mellom store og smรฅ bokstaver.

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

For lokale sprรฅk som arabisk eller kinesisk, velg Unicode utf8mb4 tegnsett, som lagrer alle Unicode-tegn, inkludert emoji. I MySQL 8.0, utf8mb4 er standard tegnsett og utf8mb4_0900_ai_ci standard sortering.

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

Du kan finne listen over alle sammenstillinger og tegnsett her..

Du kan se listen over eksisterende databaser ved รฅ kjรธre fรธlgende SQL-kommando.

SHOW DATABASES;

Nรฅr databasen er pรฅ plass, kan du nรฅ legge til tabellene som faktisk skal inneholde postene.

Hvordan lage tabell i MySQL

CREATE TABLE-kommandoen brukes til รฅ opprette tabeller i en database.

Lag tabell i MySQL

Som diagrammet viser, tilhรธrer hver tabell รฉn database. Tabeller opprettes med LAG TABELL setning, som har fรธlgende syntaks.

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

HER

  • ยซOPPRETT TABELLยป er ansvarlig for opprettelsen av tabellen i databasen.
  • ยซ[HVIS IKKE FINNES]ยป er valgfritt og oppretter bare tabellen hvis det ikke finnes noe samsvarende tabellnavn.
  • ยซ`fieldName`ยป er navnet pรฅ feltet, og ยซdatatypeยป definerer typen data som er lagret i det.
  • ยซ[valgfrie parametere]ยป er ekstra informasjon om et felt, for eksempel ยซAUTO_INCREMENTยป eller NOT NULL.
  • ยซStorage Engineยป administrerer tabellen, vanligvis InnoDB, som stรธtter transaksjoner og fremmednรธkler.

MySQL Lag tabelleksempel

Nedenfor er en MySQL eksempel for รฅ lage en tabell 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;

OBS: den riktige MySQL nรธkkelordet er AUTO_INCREMENT med en understrek. AUTOINCREMENT tilhรธrer SQLite og forรฅrsaker en syntaksfeil i MySQL.

Hver kolonne har en datatype, sรฅ velg nรธye: verken undervurder eller overvurder dataomrรฅdet du forventer.

MySQL Datatyper

Datatyper definerer hva slags data som kan lagres i en bestemt kolonne i en tabell.

MySQL har 3 hovedkategorier av datatyper, nemlig:

  1. Numerisk
  2. tekst
  3. Dato tid

Numeriske datatyper

Numeriske datatyper brukes til รฅ lagre numeriske verdier. Det er svรฆrt viktig รฅ sรธrge for at dataomrรฅdet er mellom den nedre og รธvre grensen for den numeriske datatypen du velger.

TINYINT( ) -128 til 127 normalt
0 til 255 USIGNERT.
SMALLINT( ) -32768 til 32767 normalt
0 til 65535 USIGNERT.
MEDIUMINT( ) -8388608 til 8388607 normalt
0 til 16777215 USIGNERT.
INT( ) -2147483648 til 2147483647 normalt
0 til 4294967295 USIGNERT.
BIGINT( ) -9223372036854775808 til 9223372036854775807 normalt
0 til 18446744073709551615 USIGNERT.
FLOAT Et lite omtrentlig tall med et flytende desimaltegn.
DOBBEL( , ) Et stort tall med et flytende desimaltegn.
DESIMAL( , ) En DOBBELT lagret som en streng, som tillater et fast desimaltegn. Valg for lagring av valutaverdier.

Tekstdatatyper

Som navnet pรฅ datatypekategorien tilsier, brukes disse til รฅ lagre tekstverdier. Sรธrg alltid for at lengden pรฅ tekstdataene dine ikke overstiger kolonnens maksimale lengde.

CHAR( ) En fast del fra 0 til 255 tegn.
VARCHAR( ) En variabel del fra 0 til 255 tegn.
LITEN TEKST En streng med maksimal lengde pรฅ 255 tegn.
TEKST En streng med maksimal lengde pรฅ 65535 tegn.
BLOB En streng med maksimal lengde pรฅ 65535 tegn.
MEDIUMTEKST En streng med maksimal lengde pรฅ 16777215 tegn.
MIDDELS BLOB En streng med maksimal lengde pรฅ 16777215 tegn.
LANGTEKST En streng med maksimal lengde pรฅ 4294967295 tegn.
LANGBLOB En streng med maksimal lengde pรฅ 4294967295 tegn.

Dato- og klokkeslettdatatyper

Dato- og klokkeslettdatatyper lagrer kalender- og klokkeverdier i et fast format, noe som sikrer pรฅlitelig sortering og sammenligning.

INFORMASJON ร…ร…ร…ร…-MM-DD
DATO TID ร…ร…ร…ร…-MM-DD HH: MM: SS
TIMESTAMP รฅรฅรฅรฅmmddttmmss
TIME HH: MM: SS

Andre datatyper

Bortsett fra det ovennevnte, finnes det noen andre datatyper i MySQL.

ENUM Lagre en tekstverdi valgt fra en liste med forhรฅndsdefinerte tekstverdier
SET Dette brukes ogsรฅ til รฅ lagre tekstverdier valgt fra en liste med forhรฅndsdefinerte tekstverdier. Den kan ha flere verdier.
BOOL Synonym for TINYINT(1), brukes til รฅ lagre boolske verdier
BINARY Ligner pรฅ CHAR; forskjellen er at tekst lagres i binรฆrt format.
VARBINARY Ligner pรฅ VARCHAR; forskjellen er at tekst lagres i binรฆrt format.

La oss nรฅ se pรฅ en spรธrring for รฅ opprette en tabell som bruker alle datatypene. Studer den og identifiser hvordan hver datatype er definert i tabellen nedenfor. 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;

Beste praksis for รฅ lage en MySQL Database

Noen fรฅ konvensjoner sรธrger for at skriptene dine er lesbare:

  • Bruk store bokstaver for SQL-nรธkkelord, f.eks. ยซDROP SCHEMA IF EXISTS `MyFlixDB`;ยป
  • Avslutt alle SQL-kommandoene dine med semikolon.
  • Unngรฅ รฅ bruke mellomrom i skjema-, tabell- og feltnavn. Bruk understrek i stedet for รฅ skille skjema-, tabell- eller feltnavn.
  • Foretrekk InnoDB fremfor MyISAM for nye tabeller, fordi InnoDB stรธtter transaksjoner, lรฅsing pรฅ radnivรฅ og fremmednรธkler.

Spรธrremetoden er fullfรธrt. Den andre ruten nรฅr den samme databasen fra en visuell modell i stedet for hรฅndskrevet SQL.

Hvordan lage MySQL Arbeidsbenk ER-diagram Fremoverrettet ingeniรธrfag

MySQL Workbench har verktรธy som stรธtter videreutvikling. Forward engineering er det tekniske begrepet som beskriver prosessen med automatisk oversette en logisk modell til en fysisk implementering.

Vi opprettet en ER-diagram i vรฅr ER-modellering leksjon. Vi skal nรฅ bruke den ER-modellen til รฅ generere SQL-skriptene som skal opprette databasen vรฅr.

Opprette MyFlix-databasen fra MyFlix ER-modellen

Trinn 1) ร…pne ER-modellen til MyFlix-databasen som du opprettet tidligere.

Trinn 2) Velg forward engineer

Klikk pรฅ Database-menyen og velg Forward Engineer.

Velg videreutvikler i MySQL Workbench

Trinn 3) Tilkoblingsalternativer

Det neste vinduet lar deg koble til en instans av MySQL server. Klikk pรฅ rullegardinlisten for lagrede tilkoblinger og velg lokal vert. Klikk pรฅ Utfรธr.

Tilkoblingsalternativer i veiviseren for videresending av tekniker

Trinn 4) Velg alternativene som vises nedenfor

Velg alternativene som vises nedenfor i veiviseren som vises. Klikk pรฅ Neste.

Alternativer for videresending av ingeniรธrer for MyFlix-databasen

Trinn 5) Behold standardvalgene og klikk pรฅ Neste

Det neste skjermbildet viser et sammendrag av objektene i EER-diagrammet vรฅrt. MyFlix-databasen vรฅr har 5 tabeller. Behold valgene som standard og klikk pรฅ Neste.

Sammendrag av objekter i MyFlix EER-diagrammet

Trinn 6) Revse SQL-skriptet

Vinduet nedenfor forhรฅndsviser SQL-skriptet som oppretter databasen vรฅr. Lagre skriptet i en *.sql-fil eller kopier det til utklippstavlen, og klikk deretter pรฅ Neste.

Forhรฅndsvisning av det genererte SQL-skriptet

Trinn 7) Forplikt deg til fremgang

Vinduet nedenfor vises nรฅr databasen er opprettet pรฅ den valgte MySQL serverinstans. Tabellene fra ER-modellen finnes nรฅ fysisk pรฅ serveren.

Fremdriftsvindu for videreutvikling av ingeniรธrarbeid

Databasen sammen med dummy-data er vedlagt. Vi vil bruke denne databasen i leksjonene som fรธlger. Bare importer den inn MySQL Arbeidsbenk for รฅ komme i gang.

Klikk her for รฅ laste ned MyFlixDB

Spรธrsmรฅl og svar

Det er ingen forskjell i MySQLCREATE SCHEMA er et alias for CREATE DATABASE, og begge bygger det samme objektet. I andre systemer, som f.eks. Oracle, forblir et skjema og en database separate konsepter.

Kjรธr DROP DATABASE IF EXISTS-filmer; fra klienten eller fra MySQL WorkbenchKommandoen sletter databasen og alle tabellene i den permanent, sรฅ ta en sikkerhetskopi fรธrst.

Kontoen trenger CREATE-rettigheten pรฅ globalt nivรฅ. Administratorer gir den med GRANT CREATE ON *.* TO 'user'@'localhost';. Uten denne rettigheten returnerer serveren en feilmelding om nektet tilgang.

Ja. AI-assistenter gjรธr en enkel beskrivelse av enhetene dine om til CREATE TABLE-skript med nรธkler og datatyper. Se alltid gjennom de genererte typene, lengdene og begrensningene fรธr du kjรธrer skriptet pรฅ en produksjonsserver.

AI-funksjoner i moderne databaseklienter leser dine ER-diagram eller spรธrre i historikken og foreslรฅ normaliseringsrettinger, indekskandidater og datatypekorrigeringer. Forslagene fremskynder designgjennomganger, men et menneske godkjenner fortsatt alle endringer.

Oppsummer dette innlegget med: