Introduzione
MySQL conserva i dati che gestisce all'interno di tabelle e database. Le tabelle memorizzano i dati all'interno di schemi predefiniti di colonne e tipi di dati. I database sono una struttura che può contenere più tabelle, indici, procedure e aiutano a definire un ambito per privilegi, personalizzazioni e altro.
In questa guida ti mostreremo come creare tabelle e database in MySQL. Ti mostreremo come gestire alcune funzionalità di entrambe le strutture e poi ti spiegheremo come rimuoverle per ripulirle se non ti servono più.
Prerequisiti
Per seguire questa guida, dovrai accedere a un server MySQL con un utente con privilegi di amministratore utilizzando mysql
client della riga di comando.
Se non vuoi accedere con il root
Account amministrativo MySQL, il tuo utente avrà bisogno almeno di CREATE
privilegio di eseguire le azioni descritte in questa guida.
Puoi verificare i privilegi disponibili del tuo utente digitando:
SHOW GRANTS\G
Come si crea un nuovo database?
La prima cosa che mostreremo come fare è creare un nuovo database. In MySQL, i database contengono tabelle, indici, procedure e altre risorse che sono in genere correlate a un singolo progetto. Ognuna di queste risorse deve essere creata all'interno di un database, quindi imparare a creare un nuovo database è un buon primo passo.
La sintassi di base utilizzata per creare un nuovo database è simile alla seguente:
CREATE DATABASE <db_name>;
Sostituisci <db_name>
con il nome che desideri dare al tuo database prima di eseguire il comando. Questo comando creerà un database con il nome dato e imposterà l'utente corrente come proprietario del nuovo database.
Il database utilizzerà le impostazioni predefinite a livello di sistema per il set di caratteri, le regole di confronto e le proprietà di crittografia:
- SET DI CARATTERI: imposta il set di caratteri per il nuovo database. Questa è un'opzione di localizzazione che influenza quali caratteri sono considerati maiuscoli, minuscoli e cifre.
- COLLEGA: imposta la confronto o ordinamento per il database. Questa è un'opzione di localizzazione che determina come sono organizzati gli articoli quando vengono ordinati.
- CRIPTATURA: imposta la crittografia per il nuovo database. Questa è un'opzione booleana che può essere "Y" per sì o "N" per no.
Puoi trovare i set di caratteri disponibili per la tua installazione digitando:
SHOW CHARACTER SET;
Allo stesso modo, puoi trovare le regole di confronto disponibili digitando:
SHOW COLLATION;
Se vuoi specificare un valore non predefinito per uno di questi parametri, puoi farlo aggiungendoli dopo l'istruzione di creazione principale in questo modo:
CREATE DATABASE <db_name> CHARACTER SET = 'utf8mb4' COLLATE = 'utf8mb4_0900_ai_ci' ENCRYPTION = 'Y';
Per seguire gli esempi in questa guida, crea un database chiamato school
utilizzando le impostazioni locali predefinite dell'istanza e il set di caratteri UTF8:
CREATE DATABASE school CHARACTER SET = 'utf8mb4';
Questo creerà il tuo nuovo database utilizzando le specifiche che hai fornito.
Elenca i database esistenti
Per elencare i database disponibili sul tuo server, digita:
SHOW DATABASES;
Questo elencherà ciascuno dei database attualmente definiti all'interno dell'ambiente:
+--------------------+ Database |+--------------------+ information_schema | mysql | performance_schema | school | sys | testing |+--------------------+6 rows in set (0.00 sec)
Puoi verificare che le impostazioni che hai fornito siano state applicate alla nuova school
database utilizzando SHOW CREATE DATABASE
comando:
SHOW CREATE DATABASE school;
L'output mostrerà il comando e le opzioni utilizzate per creare il database, riempiendo le opzioni con qualsiasi valore predefinito applicato:
+----------+----------------------------------------------------------------------------------------------------------------------------------+ Database | Create Database |+----------+----------------------------------------------------------------------------------------------------------------------------------+ school | CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |+----------+----------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)
Come passare a un database diverso in MySQL
Una volta creato il database, puoi utilizzarlo in diversi modi.
La prima opzione è specificare il database come argomento in ogni comando utilizzato. Per risparmiare tempo se stai eseguendo più comandi relativi agli oggetti del database, puoi anche "passare" o "usare" il database per impostare il tuo nuovo database come contesto predefinito per qualsiasi comando relativo al database che eseguirai .
Per passare a un database diverso, digita:
USE <db_name>;
Nel nostro caso, possiamo passare alla school
database che abbiamo creato digitando:
USE school;
Crea tabelle all'interno di database
Dopo aver creato un database, puoi definire tabelle e altri oggetti all'interno per archiviare e gestire i tuoi dati. In MySQL, le tabelle sono costituite da un nome di tabella, le definizioni di colonna (queste a loro volta includono nomi, tipi di dati e vincoli tra gli altri) e opzioni di tabella.
Qual è la sintassi di CREATE TABLE
di MySQL comando?
La sintassi di base per creare tabelle utilizzando CREATE TABLE
di MySQL il comando ha questo aspetto:
CREATE TABLE <table_name> ( <column_name> <data_type> [<column_constraint>], [<table_constraint>,]);
Possiamo suddividere il modello di comando sopra nei seguenti componenti:
CREATE TABLE <table_name>
:La dichiarazione di creazione di base. Il<table_name>
il segnaposto deve essere sostituito con il nome della tabella che desideri utilizzare.<column_name> <data_type>
:definisce una colonna di base all'interno della tabella. Il<column_name>
il segnaposto deve essere sostituito con il nome che desideri utilizzare per la colonna. Il<data_type>
specifica il tipo di dati MySQL della colonna. I dati archiviati nella tabella devono essere conformi alla struttura della colonna e ai tipi di dati della colonna per essere accettati.<column_constraint>
:i vincoli di colonna sono vincoli facoltativi aggiungono requisiti aggiuntivi per i dati. Ad esempio, puoi richiedere che le voci non siano numeri interi nulli, univoci o positivi.<table_constraint>
:i vincoli di tabella sono simili ai vincoli di colonna ma implicano l'interazione di più colonne. Ad esempio, potresti avere un vincolo di tabella che controlla che unDATE_OF_BIRTH
è precedente aDATE_OF_DEATH
in una tabella.
Come si creano tabelle solo se non esistono già?
Il comportamento predefinito di MySQL consiste nel generare un errore se si tenta di creare una tabella già esistente. Tuttavia, l'opzione IF NOT EXISTS
È possibile aggiungere una clausola all'istruzione di creazione per ignorare questo comportamento.
Puoi usare il IF NOT EXISTS
clausola inserendola nel comando dopo CREATE TABLE
frase ma prima del nome della tabella:
CREATE TABLE IF NOT EXISTS table_name ( column_name TYPE [column_constraint], [table_constraint,]);
Questo modificherà il comportamento del comando come segue:Se il nome della tabella specificato esiste già, MySQL genererà un avviso invece di un errore. Il resto del comportamento del comando rimane lo stesso.
Creazione di tabelle all'interno di database MySQL
Il modello di comando fornito sopra è sufficiente per creare tabelle di base. Per promuovere il nostro esempio, creeremo due tabelle nella nostra school
Banca dati. Una tabella si chiamerà supplies
e l'altro si chiamerà teachers
:
Nelle supplies
tabella, includeremo i seguenti campi:
- id: Un ID univoco per ogni tipo di materiale scolastico.
- nome: Il nome di un elemento scolastico specifico.
- descrizione: Una breve descrizione dell'oggetto.
- produttore: Il nome del produttore dell'articolo.
- colore: Il colore dell'articolo.
- inventario: Il numero di articoli che abbiamo per un certo tipo di materiale scolastico. Questo non dovrebbe mai essere inferiore a 0.
Possiamo creare le supplies
tabella con le qualità di cui sopra utilizzando il seguente SQL:
CREATE TABLE supplies ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), description VARCHAR(255), manufacturer VARCHAR(255), color VARCHAR(255), inventory INT CHECK (inventory >= 0));
Questo creerà i supplies
tabella all'interno della school
Banca dati. La PRIMARY KEY
il vincolo di colonna è un vincolo speciale utilizzato per indicare le colonne che possono identificare in modo univoco i record all'interno della tabella. In quanto tale, il vincolo specifica che la colonna non può essere nulla e deve essere univoca. MySQL crea indici per le colonne della chiave primaria per aumentare la velocità di query.
Verifica che la nuova tabella sia presente digitando:
SHOW TABLES;
+------------------+ Tables_in_school |+------------------+ supplies |+------------------+1 row in set (0.01 sec)
Puoi verificare che lo schema rifletta la tua definizione digitando:
SHOW CREATE TABLE supplies\G
*************************** 1. row *************************** Table: suppliesCreate Table: CREATE TABLE `supplies` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `description` varchar(255) DEFAULT NULL, `manufacturer` varchar(255) DEFAULT NULL, `color` varchar(255) DEFAULT NULL, `inventory` int DEFAULT NULL, PRIMARY KEY (`id`), CONSTRAINT `supplies_chk_1` CHECK ((`inventory` >= 0))) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.00 sec
Le colonne, i tipi di dati e i vincoli che abbiamo specificato sono presenti nell'output, anche se l'ordine e la visualizzazione potrebbero essere diversi.
Quindi, crea un teachers
tavolo. In questa tabella dovrebbero essere presenti le seguenti colonne:
- id :un numero di identificazione univoco del dipendente.
- nome :il nome dell'insegnante.
- cognome :il cognome dell'insegnante.
- oggetto :la materia per la quale l'insegnante viene assunto per insegnare.
- livello_grado :il livello di classe degli studenti per i quali l'insegnamento viene assunto per insegnare.
Crea i teachers
tabella con lo schema sopra con il seguente SQL:
CREATE TABLE teachers ( id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(255), last_name VARCHAR(255), subject VARCHAR(255), grade_level INT);
Come creare tabelle con chiavi primarie e chiavi esterne
Puoi trovare informazioni sulla creazione di tabelle con chiavi primarie ed esterne in alcune delle nostre altre guide MySQL. Le chiavi primarie e le chiavi esterne sono entrambi tipi di vincoli di database all'interno di MySQL.
Una chiave primaria è una colonna o una colonna speciale che è garantita per essere univoca tra le righe all'interno della stessa tabella. Tutte le chiavi primarie possono essere utilizzate per identificare in modo univoco una riga specifica. Le chiavi primarie non solo assicurano che ogni riga abbia un valore univoco per le colonne della chiave primaria, ma assicurano anche che nessuna riga contenga NULL
valori per quella colonna. Spesso, la chiave primaria in MySQL utilizza il seguente formato per specificare una chiave primaria incrementale assegnata automaticamente:id INT AUTO_INCREMENT PRIMARY KEY
.
Le chiavi esterne sono un modo per garantire che una o più colonne in una tabella corrispondano ai valori contenuti in un'altra tabella. Questo aiuta a garantire l'integrità referenziale tra le tabelle.
Come visualizzare le tabelle in MySQL
In MySQL puoi elencare le tabelle in diversi modi a seconda delle informazioni che stai cercando.
Se desideri vedere quali tabelle sono disponibili nel tuo database, digita:
SHOW TABLES;
+------------------+ Tables_in_school |+------------------+ supplies | teachers |+------------------+2 rows in set (0.00 sec)
Puoi anche verificare che lo schema per la tabella corrisponda alle tue specifiche:
DESCRIBE teachers;
+--------------+--------------+------+-----+---------+----------------+ Field | Type | Null | Key | Default | Extra |+--------------+--------------+------+-----+---------+----------------+ id | int | NO | PRI | NULL | auto_increment | name | varchar(255) | YES | | NULL | | description | varchar(255) | YES | | NULL | | manufacturer | varchar(255) | YES | | NULL | | color | varchar(255) | YES | | NULL | | inventory | int | YES | | NULL | |+--------------+--------------+------+-----+---------+----------------+6 rows in set (0.00 sec)
Gli teachers
la tabella sembra corrispondere alla nostra definizione.
Come modificare le tabelle con ALTER TABLE
comando
Se hai bisogno di cambiare lo schema di una tabella esistente in MySQL, puoi usare ALTER TABLE
comando. Il ALTER TABLE
il comando è molto simile al CREATE TABLE
comando, ma opera su una tabella esistente.
Modifica la sintassi della tabella
La sintassi di base per modificare le tabelle in MySQL è simile a questa:
ALTER TABLE <table_name> <change_command> <change_parameters>;
Il <change_command>
indica il tipo esatto di modifica che si desidera apportare, sia che si tratti di impostare opzioni diverse sulla tabella, aggiungere o rimuovere colonne o modificare tipi o vincoli. Il <change_parameters>
parte del comando contiene tutte le informazioni aggiuntive necessarie a MySQL per completare la modifica.
Aggiunta di colonne alle tabelle
Puoi aggiungere una colonna a una tabella MySQL con ADD
cambia comando. I parametri di modifica includeranno il nome della colonna, il tipo e le opzioni, proprio come li specificheresti in CREATE TABLE
comando.
Ad esempio, per aggiungere una colonna chiamata missing_column
del text
digita in una tabella chiamata some_table
, dovresti digitare:
ALTER TABLE some_table ADD missing_column text;
Rimozione di colonne dalle tabelle
Se, invece, desideri rimuovere una colonna esistente, puoi utilizzare il DROP COLUMN
comando invece. Devi specificare il nome della colonna che desideri eliminare come parametro di modifica:
ALTER TABLE some_table DROP COLUMN useless_column;
Modifica del tipo di dati di una colonna
Per modificare il tipo di dati di una colonna, puoi utilizzare ALTER COLUMN
cambia comando con il MODIFY COLUMN
comando di colonna. I parametri in questo contesto includono il nome della colonna e il suo nuovo tipo:
ALTER TABLE resident MODIFY COLUMN id INT;
Altre modifiche alla tabella
Molti altri tipi di modifiche possono essere ottenuti con ALTER TABLE
comando. Per ulteriori informazioni sulle opzioni disponibili, consulta la documentazione ufficiale di MySQL per ALTER TABLE
.
Tabelle drop
Se vuoi eliminare una tabella, puoi utilizzare il DROP TABLE
Istruzione SQL. Questo cancellerà la tabella così come tutti i dati memorizzati al suo interno.
La sintassi di base è simile alla seguente:
DROP TABLE <table_name>;
Questo cancellerà la tabella se esiste e genererà un errore se il nome della tabella non esiste.
Se desideri eliminare la tabella se esiste e non fare nulla se non esiste, puoi includere il IF EXISTS
qualificatore all'interno della dichiarazione:
DROP TABLE IF EXISTS <table_name>;
Le tabelle che hanno dipendenze da altre tabelle o oggetti non possono essere eliminate per impostazione predefinita mentre esistono tali dipendenze.
Elimina le supplies
tabella che abbiamo creato in precedenza digitando:
DROP TABLE supplies;
Conserveremo i teachers
database per dimostrare che l'istruzione per eliminare i database rimuove anche tutti gli oggetti figlio come le tabelle.
Database di rilascio
Il DROP DATABASE
istruzione dice a MySQL di eliminare il database specificato. La sintassi di base è simile alla seguente:
DROP DATABASE <database_name>;
Sostituisci il <database_name>
segnaposto con il nome del database che si desidera rimuovere. Questo cancellerà il database se viene trovato. Se non è possibile trovare il database, si verificherà un errore:
DROP DATABASE some_database;
ERROR 1008 (HY000): Can't drop database 'some_database'; database doesn't exist
Se desideri eliminare il database se esiste e altrimenti non fare nulla, includi l'opzione IF EXISTS
opzione:
DROP DATABASE IF EXISTS some_database;
Query OK, 0 rows affected, 1 warning (0.00 sec)
Questo rimuoverà il database o non farà nulla se non può essere trovato.
Per rimuovere la school
database che abbiamo utilizzato in questa guida, elenca i database esistenti sul tuo sistema:
SHOW DATABASES;
+--------------------+ Database |+--------------------+ information_schema | mysql | performance_schema | school | sys | testing |+--------------------+6 rows in set (0.00 sec)
Elimina la school
database con il seguente comando:
DROP DATABASE school;
Questo rimuoverà la school
database insieme ai teachers
tabella definita all'interno.
Conclusione
Questo articolo ha trattato le nozioni di base su come creare ed eliminare database e tabelle con MySQL. Questi sono alcuni dei comandi più basilari richiesti per configurare un sistema di database e definire la struttura dei tuoi dati.
Come accennato in precedenza, le istruzioni SQL trattate in questo tutorial MySQL, in particolare CREATE TABLE
istruzione, hanno molti parametri aggiuntivi che possono essere utilizzati per modificare il comportamento del sistema. Puoi saperne di più su questi controllando la documentazione ufficiale di MySQL.