Il 0% ha trovato utile questo documento (0 voti)
6 visualizzazioni12 pagine

Appunti Informatica 4.5 Mysql

Il documento fornisce una panoramica completa del linguaggio SQL, suddividendo i comandi in DDL, DML, DCL e TCL, e spiegando come definire, manipolare e interrogare i dati in un database. Vengono presentati esempi pratici di comandi come CREATE TABLE, INSERT, UPDATE, DELETE e SELECT, insieme a dettagli su tipi di dati, clausole e operazioni relazionali. Inoltre, il documento discute le funzioni di aggregazione e le operazioni di join, evidenziando l'importanza della sintassi e delle condizioni nelle query SQL.

Caricato da

Andrea Spinelli
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
6 visualizzazioni12 pagine

Appunti Informatica 4.5 Mysql

Il documento fornisce una panoramica completa del linguaggio SQL, suddividendo i comandi in DDL, DML, DCL e TCL, e spiegando come definire, manipolare e interrogare i dati in un database. Vengono presentati esempi pratici di comandi come CREATE TABLE, INSERT, UPDATE, DELETE e SELECT, insieme a dettagli su tipi di dati, clausole e operazioni relazionali. Inoltre, il documento discute le funzioni di aggregazione e le operazioni di join, evidenziando l'importanza della sintassi e delle condizioni nelle query SQL.

Caricato da

Andrea Spinelli
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 12

MYSQL (COMANDI DML,DDL,QL)

Il linguaggio SQL è un linguaggio molto potente, ad altissimo livello, esso si avvicina praticamente all'
inglese, è suddiviso in categorie che consentono di:

 Definire il database, la struttura delle tabelle che lo compongono, gli indici, le associazioni tra le
tabelle e le viste logiche, Data Definition Language (DDL);

 Modificare i dati contenuti nel database, con le operazioni di inserimento, variazione e


cancellazione, ed effettuare le interrogazioni, Data Manipulation Language (DML), es. comandi:
Insert, Update, Delete e Select;

 Definire gli utenti e controllare gli accessi al database, Data Control Language (DCL), es. comandi:
Grant e Revoke;

 Gestire e controllare le transazioni con un sottoinsieme del linguaggio che prende il nome di
Transaction Control Language (TCL), es. comandi: Commit e Rollback.

SQL sfrutta operatori aritmetici, caratteri alfabetici, cifre decimali i quali: +, -, *, /, <, >, =, AND, OR, NOT...

Gli Identificatori (Nomi tabelle e attributi) possono avere un massimo di 18 caratteri e possono avere il
carattere "_"

I Tipi standard di SQL sono:


Per i dati numerici la precisione p indica il numero massimo di cifre che il numero può contenere, esclusi il
segno e il punto decimale.

Per i numeri decimali il valore s indica il numero di cifre che seguono il punto decimale.

I dati numerici floating point sono memorizzati in forma esponenziale; la precisione riguarda solo le cifre
della mantissa e indica il numero di cifre significative del dato.

La parola NUMERIC può essere usata al posto di DECIMAL.

La parola CHARACTER è equivalente a CHARACTER(1), e può essere abbreviata con CHAR. DECIMAL è
equivalente a DECIMAL(15,0). Altre abbreviazioni sono:

- CHAR(n) invece di CHARACTER(n);

- INT(p) invece di INTEGER(p);

- DEC(p,s) invece di DECIMAL(p,s).

Nelle colonne della tabella gli attributi che hanno un valore non disponibile, o non definito, assumono il
valore Null.
Il valore Null non è mai uguale a nessun altro valore: è diverso dal valore zero per i dati numerici e dalla
stringa vuota (' ') per i dati alfanumerici. Negli ordinamenti il valore Null compare, di norma, all’inizio delle
sequenze crescenti e alla fine delle sequenze decrescenti.

COMANDI SQL: DDL, LA DEFINIZIONE DELLE TABELLE

 CREATE TABLE, definisce e crea la tabella seguita subito dopo dal nome e dalle parentesi "( )", nella
quale al suo interno vanno definiti i vari attributi con eventuali clausole.

es. es.

