sql1 structured query language data definition language data manipulation language evoluzione sequel...

Post on 01-May-2015

223 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

SQL 1

SQL Structured Query Language

Data Definition Language Data Manipulation Language

Evoluzione Sequel IBM (1974) Standardizzazione ANSI/ISO: SQL-89,

SQL-2, … Oracle SQL

SQL 2

Programma del corso SQL

linguaggio di definizione dello schema di una base di dati;

specifica delle interrogazioni; uso del linguaggio di interrogazione per la definizione

dei dati; comandi per il controllo e l’accesso ai dati; interazione tra SQL ed i tradizionali linguaggi di

programmazione

PL/SQL SQL*Plus

SQL 3

Terminologia SQL

Relazioni = Tabelle Risultato di una interrogazione = Tabella Tupla = Riga Attributo = Colonna

Nessuna distinzione fra maiuscole e minuscole (ad eccezione delle stringhe)

EsempioINO INOME LAVORO CAPO DATA_ASS STIPENDIO DIPNO

7369 SMITH IMPIEGATO 7902 17-12-80 800 20

7499 ALLEN VENDITORE 7698 20-2-81 1600 30

7521 WARD VENDITORE 7698 22-2-81 1250 30

7698 BLAKE MANAGER   1-5-81 3850 30

7902 FORD ANALISTA 7566 3-12-81 3000 10

DIPNO DIPNOME CITTA

10 MAGAZZINO CHICAGO

20 RICERCA DALLAS

30 VENDITE NEW YORK

40 MARKETING BOSTON

LIVELLO MINSAL MAXSAL

1 700 1200

2 1201 1400

3 1401 2000

4 2001 3000

5 3001 9999

Tabella IMPIEGATI

TabellaDIPARTIMENTO

TabellaSALARI

SQL 5

Tipi di dati elementari char (n) varchar2(n) number(o,d)

integer decimal smallint real

date long

SQL 6

Il valore null null 0 null ‘ ‘

SQL 7

Proprietà delle tabelle L’ordine delle righe è irrilevante Non esistono righe duplicate

(possono però apparire righe duplicate nella risposta ad una query)

SQL 8

Select

select [distinct] <colonna/e> from <tabella>[where <condizione>][order by <colonna/e> [asc | desc]

];

SQL 9

Esempi: selezione di colonne select CITTA, DIPNO from DIPARTIMENTO;

select * from IMPIEGATI; select INOME, DIPNO, STIPENDIO*12 as SALARIO_ANNUO from IMPIEGATI;

SQL 10

Funzioni numeriche +, -, *, /, mod, power, sqrt abs, ceil, floor, sign cos, cosh, sin, sinh, tan, tanh log, ln, exp round, trunc nvl vsize

SQL 11

Funzioni su stringhe ||, concat initcap, lower, upper instr substr, rtrim length lpad, rpad soundex

SQL 12

Funzioni di data add_months, months_between greatest, least last_day, next_day new_time round trunc to_char, to_date

SQL 13

Esempi: distinct e order by select DIPNO from IMPIEGATI; select distinct DIPNO from IMPIEGATI;

select INOME, DIPNO, DATA_ASS from IMPIEGATI order by DIPNO [asc], DATA_ASS desc;

SQL 14

Esempi: selezione di tuple select LAVORO, STIPENDIO from IMPIEGATI

where (CAPO = 7698 or CAPO = 7566) and STIPENDIO > 1500;

SQL 15

Operatori nella clausola where

logici: and, or di confronto: =, !=, <>, >, <, <=, >= di appartenenza: in, not in

select * from DIPARTIMENTO where DIPNO in (20, 30);

di valore nullo: is null, is not null select * from IMPIEGATI where CAPO is not null;

di rango: between … and …, not between … and …

select INO, INOME, STIPENDIO from IMPIEGATI where STIPENDIO between 1500 and 2500;

SQL 16

Funzione “like” % carattere jolly _ marcatore di posizione Esempi

… where CITTA like '%YORK%' … where CITTA not like '_A%' … where CITTA like '%A%'

SQL 17

Funzioni di gruppoOperano su un gruppo di righe calcolando

