Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Il 0% ha trovato utile questo documento (0 voti)
11 visualizzazioni

SQL

Il documento fornisce una panoramica dettagliata del linguaggio SQL, inclusi comandi per la creazione e modifica di tabelle, vincoli di integrità, operazioni di aggiornamento e interrogazione dei dati. Vengono presentati esempi pratici di istruzioni SQL come CREATE TABLE, ALTER TABLE, INSERT, DELETE e SELECT, insieme a spiegazioni sui tipi di dati e le operazioni di join. Inoltre, il documento discute l'importanza dei vincoli come PRIMARY KEY e FOREIGN KEY per mantenere l'integrità dei dati.
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 PPTX, PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
11 visualizzazioni

SQL

Il documento fornisce una panoramica dettagliata del linguaggio SQL, inclusi comandi per la creazione e modifica di tabelle, vincoli di integrità, operazioni di aggiornamento e interrogazione dei dati. Vengono presentati esempi pratici di istruzioni SQL come CREATE TABLE, ALTER TABLE, INSERT, DELETE e SELECT, insieme a spiegazioni sui tipi di dati e le operazioni di join. Inoltre, il documento discute l'importanza dei vincoli come PRIMARY KEY e FOREIGN KEY per mantenere l'integrità dei dati.
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 PPTX, PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 38

SQL

Structured Query Language


Definizione dei dati in SQL
Istruzione CREATE TABLE:
- definisce uno schema di
relazione e ne crea un’istanza
vuota
- specifica attributi, domini e
vincoli
CREATE TABLE impiegato(
matricola CHAR(6) PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
cognome VARCHAR(20) NOT NULL,
Dipart CHAR(15),
Stipendio DECIMAL(4,2) DEFAULT 0,
FOREIGN KEY(Dipart) REFERENCES
Dipartimento(NomeDip),
UNIQUE (matricola,cognome,nome))
Vincoli intrarelazionali
- NOT NULL
- UNIQUE definisce chiavi
- PRIMARY KEY: chiave primaria
(una sola, implica NOT NULL)
-
Caratteri(Stringhe)
char(dimensione fissa)
varchar (dimensione variabile) 255 caratteri
text (dimensione variabile) 65000 caratteri
Numeri
numeric
integer
decimal (intera,decimale) es. (3,2) 999.99
Data e ora
time (08:00:00)
date (2020-02-01) YYYY-MM-GG
datetime (2020-02-01 08:00:00)
timestamp (13425346546754) la quantità di secondi che
sono trascorsi dal 1 genn 1970 ad oggi
Booleano
boolean
Aggiungere un campo:
ALTER TABLE DIRIGENTI
ADD NOTE VARCHAR2 (2000);

Modificare il tipo ad un campo:


Supponiamo ora che alla tabella DIRIGENTI vogliamo modificare il tipo
del campo TITOLO_STUDIO che è un CHAR(30) in CHAR(60):

ALTER TABLE DIRIGENTI


MODIFY TITOLO_STUDIO CHAR(60);
Modificare l’opzione NOT NULL:
L’opzione MODIFY può anche essere utilizzata per cambiare l’opzione di
un campo da NOT NULL a NULL; vediamo un esempio:
Supponiamo che vogliamo cambiare l’opzione del campo ID_DIRIGENTE
da NOT NULL a NULL

ALTER TABLE DIRIGENTI


MODIFY ID_DIRIGENTE CHAR(3) NULL;

è possibile anche effettuare l’operazione inversa, ovvero modificare


l’opzione NULL di un campo in NOT NULL a patto però che in quella
colonna non appaiono valori nulli.
UNIQUE e PRIMARY KEY
due forme:
- nella definizione di un attributo,
se forma da solo la chiave
- come elemento separato

ESEMPIO
Matricola CHAR(6) PRIMARY KEY
Matricola CHAR(6),
…,
PRIMARY KEY (Matricola)
Nome CHAR(20) NOT NULL,
Cognome CHAR(20) NOT NULL,
UNIQUE (Cognome,Nome),

Nome CHAR(20) NOT NULL UNIQUE,


Cognome CHAR(20) NOT NULL UNIQUE,
Vincoli interrelazionali
REFERENCES e FOREIGN KEY
permettono di definire vincoli di
integrità referenziale
due sintassi
- per singoli attributi
- su più attributi
CREATE TABLE Infrazioni(
Codice CHAR(6) PRIMARY KEY,
Data DATE NOT NULL,
Vigile INTEGER NOT NULL
REFERENCES Vigili(Matricola),
Provincia CHAR(2),
Numero CHAR(6) ,
FOREIGN KEY(Provincia, Numero)
REFERENCES Auto(Provincia, Numero))
Modifica tabella - Inserire chiavi primarie
A volte nasce la necessità di dichiarare un particolare
campo di una tabella, chiave primaria.

