Informatica 3 Liceo Scientifico Scienze Applicate/Comandi SQL per creare tabelle

Wikibooks, manuali e libri di testo liberi.
Indice del libro

Creare un Database[modifica]

Il comando SQL per creare un database è CREATE DATABASE, che utilizza la seguente sintassi:

CREATE DATABASE nome_del_database ;

Ad esempio per creare un database chiamato AgenziaViaggi si utilizzerà il comando CREATE DATABASE AgenziaViaggi ;

Creare una tabella[modifica]

Il comando SQL per creare una tabella è CREATE TABLE, che utilizza la sequente sintassi:

CREATE TABLE nome_della_tabella (
campo1 tipo_di_dato,
campo2 tipo_di_dato,
campo3 tipo_di_dato,
...
) ;

Al momento della creazione di una tabella si devono anche definire quali campi sono chiavi primarie o esterne (nel caso in cui la tabella che vogliamo creare ne contenga), ed eventualmente specificare che un determinato campo debba necessariamente essere riempito o che più record non possano avere un determinato campo uguale.
Per definire la chiave primaria si deve inserire PRIMARY KEY (campo_chiave) all'interno del comando CREATE TABLE.
Per definire una chiave esterna si deve inserire FOREIGN KEY (campo_chiave) REFERENCES tabella_associata (campo_associato), sempre all'interno del comando CREATE TABLE.

Ad esempio se si vuole creare la tabella Compiti, che contenga la chiave primaria IDCompito, la chiave esterna IDStudente riferita alla chiave primaria Matricola della tabella Studenti, e la chiave esterna IDMateria riferita all'omonima chiave della tabella Materie, il codice potrebbe essere il seguente:

CREATE TABLE Compiti (
IDCompito int,
data data,
voto int,
IDStudente int,
IDMateria char(30),
PRIMARY KEY (IDCompito),
FOREIGN KEY (IDStudente) REFERENCES Studenti(Matricola),
FOREIGN KEY (IDMateria) REFERENCES Materie(IDMateria)
) ;

Per specificare che un campo non possa essere nullo si deve far seguire la sua definizione (all'interno del comando CREATE TABLE, dopo il nome e il tipo del campo e prima della virgola) dall'attributo NOT NULL.
Per specificare che una colonna debba contenere valori tutti diversi, si deve far seguire, allo stesso modo, la sua definizione dall'attributo UNIQUE.
In riferimento all'esempio precedente noi potremmo volere che né le chiavi primaria o esterne, né il campo voto possano essere nulli e che il campo IDCompito non possa assumere valori uguali in record diversi:

CREATE TABLE Compiti (
IDCompito int UNIQUE NOT NULL,
data data,
voto int NOT NULL,
IDStudente int NOT NULL,
IDMateria int NOT NULL,
PRIMARY KEY (IDCompito),
FOREIGN KEY (IDStudente) REFERENCES Studenti(Matricola),
FOREIGN KEY (IDMateria) REFERENCES Materie(IDMateria)
) ;

In realtà non è necessario specificare 'UNIQUE' per il campo IDCompito, in quanto, essendo chiave primaria, viene definito in tal modo automaticamente.