un singolo valore da un insieme di valori di una colonna

count: conta il numero di righe per una colonna

select count(*) from IMPIEGATI; select count(distinct LAVORO) from IMPIEGATI;

select count(*) from IMPIEGATI where LAVORO='VENDITORE';

conta anche eventuali valori null

SQL 18

Funzioni di gruppo (2) max: calcola il massimo dei valori di una

colonna min: calcola il minimo dei valori di una

colonna select min(STIPENDIO), max(STIPENDIO) from IMPIEGATI;

select max(STIPENDIO)-min(STIPENDIO) from IMPIEGATI;

select max(CITTA) from DIPARTIMENTO; ignorano le tuple che hanno valore null nella

colonna specificata

SQL 19

Funzioni di gruppo (3) sum: calcola la somma dei valori di una

colonna avg: calcola la media dei valori di una

colonna select sum(STIPENDIO) from IMPIEGATI where DIPNO=30;

select avg(STIPENDIO) from IMPIEGATI where LAVORO='VENDITORE';

ignorano le tuple che hanno valore null nella colonna specificata

applicabili solo a dati numerici

SQL 20

Definizione dei dati

create table <nome_tabella> (<colonna> <tipo_dati> [default]

[<vincoli_di_colonna>]{, <colonna> <tipo_dati> [default]

[<vincoli_di_colonna>]}{, <vincoli_di_tabella>});

SQL 21

Nomi di colonna e di tabella devono iniziare con una lettera possono contenere numeri e _ possono essere lunghi fino a 30

caratteri i nomi di colonna devono essere

unici all’interno di una tabella

SQL 22

Esempiocreate table IMPIEGATI (INO number(4),INOME varchar2(30),LAVORO char(10),CAPO number(4),DATA_ASS date,STIPENDIO number(7,2),DIPNO number(2));

SQL 23

describe per vedere la struttura di una

tabella si puo’ usare il comando

describe <nome_tabella>;

Esempio: describe IMPIEGATI;

SQL 24

Vincoli

[constraint <nome_vincolo>] primary key | unique | not null

SQL 25

not null richiede che i valori dell’attributo

corrispondente siano diversi da nullcreate table IMPIEGATI (INO number(4) not null,INOME varchar2(30),LAVORO char(10),CAPO number(4),DATA_ASS date,STIPENDIO number(7,2),DIPNO number(2));

SQL 26

unique richiede che i valori dell’attributo

corrispondente siano tutti distinti (i valori null sono ammessi e non violano tale vincolo)

create table IMPIEGATI (INO number(4) not null unique ,INOME varchar2(30)unique,LAVORO char(10),CAPO number(4),DATA_ASS date,STIPENDIO number(7,2),DIPNO number(2));

SQL 27

primary key definisce un identificatore unico per

ogni tupla non ammette valori null

create table IMPIEGATI (INO number(4) constraint PK_IMP primary key,INOME varchar2(30) not null,LAVORO char(10),CAPO number(4),DATA_ASS date,STIPENDIO number(7,2),DIPNO number(2));

SQL 28

Esempio

create table PROGETTO (PNO number(3) constraint pk_prg primary key,

PNOME varchar2(60) unique,PMGR number(4) not null,COMPONENTI number(5),BUDGET number(8,2) not null,PSTART date,PEND date

);

SQL 29

default consente di specificare un valore di

default da assegnare ad un attributo quando ad esso non viene assegnato alcun valore

PSTART date default (’01-JAN-01’),

SQL 30

Vincoli di tabella

I vincoli unique e primary key possono essere riferiti a piu’ colonne.

In tal caso i vincoli devono essere definiti dopo che sono state definite tutte le colonne interessate

constraint DATE_DIVERSE unique(PSTART, PEND)

SQL 31

Checklist Quali attributi delle tuple devono essere

memorizzati? Quali sono i tipi di dati degli attributi? Puo’ essere usato varchar2 al posto di char? Quali colonne costituiscono la chiave primaria? Quali colonne non ammettono valori nulli? Quali colonne non ammettono valori duplicati? Ci sono valori default per certe colonne?

top related