angelo.pezzullo
pubblicato circa un anno fa

Creare e modificare le tabelle con mysql

La creazione della tabella

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

1 CREATE [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:

1 col_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:

1 CREATE 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:

 1 ALTER [IGNORE] TABLE tbl_name
 2       alter_specification [, alter_specification] ...
 3 
 4 alter_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 
34 index_col_name:
35     col_name [(length)] [ASC | DESC]
36 
37 index_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:

1 DROP [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:

Postheadericon Ultimi commenti

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

Postbullets Osservare il Query Rewriting

Quando si lancia una query in MySQL l’ottimizzatore, sulla base della struttura delle tabelle coinvolte, riscrive l’istruz...
Vai alla recipe

Postbullets Mysqladmin amministrare mysql a riga di comando

mysqladmin il tool di shell per amministrare MySQL, verificarne la configurazione ed eseguire operazioni comuni.

...
Vai alla recipe

Postbullets Importare dati CSV in database MySQL

Importare file csv in un database MySQL è un operazione immediata, è...
Vai alla recipe

Postbullets Lanciare Job e trasformazioni Kettle da Shell

I job Kettle sono pensati per essere eseguiti da shell e quindi facilmente schedulati per far...
Vai alla recipe

Postbullets Emulare il tipo BOOL

Il tipo di dati di cui si sente più la mancanza in MySQL è probabilmente BOOL. Sp...
Vai alla recipe

Ultimi tips

PostbulletsEstrarre tutte le procedure di un DB di algweb
Vai al tip

Postbulletsvisualizzare tutte le view di un database di algweb
Vai al tip

PostbulletsGenerazione combinazioni calendario fantacalcio di root
Vai al tip

PostbulletsVisualizzare le viste di un DB di root
Vai al tip

PostbulletsContare il numero delle tabelle normali di root
Vai al tip

Ultimi Topics

Postbullets JOIN Tabelle di vasomik Vai al topic

Postbullets JOIN Tabelle di vasomik Vai al topic

Postbullets Query su server diversi di Sasti Vai al topic

Postbullets ibdata1 di a3ris Vai al topic

Postbullets Selezionare primo id dopo un certo id di GioMBG Vai al topic