SQL INDEX


Introduzione

Il linguaggio SQL puo' essere considerato:
I tipi base possono essere:
    CHAR, NUMBER, INTEGER e DATE

- VISTE

Le strutture dati virtuali (view) appaiono come una qualsiasi tabella,
pero' sono costituiti da dati derivati in piu' tabelle reali ed appaiono
all'utente come qualsiasi altra tabella.

Istruzioni


Create Table

Definisce tabella e corrispodente file dati.

CREATE TABLE table_name
            (column_element [, column_element]...)

A column_element is of the form:

    column_name data_type
      [DEFAULT expression]
      [column_constraint [, column_constraint]...]

A column_constraint is of the form:
    NOT NULL |
    UNIQUE |
    PRIMARY KEY

Examples

  CREATE TABLE java (
                    version_name  varchar (30),
                    major_version int,
                    minor_version int,
                    release_date  date
                    );

  CREATE TABLE clienti (
                       codcli   INT,
                       cognome  CHAR(15),
                       telefono CHAR(15)
                       )

Drop Table

Use the DROP TABLE statement when you want to drop a table. Like CREATE TABLE, it only requires minimum conformance.

Alter Table

Aggiunge nuove colonne ad una tabella gia' esistente.

  ALTER TABLE tablename
              | ADD    fieldname datatype (datalen)
              | MODIFY fieldname datatype (datalen)
              | DROP   fieldname
Examples
  ALTER TABLE clienti ADD    indirizzo CHAR(30)
  ALTER TABLE clienti MODIFY indirizzo CHAR(20)

Create Index

Definisce un indica per una tabella esistente.

  CREATE [UNIQUE] INDEX indexname ON tablename
                        ( fieldname [ASC|DESC] ... )
Examples
  CREATE INDEX sortcli ON clienti (cognome, nome)

Create View

Definisce e memorizza la definizione di una vista.

  CREATE VIEW viewname
              [(fieldtitle [,fieldtitle ...])]
              AS SELECT clause
              FROM tablename
Examples
  CREATE VIEW telefono (cognome,nome,telefono)
              AS SELECT cognome,nome, telefono
              FROM clienti

Drop Index

Rimuove un indice creato precedentemente.

  DROP INDEX 

DROP VIEW

Rimuove una vista.

  DROP VIEW 

Select

Use the SELECT statement when you want to retrieve a set of columns. The set may be
from one or more tables, and you can specify the criteria to determine which rows to
retrieve. Most of the available clauses are available with minimum conformance.
Additional capabilities are available with the core grammar.

   SELECT [ALL | DISTINCT] select_list
          FROM table reference_list
          WHERE search_condition_list
          [ORDER BY column designator [ASC | DESC]
                    [, column designator [ASC | DESC]]...]

  SELECT [DISTINCT] * |  [, ... ]
         FROM       |  [,  ... ]
         [WHERE    ]
         [GROUP BY ]
         [HAVING   ]
         [ORDER BY [, ... ][ASC|DESC] ... ]

The select list usually contains a comma-separated list of columns or an '*' to
select all of them.

  SELECT version_name, release_date from java;

If your driver supports core compliance, you can also use the GROUP BY, HAVING,
and UNION clauses.

  - funzioni aggregate
    AVG([DISTINCT]     nome colonna)   calcola il valore medio
    COUNT(*/[DISTINCT] nome colonna)   conta il numero di righe
    MAX([DISTINCT]     nome colonna)   restituisce il valore massimo
    MIN([DISTINCT]     nome colonna)   restituisce il valore minimo
    SUM([DISTINCT]     nome colonna)   somma i valori numerici
  - DISTINCT
    permette di raggruppare un set di record

Examples

  SELECT * FROM clienti
  SELECT cognome,indirizzo FROM clienti
  SELECT cognome,indirizzo FROM clienti WHERE cognome BEGINS WITH 'R'

  - selezione da piu' tabelle
  SELECT cognome, nome, codcli, data FROM clienti, fatt
  SELECT cognome, nome, codcli, data FROM clienti, fatt
         WHERE clienti.codcli = fatt.codcli
         AND   clienti.codpre = fatt.codpre
  SELECT cognome, nome, data FROM clienti C, fatt F
         WHERE C.codcli = F.codcli
         AND   C.codpre IN
               (SELECT codpre
                       FROM prest
                       WHERE prest.descr = 'intervento' )
  SELECT MAX(eta) FROM clienti
  SELECT codcli, sum(importo), count(*) FROM fatt GROUP BY codcli
  SELECT codcli, sum(importo) FROM fatt
         GROUP BY codcli HAVING sum(importo) > 250000





