SQL INDEX
Introduzione
Il linguaggio SQL puo' essere considerato:
- un linguaggio di query
- un linguaggio di definizione
- un linguaggio di manipolazione
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