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.

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.
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:
- Numerisk
- tekst
- 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.
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.
Trinn 4) Velg alternativene som vises nedenfor
Velg alternativene som vises nedenfor i veiviseren som vises. Klikk pรฅ Neste.
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.
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.
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.
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







.png)