Insert


Use the INSERT statement when you want to insert rows.
It too can provide different capabilities depending upon the
conformance level supported.

  INSERT INTO tablename | viewname
              [(fieldtitle [,fieldtitle ... )]
              VALUES (value [, value ... ] )

  INSERT INTO table name
               [(column name [, column name]...)]
               VALUES (expression [, expression]...)

                 For example:

                 INSERT INTO java VALUES
                   ('2.0Beta', 2, 0, 'Aug-1-1997');

                 If the core grammar is supported, you can use a SELECT clause to load multiple rows
                 at a time.

                 Use the UPDATE statement when you want to update rows. It only requires the
                 minimum grammar.

                 UPDATE 
                    SET  | NULL}
                     [,  | NULL}]...
                    WHERE 



Examples
  INSERT INTO clienti(codcli, cognome, telefono,)
              VALUES (100, 'caio', '123.456.789')
              VALUES (101, 'tizio', '111.222.333')

Update


Modifica i dati nelle righe selezionate di una tabella
  UPDATE tablename
         SET fieldtitle = expression [, fieldtitle = expression ... ]
         [WHERE clause]
Examples
  UPDATE fatt SET prezzo = 65000 WHERE codcli = 100

Delete


Rimuove un record da una tabella o da una vista.
Use the DELETE statement when you want to remove rows.
It only requires the minimum grammar.

   DELETE FROM 
WHERE DELETE FROM | [WHERE ]
Examples
  DELETE FROM fatt WHERE codcli=1






START TRANSACTION - segnala l'inizio di una transazione logica
COMMIT WORK - segnala la fine di una transazione logica
  COMMIT [WORK]
ROLLBACK - cancella tutte le modifiche fatte dall'inizio della transazione
  ROLLBACK [WORK]

GRANT - permette di associare ad una tabella delle autorizzazioni
REVOKE - permette di revocare le autorizzazioni di accesso ad una tabella

TERMINOLOGIE


ARITA'         = n. attributi (o numero colonne)
CARDINALITA'   = n. tuple (o numero righe)

UNIONE         = unione di 2 tabelle identiche come titolo
INTERSEZIONE   = record comuni

PROPRIETA' DELLE TABELLE

Le tabelle hanno le seguenti proprieta':

- ciascun incrocio riga-colonna e' costituito da un valore singolo o atomico.
- in una tabella ciascuna colonna ha un nome unico.
- tutte le righe di una tabella devono essere uniche (il DB2 consente di avere
  righe duplicate).
- la sequenza delle righe e delle colonne non e' significativa.

CHIAVI

Deve esistere una colonna o un insieme di colonne che identificano in modo
univoco ciascuna riga.
Questa colonna o insieme di colonne viene detta chiave della tabella.

La chiave di una tabella ha due proprieta' importanti:

- Identificazione unica:
      il valore della chiave in ogni riga deve essere diverso dal valore
      della chiave in qualunque altra riga.
- Non ridondanza:
      se una chiave e' formata da piu' di una colonna, nessuna delle
      colonne che formano la chiave puo' essere eliminata senza perdere
      la proprieta' di unicita' della identificazione.



Glossario

  • TABELLA Tutti gli elementi della base dati sono inseriti in tabelle. Ogni tabella ha un nome univoco. L'intestazione di una tabella e' chiamata 'Schema della relazione'. Il nome della tabella e' il nome della relazione.
  • RIGA La riga di una tabella identifica una istanza della relazione. Corrisponde ad un record. Sinonimi: tupla, record, elemento, ricorrenza.
  • COLONNA Identifica un attributo di una entita' o relazione. Corrisponde ad un campo. Ogni attributo ha un nome diverso.
  • CELLA La cella di una tabella identifica un unico valore di un attributo (colonna) per un partocolare elemento (riga). Corrisponde al valore di un campo.
  • CHIAVE Permette di identificare in modo univoco una riga di tabella. Puo' essere costituita da piu' colonne. La chiave migliore o 'cluster' e costituita dal minor numero di colonne.
  • ARITA' n. attributi (o numero colonne)
  • CARDINALITA' n. tuple (o numero righe)
  • UNIONE unione di 2 tabelle identiche come titolo
  • INTERSEZIONE record comuni