Come creare un database in MySQL (Creare MySQL Tabelle)

โšก Riepilogo intelligente

Creazione di un database in MySQL segue due percorsi comprovati: l'esecuzione di un'istruzione CREATE DATABASE o la generazione di schemi fisici da un modello ER tramite MySQL Progettazione avanzata con Workbench. Entrambi gli approcci producono tabelle identiche e pronte per la produzione.

  • ๏ธ Creazione del database: Eseguire i filmati CREATE DATABASE; oppure CREATE SCHEMA, che MySQL tratta come sinonimo.
  • ๐Ÿ›ก๏ธ Riproduzioni sicure: Aggiungi IF NOT EXISTS in modo che uno script ripetuto salti la creazione invece di generare un errore di nome duplicato.
  • ๐ŸŒ Set di caratteri: Per i dati multilingue, scegli utf8mb4 con utf8mb4_0900_ai_ci; latin1 con latin1_swedish_ci รจ adatto agli schemi legacy in sola lingua inglese.
  • ๐Ÿงฑ Creazione della tabella: L'istruzione CREATE TABLE definisce il nome di ciascun campo, il tipo di dati, la CHIAVE PRIMARIA e il motore di archiviazione, solitamente InnoDB.
  • ๐Ÿ”ข Tipi di dati: I tipi di colonna si suddividono in famiglie numeriche, testuali e di data o ora, oltre alle varianti ENUM, SET, BOOL e binarie.
  • โš™๏ธ Ingegneria avanzata: MySQL Workbench converte un modello ER approvato in script SQL eseguibili e li invia a un server di produzione.

Passaggi per creare un database in MySQL

Un database in MySQL รˆ un contenitore denominato per tabelle, viste e oggetti correlati. รˆ possibile crearne uno in due modi:

1) Eseguendo una semplice query SQL

2) Utilizzando il forward engineering in MySQL banco di lavoro

As Principiante SQL, esaminiamo prima il metodo di query.

Come creare un database in MySQL

Ecco come creare un database in MySQL:

CREATE DATABASE รจ il comando SQL utilizzato per creare un database in MySQL.

Immagina di dover creare un database con il nome "film". Puoi creare un database in MySQL eseguendo il seguente comando SQL.

CREATE DATABASE movies;

Nota: รจ possibile utilizzare anche il comando CREATE SCHEMA al posto di CREATE DATABASE.

L'istruzione funziona solo una volta. Eseguendola di nuovo si verifica un errore, quindi miglioriamo la query aggiungendo altri parametri.

SE NON ESISTE

Un singolo MySQL Un server puรฒ ospitare molti database. Quando piรน persone condividono lo stesso server, si potrebbe tentare di creare un database con lo stesso nome di uno giร  esistente.

SE NON ESISTE istruisce il MySQL server per verificare se esiste un database con lo stesso nome prima di crearlo. Il database viene creato solo se il nome รจ libero; senza questa clausola, MySQL genera un errore.

CREATE DATABASE IF NOT EXISTS movies;

Una volta che il nome del database รจ sicuro, la decisione successiva รจ come MySQL dovrebbe memorizzare e confrontare il testo al suo interno.

Collazione e set di caratteri

A set di caratteri decide quali caratteri puรฒ memorizzare una colonna, mentre un confronto รจ l'insieme di regole utilizzate nel confronto e l'ordinamento. Entrambi possono essere definiti a quattro livelli: server, database, tabella e colonna.

La collazione che scegli dipende dal set di caratteri. Ad esempio, il set di caratteri latin1 utilizza il latin1_swedish_ci collazione, che รจ l'ordine svedese senza distinzione tra maiuscole e minuscole.

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

Per le lingue locali come l'arabo o il cinese, selezionare Unicode utf8mb4 set di caratteri, che memorizza ogni carattere Unicode, incluse le emoji. In MySQL 8.0 utf8mb4 รจ il set di caratteri predefinito e utf8mb4_0900_ai_ci la collazione predefinita.

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

รˆ possibile trovare l'elenco di tutte le regole di confronto e i set di caratteri Qui..

รˆ possibile visualizzare l'elenco dei database esistenti eseguendo il seguente comando SQL.

SHOW DATABASES;

Una volta creato il database, รจ possibile aggiungere le tabelle che conterranno effettivamente i record.

Come creare una tabella in MySQL

Il comando CREATE TABLE viene utilizzato per creare tabelle in un database.

Crea tabella in MySQL

Come mostra il diagramma, ogni tabella appartiene a un database. Le tabelle vengono create con il CREA TABELLA dichiarazione, che ha la seguente sintassi.

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

