Sei sulla pagina 1di 13

Zz appunti di INFORMATICA

appunti di INFORMATICA
appunti di INFORMATICA

Linguaggio MySQL

02/01/2015
Paola Pucci

INDICE
linguaggio mysql .............................................................................................................................................................. 4
identificatori ................................................................................................................................................................ 4
creazione e uso di database......................................................................................................................................... 4
definizione tabelle ....................................................................................................................................................... 5
modifica degli schemi .................................................................................................................................................. 7
creare un indice ........................................................................................................................................................... 7
cancellare un indice e una tabella ............................................................................................................................... 7
manipolazione dei dati ................................................................................................................................................ 7
inserimento dei dati ................................................................................................................................................. 8
cancellazione delle righe.......................................................................................................................................... 8
modifica delle righe ................................................................................................................................................. 8
creare e cancellare le viste ...................................................................................................................................... 9
comandi per la sicurezza .......................................................................................................................................... 9
interrogazioni semplici............................................................................................................................................. 9
operatori ................................................................................................................................................................ 12
eliminare i duplicati ............................................................................................................................................... 12
condizioni ............................................................................................................................................................... 12

Paola Pucci

Linguaggio MySQL
n. 13 pagine

Questa opera distribuita con Licenza Creative Commons


Attribuzione - Non commerciale - Condividi allo stesso modo
Tu sei libero:
di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico, rappresentare,
eseguire e recitare quest'opera
di modificare quest'opera

Alle seguenti condizioni:


Attribuzione Devi attribuire la paternit dell'opera nei modi indicati dall'autore o da
chi ti ha dato l'opera in licenza e in modo tale da non suggerire che essi avallino te o il
modo in cui tu usi l'opera.
Non commerciale Non puoi usare quest'opera per fini commerciali.
Condividi allo stesso modo Se alteri o trasformi quest'opera, o se la usi per crearne
un'altra, puoi distribuire l'opera risultante solo con una licenza identica o equivalente a
questa.

http://creativecommons.org/licenses/by-nc-sa/3.0/deed.it

LINGUAGGIO MYSQL
SQL l'acronimo di Structured Query Language, nonostante il nome, non si tratta solo di un
semplice linguaggio di interrogazione, , infatti, il linguaggio di definizione e manipolazione dei
dati universalmente usato nelle basi di dati relazionali.
E un linguaggio non procedurale, al contrario del C++, cio consente di operare sui dati di un
database tramite frasi che non fanno uso di simboli matematici ed algebrici, ma solo di parole
chiave prese dal linguaggio corrente; questo, insieme alla sintassi che riprende forme usuali, fa s
che le frasi abbiano una struttura lineare ed espressiva. Non usa, inoltre, il concetto di funzione o
procedura ampiamente usato in C++. Il ; posto al termine del comando serve a segnalare la fine
delle istruzioni.
E, inoltre, un linguaggio not case sensitive, cio non fa distinzione fra le lettere maiuscole e
minuscole.
Legenda: come nella semantica di tutti i linguaggi di programmazione, le parti opzionali sono
racchiuse tra parentesi quadre.

IDENTIFICATORI
Gli identificatori (nomi di tabelle e di attributi) sono costituiti da sequenze di caratteri con
lunghezza massima uguale a 18 caratteri : devono iniziare con una lettera e possono anche
contenere il carattere. Nella dichiarazione della tabella occorre specificare il tipo dei dati scelto
per gli attributi.
I tipi standard sono:
CHARACTER(n)

Stringa di lunghezza n

n da 1 a 15000

DATE

Data nella forma AAAA/MM/GG o AAAA-MM-GG

TIME

Ora nella forma HH:MM:SS

INTEGER(p)

Numero intero con precisione p

p da 1 a 45

SMALLINT

Numero intero con precisione 5

da -215 a 215 -1

INTEGER

Numero intero con precisione 10

da -231 a 231 -1

DECIMAL(p,s)

Numero decimale con precisione p e s cifre decimali

REAL

Numero reale con mantissa di precisione 7

FLOAT(o DOUBLE PRECISION) Numero reale con mantissa di precisione 15


FLOAT(p)

