CREATE

CREATE TABLE nome_tabella(
  nome_var_1 dominio [DEFAULT valore] [vincolo],
  nome_var_2 dominio [DEFAULT valore] [vincolo],
  vincoli;
);

I vincoli possono essere:

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)
);