Creazione di tabelle
Da Hacknowledge.
Una volta creato il Database si possono creare le tabelle, prima però di procedere alla fase "operativa" ovvero prima di crearle bisogna avere chiari 3 punti:
- Il nome che si vuole dare alla tabella
- I nomi dei campi che si vogliono creare
- I tipi SQL ai quali si vuole assegnare ogni campo
Indice |
[modifica] Tipi di dati SQL
Nella creazione delle varie colonne bisogna specificare queste 3 cose:
Nome Tipo Attributi
Ad esempio:
id INTEGER AUTO_INCREMENT nome VARCHAR(50) NOT NULL cognome VARCHAR(50) NOT NULL cell INTEGER NOT NULL ...
I più frequenti sono:
- NOT NULL - Specifica che quel campo deve essere sempre specificato.
- DEFAULT valore - Specifica un valore predefinito per il campo se non viene specificato nell'inserimento.
- AUTO_INCREMENT - Specifica che il campo ( numerico ) può essere incrementato automaticamente ogni qual volta che si inserisce una nuova riga.
- PRIMARY KEY - Specifica che quel campo deve essere univoco e not null
- UNIQUE - Specifica che quel campo non può contenere valori doppi.
Naturalmente ogni campo può contenere più attributi.
[modifica] Tipi di dati numerici
- SMALLINT - Un valore intero a 16 bit.
- INT - Un valore intero a 32 bit.
- BIGINT - Un valore intero a 64 bit.
- FLOAT - Un valore a virgola mobile a 32 bit.
- DOUBLE PRECISION - Un valore a virgola mobile a 64 bit.
- REAL - Un alias per il tipo FLOAT o per il tipo DOUBLE PRECISION, varia dal DBMS che lo utilizza.
- NUMERIC(p, d) - Un valore intero decimale la cui precisione viene specificata in p e le cifre decimali in d ( Entrambi i parametri devono essere di tipo intero ).
- DECIMAL(p, d) - Un valore intero decimale la cui precisione viene specificata in p e le cifre decimali in d ( Entrambi i parametri devono essere di tipo intero ).
[modifica] Tipi di dati data/ora
- DATE - Rappresenta la data, solitamente sul calendario giuliano. Oltre alle date formattate ISO 8601 ( "aaaa-mm-gg"), i diversi motori supportano altri formati di data come "mm/gg/aa" o "gg/mm/aa".
- TIME - Rappresenta un'ora del giorno ( di 24 ore ).
- TIMESTAMP - Rappresenta una data e un'ora.
[modifica] Tipi di dati carattere
- CHAR(n) - Rappresenta una stringa a lunghezza fissa con le "posizioni" inutilizzate riempite da spazi. Il valore n rappresenta quanti caratteri sono in realtà memorizzati, solitamente ha un valore massimo consentito di 255.
- VARCHAR(n) - Rappresenta una stringa di lunghezza variabile, di cui la massima consentita è n.
- TEXT - Consente di memorizzare una quantità molto grande di dati di testo.
- NCHAR(n) - Variazione del tipo CHAR, specifica ( per quando i server non consentono di modificare il set di caratteri predefinito ) che il testo venga memorizzato in Unicode.
- NVARCHAR(n) - Variazione del tipo VARCHAR, specifica ( per quando i server non consentono di modificare il set di caratteri predefinito ) che il testo venga memorizzato in Unicode.
[modifica] Creazione della tabella
Una volta decisi i noi delle tabelle e i tipi di colonne che si vogliono creare, si è pronti a eseguire una query "CREATE TABLE" che ha la seguente sintassi:
CREATE TABLE NomeTabella ( NomeColonna TipoColonna AttributiColonna, NomeColonna TipoColonna AttributiColonna, (opz) ... ) AttributiTabella o DirettiveTabella ( opz );
Facciamo un esempio:
CREATE TABLE MailingList ( id INTEGER AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(50) NOT NULL, cognome VARCHAR(50) NOT NULL, mail VARCHAR(100) NOT NULL );
Una volta creata e inviata la query la risposta che si potrebbe avere è:
Query OK, 0 rows affected (0.12 sec)
[modifica] Visualizzare una tabella
Per visualizzare le tabelle create si può invece utilizzare la query "SHOW TABLES":
SHOW TABLES;
La risposta potrebbe essere:
+-----------------------+ | Tables_in_my_database | +-----------------------+ | MailingList | +-----------------------+ 1 rows in set (0.00 sec)
Se si è dimenticati di inserire alcuni dettagli della tabella, è possibile effettuare la query "DESCRIBE":
DESCRIBE MailingList
o
SHOW COLUMNS FROM MailingList
La risposta che si potrebbe avere è:
+---------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+-------+ | id | int(11) | | PRI | 0 | | +---------+--------------+------+-----+---------+-------+ | nome | varchar(50) | | | | | +---------+--------------+------+-----+---------+-------+ | cognome | varchar(50) | | | | | +---------+--------------+------+-----+---------+-------+ | mail | varchar(100) | | | | | +---------+--------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)

