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:

Commenti(0)
Osservare il Query Rewriting