Il 0% ha trovato utile questo documento (0 voti)
2 visualizzazioni6 pagine

SQL Ripasso

SQLServer ripasso

Caricato da

pietrotombaccini
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 PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
2 visualizzazioni6 pagine

SQL Ripasso

SQLServer ripasso

Caricato da

pietrotombaccini
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 PDF, TXT o leggi online su Scribd

📒

SQL
Created @March 4, 2024 3:57 PM

Reviewed

Database
Creazione
CREATE DATABASE nomeDatabase

Eliminazione
DROP nomeDatabase

Tabelle
Creazione
CREATE TABLE NomeTabella(
nome_colonna1 tipo1 [NOT NULL],
nome_colonna2 tipo2 [NOT NULL],
nome_colonna3 tipo3 [NOT NULL],
nome_colonnaN tipoN [NOT NULL]
);

Eliminazione
DROP TABLE NomeTabella;

Tipi di dati
//numerico:
SMALLINT //2 byte
FLOAT //numero reale in singola precisione
DOUBLE //numero reale in doppia precisione
DECIMAL(p,q) //numero con un masimo di P cifre di cui Q cifre dopo il punto decimale

//logico
BOOLEAN

//testo
CHAR(n) //stringa con N massimo di caratteri fino a 255
VARCHAR(n) //stringa con N massimo di caratteri fino a 2048
MEMO //stringa fino a 65536 caratteri

//data
DATE //data nella forma AAAA/MM/GG
TIME //ora nella forma HH:MM

Primary key e foreign key

SQL 1
CREATE TABLE NomeTabella(
id_nome_colonna1 tipo1 PRIMARY KEY NOT NULL,
nome_colonna2 tipo2 [NOT NULL],
FK_nome_colonna3 tipo3 [NOT NULL],
nome_colonnaN tipoN [NOT NULL]
FOREIGN KEY(FK_nome_colonna3) REFERENCES NomeTabellaDellaFK(id_chiave_primaria)
);

//forma abbreviata per la Foreign Key


CREATE TABLE NomeTabella(
id_nome_colonna1 tipo1 PRIMARY KEY NOT NULL,
nome_colonna2 tipo2 [NOT NULL],
FK_nome_colonna3 tipo3 [NOT NULL] REFERENCES NomeTabellaDellaFK(id_chiave_primaria), //NOTA: il tipo de
nome_colonnaN tipoN [NOT NULL]
);

Clausole

ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }


ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }
//TODO: inserire cosa fa ogni singola clausola

Creazione di un indice
CREATE UNIQUE INDEX nome_indice
ON nome_tabella(nome_colonna) //anche con più campi quindi: ON nome_tabella(nome_colonna1, nome_col

Modificare la struttura di una tabella


//inserire una nuova colonna
ALTER TABLE nome_tabella
ADD nome_colonna tipo

//cancellare una colonna


ALTER TABLE nome_tabella
DROP nome_colonna

//modificare una colonna cambiandone il tipo


ALTER TABLE nome_tabella
CHANGE nome_colonna nome_colonna nuovoTipo

Dati
Inserimento
INSERT INTO NomeTabella [(nomeColonna1, nomeColonna2, nomeColonnaN)]
VALUES ([valore1, valore2, valoreN]),
([valore1, valore2, valoreN])

Modifica
UPDATE NomeTabella
SET nome_colonna = espressione
[WHERE condizione]

Cancellazione

SQL 2
DELETE
FROM nome_tabella
[WHERE condizione]

Select (DQL, data query language)


SELECT nome_colonna
FROM nome_tabella
[WHERE condizione]
[GROUP BY [nome_colonna]]
[HAVING condizione]
[ORDER BY nome_colonna]

Where
//definisce la condizione a cui devono sottostare le righe da cercare, una condizione
//può essere di confronto semplice (>, <, >=, <=, <>) o di confronto composto (AND, OR, NOT)
//il predicato della condizione WHERE può essere anche:
// LIKE, NOT LIKE, BETWEEN, NOT BETWEEN, IS NULL, IS NOT NULL, IN, NOT IN

LIKE

//confronto tra stringhe che contengono valori speciali detti jolly: % e _


// _ -> per indicare qualsiasi carattere singolo in quella posizione della stringa
// % -> per indicare una sequenza qualsiasi di caratteri in quella posizione della stringa
SELECT Nome_prodotto, Prezzo
FROM Prodotti
WHERE Nome_prodotto LIKE 'P%'

SELECT Nome, Cognome


FROM Giocatori
WHERE Nome LIKE 'Francesc_'

//NOT LIKE funziona al contrario, quindi sostituendo LIKE con NOT LIKE nell'esempio sopra
//ci restituirà i record che NON hanno il nome simile a Francesc_

BETWEEN

//controlla se un valore è compreso all'interno di un intervallo di valori


SELECT Nome_prodotto, Prezzo
FROM Prodotti
WHERE Prezzo BETWEEN 10 AND 15

//NOT BETWEEN funziona al contrario, ci restituisce tutti i valori che NON sono compresi nell'intervallo

Operatori logici

// sono AND, OR, NOT


