Laboratorio di Basi di Dati

Documenti analoghi
Laboratorio di Basi di Dati e Web

Laboratorio di Basi di Dati

SQL. Lezione 1. Docente: Alberto Belussi

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Corso di Informatica (Basi di Dati)

Gestione delle tabelle

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati

Laboratorio di Basi di Dati Per Bioinformatica

Laboratorio di Basi di Dati e Multimedia

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle

Domini elementari, 2. Basi di dati. Domini elementari, 4. Domini elementari, 3. Domini definiti dagli utenti. Domini elementari, 5

Basi di Dati e Sistemi Informativi. Structured Query Language

Definizione di domini

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Basi di dati - Laboratorio

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

SQL Sintassi Dei Comandi

SQL - Tipi di dato Il linguaggio SQL

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici

SQL. Alcune note sulla definizione dei dati

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a

Basi di Dati: Corso di laboratorio

SQL. Storia e standard

Corso di Basi di Dati A.A. 2013/2014

Linguaggio SQL. Structured Query Language

Basi di Dati Relazionali

Il linguaggio SQL: DDL di base

SQL: Concetti Base -Prima Parte-

Basi di Dati prof. Letizia Tanca

Stringhe di caratteri

Corso sul linguaggio SQL

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

Corso Sistemi Informativi Avanzati. Programma 30 set Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Viste come strumenti di programmazione

SQL Laboratorio di Basi di Dati a.a. 2002/2003

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Basi di Dati: Corso di laboratorio

Equivalenza di espressioni. Equivalenze. Equivalenze. Due espressioni sono equivalenti se: Atomizzazione delle selezioni σ F1 F2 (E) σ F1 (σ F2 (E))


Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL

Corso sul linguaggio SQL

DDL DML. Tipi di linguaggi per basi di dati. Si distinguono due categorie:

Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata

Organizzazione degli archivi

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

DUE GRUPPI DI COMANDI

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER

Lezione V. Aula Multimediale - sabato 29/03/2008

SQL (STRUCTURED QUERY LANGUAGE)

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:

SQL (STRUCTURED QUERY LANGUAGE)

DBMS (Data Base Management System)

ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 2

Informatica per le discipline umanistiche 2 lezione 10

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati

Linguaggio SQL Descriviamo la notazione usata nel seguito:

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.

Giovanna Rosone 04/03/ /03/2010 SQL, Istruzioni per la modifica dello schema

Archivi e Basi di Dati

Basi di Da( MySQL & MySQL Workbench. Anna Monreale

Descrizione del linguaggio SQL Definizione del database. Giovanna Rosone 02-03/03/2010

Viste (relazioni derivate)

Introduzione a PostgreSQL

SQL. Dott.ssa Elisa Quintarelli

Preparazione. Introduzione a MySQL: costruzione di una base di dati e gestione degli accessi. Accesso all area condivisa. Avvio Server MySQL

Introduzione a MySQL

Corso di Basi di Dati

Definizione e manipolazione dei dati in SQL

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL:

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

Basi di dati Il linguaggio SQL

Basi di dati Il linguaggio SQL

User Tools: DataBase Manager

Corso di Informatica Generale 1 IN1. Linguaggio SQL

Volumi di riferimento

Appunti di MySql. Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov.

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.1 Data Description Language - 1

MODELLO RELAZIONALE. Introduzione

OR true null false true true true true null true null null false true null false NOT

Concetti fondamentali dei database database Cos'è un database Principali database

Laboratorio di Basi di Dati Introduzione a SQL

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Introduzione al linguaggio SQL

SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza)

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:

The world s most advanced class on PostgreSQL o quasi! 4 Marzo 8 Aprile L'Antipasto 11 Marzo

DB - Modello relazionale dei dati. DB - Modello Relazionale 1

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro)

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

Il Modello Relazionale

Progettazione di Basi di Dati

Elena Baralis 2013 Politecnico di Torino 1

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

Transcript:

Laboratorio di Basi di Dati Docente: Alberto Belussi Lezione 1

SQL SQL (Structured Query Language) è stato definito nel 1973 ed è oggi il linguaggio più diffuso per i DBMS relazionali. Sono stati proposti diversi standard: l ultimo è SQL-99. In queste esercitazioni utilizzeremo lo standard precedente: SQL-92. Il linguaggio SQL è composto di diverse parti: Linguaggio per la definizione delle strutture dati e dei vincoli di integrità (Data Definition Language) Linguaggio per modificare dati: inserimento, aggiornamento e cancellazione (Data Manipulation Language) Linguaggio per interrogare la base di dati (Data Manipulation language: Query language)