Numero reale con mantissa di precisione p

La precisione p indica il numero massimo di cifre che pu contenere, esclusi il segno e il punto
decimale. Il numero s indica il numero di cifre che conseguono il punto decimale.

CREAZIONE E USO DI DATABASE


Per creare un nuovo Data Base si usa la seguente sintassi:
CREATE DATABASE Nomedatabase
[authorization nomeproprietario];
per selezionare un nuovo Data Base si usa la seguente sintassi:
USE Nomedatabase ;

DEFINIZIONE TABELLE
Una tabella SQL costituita da una collezione di attributi e da un insieme (eventualmente vuoto)
di vincoli.
La sintassi :
CREATE TABLE NomeTabella
(
NomeAttributo Dominio [valore di default] [vincoli],
{ ecc. }
);
quindi una tabella viene definita associandole un nome ed elencandone gli attributi che ne
compongono lo schema.
Ecco un esempio :
CREATE TABLE persona
( Codfisc

char(16) primary key,

Nome

char(20),

Indirizzo

char(50),

Citt

char(20)

);
I valori di default sono i valori che deve assumere lattributo quando viene inserita una riga nella
tabella senza che venga specificato il valore dellattributo stesso.
Sia nella definizione dei vincoli che in quella delle tabelle possibile stabilire dei vincoli; per
vincoli si intendono delle propriet che devono essere verificate da ogni istanza della base di
dati.
In SQL i vincoli che possono essere definiti sugli attributi di una tabella sono i vincoli di not null,
unique e primary key.
Not null : significa che l'attributo deve essere sempre specificato.
Unique : si applica ad uno o pi attributi imponendo che righe differenti abbiano valori differenti.
Viene fatta eccezione solo per il valore null.
Primary Key : specifica quali attributi rappresentano la chiave primaria.
In SQL altri vincoli che possono essere definiti sugli attributi di una tabella sono quelli di default,
check e primary key.
Default <valore default>: assegna all'attributo il valore predefinito.
Check (<condizione>) : specifica un qualsiasi vincolo che riguarda il valore di un attributo, oltre
agli operatori di confronto si possono trovare: IN, BETWEEN..AND, NOT BETWEEN..AND, LIKE,
NOT LIKE.
Foreign Key : specifica quali attributi rappresentano la chiave esterna, inoltre si pu indicare, in
fase di cancellazione ON DELETE o in fase di modifica ON UPDATE, le opzioni CASCADE, SET NULL,
SET DEFAULT e NO ACTION.

Cancellazione (ON DELETE )

Modifica (ON UPDATE)

CASCADE: vengono cancellate le righe


corrispondenti
SET NULL: vengono impostate a Null le righe
corrispondenti
SET DEFAULT: le righe corrispondenti
vengono impostate al valore di default
NO ACTION: non viene eseguita nessuna
azione

CASCADE: le righe corrispondenti vengono


impostate allo stesso nuovo valore
SET NULL: le righe corrispondenti vengono
impostate a Null
SET DEFAULT: le righe corrispondenti vengono
impostate al valore di default
NO ACTION: non viene eseguita nessuna azione

CREATE TABLE azienda


(Codazienda

char(5) not null,

Ragionesociale

char(30) not null,

Codattivit

char(4) not null,

CodDip

char(6) not null,

Primary

key (Codazienda),

Foreign

key (CodDip) REFERENCES dipendente(CodDip) ON DELETE SET NULL,

Foreign

key (Codattivit) REFERENCES categoria(Codattivit) ON UPDATE

CASCADE);
crea una tabella in cui la chiave primaria Codazienda, mentre le chiavi esterne sono Coddip
derivata dalla tabella dipendente che, in caso di cancellazione, imposta a null le righe
corrispondenti e Codattivit derivata da categoria che , in caso di modifica imposta tutte le righe
corrispondenti con lo stesso nuovo valore.
CREATE TABLE persona
(Matricola

char(6)

primary key not null,

Nome

char(20)

not null,

Cognome

char(20)

not null,

Indirizzo

char(50),

Citt

char(20),

Funzione

char(18),

Unique (Nome, Cognome)


);