SELECT Nome_prodotto, Prezzo
FROM Prodotti
WHERE Nome_prodotto LIKE 'C%' AND Prezzo < 15

SELECT Nome_prodotto, Prezzo


FROM Prodotti
WHERE (Nome_prodotto LIKE 'C%' OR Nome_prodotto LIKE 'P%') AND Prezzo < 10

IN

SQL 3
//restituisce i valori che soddisfano la condizione, quindi i fornitori che avranno sede a Londra a Roma
SELECT *
FROM Fornitori
WHERE Città in ('Londra', 'Roma', 'Parigi')

DISTINCT

//non resituisce valori uguali, quindi se ci sono due centro-campisti ne restituisce solo uno
SELECT DISTINCT Ruolo
FROM Giocatori

Altri usi
Generare nuove tabelle

SELECT ListaCampi INTO NuovaTabella


FROM Tabella_di_origine
[WHERE condizione]

Ordinare i risultato di una query


//la clausola ORDER BY ordina i dati visualizzati secondo uno o più campi specificati,
//in ordine crescente o decresente
//ordinamento crescente di default, se lo si vuole decrescente bisogna specificare
// DESC accanto agli attributi di cui si vuole l'ordinamento

SELECT Nome_prodotto, Prezzo


FROM Prodotti
ORDER BY Nome_prodotto

Operazione JOIN

LEFT JOIN
//visualizza tutte le righe della prima tabella (quella a sinistra dell'operatore)
//inoltre congiunge le righe della prima tabella con quelle della seconda tabella, che hanno i valori corri
SELECT *
FROM Tabell1 LEFT JOIN Tabella2
WHERE campoTabella1 = campoTabella2

//esempio
SELECT*
FROM Studenti AS S LEFT JOIN Voti AS V
ON [Link] = [Link]

RIGHT JOIN
//visualizza tutte le righe della seconda tabella congiungendo con le righe della prima
// solo le righe della seconda per quali si trovano i valori corrispondenti

SELECT *
FROM Tabell1 RIGHT JOIN Tabella2
WHERE campoTabella1 = campoTabella2

//esempio

SQL 4
SELECT*
FROM Voti AS V RIGHT JOIN Studenti AS S
ON [Link] = [Link]
WHERE [Link] IS NULL

SELF JOIN
SELECT T1.campo1, T2.campo2
FROM tabella_uno AS T1, tabella_uno AS T2
WHERE T1.campo1 = T2.campo2

//esempio -> così possiamo conoscere i nonni di Anna


SELECT [Link] AS Nonni
FROM Genitori AS G1, Genitori AS G2
WHERE [Link] = [Link] AND [Link] = 'Anna'

Funzioni di aggregazione
//sono COUNT(), SUM(), AVG(), MAX(), MIN()

COUNT()
//conta il numero di righe presenti selezionate

SELECT COUNT(*) //ci da il numero di tutte le righe (record) della tabella


FROM NomeTabella
[WHERE condizione]

SELECT COUNT(Cellulare) //ci da il numero di Dipendenti che hanno associato il cellulare


FROM Dipendenti

SUM()
//restituisce la somma si tutti i valori contenuti in una colonne
SELECT SUM(nomeColonna)
FROM nomeTabella
[WHERE condizione]

//esempio -> restituisce la somma degli stipen


SELECT SUM(stipendio)
FROM Dipendenti
WHERE Dipartimento = 'Vendite'

AVG()
//restituisce la media aritmetica dei valori di una colonna
SELECT AVG(nomeColonna)
FROM nomeTabella
[WHERE condizione]

//esempio
SELECT AVG(stipendio)
FROM Dipendenti
WHERE Dipartimento = 'Vendite'

MIN()

SQL 5
//restituisce il valore più piccolo di una colonna
SELECT MIN(nomeColonna)
FROM nomeTabella
[WHERE condizione]

//esempio
SELECT MIN(stipendio) as 'Stipendio minimo'
FROM Dipendenti
WHERE Dipartimento = 'Vendite'

//può essere usato anche con le stringhe


SELECT MIN(Cognome)
FROM Dipendenti
//restituisce il primo cognome in ordine alfabetico

MAX()
//restituisce il valore più grande di una colonna
SELECT MAX(nomeColonna)
FROM nomeTabella
[WHERE condizione]

//esempio
SELECT MAX(stipendio) as 'Stipendio massimo'
FROM Dipendenti
WHERE Dipartimento = 'Vendite'

//possimao utilizzarli tutti insieme


SELECT MIN(stipendio), MAX(stipendio), AVG(stipendio)
FROM Dipendenti
WHERE Dipartimento = 'Vendite'

Raggruppamenti
GROUP BY
//raggruppa le righe in base ai valori uguali delle colonne specificate
SELECT elencoCampi
FROM nomeTabella
[WHERE condizione]
GROUP BY elencoCampi //raggruppa le righe in base ai valori uguali
[ORDER BY elencoCampi]

//esempio
SELECT codReparto, nomeReparto COUNT(*)
FROM Dipendenti
GROUP BY codReparto

//esempio 2
SELECT codReparto, MAX(stipendio), MIN(stipendio)
FROM Dipendenti
GROUP BY codReparto

SQL 6

Potrebbero piacerti anche