Definizione Dati in SQL Istruzione CREATE TABLE: Definisce lo schema di una relazione (o tabella) e ne crea un istanza vuota Specifica attributi, domini, vincoli CREATE TABLE NomeTabella (Attributo Tipo [Valore Default][Vincolo Attributo] {, Attributo Tipo [Valore Default][Vincolo Attributo]} {, Vincolo Tabella} )

Domini Domini elementari (predefiniti): Carattere: singoli caratteri o stringhe anche di lunghezza variabile Bit: singoli (booleani) o stringhe Numerici, esatti e approssimati Data, ora, intervalli di tempo Domini definiti dall utente

Dominio CARATTERE Permette di rappresentare singoli caratteri oppure stringhe. La lunghezza delle stringhe può essere fissa o variabile. character [varying][(lunghezza)] Forme abbreviate: character character varying (20) CHAR VARCHAR(20)

Dominio BIT Tipicamente usato per rappresentare attributi, detti FLAG, che specificano se l oggetto rappresentato da una tupla possiede o meno una certa proprietà. Si può anche definire un dominio per rappresentare stringhe di bit. bit [varying][(lunghezza)]

Dominio TIPI NUMERICI ESATTI Permette di rappresentare valori interi o valori decimali in virgola fissa. SQL mette a disposizione 4 diversi tipi: numeric decimal integer smallint Esempi: numeric(4,2) Numeri in base decimale numeric [(Precisione [, Scala])] decimal [(Precisione [, Scala])] Se non interessa avere una rappresentazione precisa della parte frazionaria 4 cifre significative, 2 cifre dopo la virgola xx,dd

Dominio TIPI NUMERICI APPROSSIMATI Permette di rappresentare valori numerici approssimati mediante l approccio in virgola mobile. SQL mette a disposizione 3 diversi tipi numerici approssimati: real (in postgres: range of at least 1E-37 to 1E+37 with a precision of at least 6 decimal digits ) double precision (in postgres: range of around 1E-307 to 1E+308 with a precision of at least 15 decimal digits ) float (notazione SQL-standard): float [(Precisione)] (Precisione = cifre binarie mantissa)

Domini per il TEMPO Permette di rappresentare istanti di tempo. date: (year, month, day) time: (hour, minute, second) timestamp: date time time [(Precisione)][with time zone] timestamp [(Precisione)][with time zone] Precisione = numero di cifre decimali usate per rappresentare le frazioni di secondo with time zone = se specificato risultano disponibili due campi in più: timezone_hour e timezone_minute che rappresentano la differenza con l ora di Greenwich. Vedi pagine della documentazione postgresql per funzioni di input/output di valori di questi domini http://www.postgresql.org/docs/8.4/interactive/functionsdatetime.html#functions-datetime-extract

CREATE TABLE: Esempio CREATE TABLE Impiegato ( Matricola CHAR(6), Nome VARCHAR(20), Cognome VARCHAR(20), Qualifica VARCHAR(20), Stipendio FLOAT )

Default Permette di indicare un valore di default che viene inserito in un attributo quando il comando di inserimento (INSERT...) non specifica nessun valore. DEFAULT Valore Esempio dichiarazione di attributo con valore di default: Nome VARCHAR(20) DEFAULT Pippo

Vincoli intrarelazionali Vincoli di integrità: sono proprietà che devono essere soddisfatte da ogni istanza della base di dati. Vincoli di integrità intrarelazionali: riguardano proprietà che si riferiscono alle tuple di una singola relazione della base di dati: NOT NULL: attributo non nullo UNIQUE: definisce chiavi PRIMARY KEY: definisce la chiave primaria (una sola, implica NOT NULL) CHECK(espressione): vincolo generico

NOT NULL Implica che il valore nullo non sia ammesso come valore dell attributo. Questo implica in fase di inserimento che il valore dell attributo deve essere sempre specificato. Nome VARCHAR(20) NOT NULL

UNIQUE Impone che i valori di un attributo (o di un insieme di attributi) siano una superchiave, quindi tuple differenti della tabella non possono avere gli stessi valori nell attributo (o negli attributi) dichiarato(i) UNIQUE. Si può definire su: un solo attributo un insieme di attributi Matricola CHAR(6) UNIQUE Nome VARCHAR(20), Cognome VARCHAR(20), UNIQUE(Nome, Cognome)

Su più attributi: attenzione! Nome VARCHAR(20) NOT NULL, Cognome VARCHAR(20) NOT NULL, UNIQUE(Nome, Cognome) Impone che non ci siano due righe che abbiano uguali sia il nome che il cognome Nome Cognome VARCHAR(20) NOT NULL UNIQUE, VARCHAR(20) NOT NULL UNIQUE, Impone che non ci siano due righe che abbiano lo stesso nome o lo stesso cognome

