Sintassi SQL ---DDL 1. CREATE TABLE NomeTabella ( NomeAttributo Tipo di DatoElementare, NomeAttributo1, NomeAttributo2 PRIMARY KEY, ); 2. CREATE TABLE NomeTabella ( NomeAttributo, NomeAttributo1, NomeAttributo2, PRIMARY KEY (NomeAttributo1, NomeAttributo2) ); 3. CREATE TABLE NomeTabella ( NomeAttributo PRIMARY KEY, NomeAttributo1, NomeAttributo2, NomeAttributo3 REFERENCES NomeTabella2(NomeAttributo) ); -dove NomeTabella2(NomeAttributo) sono sispettivamente il nome di una tabella esterna e il nome di un attributo della tabella esterna che è chiave esterna per NomeAttributo3.- Sintassi Alternativa 3a. CREATE TABLE NomeTabella ( NomeAttributo PRIMARY KEY, NomeAttributo1, NomeAttributo2, NomeAttributo3, FOREING KEY (NomeAttributo3) REFERENCES NomeTabella2(NomeAttributo) ); ---DML Modificare le Tabelle 1. ALTER TABLE NomeTabella Dove ADD significa aggiungi e DROP elimina e gli attributi che seguono sono relativi ai comandi per inserire vincoli e ai nomi degli attributi 2. INSERT INTO NomeTabella [ NomeAttributo1, NomeAttributo2] VALUES ( ContenutoAttributo1, ContenutoAttributo2) Inserisce una riga di contenuti ordinati a seconda dell'ordine dei NomiAttributo I valori di tirpo stringa (char, varchar) sono racchiusi fra ' , i valori di tipo date sono racchiusi tra # 3. UPDATE NomeTabella SET NomeAttributo = ContenutoAttributo WHERE condizione formulata con elementi Boolenai o aritmetici 4. DROP TABLE NomeTabella Elimina i dati della tabella e la tabella stessa 5. DELETE FROM NomeTabella WHERE condizione Se WHERE non è specificata vengono eliminate tutte le tuple contenute in tabella ---QUERY SELECT Nome, NomeTabella.NomeAttributo, * (il * indica di estrarre dalla tabella tutti gli attributi e restituirli come risposta alla query) FROM NomeTabella, NomeTabella WHERE NomeTabella.NomeAttributo = NomeTabella.NomeAttributo1 In WHERE (predicato di Join) possiamo utilizzare i comandi Booleani e i segni aritmetici <, >, = e le combinazioni di questi per creare interrogazioni complesse. Possiamo inserire nel predicato di Join condizioni da verificare che poi però non ci vengono restituite, in generale possiamo utilizzare le chiavi esterne per creare riferimenti tra tabelle che soddisfino le nostre richieste senza poi però venire mostrati. VARIANTE (INNER JOIN): SELECT NomeTabella.NomeAttributo, NomeTabella.NomeAttributo FROM ORDER BY: ORDER BY è un comando di Query che si inserisce alla fine della richiesta (dopo WHERE per intenderci) e serve a dare un ordinazione alla query. Possiamo definire in seguito a ORDER BY ASC per crescente o DESC per decresente seguendo la sintassi: ORDER BY NomeAttributo DESC, NomeTabella.NomeAttributo ---OPERATORI BOOLEANI Possiamo utilizzare gli operatori Booleani per definire in modo preciso le richieste nelle Query. Gli operatori Booleani sono AND: selezione delle tuple per le quali TUTTI i predicati sono veri OR: selezione delle tuple per le quali ALMENTO UN PREDICATO è vero NOT: selezione delle tuple per le quali la NEGAZIONE del predicato è vero. Possiamo anche usare più d'un operatore booleano dentro ad una richiesta. Ad esempio: WHERE NomeAttributo OR NOT NomeAttributo1 = a qualcosa. ---VINCOLI Imponiamo i vincoli sopra agli attributi in modo da non compromettere l'integrità referenziale della base di dati quando cambiamo qualche cosa. Frequentemente le chiavi esterne necessitano di vincoli. ON UPDATE quando cambiamo qualche cosa in quel determinato attributo il DB esegue l'azione specificata di seguito. ON DELETE quando eliminiamo qualche cosa in quel determinato attributo il DB esegue l'azione specificata di seguito CASCADE l'azione precedentemente espressa si ripete a cascata su tutti gli elementi connessi SET NULL in seguito all'azione espressa in precedenza tutti i valori connessi vengono modificati a NULL Altri vincoli che possiamo specificare sono DEFAULT valore di default Specifica il valore standard per quell'attributo nel caso non venga inserito. NOT NULL indica che l'attributo non può essere lasciato vuoto UNIQUE indica che quell'attributo non può avere più valori con lo stesso valore PRIMARY KEY indica che quell'attributo è una chiave primaria