Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduzione al SQL e ai database

6,458 views

Published on

Semplice introduzione ai DBMS e al linguaggio SQL (con attenzione verso pgsql). Ispirato da Appunti di Informatica Libera - http://informaticalibera.net/

  • Be the first to comment

Introduzione al SQL e ai database

  1. 1. Database – base di dati DBMS DATABASE MANAGEMENT SYSTEM Sistema di gestione di base di dati contenitori che immagazzinano grandi ● quantità di dati i dati sono fruibili tramite un sistema ● di gestione
  2. 2. Caratteristiche Grandi quantità ● Condivisione ● Persistenza ● Affidabilità ● Controllo sugli accessi (DBA) ●
  3. 3. RDBMS modello RELAZIONE dei database RELAZIONE (o tabella) Indirizzi CAMPO (a attributi della relazione) |Cognome |Nome |Indirizzo |Telefono | RECORD (valori) |Pallino |Pinco |Via Biglie 1|0222,222222 | .======================================================. |Indirizzi | |------------------------------------------------------| |Cognome |Nome |Indirizzo |Telefono | |---------------|----------|------------|--------------| |Pallino |Pinco |Via Biglie 1|0222,222222 | |Tizi |Tizio |Via Tazi 5 |0555,555555 | |Cai |Caio |Via Caini 1 |0888,888888 | |Semproni |Sempronio |Via Sempi 7 |0999,999999 | `======================================================'
  4. 4. Relazioni collegate .============================================. |Articoli | |--------------------------------------------| |Codice|Descrizione |Fornitore1|Fornitore2| |------|---------------|----------|----------| |vite30|Vite 3 mm | 123| 126| |vite40|Vite 4 mm | 126| 127| |dado30|Dado 3 mm | 122| 123| |dado40|Dado 4 mm | 126| 127| |rond50|Rondella 5 mm | 123| 126| `============================================' .==============================================. |Movimenti | |----------------------------------------------| |Codice|Data |Carico|Scarico|CodFor|CodCli| |------|----------|------|-------|------|------| |vite40|01/01/1999| 1200| | 124| | |vite30|01/01/1999| | 800| | 825| |vite30|02/01/1999| | 1000| | 954| |rond50|03/01/1999| | 500| | 954| `=============================================='
  5. 5. Unioni – Intersezioni ­ Differenze Teoria degli insiemi .----------------------------------------------------------. |CODICE|DATA |CARICO|SCARICO|... |DESCRIZIONE |... | |------|----------|------|-------|----|---------------|----| |vite40|01/01/1999| 1200| |... |Vite 4 mm |... | |vite30|01/01/1999| | 800|... |Vite 3 mm |... | |vite30|02/01/1999| | 1000|... |Vite 3 mm |... | |vite30|03/01/1999| 2000| |... |Vite 3 mm |... | |rond50|03/01/1999| | 500|... |Rondella 5 mm |... | `==========================================================' Esempio di unione fra Articoli e Movimenti attraverso il campo Codice
  6. 6. Vincoli sui campi Insieme dei valori ammissibili ● NULL, NOT NULL, INT, .... – Valori univoci ● CHIAVE PRIMARIA – Relazione con altri valori  ● stessa tabella  – esterni –
  7. 7. SQL Structured Query Language linguaggio di gestione per basi di dati relazionali Convenzioni sul linguaggio: Comandi scritti maiuscolo ● non fa differenza se non per i valori dei campi della tabella Nomi degli oggetti (tabelle, campi ...) sono composti solo da ● lettere, numeri e underscore (“_”) Primo carattere del nome deve essere una lettera o ● underscore La fine di una istruzione e' data dal punto e virgola o ● riga vuota
  8. 8. 6 azioni – 6 comandi AZIONE COMANDO Creare tabelle CREATE TABLE Eliminare tabelle DROP TABLE Inserire record INSERT  Interrogare record SELECT Modificare record UPDATE Cancellare record DELETE
  9. 9. Tipi di dati Stringhe di caratteri VARCHAR (dimensioni) TEXT I valori vanno dichiarati fra virgolette (Es: 'Nome') dimensioni => numero di caratteri utilizzabili nella stringhe Valori numerici INT FLOAT interi e numeri con virgola mobile Date DATE TIME TIMESTAMP I valori vanno dichiarati fra virgolette o apici
  10. 10. Tabella ­ sintassi Creare CREATE TABLE nome_tabella ( nome_colonna1 TIPO_COLONNA1 VINCOLI_COLONNA1, nome_colonna2 TIPO_COLONNA2 VINCOLI_COLONNA2, .... nome_colonnan TIPO_COLONNA_n VINCOLI_COLONNA_n ); Cancellare DROP TABLE nome_tabella;
  11. 11. Tabella ­ esempio CREATE TABLE indirizzi ( id serial PRIMARY KEY, nome varchar(40) NOT NULL, cognome varchar(40) NOT NULL, indirizzo varchar(40) DEFAULT 'sconosciuto', telefono varchar(40) NOT NULL, id_comune int references (ammcom.id), data_nascita date ); DROP TABLE indirizzi;
  12. 12. Inserire ­ sintassi INSERT INTO nome_tabella ( colonna_1, colonna_2, ... colonna_ n ) VALUES ( valore_1, valore_2, ... valore_n );
  13. 13. Inserire ­ esempio INSERT INTO Indirizzi ( nome, cognome, indirizzo, telefono, compleanno ) VALUES ( 'Gigi', 'Marzullo', 'Via Teulada 66 Roma', '06 1234567', '1915/03/26' );
  14. 14. Cancellare Sintassi DELETE FROM nome_tabella [WHERE condizione] Esempio DELETE FROM indirizzi; Mancando una condizione (WHERE) il comando SVUOTA LA TABELLA
  15. 15. Operatori di condizione ... WHERE campo OPERATORE valore Operatori di confronto > maggiore di < minore di = uguale a != diverso da Esempio delete con condizione DELETE FROM indirizzi WHERE nome = 'Gigi';
  16. 16. Modifica ­ sintassi UPDATE nome_tabella SET colonna_1 = nuovo_valore_1, colonna_2 = nuovo_valore_2, ... colonna_n = nuovo_valore_n [WHERE condizione]
  17. 17. Modifica ­ esempio UPDATE indirizzi SET nome='Gigino' WHERE cognome='Marzullo';
  18. 18. Interrogare ­ sintassi SELECT campo1,campo2,...,campoN FROM nome_tabella [[WHERE condizione [ORDER BY campoN]];
  19. 19. Interrogare ­ esempi SELECT * FROM indirizzi; SELECT nome, cognome FROM indirizzi; SELECT * FROM indirizzi WHERE data_nascita >= '1986/03/01'; SELECT nome, cognome FROM indirizzi WHERE data_nascita >= '1986/03/01' ORDER BY nome;
  20. 20. Operatori logici AND, OR, NOT, ... Esempio con SELECT SELECT nome, cognome FROM indirizzi WHERE data_nascita >= '1986/03/01' AND data_nascita <='1986/04/30' Esempio con DELETE DELETE FROM indirizzi WHERE nome = 'Gigi' OR nome='Silvio'
  21. 21. Query (select) di unione fra 2 tabelle S SELECT indirizzi.nome, ammcom.descrizion E FROM indirizzi, ammcom L WHERE indirizzi.id_comune = ammcom.id E C id T id descrizion id_comune n geometry cognome o nome m nome e . descrizion indirizzi amm_com i n join d i
  22. 22. Extra Funzioni sono chiamate tramite il comando SELECT Esempio sintassi per SUM() SELECT SUM(expression ) FROM tables WHERE predicates; Molti DBMS permettono di creare nuovi funzioni attraverso un linguaggio specifico (SQL Procedural Language) spesso estendibile Es: Postgresql offre pgSQL estendibile con R Trigger le funzioni possono essere associate ad eventi

×