CREATE
CREATE TABLE nome_tabella(
nome_var_1 dominio [DEFAULT valore] [vincolo],
nome_var_2 dominio [DEFAULT valore] [vincolo],
vincoli;
);
I vincoli possono essere:
- Intrarelazionali:
- not null
- unique
- primary key
- Interrelazionali
CREATE INDEX {nome} ON {tabella}({attributo}, {attributo})
Non si possono fare due indici sullo stesso attributo
CREATE UNIQUE INDEX {nome} ON {tabella}({attributo}, {attributo})
Faila se esistono due attributi uguali alla creazione dell’indice Da errore nell’insert di nuovi dati se c’è un indice ugualeq
DROP INDEX {nome} // Per cancellarlo
Vantaggi
Interrogazioni più veloci
Svantaggi
Appesantiscono la memoria (circa 20% in più della dimensione della tabella) Rendono più lente le operazioni di modifica
Indici
Struttura di dati che associano uno o più attributi di una tabella alla restante parte del record
Esempi
CREATE TABLE Dipendente(
nome VARCHAR(50) NOT NULL,
cognome VARCHAR(50) NOT NULL,
codD VARCHAR(7) PRIMARY KEY,
UNIQUE(cognome, nome)
);
CREATE TABLE Dipartimento(
nome VARCHAR(20),
città VARCHAR(20),
altro VARCHAR(100),
PRIMARY KEY(nome, città)
);
Università(nome, città)
Materia (idM, nome)
Studente(matricola, università, cognome)
esame(idM, matricola, data, voto)
CREATE TABLE Università(
nome VARCHAR(20) PRIMARY KEY,
città VARCHAR(20) NOT NULL
);
CREATE TABLE Studente(
matricola CHAR(10),
università VARCHAR(20),
cognome VARCHAR(20),
PRIMARY KEY (matricola, università),
FOREIGN KEY università REFERENCES Università(nome)
);
CREATE TABLE Materia(
idM CHAR(10) PRIMARY KEY,
nome VARCHAR(20) NOT NULL
);
CREATE TABLE esame(
matricola CHAR(10),
idM CHAR(10),
data DATE NOT NULL,
voto INT NOT NULL,
PRIMARY KEY(matricola, idM),
FOREIGN KEY idM REFERENCES Materia(idM)
);