SQL - Data Definition Language (DDL)
Transcript
SQL - Data Definition Language (DDL)
SmartLab - DITEN - Università di Genova http://smartlab.ws SQL - Data Definition Language (DDL) - Addenda Dr. Alessandro Ghio [email protected] 1 ALTER TABLE - Aggiunta di una chiave primaria http://smartlab.ws • Supponiamo di aver definito una tabella • Supponiamo altresì di aver dimenticato di definire la chiave primaria per questa tabella • Possiamo utilizzare il comando ALTER TABLE per aggiungere la chiave primaria in un secondo momento 2 ALTER TABLE - Aggiunta di una chiave primaria Esempio (1) http://smartlab.ws • Creiamo una nuova tabella, che chiamiamo tmp • Includiamo due campi, un ID alfanumerico di 3 caratteri e un generico campo Nome • ID sarebbe chiave primaria, ma per ora non definiamola come tale 3 ALTER TABLE - Aggiunta di una chiave primaria Esempio (1) http://smartlab.ws mysql> CREATE TABLE tmp ( -> ID CHAR(3) NOT NULL, -> Nome VARCHAR(30) -> ); 4 ALTER TABLE - Aggiunta di una chiave primaria Esempio (1) http://smartlab.ws • Vogliamo ora aggiungere la chiave primaria (ID) mysql> ALTER TABLE tmp -> ADD CONSTRAINT PRIMARY KEY (ID); 5 ALTER TABLE - Aggiunta di una chiave primaria Esempio (2) http://smartlab.ws • E se invece volessimo eliminare la primary key esistente e ridefinirla? • Per esempio, proviamo a eliminare la chiave dalla tabella tmp e riaggiungerla mysql> ALTER TABLE tmp -> DROP PRIMARY KEY; mysql> ALTER TABLE tmp -> ADD CONSTRAINT PRIMARY KEY (ID); 6 ALTER TABLE - Rimozioni di vincoli http://smartlab.ws • Un’altra funzionalità di interesse consiste nella rimozione di vincoli di integrità in alcuni campi • Per esempio, potremmo aver definito un vincolo sul numero di acquisti minimo da parte di un cliente, che potremmo voler ridurre o eliminare • Supponiamo di aggiungere alla tabella tmp un campo Quantita e di voler definire un vincolo di integrità Quantita > 5 • Le due operazioni devono essere fatte con due istruzioni SQL separate 7 ALTER TABLE - Rimozione di vincoli Esempio http://smartlab.ws mysql> ALTER TABLE tmp -> ADD COLUMN Quantita INT; mysql> ALTER TABLE tmp -> ADD CONSTRAINT Quantita CHECK(Quantita > 5); 8 ALTER TABLE - Rimozione di vincoli Esempio http://smartlab.ws • Vogliamo ora rimuovere il vincolo sulla quantità • La sintassi SQL è la seguente: mysql> ALTER TABLE tmp -> DROP CONTRAINT Quantita; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Quantita' at line 2 9 ALTER TABLE - Rimozione di vincoli Esempio http://smartlab.ws • Come mai viene generato un errore? • Il problema è in un baco di MySQL, che approfondiremo nella prossima esercitazione • Di seguito vi anticipo parte di una slide della prossima esercitazione 10 ALTER TABLE - Rimozione di vincoli Esempio http://smartlab.ws • Bug #25660: • “Hi, I am trying to create table with CHECK constraints, but it creates the table without CHECK constrains even without warning.” • Risposta: “The CHECK clause is parsed but ignored by all storage engines, as reported in http://dev.mysql.com/doc/refman/5.0/en/ create-table.html” • Questo significa che la clausola CHECK, che fa parte dello standard SQL, non può essere usata per controlli di integrità in MySQL 11
Documenti analoghi
Riepilogo argomenti svolti dopo la verifica del 15-12-2015
c) Caratteristiche della connessione a MySQL (socket, porta tipica). Cenni alla multiutenza in
MySQL.
d) Avvio di MySQL in XAMPP. Cenni a MySQL installato come servizio Windows.
e) Caratteristiche ...
Creare e gestire DB con XAMPP All`apertura del file tra i Tools
// Per utilizzare i dati che Mysql invia possiamo ricorrere alla funzione mysql_fetch_array
// che crea un array associativo avente come indice il nome delle colonne
while ($array = mysql_fetch_ar...
Uso ambiente XAMPP sottocartella root dove inserire pagine attive
Un commento sul nome
") ; # per concatenare si usa il carattere punto ad esempio echo("Ciao"." "."Alberto") // altro commento echo("Ultima mod... Dettagli