QUI

  • Il comando โ€œCREATE TABLEโ€ รจ responsabile della creazione della tabella nel database.
  • โ€œ[IF NOT EXISTS]โ€ รจ facoltativo e crea la tabella solo se non viene trovato alcun nome di tabella corrispondente.
  • โ€œ`fieldName`โ€ รจ il nome del campo, mentre โ€œdata Typeโ€ definisce la natura dei dati in esso memorizzati.
  • โ€œ[parametri opzionali]โ€ sono informazioni aggiuntive su un campo, come โ€œAUTO_INCREMENTโ€ o NOT NULL.
  • Il "motore di archiviazione" gestisce la tabella, solitamente InnoDB, che supporta transazioni e chiavi esterne.

MySQL Crea esempio di tabella

Di seguito รจ riportato un MySQL Esempio di creazione di una tabella in un 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;

Nota: la corretta MySQL la parola chiave รจ AUTO_INCREMENT con un trattino basso. AUTOINCREMENT appartiene a SQLite e genera un errore di sintassi in MySQL.

Ogni colonna contiene un tipo di dati, quindi scegliete con attenzione: non sottovalutate nรฉ sopravvalutate la gamma di dati che prevedete di contenere.

MySQL Tipi di dati

I tipi di dati definiscono la natura dei dati che possono essere memorizzati in una particolare colonna di una tabella.

MySQL ha 3 principali categorie di tipi di dati, ovvero:

  1. Numerico
  2. Testo
  3. Appuntamento

Tipi di dati numerici

I tipi di dati numerici vengono utilizzati per memorizzare valori numerici. รˆ molto importante assicurarsi che l'intervallo dei dati sia compreso tra i limiti inferiore e superiore del tipo di dati numerico scelto.

PICCOLOINT( ) Da -128 a 127 normale
Da 0 a 255 SENZA SEGNO.
PICCOLOINT( ) Da -32768 a 32767 normale
Da 0 a 65535 SENZA SEGNO.
MEDIOINT( ) Da -8388608 a 8388607 normale
Da 0 a 16777215 SENZA SEGNO.
INT( ) Da -2147483648 a 2147483647 normale
Da 0 a 4294967295 SENZA SEGNO.
BIGINT( ) Da -9223372036854775808 a 9223372036854775807 normale
Da 0 a 18446744073709551615 SENZA SEGNO.
FLOAT Un piccolo numero approssimativo con un punto decimale mobile.
DOPPIO( , ) Un numero grande con un punto decimale mobile.
DECIMALE( , ) Un valore DOUBLE memorizzato come stringa, che consente di impostare un punto decimale fisso. Scelta ideale per la memorizzazione di valori monetari.

Tipi di dati di testo

Come suggerisce il nome della categoria di tipi di dati, questi vengono utilizzati per memorizzare valori di testo. Assicurati sempre che la lunghezza dei dati testuali non superi la lunghezza massima della colonna.

CAR( ) Una sezione fissa lunga da 0 a 255 caratteri.
VARCHAR( ) Una sezione variabile lunga da 0 a 255 caratteri.
PICCOLO TESTO Una stringa con una lunghezza massima di 255 caratteri.
TESTO Una stringa con una lunghezza massima di 65535 caratteri.
BLOB Una stringa con una lunghezza massima di 65535 caratteri.
TESTO MEDIO Una stringa con una lunghezza massima di 16777215 caratteri.
BLOB MEDIO Una stringa con una lunghezza massima di 16777215 caratteri.
TESTO LUNGO Una stringa con una lunghezza massima di 4294967295 caratteri.
LUNGO BLOB Una stringa con una lunghezza massima di 4294967295 caratteri.

Tipi di dati Data e Ora

I tipi di dati data e ora memorizzano i valori di calendario e orologio in un formato fisso, garantendo affidabilitร  nell'ordinamento e nel confronto.

DATA AAAA-MM-DD
APPUNTAMENTO AAAA-MM-GG HH: MM: SS
TIMESTAMP AAAAMMGGHHMMSS
ORARIO OO:MM:SS

Altri tipi di dati

Oltre a quanto sopra, ci sono altri tipi di dati in MySQL.

ENUM Per memorizzare un valore di testo scelto da un elenco di valori di testo predefiniti
SET Viene utilizzato anche per memorizzare valori di testo scelti da un elenco di valori di testo predefiniti. Puรฒ avere piรน valori.
BOOL Sinonimo di TINYINT(1), utilizzato per memorizzare valori booleani
BINARIO Simile a CHAR; la differenza รจ che i testi vengono memorizzati in formato binario.
VARBINARIO Simile a VARCHAR; la differenza รจ che i testi vengono memorizzati in formato binario.

Ora vediamo una query per la creazione di una tabella che utilizza tutti i tipi di dati. Studiala e identifica come viene definito ciascun tipo di dati nella seguente query di creazione della tabella. MySQL esempio.

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;