crea una tabella in cui la chiave primaria la matricola, in cui gli attributi nome e cognome
devono essere obbligatoriamente specificati (a causa del not null) e in cui non possono
comparire due righe aventi stesso nome e cognome.

MODIFICA DEGLI SCHEMI


Il linguaggio implementa anche delle istruzioni dedicate alla modifica delle strutture esistenti
utilizzando il comando alter, per aggiungere una nuova colonna add a quelle gi esistenti, oppure
per togliere una colonna drop.
ALTER TABLE NomeTabella
<ADD NomeAttributo Dominio | DROP NomeAttributo>
[BEFORE NomeColonna];
Esempi:
ALTER TABLE

persona

ADD nascita date;


ALTER TABLE

persona

DROP Indirizzo;
Nel primo esempio aggiungo lattributo nascita con tipo di dato date e nel secondo cancello
Indirizzo, inutile precisare il tipo di dato, in quanto lho definito a suo tempo nella Create Table.

CREARE UN INDICE
L'istruzione CREATE INDEX viene utilizzata per creare un nuovo indice su una tabella esistente, la
chiave esterna che avevamo definito quando si parlava di attributi nel modello E-R.
Se si vuole che non ci siano valori duplicati per l'attributo associato ad indice in righe diverse,
occorre usare la clausola UNIQUE.
Esempio:
CREATE UNIQUE INDEX Ipers
ON persona (Cognome, Nome);

CANCELLARE UN INDICE E UNA TABELLA


Una tabella o un indice possono essere eliminati con il comando DROP.
Esempio:
DROP TABLE persona;
DROP INDEX Ipers ON persona;

MANIPOLAZIONE DEI DATI


La parte di manipolazione dei dati si occupa delle operazioni di inserimento, modifica e
cancellazione delle righe.

INSERIMENTO DEI DATI

Il comando di inserimento di righe nella base di dati presenta la seguente sintassi :

INSERT INTO NomeTabella


( ListaAttributi)
VALUES ( ListaDiValori );
Questa sintassi permette di inserire una riga specificandone i valori dei suoi attributi. Se i dati
sono numerici si scrivono cos come si presentano, se di tipo carattere devono essere preceduti e
seguiti da apici o da virgolette.
Esempio:
INSERT INTO Persona
(Cognome, Nome,)
VALUES('Barbagallo', 'Tino',.);
CANCELLAZIONE DELLE RIGHE

Il comando SQL delete il comando che permette di eliminare delle righe dalla tabella di una
base di dati.
La sintassi :
DELETE FROM NomeTabella
[WHERE Condizione ];
e attua la cancellazione delle righe che rispondono alla condizione specificata.
La condizione rispetta la sintassi SQL, per cui potremmo avere al suo interno delle interrogazioni
nidificate, che affronteremo in seguito, facendo riferimento ad altre tabelle. Un semplice
esempio che elimina i dipartimenti senza impiegati:
DELETE FROM Dipartimento
WHERE Nome NOT IN (SELECT Dipart
FROM Impiegato);
E' da notare la differenza tra il comando DELETE ed il comando DROP. Ad esempio il comando:
DELETE FROM Dipartimento;
elimina tutte le righe della tabella dipartimento, ma lo schema rimane immutato; il comando,
infatti, canceller solo le istanze della tabella. Mentre il comando:
DROP TABLE Dipartimento;
elimina tutte le istanze della tabella, nonch lo schema.
MODIFICA DELLE RIGHE

In SQL la modifica delle righe avviene mediante l'utilizzo del comando update, seguendo la
sintassi:
UPDATE NomeTabella
SET Attributo = < Espressione | SelectSQL | Null | default >

[ WHERE Condizione ];
Il comando update permette di aggiornare uno o pi attributi delle righe di NomeTabella che
soddisfano l'eventuale condizione. Se la condizione non compare, ovviamente si suppone di
default il valore vero e si esegue la modifica su tutte le righe della tabella.
Ecco un esempio che aumenta del 20% lo stipendio degli impiegati che si chiamano "TINO":
UPDATE Impiegato
SET Stipendio = Stipendio * 1.2
WHERE Nome = 'TINO OR Tino;
CREARE E CANCELLARE LE VISTE