ALTER TABLE nome_tabella


ADD CONSTRAINT nome_chiave PRIMARY
KEY (nome_campo);
Modifica tabella - Aggiungere chiavi esterne
La necessità di aggiungere chiavi esterne è
abbastanza frequente.

ALTER TABLE nome_tabella


ADD CONSTRAINT nome_chiave FOREIGN KEY
(nome_campo)
REFERENCES nome_tabella_master;
Operazioni di aggiornamento
- operano su una o più ennuple di
una relazione
- sulla base di una condizione
anche complessa
Inserimento
INSERT INTO Tabella [ ( Attributi ) ]
VALUES( Valori )
INSERT INTO Persone
VALUES('Mario',25,52)

INSERT INTO
Persone(Nome, Eta, Reddito)
VALUES('Pino',25,52)

INSERT INTO Persone SET


Nome=‘Lino’,
Reddito=55,
Eta=25
Eliminazione di ennuple
DELETE FROM Tabella
[ WHERE Condizione ]
DELETE FROM Persone
WHERE Eta < 35

DELETE FROM Paternita

Truncate Paternita
Modifica di ennuple
UPDATE NomeTabella
SET Attributo = < Espressione |
SELECT … |
NULL |
DEFAULT >
[ WHERE Condizione ]
UPDATE Persone SET Reddito = 45
WHERE Nome = 'Piero‘

UPDATE Persone
SET Reddito = Reddito * 1.1
WHERE Eta < 30

UPDATE Person
SET given_names = 'Stefano'
WHERE surname = 'Spaccapietra'
DROP TABLE
Questa istruzione serve per eliminare
completamente una tabella dal database.
Questa istruzione è particolarmente
pericolosa.

DROP TABLE DIRIGENTI;

Il comando non chiede conferma dell’utente


ed elimina definitivamente la tabella.
SQL, operazioni sui dati
interrogazione:
SELECT
Istruzione SELECT
SELECT Lista Attributi
FROM Lista Tabelle
[ WHERE Condizione ]
- "target list"
- clausola FROM
- clausola WHERE
Selezione e proiezione
- Nome e reddito delle persone con
meno di trenta anni

select nome, reddito


from persone
where eta < 30
SELECT, abbreviazioni

select nome, reddito


from persone
where eta < 30

select p.nome, p.reddito as entrate


from persone p
where p.eta < 30
SELECT

select nome, eta, reddito


from persone
where eta < 30

select *
from persone
where eta < 30
Espressioni nella target list

select Reddito/2 as
RedditoSemestrale
from Persone
where Nome = 'Luigi‘

RedditoSemestrale
20
Condizione “LIKE”
Le persone che hanno un nome
che inizia per 'A' e ha una 'd'
come terza lettera

select *
from persone
where nome like 'A_d%'
Gestione dei valori nulli

Gli impiegati la cui età è o


potrebbe essere maggiore di 40

select *
from impiegati
where eta > 40 or eta is null
Maternita Madre Figlio
Luisa Maria
Luisa Luigi
Anna Olga

Paternita Padre Figlio


Sergio Franco
Luigi Maria
Luigi Olga

Persone Nome Eta Reddito


Andrea 21 21
Olga 33 23
Franco 50 58
Selezione, proiezione e join

I padri di persone che


guadagnano più di venti milioni
select distinct padre
from persone, paternita
where figlio = nome and
reddito > 20
INNER JOIN
LEFT JOIN
RIGHT JOIN
INNER JOIN

select distinct padre


from persone INNER JOIN
paternita
on figlio = nome
where reddito > 20
LEFT JOIN

select distinct padre


from persone LEFT JOIN paternita
on figlio = nome
where reddito > 20
Join naturale
Padre e madre di ogni persona
paternita JOIN maternita

select paternita.figlio,padre,
madre
from maternita, paternita
where paternita.figlio =
maternita.figlio
Join complessi
Le persone che guadagnano più
dei rispettivi padri; mostrare
nome, reddito e reddito del padre

select f.nome, f.reddito, p.reddito


from persone p, paternita, persone f
where p.nome = padre and
figlio = f.nome and
f.reddito > p.reddito

Potrebbero piacerti anche