CREATE TABLE Impiegati ( CREATE TABLE Dipartimenti(


ID smallint primary key, Codice char(5),
Nome char(20) not null, Descrizione char(20) not null,
Cognome char(30) not null, Sede char(20),
Residenza char(20) default "*** Manca residenza", Manager smallint,
Stipendio decimal (9,2), Primary Key (Codice),
Dipartimento char(5) reference Dipartimenti (Codice), Unique (Descrizione),
unique (Cognome, Nome, Dipartimento) Foreign Key (Manager) references
); Impiegati(ID)
On Delete set null
On Update cascade
Clausole Comando
Primary Key Indica la chiave primaria della tabella
Indica la chiave esterna associata ad una PK di
Foreign Key
un' altra tabella
In caso venga aggiornato una PK associata ad
On Update
un FK, la FK assumerà il valore indicato
In caso venga cancellato una PK associata ad
On Delete
un FK, la FK assumerà il valore indicato
Indica che l' attributo durante l' inserimento
Not null
non può essere null
Assocerà un valore di default in caso di
Default
inserimento null
Vieta la presenza di duplicati negli attributi
Unique
elencati
Reference Indica a quale PK deve fare riferimento la FK

Assegnazioni
On Update/Delete
Set null Associa valore null
Cascade Riflette a catena sui valori dell' FK
No action Non esegue alcuna azione

 ALTER TABLE, la struttura di una tabella può essere modificata anche in un secondo tempo,
attraverso le clausole ADD, che aggiunge una colonna, oppure DROP, che elimina (e non cancella) la
colonna.

es.

ALTER TABLE
Impiegati
ADD Nascita date;

ALTER TABLE

 CREATE INDEX, serve per creare un nuovo indice su una tabella esistente, indicando il nome della
tabella e il nome dell’attributo o degli attributi ai quali associare l’indice. Se non si vuole che ci siano
valori duplicati per l’attributo associato all’indice, occorre usare la clausola UNIQUE.

es.

CREATE UNIQUE INDEX IndiceImpiegati


ON Impiegati(Cognome, Nome);

 DROP, cancella un indice o una tabella, seguiti ovviamente dai loro corrispondenti.

es. es.

DROP INDEX IndiceImpiegati ON Impiegati; DROP TABLE Impiegati;


COMANDI SQL: DML, MANIPOLAZIONE DI DATI

 INSERT INTO, inserisce all' interno di una tabella, già esistente, dei valori negli attributi scelti, è
importante ricordare che dove gli attributi non possono essere nulli vanno aggiunti dei valori.

es.

INSERT INTO Impiegati


(ID, Nome, Cognome, Residenza, Stipendio, Dipartimento)
VALUES(20,'Mario','Rossi','Caserta',31500,'Mag');

 UPDATE, aggiorna una colonna di una riga già esistente, specificando anche il suo campo.

es.

UPDATE Impiegati
SET Dipartimento = 'Prod'
WHERE ID = 20;

 DELETE, effettua la cancellazione di una riga già esistente, specificando anche il suo campo.

es.

DELETE Impiegati
WHERE ID = 20;

È importante specificare come in UPDATE e DELETE appare il la clausola WHERE, essa server a indicare con
più precisione cosa si vuol andare a toccare, per esempio se ci dimentichiamo di inserirlo nel caso di
UPDATE aggiorna tutte le colonne con lo stesso attributo, nel caso di DELETE cancella tutti gli attributi nella
tabella.

es. es.

DELETE Impiegati; UPDATE Impiegati


SET Dipartimento = 'Prod';

È anche possibile usare operatori aritmetici per aggiornare una tabella (L' esempio a seguire aumenta del
5% lo Stipendio).

es.

UPDATE Impiegati
SET Stipendio = Stipendio * 1.05
WHERE Dipartimento = 'Prod';
COMANDI SQL: QL(PT.1), INTERROGAZIONI AI DATI

 SELECT, riflette la natura dichiarativa del linguaggio SQL, e le interrogazioni sulle tabelle del
database sono eseguite specificando solo cosa si vuole ottenere, senza doversi preoccupare di
problemi quali: le modalità di rappresentazione dei dati e i percorsi per ritrovarli nelle memorie di
massa.

La struttura base del comando Select è descritta nel seguente schema:

Un elenco di espressioni, che coinvolgono le colonne, da


mostrare. * per indicare tutte le colonne.

SELECT Espressioni
La tabella, o le tabelle, usate nell’interrogazione.
FROM Tabelle

WHERE Condizioni;
Una espressione logica che specifica quali righe considerare.
Espressione booleana ottenuta componendo confronti con gli
operatori AND OR e NOT.

Per comprendere al meglio il suo funzionamento basiamoci su esempi:

- Interrogazione su una tabella

SELECT Cognome, Nome,


Residenza
FROM Impiegati

Da in output Cognome, Nome e Residenza degli Impiegati che lavorano nel Dipartimento ‘Prod’

- Interrogazione su una tabella con i predicati ALL e DISTINCT

SELECT ALL * Si SELECT *


FROM Impiegati FROM Impiegati
equivalgono
WHERE Residenza = WHERE Residenza =

Da in output tutte le righe, anche duplicate e con valore NULL, aventi le righe secondo la condizione
(In genere il comando è di default per questo spesso viene escluso)

SELECT DISTINCT
Residenza

Da in output tutti le righe della selezione e se ci sono duplicati le riduce ad una (In questo caso
farebbe una lista dove indica in quali città, in generale, vengono tutti gli impiegati)
- Interrogazione con modifica d' intestazione (AS)

SELECT ID AS Matricola, Cognome,


Nome

Modifica, temporaneamente, l' intestazione della colonna la quale verrà mostrata anche in output
(In questo caso la tabella fa una selezione su ID, Cognome e Nome dalla tabella Impiegati,
modificando ID con Matricola)

- Interrogazione con calcoli di espressione

È possibile usare le forme di espressione per poter ottenere risultati desiderati,


osserviamo vari esempi:

SELECT Cognome, Nome, Stipendio AS Attuale, Stipendio*1.05 AS


Nuovo
FROM Impiegati
In questo caso la tabella fa una selezione su Cognome, Nome, Stipendio (rinominandolo "Attuale")
e in più aggiunge una nuova colonna chiamata Nuovo con al suo interno i valori di Stipendio
corrispondenti aumentati del 5%, il tutto dove Dipartimento è uguale a 'Mag' sulla tabella Impiegati

SELECT Cognome, Nome, Residenza,


Stipendio
FROM Impiegati
In questo caso la tabella fa una selezione su Cognome, Nome, Residenza e Stipendio, dove però
Stipendio è maggiore o uguale a 55000, sulla tabella Impiegati

SELECT Cognome, Nome, Residenza,


Stipendio
FROM Impiegati
In questo caso la tabella fa una selezione su Cognome, Nome, Residenza e Stipendio, dove però
mostrerà una finestra all' utente con scritto "Retribuzione minima?" e si potrà inserire il valore di
Stipendio, il tutto sempre sulla tabella Impiegati

SELECT ID AS Matricola, Cognome, Nome


FROM Impiegati
WHERE Dipartimento IS NULL;

È importante che se si vuole controllare la presenza di valori nulli, si deve usare il predicato IS NULL
e non ' ', poiché in quest' ultimo spacebar viene considerato come valore e non come null
COMANDI SQL: QL(PT.2), OPERAZIONI RELAZIONALI

Le operazioni fondamentali dell’algebra relazionale, in SQL, sono realizzate con il comando Select, secondo
le diverse forme consentite dalla sintassi del comando, le quali sono:

 Selezione, che estrae da una relazione solo le righe che soddisfano a una certa condizione, viene
realizzata specificando la condizione di selezione nella clausola Where del comando Select.

L’elenco con tutti i dati dei dipendenti con


SELECT * stipendio minore di 31000 euro, si ottiene
con una selezione sulla tabella Impiegati
FROM Impiegati estraendo le righe per le quali: Stipendio <
WHERE Stipendio < 31000; 31000.

 Proiezione, che permette di ottenere una relazione contenente solo alcuni attributi della relazione
di partenza, si realizza scrivendo l’elenco degli attributi richiesti dopo le parole Select.

L’elenco di tutti i dipendenti con cognome,


nome e matricola, si ottiene con una
SELECT Cognome, Nome, ID proiezione di Impiegati sulle colonne
FROM Impiegati; richieste.

 Congiunzione, Il comando Select può operare su più tabelle, specificandone i nomi, (separati da
virgola) nella clausola From e scrivendo la condizione di congiunzione (cioè la condizione che fa
corrispondere le righe di una tabella con quelle dell’altra) nella clausola Where. Nella quasi totalità
dei casi si vogliono costruire degli equi-join, per cui la condizione da scrivere nella clausola Where
consiste nell’uguaglianza tra attributi di due tabelle.

L’elenco di tutti i dipendenti con i dati del


dipartimento dove lavorano, si ottiene con la
SELECT * congiunzione delle tabelle Impiegati e
FROM Impiegati, Dipartimenti Dipartimenti secondo gli attributi comuni
WHERE Dipartimento = Dipartimento e Codice.

Per maggiore chiarezza, o se ci


sono attributi con il medesimo nome
SELECT * nelle due tabelle, si usa la dot notation,
FROM Impiegati, Dipartimenti specificando oltre al nome dell’attributo
anche quello della tabella alla quale
WHERE Impiegato.Dipartimento = appartengono.

INNER-JOIN definisce la congiunzione.


SELECT Impiegati.*, Dipartimenti.* La condizione di congiunzione è scritta
nella stessa clausola FROM dopo ON.
FROM Dipartimenti INNER JOIN Impiegati
ON Dipartimenti.Codice=Impiegati.Dipartimento;
Tipi di Congiunzione:

 Self-join, si attua quando bisogno congiungere una tabella con se stessa, per effettuare l'
interrogazione quindi deve fare riferimento a se stessa ma non può, ha bisogno di una sorta
di clone di se stessa, per questo bisogna usare degli Alias;

SELECT tab1.attributi, tab2.attributi


FROM tabella AS tab1, tabella AS tab2
WHERE tab1.attributo_foreign_key = tab2.primary_key

es.

Oggetti (ID, Descrizione, Qta, ComponenteDi);

La ridenominazione di Oggetti precisa


il differente ruolo giocato dalla tabella
Oggetti nell’associazione ricorsiva.

SELECT Parti.Descrizione AS Componente, Parti.Qta,


Composto.Descrizione AS Prodotto

FROM Oggetti AS Parti, Oggetti AS Composto

WHERE Parti.ComponenteDi = Composto.ID AND


Composto.Descrizione = 'Camicia';

 Join-esterni, oltre ai join interni il linguaggio SQL permette di costruire dei join che
includono nella congiunzione anche quelle righe di una delle due tabelle che non hanno
corrispondenti nell’altra. Si tratta dei join esterni e, come si è già detto, corrispondono alle
operazioni di left join, right join, full join dell’algebra relazionale.

Prendiamo come esempio il left join (I precedenti elencati funzionano allo stesso modo):

Il LEFT JOIN (Come le altre)


SELECT attributi include comunque tutte le righe
FROM tab1 LEFT JOIN tab2 anche in mancanza di record
associati.
ON tab1.foreign_key = tab2.primary_key;
COMANDI SQL: QL(PT.3), FUNZIONI DI AGGREGAZIONE

 COUNT ( ), da in output una tabella con una singola riga e colonna (Che di default nomina
'Expr1000' +1, a seconda di quante volte viene effettuato), con il conteggio delle righe della
selezione, bisogna specificare però il suo argomento altrimenti si può sempre usare la
clausola '*' la quale conterà anche valori nulli;

SELECT COUNT
(colonna)

Conteggia le righe della colonna selezionata della tabella, se al posto della colonna venisse
messo '*' conteggerebbe anche i valori nulli.

SELECT COUNT (colonna)


FROM tabella
WHERE
condizione;
Conteggia le righe della colonna selezionata della tabella, secondo la condizione.

 SUM ( ), da in output una tabella con una singola riga e colonna , effettuando la somma di
tutti i valori (Numerici) della selezione;

SELECT SUM (Stipendio) AS StipendiAmm,


SUM (Stipendio*1.03) AS
NuoviStipendiAmm
FROM Impiegati

Viene dato in output una tabella con una riga e due colonne (StipendiAmm,
NuoviStipendiAmm) con: nella prima la somma di tutti gli stipendi degli Impiegati del
Dipartimento 'amm', nella seconda prima la somma di tutti gli stipendi degli Impiegati del
Dipartimento 'amm' con un aumento del 3%.

 AVG ( ), da in output una tabella con una singola riga e colonna , effettuando la media
(Inglese, average) di tutti i valori (Numerici) della selezione;

SELECT AVG(Stipendio)
FROM Impiegati, Dipartimenti
WHERE Dipartimento = Codice AND Sede = 'Torino';

Calcola lo Stipendio medio dei Dipendenti che lavorano a Torino.

 MIN ( ) & MAX ( ), stesso output dei precedenti, restituendo rispettivamente il valore
minimo e massimo, valgono anche i valori alfanumerici secondo l' ordine alfabetico.

SELECT SELECT
MIN(Stipendio), MIN(Cognome),
COMANDI SQL: QL(PT.4), ORDINAMENTO E RAGGRUPPAMENTI

 ORDER BY, effettua l' ordinamento dei valori inseriti nel suo campo;

es.

SELECT Cognome, Nome,


Residenza
FROM Impiegati

In questo caso avremo in output Nome, Cognome e Residenza degli Impiegati ordinati
alfabeticamente per Cognome e Nome.

 GROUP BY, raggruppa un insieme di righe aventi lo stesso valore nelle colonne indicate
dalla clausola.

es.

SELECT Dipartimento, COUNT(ID) AS Dipendenti, SUM(Stipendio) AS


Stipendi
FROM Impiegati

Elenco dipartimenti con la somma degli stipendi e il numero di addetti per dipartimento.

La struttura del comando SELECT con raggruppamenti può essere ulteriormente ampliata
con la clausola HAVING con la quale è possibile sottoporre al controllo di una o più
condizioni i gruppi creati con la clausola GROUP BY.

es.

SELECT Descrizione,
COUNT(ID) AS Dipendenti,
Numero degli addetti e somma degli
SUM(Stipendio) AS Stipendi stipendi per i dipartimenti di Torino
FROM Dipartimento D INNER JOIN Impiegati I con più di 1 addetto.
ON
D.Codice = I.Dipartimento
WHERE Sede = 'Torino'
GROUP BY Descrizione
HAVING COUNT(ID) > 1;
COMANDI SQL: QL(PT.5), CONDIZIONI DI RICERCA

Capita che quando dobbiamo fare delle ricerche più specifiche le condizioni diventano sempre più
complesse, per questo le condizioni di ricerca offrono una serie di comandi per poter semplificare le
espressioni di ricerca (Una condizione di ricerca è costruita anche mettendo insieme più condizioni legate
tra loro con gli operatori AND e OR, precedute eventualmente dall’operatore NOT):

 BETWEEN, verifica se il valore è tra un intervallo di due valori (Inclusi gli estremi);

es.

SELECT Cognome, Nome, Residenza


FROM Impiegati
WHERE Stipendio BETWEEN 30000 AND

 IN, verifica se il valore appartiene ad un insieme di valori precisati;

es.

SELECT *
FROM Impiegati
WHERE Residenza IN('Torino','Venezia','Palermo');

 IS NULL/IS NOT NULL, verifica se il valore è nullo o meno;

es.

SELECT Cognome, Nome


FROM Impiegati
WHERE Stipendio IS NOT NULL;

 LIKE, confronta il valore di un attributo di tipo carattere con un modello di stringa che può
contenere caratteri jolly (o metacaratteri), I caratteri jolly sono:
- _ (underline o underscore) per indicare uno e un solo carattere qualsiasi in quella
posizione della stringa,

- % (percento) per indicare una sequenza di zero o più caratteri in quella posizione della
stringa.

Esempi
LIKE ‘xyz%’ Ricerca le stringhe che iniziano con ‘xyz’ e anche i soli caratteri ‘xyz’;
LIKE ‘%xyz’ Ricerca le stringhe che terminano con ‘xyz’ e anche i soli caratteri ‘xyz’;
LIKE ‘%xyz%’ Ricerca le stringhe che contengono ‘xyz’ e anche i soli caratteri ‘xyz’;
LIKE ‘_xyz’ Ricerca le stringhe di 4 caratteri che finiscono per ‘xyz’.

Queste condizioni di ricerca vanno esclusivamente usate in WHERE e/o HAVING.


 REGEX ' ', è un comando di ricerca particolare, la quale ci permette una sheet di comandi
per effettuare delle ricerche dettagliate, le quali vanno comprese tra apici.

es.

SELECT E-mail
FROM ListaMail
REGEX '[a-z0-9_\.]+@(gmail|hotmail|

In questo caso stiamo chiedendo di mostrarci l' elenco delle e-mail che abbiano solamente
il dominio gmail o hotmail o altervista.

Potrebbero piacerti anche