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)
Strumenti personali