Lezione 5 - SQL Linguaggi per DB Per interagire con le basi di dati occorre un linguaggio Linguaggio SQL (Structured Query Language), linguaggio standardizzato per basi dati, progettato per: Creare e modificare schemi di database DDL (Data Definition Language) Inserire, Modificare e gestire dati memorizzati DML (Data Manipulation Language Interrogare i dati memorizzati DQL (Data Query Language) Creare e gestire strumenti di controllo ed accesso ai dati DCL (Data Control Language) DBMS MySQL RDBMS Relational DataBase Management System Software di libero utilizzo Scaricabile gratuitamente dal sito: https://www.mysql.it/ Tipi di Dati MySQL Ogni DBMS presenta tipi di dati diversi I dati che tratteremo sono: Stringhe alfanumeriche Numeri Valori booleani Date Stringa Alfanumerica Si tratta di testo contenente lettere e numeri In MySQL si usa la parola Varchar(n) VARCHAR è una stringa a lunghezza variabile: In precedenza la lunghezza massima era 255 e gli spazi vuoti a destra venivano eliminati in fase di memorizzazione ora invece ciò non avviene più e la lunghezza massima dichiarabile è salita a 65535 caratteri Dati Numerici Esistono sia tipi di dati interi che decimali Dati numerici decimali Float(M,D) Double(M,D) M rappresenta il numero totale di cifre rappresentate e D il numero di cifre decimali Dati numerici Interi Int(M) L’indicazione del parametro M sugli interi non influisce sui valori memorizzabili, ma rappresenta la lunghezza minima visualizzabile per il dato. Se il valore occupa meno cifre, viene riempito a sinistra con degli spazi Date Una colonna DATE può contenere date da ’1000-01-01′ (1° gennaio 1000) a ’9999-12-31′ (31 dicembre 9999) MySQL visualizza le date nel formato appena mostrato, tuttavia consente di inserirle sotto forma di stringhe o numeri Tipi Logici Bool e Boolean Memorizzano i valori logici: Vero Falso Creazione di Tabelle Utilizzando la sintassi SQL possiamo creare le tabelle del nostro database: Lo standard si avvicina molto alla lingua inglese: CREATE TABLE "nome_della_tabella" ("colonna_1" "tipo_di_dati_per_la_colonna_1", "colonna_2" "tipo_di_dati_per_la_colonna_2", ... ); Tabella Studenti CREATE TABLE Studenti ( CodiceFiscale Varchar(16), Nome Varchar(15), Cognome Varchar(15) ); Diagramma E-R Crfeazione Tabelle CREATE TABLE Reparti ( CodR Varchar(8), Nome Varchar(15), NumeroPostiLetto Int ); CREATE TABLE Ospedali ( CodOsp Varchar(8), Nome Varchar(15), Indirizzo Varchar(25) ); Creazione Tabelle CREATE TABLE SaleOperatorie ( CodS Varchar(8), Nome Varchar(15), NumeroTavoli Int ); CREATE TABLE Dipendenti ( Matricola Varchar(8), Nome Varchar(15), Cognome Varchar(15), Indirizzo Varchar(25), Figli Int, DataNascita Date ); Creazione Tabelle CREATE TABLE Medici ( Matricola Varchar(8), Nome Varchar(15), Cognome Varchar(15), Indirizzo Varchar(25), Figli Int, DataNascita Date, Specializzazione Varchar(15) ); CREATE TABLE TecniciAmministrativi ( Matricola Varchar(8), Nome Varchar(15), Cognome Varchar(15), Indirizzo Varchar(25), Figli Int, DataNascita Date, Mansione Varchar(15)); CREATE TABLE Infermieri ( Matricola Varchar(8), Nome Varchar(15), Cognome Varchar(15), Indirizzo Varchar(25), Figli Int, DataNascita Date ); Attributo Chiave Occorre prevedere uno o più campi che contraddistunguono i record in maniera univoca La chiave garantisce l'identificazione di ogni riga PRIMARY KEY (NomeAttributo) CREATE TABLE SaleOperatorie ( CodS Varchar(8), Nome Varchar(15), NumeroTavoli Int, PRIMARY KEY (CodS) ); Diagramma E - R Esercizio Analizzare il diagramma E – R precedente, utilizzare la sintassi SQL per definire le Entità rappresentate Creazione Tabelle CREATE TABLE Madre ( CF Varchar(16), Nome Varchar(15),Eta Int, TipoParto Varchar(10), Letto Int, Stanza Int, Malattie Int PRIMARY KEY (CF)); CREATE TABLE Bambino ( CF Varchar(16), Nome Varchar(15),Eta Int, Dieta Varchar(10), Letto Int, PRIMARY KEY (CF)); Creazione Tabelle CREATE TABLE Giorno (Matricola Varchar(8), Nome Varchar(15),Ore Int, Stanza Int, PRIMARY KEY (Matricola));