migliori pratiche per creare un MySQL Banca Dati

Alcune convenzioni aiutano a rendere leggibili le sceneggiature:

  • Utilizzare lettere maiuscole per le parole chiave SQL, ad esempio "DROP SCHEMA IF EXISTS `MyFlixDB`;"
  • Termina tutti i comandi SQL con un punto e virgola.
  • Evitate di utilizzare spazi nei nomi di schemi, tabelle e campi. Utilizzate invece il trattino basso per separare i nomi di schemi, tabelle o campi.
  • Per la creazione di nuove tabelle, รจ preferibile utilizzare InnoDB anzichรฉ MyISAM, poichรฉ InnoDB supporta le transazioni, il blocco a livello di riga e le chiavi esterne.

Il metodo di interrogazione รจ completo. Il secondo percorso accede allo stesso database tramite un modello visivo anzichรฉ tramite SQL scritto manualmente.

Come creare MySQL Diagramma ER del banco di lavoro Ingegneria diretta

MySQL banco di lavoro dispone di utilitร  che supportano l'ingegneria avanzata. Ingegneria avanzata รจ il termine tecnico che descrive il processo di tradurre automaticamente un modello logico in un'implementazione fisica.

Abbiamo creato un Diagramma ER nel nostro Modellazione ER lezione. Ora useremo questo modello ER per generare gli script SQL che creeranno il nostro database.

Creazione del database MyFlix dal modello MyFlix ER

Passaggio 1) Aprire il modello ER del database MyFlix che hai creato in precedenza.

Passaggio 2) Selezionare l'ingegnere avanzato

Fare clic sul menu Database e selezionare Forward Engineer.

Seleziona l'ingegnere di prua in MySQL banco di lavoro

Passaggio 3) Opzioni di connessione

La finestra successiva consente di connettersi a un'istanza di MySQL server. Fai clic sull'elenco a discesa delle connessioni memorizzate e seleziona localhost. Fai clic su Esegui.

Opzioni di connessione nella procedura guidata dell'ingegnere di collegamento

Passaggio 4) Selezionare le opzioni mostrate di seguito

Seleziona le opzioni visualizzate di seguito nella procedura guidata che appare. Fai clic su Avanti.

Opzioni di ingegneria in avanti per il database MyFlix

Passaggio 5) Mantieni le selezioni predefinite e fai clic su Avanti

La schermata successiva mostra il riepilogo degli oggetti nel nostro diagramma EER. Il nostro database MyFlix contiene 5 tabelle. Mantieni le selezioni predefinite e fai clic su Avanti.

Riepilogo degli oggetti nel diagramma EER di MyFlix

Passo 6) RevVisualizza lo script SQL

La finestra sottostante mostra in anteprima lo script SQL che crea il nostro database. Salva lo script in un file *.sql oppure copialo negli appunti, quindi fai clic su Avanti.

Anteprima dello script SQL generato

Passaggio 7) Confermare i progressi

La finestra sottostante appare una volta creato il database sul selezionato MySQL Istanza del server. Le tabelle del modello ER ora esistono fisicamente sul server.

finestra di avanzamento del commit di ForwardEngineering

Il database con i dati fittizi รจ allegato. Useremo questo DB nelle lezioni successive. รˆ sufficiente importarlo in MySQL Banco da lavoro per iniziare.

Fare clic qui per scaricare MyFlixDB

DOMANDE FREQUENTI

Non c'รจ differenza in MySQL. CREATE SCHEMA รจ un alias per CREATE DATABASE ed entrambi creano lo stesso oggetto. In altri sistemi, come Oracle, uno schema e un database rimangono concetti distinti.

Eseguire DROP DATABASE IF EXISTS movies; dal client o da MySQL banco di lavoroIl comando elimina definitivamente il database e tutte le tabelle al suo interno, quindi รจ consigliabile eseguire prima un backup.

L'account necessita del privilegio CREATE a livello globale. Gli amministratori lo concedono con il comando GRANT CREATE ON *.* TO 'user'@'localhost';. Senza tale privilegio, il server restituisce un errore di accesso negato.

Sรฌ. Gli assistenti basati sull'IA trasformano una semplice descrizione delle entitร  in script CREATE TABLE con chiavi e tipi di dati. รˆ sempre consigliabile rivedere i tipi, le lunghezze e i vincoli generati prima di eseguire lo script su un server di produzione.

Le funzionalitร  di IA nei moderni client di database leggono il tuo Diagramma ER oppure interrogare la cronologia e suggerire correzioni di normalizzazione, candidati per gli indici e correzioni dei tipi di dati. I suggerimenti velocizzano le revisioni della progettazione, ma ogni modifica deve comunque essere approvata da un essere umano.

Riassumi questo post con: