angelo.pezzullo
pubblicato più di 2 anni fa

Creare e Modificare le tabelle con MySQL

L’articolo descrive le istruzioni per creare e modificare le tabelle con MySQL. Inoltre si fa riferimento alla creazione e alla modifica degli indici.

La creazione della tabella

In MySQL l’istruzione per creare una tabella nel database è la seguente:

1CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
2       (create_definition,...)
3       [table_option ...]
4       select_statement

L’istruzione CREATE TABLE crea una tabella nel database corrente con il nome dato. Per creare una tabella nel database l’utente deve avere i privilegi per poter eseguire l’istruzione CREATE. Insieme al nome della tabella è possibile specificare anche il nome del database al fine di creare una tabella in un database specifico.

E’ possibile utilizzare la clausola TEMPORARY in fase di creazione della tabella. Una tabella temporanea esiste per tutta la durata della connessione corrente e viene automaticamente cancellata quando la connessione al database viene chiusa. Questo vuol dire che due connessioni disinte al database possono usare la medesima tabella temporanea senza conflitti di nessun tipo.

Anche per poter creare una tabella temporanea l’utente necessita dei privilegi di CREATE TEMPORARY TABLES.

Si noti che l’istruzione CREATE TABLE con l’utilizzo della clausola TEMPORARY non esegue automaticamente la commit sulla transazione attiva.

MySQL restituisce un errore se la tabella che si sta per creare già esiste e non viene specificata la clausola IF NOT EXISTS.

Ogni tabella è caratterizzata dalle colonne, per cui per creare una tabella è necessario definire l’elenco di colonne che andranno a caratterizzarla.

Ogni colonna della tabella potrebbe essere strutturata nel modo seguente:

1col_name type [NOT NULL | NULL] 
2              [DEFAULT default_value]
3              [AUTO_INCREMENT] 
4              [UNIQUE [KEY] | [PRIMARY] KEY]
5              [COMMENT 'string']

Il paramentro col_name corrisponde al nome della colonna, mentre type al tipo di dato.

Esempio 1:

1CREATE TABLE tabella1 ( chiave1 INT(10) NOT NULL AUTO_INCREMENT,
2                        campo1 VARCHAR(50) NOT NULL,
3                        campo2 VARCHAR(50) NOT NULL,
4                        campo3 VARCHAR(10) NOT NULL,
5                        campo4 FLOAT(10,2) NOT NULL,
6                        PRIMARY KEY (chiave1)
7                      ) TYPE=MyISAM

Si noti che nell’Esempio 1 abbiamo creato un indice di tipo PRIMARY KEY sulla tabella1. Esistono tre tipi di indici:

  • PRIMARY KEY: indici che permettono di definire quale campo o quali campi identificano in maniera univoca una riga della tabella. Il valore (o la combinazione dei valori) può essere presente una sola volta;
  • UNIQUE KEY: chiavi che permettono di definire delle colonne come uniche e quindi, come per le PRIMARY KEY i valori non possono ripetersi;
  • INDEX KEY: indici che permettono di eseguire ricerche più veloci sulla colonna o sulle colonne specificate.

La modifica della tabella

In MySQL l’istruzione per modificare una tabella nel database è la seguente:

 1ALTER [IGNORE] TABLE tbl_name
 2      alter_specification [, alter_specification] ...
 3
 4alter_specification:
 5    table_option ...
 6  | ADD [COLUMN] column_definition [FIRST | AFTER col_name ]
 7  | ADD [COLUMN] (column_definition,...)
 8  | ADD {INDEX|KEY} [index_name] [index_type] (index_col_name,...)
 9  | ADD [CONSTRAINT [symbol]]
10        PRIMARY KEY [index_type] (index_col_name,...)
11  | ADD [CONSTRAINT [symbol]]
12        UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
13  | ADD [FULLTEXT|SPATIAL] [INDEX|KEY] [index_name] (index_col_name,...)
14  | ADD [CONSTRAINT [symbol]]
15        FOREIGN KEY [index_name] (index_col_name,...)
16        [reference_definition]
17  | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
18  | CHANGE [COLUMN] old_col_name column_definition
19        [FIRST|AFTER col_name]
20  | MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
21  | DROP [COLUMN] col_name
22  | DROP PRIMARY KEY
23  | DROP {INDEX|KEY} index_name
24  | DROP FOREIGN KEY fk_symbol
25  | DISABLE KEYS
26  | ENABLE KEYS
27  | RENAME [TO] new_tbl_name
28  | ORDER BY col_name [, col_name] ...
29  | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
30  | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]
31  | DISCARD TABLESPACE
32  | IMPORT TABLESPACE
33
34index_col_name:
35    col_name [(length)] [ASC | DESC]
36
37index_type:
38    USING {BTREE | HASH}

L’istruzione ALTER TABLE altera la struttura di una tabella esistente, essa permette la modifica, l’aggiunta o la cancellazione di una colonna, di un indice o di una chiave all’interno della tabella. E’ inoltre possbile rinominare la tabella e cambiare il character set.

La cancellazione della tabella

In MySQL l’istruzione per cancellare una tabella nel database è la seguente:

1DROP [TEMPORARY] TABLE [IF EXISTS]
2     tbl_name [, tbl_name] ...
3     [RESTRICT | CASCADE]

L’istruzione DROP TABLE rimuove una o più tabelle. Per poter usare questa istruzione l’utente deve avere i privilegi di DROP per ogni tabella che intende cancellare, viene cancellata sia la tabella nel DB sia il suo contenuto, ma i privilegi sulle tabelle non vengono cancellati automaticamente. MySQL restituisce un errore se la tabella che si sta per cancellare non esiste e non viene specificata la clausola IF EXISTS.

Riferimenti:

Ultimi commenti Ultimi commenti

Esegui il Login oppure registrati per scrivere un commento.
Cerca nel sito...
Ultime recipes

Un utilissimo tool di shell che effettua un dettagliato e comodo report su MySQL MySQL Report un tool di shell per tenere tutto sotto controllo

Un utilissimo tool di shell che effettua un dettagliato e comodo report su MySQL


Vai alla recipe

Un utilissimo tool per sniffare il traffico Client/Server TCP/IP di MySQL MySQLSniffer sniffare il traffico TCP di MySQL

Un utilissimo tool per sniffare il traffico Client/Server TCP/IP di MySQL


Vai alla recipe

Verificare l'integrità, riparare gestire chiavi e memoria di tabelle MyISAM attraverso myisamchk riparare file MyISAM

Verificare l'integrità, riparare gestire chiavi e memoria di tabelle MyISAM attraverso il file myisamchk


Vai alla recipe

Un tool per comprimere le tabelle MyISAM fino a oltre il 50% myisampack comprimere file MyISAM

Un tool per comprimere le tabelle MyISAM fino a oltre il 50%


Vai alla recipe

mysqlshow le info di base sui database, tabelle e colonne senza utilizzare alcun mysqlshow visualizzare le informazioni sul database MySQL

mysqlshow le info di base sui database, tabelle e colonne senza utilizzare alcun client


Vai alla recipe

Utilizzando UNION / UNION ALL su campi int unsigned zerofill,
ho notato che MysqlUNION / UNION ALL su campi int unsigned zerofill. di DebUsr
Vai al tip

Utilizzo di funzioni come alias di campo tramite l'impiego di prepared statementReport con alias di campo dinamici di john_revelator
Vai al tip

Può capitare che sia necessario eseguire un dump di database in formato Comma SeparatedEsecuzione dump in formato CSV (tabelle in engine MyIsam esportate in formato CSV) di ghigomatto
Vai al tip

E' possibile eseguire le query SQL contenute in un file di testo. Questo è utileEseguire le query da un file di testo di Sante Caserio
Vai al tip

Se vogliamo fare il backup di tutti i database con mysqldump, e ne abbiamo parecchiFare il backup di tutti i database di Sante Caserio
Vai al tip

Salve, dopo tante storie ho studiato il php e mysql .. . che in questo forum parlavo php e campo mysql timestamp di gigi Vai al topic

ciao a tutti ho creato un forum su aruba ma non so come farlo visualizzare nel mio aruba di albertodiprima Vai al topic

Salve a tutti gente, questo è il mio primo post su questo forum e questo a causa Problema Gravissimo con AutoIncrement di stefanoadsl Vai al topic

Salve! Mi presento, mi chiamo Adriano e sono uno studente di ingegneria informatica Problema Trigger di Xanakro Vai al topic

Ciao a tutti!
Volevo chiedere una informazione.
Ho una query che lanciata la prima Query Eseguita più volte di OltreLeStelle Vai al topic