mysql create table tutorial with examples
In questo tutorial, esploreremo l'uso del comando CREATE TABLE di MySQL con esempi di sintassi ed esempi di programmazione:
L'istruzione CREATE TABLE fa parte del DDL (Data Definition Language) di SQL.
Discuteremo i modi in cui è possibile CREARE una tabella in un determinato database, menzionare i nomi delle colonne e il motore DB durante la creazione della tabella, insieme alle regole sulle convenzioni di denominazione per le tabelle SQL.
Cosa imparerai:
- Pre Requisiti
- Comando MySQL CREATE TABLE
- Conclusione
Pre Requisiti
Il prerequisito per eseguire qualsiasi comando SQL sarebbe scaricare il server MySQL. L'edizione community gratuita può essere scaricata Qui.
Useremo anche il client SQL MySQL Workbench per tutti gli esempi e le discussioni in questo tutorial. È possibile scaricare la community edition gratuita di MySQL Workbench Qui (puoi scegliere la versione a seconda del sistema operativo su cui stai lavorando).
Nel caso in cui non desideri utilizzare MySQL Workbench, puoi anche utilizzare il client della riga di comando MySQL fornito con l'installazione predefinita di MySQL Server.
Comando MySQL CREATE TABLE
Il comando CREATE TABLE fa parte del set di comandi DDL (Data Definition Language) in MySQL e consente a un utente di creare una nuova tabella per il database specificato.
Nota: Il comando CREATE TABLE esiste per quasi tutti i database relazionali, come MySQL, Postgres, SQL Server, ecc.
MySQL CREATE TABLE Sintassi
Nella forma più semplice, è possibile utilizzare il comando CREATE TABLE con solo le opzioni di base, ovvero il nome della tabella e le definizioni delle colonne.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... );
Comprendiamo in dettaglio gli argomenti della sintassi:
- tableName: Dovrebbe essere il nome della tabella che stai tentando di creare. Dovrebbe essere un nome completo (nel caso in cui non si disponga di un set di database predefinito). Per esempio, databaseName.tableName
Il nome della tabella può essere specificato senza virgolette o con il simbolo di backtick come 'tableName' e 'databaseName' .tableName ' - Definizione della colonna: Una tabella in SQL deve essere composta da almeno una colonna. Tutte le definizioni di colonna devono essere costituite da nome_colonna e dal tipo di dati della colonna. Puoi anche includere facoltativamente le altre proprietà della colonna come chiave primaria, null, non null, ecc.
Vediamo un esempio di utilizzo della sintassi precedente per creare una tabella.
Creeremo una tabella denominata EMPLOYEE_DETAILS (nel database - SAMPLE_DB) con colonne
- nome: varchar (100)
- età: int
- indirizzo: varchar (100)
CREATE TABLE SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) );
Di seguito è riportato l'output della creazione della tabella:
Nota:
# 1) Notare l'uso di (SE NON ESISTE) il comando opzionale nella sintassi precedente.
In genere si consiglia di utilizzare questo comando in quanto eviterebbe di generare un errore se la tabella che stiamo cercando di creare è già presente nel database.
Ecco un esempio di utilizzo con e senza SE NON ESISTE.
- Senza IF NOT EXISTS genererebbe un errore se la tabella è già esistente.
- Con IF NOT EXISTS non verrà generato un errore. Tuttavia, mostrerà un avviso che la tabella esiste già.
# 2) Il 'tableName' durante l'utilizzo del comando CREATE TABLE deve essere completamente qualificato con il nome del database, ovvero il modo in cui lo abbiamo utilizzato è SAMPLE_DB.employee_details
Gli altri modi per specificare il nome della tabella sono l'impostazione del database corrente utilizzando il comando 'USE'. Per esempio. USE SAMPLE_DB; e quindi eseguire / utilizzare solo il nome della tabella invece del nome completo della tabella.
CREA TABELLA con opzioni tabella
Le opzioni delle tabelle vengono utilizzate per ottimizzare il comportamento delle tabelle MySQL. Questi possono essere applicati durante la creazione di una tabella utilizzando il comando MySQL CREATE TABLE (o successivamente tramite il comando ALTER TABLE).
La sintassi rimane la stessa con opzioni di tabella aggiuntive che possono essere specificate.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... ) (table “” not found /)
;
Discuteremo di seguito le opzioni più utilizzate (è possibile trovare un elenco completo delle opzioni di tabella Qui ).
# 1) MOTORE
Viene utilizzato per specificare il motore di archiviazione per la tabella, ad esempio il valore predefinito è InnoDB. Non è necessario modificarlo a meno che non sia necessario un motore di archiviazione specifico. Gli altri valori validi per gli storage engine sono MEMORY, CSV, HEAP, ecc.
Di seguito viene fornita la sintassi per specificare ENGINE come parte di MySQL CREATE TABLE.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )ENGINE='MEMORY';
# 2) AUTO_INCREMENT
Questa opzione viene utilizzata per impostare il valore AUTO_INCREMENT iniziale della tabella, ad esempio il valore predefinito è 1, ma è possibile sovrascrivere qualsiasi altro valore intero positivo.
Nota: AUTO_INCREMENT può essere specificato per una sola colonna della tabella e dovrebbe essere la chiave primaria. Vediamo un esempio di come specificare l'incremento automatico come 10 e inserire un record per convalidare se l'incremento automatico è impostato correttamente.
Stiamo utilizzando la stessa tabella Employee_details (assicurati di eliminare la tabella esistente prima di eseguire questo comando) con un campo ID aggiuntivo contrassegnato come chiave primaria.
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;
Inseriamo una riga senza alcun valore per ID e assicuriamoci che i valori vengano inseriti dal valore che inizia 10.
INSERT INTO SAMPLE_DB.employee_details(name,age,address) values ('aman kumar',20,'mumbai'); select * from SAMPLE_DB.employee_details;
# 3) CHECKSUM
Questo dovrebbe essere impostato su 1 se si desidera avere un checksum per l'intera tabella memorizzata. Viene generalmente utilizzato per garantire che non vi siano tabelle danneggiate.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )CHECKSUM=1;
CHECKSUM mantiene un checksum in tempo reale dell'intera tabella durante eventuali inserimenti o aggiornamenti
CREA TABELLA con dettagli di partizionamento
Possiamo anche menzionare il partizionamento definito dall'utente, se necessario, utilizzando le opzioni di partizionamento.
Il concetto di partizionamento è ampiamente utilizzato per distribuire il contenuto delle tabelle attraverso il file system al fine di garantire tempi di accesso più rapidi e query ottimizzate. Il partizionamento divide una tabella di grandi dimensioni in tabelle più piccole a seconda delle strategie o delle chiavi di partizionamento specificate.
Vediamo come possiamo specificare i dettagli del partizionamento con il comando MySQL CREATE TABLE.
Useremo la tabella di esempio employee_details e aggiungeremo una nuova colonna intera denominata department_id che verrebbe utilizzata come chiave hash della partizione per avere una distribuzione uniforme dei dati.
Specificare anche il conteggio delle partizioni indicherebbe quante partizioni effettive verranno create (in questo caso 4). Se non specificato, per impostazione predefinita ci sarebbe solo 1 partizione.
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;
Nota: Generalmente la chiave che verrebbe utilizzata per creare le partizioni dipenderà dai modelli di accesso previsti che verrebbero utilizzati per la tabella. In questo caso, supponiamo di interrogare la tabella in base all'ID di reparto la maggior parte delle volte, quindi ha senso avere department_id come parte della chiave hash.
Clonazione e copia di tabelle MySQL
A volte, potresti voler creare un clone di una tabella esistente o copiare il contenuto da una tabella a un'altra tabella. MySQL supporta 2 modi per ottenere questo risultato, come mostrato di seguito.
- Utilizzando il comando MI PIACE
- Utilizzando il comando SELECT
Clonazione di tabelle utilizzando il comando LIKE
Con il comando MI PIACE, puoi creare una nuova tabella con esattamente gli stessi nomi di colonna e proprietà delle tabelle esistenti.
Ecco la sintassi utilizzando il comando LIKE.
modello di matrice di tracciabilità dei requisiti con esempio
CREATE TABLE tableName1 LIKE tableName2
Con il comando precedente, verrà creata una nuova tabella, ad esempio tableName1 con la stessa struttura e proprietà di tableName2.
Si noti che con questo approccio vengono clonati solo i nomi e le proprietà delle colonne e non i dati effettivi della tabella.
Proviamo a creare una tabella denominata dipendente_details e utilizziamo questa tabella per creare una nuova tabella denominata student_details utilizzando l'opzione LIKE.
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;
Di seguito è riportato l'output del comando precedente.
Clonazione di tabelle tramite SELECT COMMAND
Questo approccio utilizza il comando SELECT per creare una copia della tabella esistente in una nuova tabella.
Con questo approccio, anche i dati della tabella vengono copiati nella nuova tabella.
CREATE TABLE tableName1 AS SELECT * FROM tableName2;
Proviamo a creare una tabella denominata dipendente_details e utilizziamo questa tabella per creare una nuova tabella denominata student_details utilizzando l'opzione SELEZIONA.
CREATE TABLE SAMPLE_DB.student_details AS SELECT * FROM SAMPLE_DB.employee_details;
Convenzioni di denominazione delle tabelle MySQL
Nelle sezioni precedenti, abbiamo imparato a creare tabelle MySQL. Vediamo ora alcune regole da tenere a mente quando si nominano le tabelle insieme alle restrizioni che si applicano rispetto a MySQL.
Queste convenzioni / regole si applicano sia alle tabelle SQL che ai database.
# 1) Caratteri legali nei nomi
per) I nomi non quotati possono essere costituiti da qualsiasi carattere nel set di caratteri predefinito di SQL Server con l'eccezione che non tutti i caratteri possono essere cifre. Per esempio, '23test' è un nome di tabella valido ma non '2345'.
Di seguito è riportato l'elenco dei caratteri che potrebbero essere utilizzati per i nomi non quotati:
ASCII: (0-9, a-z, A-Z $ _) (lettere latine di base, cifre 0-9, dollaro, trattino basso)
Esteso: U + 0080 .. U + FFFF
Ulteriori informazioni sui codici ASCII Qui
auricolare per realtà virtuale compatibile con ps4
b) I nomi di tabelle e database possono essere citati con un carattere di backtick (`) e possono contenere qualsiasi lettera / carattere tranne il carattere di backtick stesso. Con i nomi citati puoi persino avere nomi di tabelle / database con tutte le cifre.
Si noti che per tali tabelle è necessario utilizzare i backtick intorno alla tabella e / o al nome del database per accedere ai dati all'interno di tali tabelle.
c) I nomi di tabella e database non possono contenere punto '.' Poiché viene utilizzato come separatore di tabella e database.
d) I nomi del database e della tabella possono contenere caratteri speciali '$' e '_'.
# 2) Lunghezza del nome
La lunghezza massima consentita per un database o un nome di tabella in MySQL è 64 personaggi.
# 3) Nome qualificatori
Come discusso nelle sezioni precedenti, in MySQL una tabella è sempre contestualizzata con il database di cui fa parte. Quindi, per accedere a una tabella, puoi utilizzare un nome di tabella completo, che non è altro che la combinazione del nome del database separato da un punto e quindi il nome della colonna.
Per esempio, per selezionare tutti gli elementi dalla tabella 'EMPLOYEE_DETAILS' dal database SAMPLE_DB, puoi utilizzare un nome completo come di seguito.
SELECT * from SAMPLE_DB.EMPLOYEE_DETAILS;
Il DB e i nomi delle tabelle possono anche essere specificati citati separatamente con i backtick come mostrato di seguito.
SELECT * from `SAMPLE_DB`.`EMPLOYEE_DETAILS`;
Di seguito sono riportate le convenzioni e le migliori pratiche consigliate dal settore per le tabelle di denominazione e i database.
- Assegna un nome alle tabelle e ai database in minuscolo - Questo generalmente accelera la digitazione e l'interrogazione del DB, specialmente per coloro che sono coinvolti nella query quotidiana del DB.
- Utilizza i caratteri di sottolineatura ('_') invece degli spazi nei nomi di tabelle e database - Questo rende i nomi più leggibili.
- Utilizzare nomi autoesplicativi per le tabelle e i database - Per esempio, una tabella contenente i dettagli del dipendente può essere denominata in diversi modi, come dipendente_info, dipendente_data, dipendente, impiegato_dettagli, impiegato_name_e_indirizzo. Avrebbe senso scegliere un nome che sia il più autoesplicativo. Per esempio, possiamo scegliere il nome della tabella come Employee_details o Employee_info. Sebbene questa sia una discussione soggettiva, dovrebbe essere concordata da più membri del team che utilizzeranno e creeranno queste entità.
- Evita di usare numeri nel database e nei nomi delle tabelle - Come sample_db_2, test_table_1 ecc.
Domande e risposte frequenti
D # 1) Come creare una tabella in MySQL usando Index?
Risposta: È possibile aggiungere un INDICE a qualsiasi colonna (o combinazione di colonne) durante la creazione della tabella stessa.
Vediamo un esempio di aggiunta di un Indice alla colonna department_id per la tabella Employee_details.
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) Come creare una tabella con la data in MySQL?
Risposta: La data è un tipo di dati che deve essere associato a qualsiasi colonna durante la creazione di una tabella.
Fare riferimento al comando CREATE TABLE di esempio riportato di seguito con la colonna joining_date con DATETIME come tipo di dati per una tabella di esempio employee_details.
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 );
D # 3) Come posso vedere la struttura della tabella in MySQL?
Risposta: Dopo aver creato una tabella, se vuoi fare riferimento alla struttura della tabella come colonne, indici, ecc., Puoi usare il comando DESCRIBE per recuperare i dettagli.
Sintassi:
DESCRIBE tableName;
Creiamo una tabella e vediamo l'output per il comando DESCRIBE.
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;
Di seguito è riportato l'output del comando DESCRIBE.
D # 4) Come aggiungo una CHIAVE ESTERA a una tabella in MySQL?
Risposta: La chiave esterna viene utilizzata per collegare 2 tabelle insieme in MySQL. Per utilizzare il vincolo di chiave esterna, dovresti aver già creato la tabella a cui ti riferisci.
>> Ulteriori informazioni su Vincolo di chiave esterna MySQL
Proviamo a capirlo con un esempio. Supponiamo di avere 2 tabelle, ovvero Dipartimento (che contiene i dettagli sui vari dipartimenti del college) e Dettagli sugli studenti (tutti i dettagli relativi agli studenti).
Il dipartimento ha colonne - id (chiave primaria) e nome.
Dettagli dello studente - id (chiave primaria), età, indirizzo e department_id (chiave esterna referenziata dalla tabella Department).
Di seguito è riportata la sintassi per il comando CREATE TABLE per entrambe queste tabelle.
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 );
Fare riferimento alla sintassi del riferimento FOREIGN KEY nella tabella student_details dove abbiamo menzionato la relazione tra le colonne e department_id dovrebbe essere referenziato dall'id della colonna dalla tabella del dipartimento.
Conclusione
Il comando CREATE TABLE in MySQL che appartiene ai comandi nella categoria Data Definition Language è stato spiegato in dettaglio qui.
Abbiamo imparato a conoscere le diverse opzioni della tabella come ENGINE, CHECKSUM, ecc. Che potrebbero essere menzionate insieme al comando CREATE TABLE per avere proprietà aggiuntive impostate per la tabella.
Abbiamo esaminato i modi per creare un clone della tabella esistente in MySQL. Infine, abbiamo parlato delle convenzioni di denominazione per i nomi delle tabelle insieme alle best practice consigliate dal settore.
Buona lettura!!
Lettura consigliata
- Tutorial MySQL Create View con esempi di codice
- Tipi di dati MySQL | Quali sono i diversi tipi di dati in MySQL
- MySQL Insert Into Table - Inserisci sintassi ed esempi di istruzioni
- MySQL JOIN Tutorial: Inner, Outer, Cross, Left, Right e Self
- Differenza tra SQL Vs MySQL Vs SQL Server (con esempi)
- Come utilizzare PL SQL Inserisci, aggiorna, elimina e seleziona l'istruzione
- Tutorial sulla creazione di database di MongoDB
- MongoDB Crea utenti e assegna ruoli con esempi