PRIMARY KEY Specifica la chiave primaria della relazione Si usa una sola volta per tabella Implica una definizione di NOT NULL Due forme: Nella definizione di un attributo, se è l unico componente della chiave primaria Matricola CHAR(6) PRIMARY KEY Come definizione separata a livello di tabella, se invece la chiave primaria è composta da più attributi Nome VARCHAR(20), Cognome VARCHAR(20), PRIMARY KEY(Nome, Cognome)

CREATE TABLE: Esempio CREATE TABLE Impiegato ( Matricola CHAR(6) PRIMARY KEY, Nome Cognome Qualifica VARCHAR(20) NOT NULL, VARCHAR(20) NOT NULL, VARCHAR(20), Stipendio FLOAT DEFAULT 0.0, UNIQUE(Cognome, Nome) ) Il valore che deve assumere l attributo quando viene inserita una riga nella tabella senza che sia specificato un valore per l attributo stesso. Se non specificato, si assume come valore di default NULL.

CREATE TABLE: esempio Check CREATE TABLE Impiegato ( Matricola CHAR(6) PRIMARY KEY, Nome VARCHAR(20) NOT NULL, Cognome VARCHAR(20) NOT NULL, Qualifica VARCHAR(20), Stipendio FLOAT DEFAULT 100.0, UNIQUE(Cognome, Nome), CHECK (Stipendio>= 100) )

Domini definiti dall utente E possibile definire domini specifici assegnando vincoli sui domini di base CREATE DOMAIN NomeDominio as TipoBase [valoredidefault][vincolo] dove Vincolo è un vincolo CHECK(condizione) dove la condizione è espressa come prevede la clausola WHERE di un interrogazione SQL. Esempio (dominio enumerato): CREATE DOMAIN TipoAttivitàFormativa as CHAR(1) CHECK(VALUE IN ( A, B, C, D, E, F )); E la parola chiave per indicare un valore del dominio

INSERT Come popolare una tabella (inserimento righe): INSERT INTO NomeTabella [(ElencoAttributi)] VALUES (Elenco di Valori); INSERT INTO Impiegato (Matr,Nome,Cognome) VALUES ( A00001, Mario, Rossi );

DELETE Come cancellare tuple da una tabella: DELETE FROM NomeTabella [WHERE condizione]; DELETE FROM Impiegato WHERE Matr= A3300 ; Come cancellare un intera tabella: DROP TABLE NomeTabella;

PostgreSQL PostgreSQL è un DBMS relazionale (con alcune caratteristiche object-relational). Software multipiattaforma di pubblico dominio. L'interazione tra un utente (programmatore della base di dati, o utente finale) e le basi di dati gestite da postgresql avviene secondo il modello client-server.

PostgreSQL Per ogni connessione stabilita vengono coinvolti tre processi UNIX: il postmaster: un processo deamon con funzione di supervisione (gestisce le basi di dati presenti sul server); l'applicazione frontend dell'utente (psql): ogni utente che si connette lancia questo programma; un backend database server (per ogni connessione).

Uso locale di PostgreSQL Il server dbserver è il server PostgreSQL utilizzato per le esercitazioni di laboratorio Sono disponibili tante basi di dati quanti sono gli utenti. Ogni utente accede alla propria base di dati: dblabxx è la base di dati dell utente userlabxx Come ci si connette? export PGUSER=userlabXX psql h <nome server> d <nome database> psql h dbserver d dblabxx

Uso locale di PostgreSQL Il nome della tabella è univoco nella base di dati. Quindi non possono essere create due tabelle con lo stesso nome. Terminare ogni comando SQL con il carattere ;

Lavorare in psql psql h dbserver d dblabxx Noteremo, lavorando dalla linea di comando, un messaggio di benvenuto ed il cambiamento del prompt: Welcome to the POSTGRESQL interactive sql monitor:. type \? for help on slash commands type \q to quit type \i FILENAME execute commands from file type \r reset (clear) the query buffer type \g or terminate with semicolon to execute query You are currently connected to the database: dblabxx dblabxx=>

Creazione tabelle e inserimento dati CREATE TABLE indirizzi ( nome varchar(20), cognome varchar(20), indirizzo varchar(50), email varchar(30) ); Il comando viene eseguito. Appare messaggio NOTICE:..CREATE TABLE e poi il prompt INSERT INTO indirizzi VALUES ('Mario', 'Rossi', 'via Dante, 3 - ROMA', 'mario@rossi.com ); Appare un messaggio del tipo INSERT 0 1 e poi il prompt

Tipi di Dati principali in PostgreSQL varchar(n) stringa di lunghezza variabile minore o uguale a "n" char carattere singolo char(n) stringa di lunghezza fissa di "n" caratteri integer un intero di non più di nove cifre float un numero in virgola mobile (15 cifre mantissa) real un numero in virgola mobile (6 cifre mantissa) date data time orario timestamp data + orario interval intervallo di tempo