CREATE VIEW serve per creare una vista in una tabella.


Esempio:
CREATE VIEW Impieg
AS SELECT *
FROM Personale
WHERE funzione='impiegato';
Invece per cancellarla si usa:
DROP VIEW Impieg;
COMANDI PER LA SICUREZZA

Il comando GRANT concede i permessi, specificando il tipo di accesso, le tabelle sulle quali
consentito l'accesso e l'elenco degli utenti ai quali permesso di accedere.
Esempio:
Per concedere il diritto di modifica sulla tabella dei dipendenti agli utenti denominati con Salvo e
Fausto, si deve usare il comando GRANT nella forma:
GRANT UPDATE
ON Persona
TO Salvo,Fausto;
La revoca dei permessi viene effettuata con REVOKE
REVOKE UPDATE
ON Persona
FROM Salvo,Fausto;
INTERROGAZIONI SEMPLICI

Anche se la parola query pu essere tradotta in interrogazione o domanda, una query SQL non
necessariamente una domanda, pu essere un comando per svolgere una delle seguenti
operazioni:

Creare o cancellare una tabella

Inserire, modificare o cancellare campi

Ricercare informazioni specifiche in pi tabelle e restituire i risultati in un particolare ordine

Modificare i parametri di protezione di un database

Gli elementi importanti di una query sono le parole chiave ovvero le parole del linguaggio SQL
che sono riservate come parte della sintassi.
Le parole chiavi di una query sono:

SELECT
FROM
WHERE

Il carattere * che compare dopo la parola chiave SELECT indica tutti gli attributi della tabella.

E possibile indicare le singole colonne che verranno elencate nello stesso ordine indicato:
SELECT BENEFICIARIO, NOTE, Num, IMPORTO
FROM ASSEGNI;

10

BENEFICIARIO

NOTE

Num

IMPORTO

Computer shop

DVD e CD ROM

1.500,00

Librerie Riunite

Libri, cancelleria

2.453,40

Computer Shop

Telefono cellulare

2.003,20

BIOGA srl

GAS

980,00

Supermarket GC

Alimentari

1.500,00

Assicurazioni Italy

Assicurazione casa

250,00

GAS Spa.

Gas

251,00

Per selezionare solo alcune colonne basta indicarle, solo quelle dichiarate verrano elencate
nellordine indicato:
QUESTA E LA SINTASSI DELLA PROIEZIONE!
SELECT Num, IMPORTO
FROM ASSEGNI;
Num IMPORTO
1

1.500,00

2.453,40

2.003,20

1.500,00

250,00

980,00

251,00

Per selezionare dati da unaltra tabella sufficiente modificare la clausola FROM


QUESTA E LA SINTASSI DELLA SELEZIONE!
SELECT *
FROM DEPOSITI
WHERE NOTE = Stipendio;
DEPOSITO

CHIHAPAGATO

IMPORTO

NOTE

Zio ricco

2000,00

regalo di Natale

Mia azienda

2.453,40

Stipendio

Trasporti S.r.L.

250,00

Affitto garage

11

OPERATORI

Gli operatori sono gli elementi utilizzati allinterno delle espressioni per specificare le condizioni
necessarie a caricare i dati.
Possono essere divisi in sei gruppi:

aritmetici
di confronto
di caratteri
logici
di insieme
vari.

ELIMINARE I DUPLICATI

CONDIZIONI
Tutte le volte che si vuole trovare un particolare elemento o gruppo di elementi in un database, occorre specificare
una o pi condizioni.
Le condizioni sono introdotte dalla clausola WHERE.
SELECT NOME, INDIRIZZO, TELEFONO, RUBRICA
FROM RUBRICA
WHERE NOME = ROSSI;
Nellesempio precedente la condizione NOME = ROSSI.

12

Questa condizione potr essere TRUE (vera) o FALSE (falsa) rispettivamente se la colonna NOME contiene ROSSI
oppure no.
Per trovare tutti gli impiegati che hanno lavorato pi di 100 ore la condizione potrebbe essere: NUMERODIORE >
100.

13