Principali Comandi SQL - DDL (Data Definition Language) Sono i comandi che gestiscono la creazione, la modifica e la cancellazione delle strutture. Si distinguono in tre tipi : Create ---> creazione Alter ----> modifica Drop ----> eliminazione Sintassi : Comando CREATE DATABASE IF NOT EXISTS `<nome database>`; Significato creazione di un nuovo database (per gli accenti digitare ALT + 096 ) DROP DATABASE `<nome database>`; eliminazione di un database esistente (per gli accenti digitare ALT + 096 ) Creazione di una tabella ( per i tipi di dato segue tabella) CREATE TABLE <nome tabella> ( <nome campo1> <tipo dato> [eventuali vincoli] , <nome campo2> <tipo dato> [eventuali vincoli] , ….. ….. …… <nome campoN> <tipo dato> [eventuali vincoli] ); Principali vincoli : NOT NULL PRIMARY KEY AUTO_INCREMENT DEFAULT FOREIGN KEY (<nome campo1 >) REFERENCES <nomeTabella>(<nome campo2>) RENAME TABLE <nomeVecchioTabella> to <nomeNuovoTabella> Serve per vietare la presenza di valori nulli Serve a definire la chiave primaria Serve per definire un campo che si autoincrementa (in ACCESS di tipo contatore), viene utilizzato per una chiave primaria (sicuramente sarà unica) Serve per impostare un valore di default , ad esempio : ruolo varchar(20) DEFAULT 'impiegato' Vincolo di integrità referenziale per la chiave esterna dove <nome campo1> è il nome del campo relativo alla chiave esterna , <nomeTabella> è la tabella alla quale si vuole collegare la chiave esterna e <nome campo2> è il nome del campo relativo alla chiave primaria di tale tabella. Serve a rinominare una tabella 1 DROP TABLE <nomeTabella> ALTER TABLE .... ALTER TABLE <nomeTabella> ADD COLUMN <nomecampo> <tipo> ALTER TABLE <nomeTabella> ADD FOREIGN KEY (<nome campo chiave esterna> REFERENCES <nomeTabellaDest> (<nome campo chiave primaria) ALTER TABLE <nomeTabella> CHANGE <nomeVecchioCampo> <nomeNuovoCampo> <tipoCampo> ALTER TABLE <nomeTabella> DROP <nomeCampo> elimina una tabella I comandi che modificano la struttura di una tabella devono essere preceduti dal comando ALTER TABLE Aggiunge un campo (o una colonna) alla tabella Aggiunge il vincolo di chiave esterna sul <campo chiave esterna> (che deve necessariamente esistere nella tabella che si sta modificando) Rinomina un campo (o una colonna) Elimina un campo (o una colonna) Principali tipi di dati Tipo int(n) decimal(M[,D]) double(M,D) bool date time year varchar(m) Descrizione numero intero composto da n cifre numero decimale : con M cifre totali di cui D decimali. I valori di default sono 10 per M e 0 per D. (usato per calcoli finanziari) numero decimale : M rappresenta il numero totale di cifre rappresentate e D il numero di cifre decimali (usato per calcoli scientifici) variabile che può assumere il valore di "vero" o "falso" (o anche "sì" o "no") variabile data: 10 byte – DD-MM-YYYY (giorno, mese e anno) variabile per l'ora : 8 byte – HH.MM.SS (ore, minuti e secondi) variabile per l'anno : : 1 byte - YYYY (anno che può essere visualizzato con 2 o 4 caratteri a seconda del parametro opzionale, se non è specificato nulla viene visualizzato con 4 caratteri, year(2) visualizza un anno con due caratteri) variabile di tipo testo (o stringa) composta da 'm' caratteri. Varchar è una stringa a lunghezza variabile la lunghezza massima = 65535 caratteri 2 Esempi : Creazione del database 'Officine' : CREATE DATABASE IF NOT EXISTS `Officine` CREATE TABLE Proprietari ( codiceFiscale varchar(16) NOT NULL PRIMARY KEY, Indirizzo varchar(150), telefono varchar(20) ) CREATE TABLE Veicoli ( targa varchar(20) NOT NULL PRIMARY KEY, modello varchar(70), tipo varchar(70), annoImmatricolazione year, codiceProprietario varchar(16), FOREIGN KEY (codiceProprietario) REFERENCES Proprietari(codiceFiscale) ) CREATE TABLE Officine ( Codice int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT, nome varchar(100) , indirizzo varchar(150) ) CREATE TABLE Riparazioni ( codice int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT, dataAccettazione date, oraAccettazione time, Terminata int(1), dataConsegna date, oraConsegna time, targaVeicolo varchar(20), codiceOfficina int(10), FOREIGN KEY (targaVeicolo) REFERENCES Veicoli(targa), FOREIGN KEY (codiceOfficina) REFERENCES Officine(codice) ) CREATE TABLE Dipendenti ( codiceFiscale varchar(16) NOT NULL PRIMARY KEY, Indirizzo varchar(150), telefono varchar(20), anniServizio int(2), qualifica varchar(50), codiceOfficina int(10), FOREIGN KEY (codiceOfficina) REFERENCES Officine(codice) ) Modifiche al database appena creato : 3 1) aggiunta del solo campo nome sulla tabella dipendenti ALTER TABLE dipendenti ADD nome varchar(100) 2) eliminazione del campo nome dalla tabella dipendenti ALTER TABLE dipendenti DROP nome 2.a) aggiunta di un campo citta a officine ALTER TABLE officine ADD citta varchar(70) 3) Aggiunta di più campi contemporaneamente ALTER TABLE dipendenti ADD nome varchar(100), ADD cognome varchar(100), ADD citta varchar(70) ALTER TABLE proprietari ADD nome varchar(100), ADD cognome varchar(100), ADD citta varchar(70) ****----**** 4) Rinomina di un campo alter table veicoli change annoImmatricolazione annoImmatric year 1) Settare un valore di default ALTER TABLE riparazioni ALTER Terminata SET DEFAULT 0; ALTER TABLE dipendenti ALTER qualifica SET DEFAULT 'dipendente'; 4