Sito e-learning

Glossario SQL




Sfoglia il glossario usando questo indice

Caratteri speciali | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | TUTTI

A

ALTER TABLE

La struttura di una tabella può essere modificata in un secondo momento con il comando ALTER TABLE, per:

aggiungere una nuova colonna a quelle già esistenti, oppure per togliere una colonna.

Esempi:

ALTER TABLE Tabella1
ADD Campo7;

- In questo caso alla Tabella1 verrà aggiiunta la colonna Campo7.

ALTER TABLE Tabella1
DROP Campo7;

- In questo caso alla Tabella1 verrà eliminata la colonna Campo7.

Se si vuole aggiungere una condizione di validità di un determinato campo si usa la seguente struttura:

ALTER TABLE Tabella1
ALTER COLUMN
Campo3 char(30) not null;

 - Va specificato il tipo del campo che si modifica seguito dalla condizione di validità, in questo caso il campo non dovrà essere un campo nullo.

Se si desidera aggiungere un campo che sia anche chiave esterna:

ALTER TABLE Tabella1
ADD column  id1 integer references  Tabella2(id1);

- Verrà aggiunto il campo id1, chiave esterna per Tabella1, corrispondente alla chiave primaria "id1" di Tabella2

Se si desidera modificare il nome di uno dei campi di una tabella si può procedere come segue:

ALTER TABLE Tabella1
CHANGE campo-old campo-new tipo extra;

ad esempio: 

ALTER TABLE categorie CHANGE denominazione descrizione VARCHAR(30) NOT NULL;

Se si desidera trasformare il campo di una tabella in chiave esterna si può procedere così:

ALTER TABLE Tabella1
ADD CONSTRAINT nomeindice
FOREIGN KEY (
nome-chiave-esternaREFERENCES Tabella2(nome-chiave-primaria)

ad esempio:

ALTER TABLE prodotti 
ADD CONSTRAINT FornitoreFK 
FOREIGN KEY (idFR) REFERENCES fornitori(idFR)

 

 

AND

AND viene utilizzato per definire una condizione abbinandolo alla WHERE. La condizione risulterà vera solo se entrambe le proposizioni sono vere

SELECT *
FROM Tabella
WHERE a=b AND c=d

AS

Per modificare l'intestazione della tabella che si ottiene come risultato dell'interrogazione si può usare la clausola AS.

Esempio

Select data, importo, importo * 10/100 as sconto
From fatture

 

 

C

CREATE TABLE

Le tabelle vengoino create con il comando DDL create table, seguito dal nome della tabella e dall'elenco degli attributi.
Per ogni attributo occorre specificare:

  • nome campo,
  • tipo campo:
    • CHAR(n), stringa con l'indicazione del numero dei caratteri che la compongono
    • VARCHAR(n), stringa con l'indicazione del numero dei caratteri che la compongono
      • il tipo dati CHAR usa una lunghezza fissa, al contrario il tipo dati VARCHAR può avere lunghezza variabile fino ad arrivare alla lunghezza massima specificata for the length.
    • INT, intero,
    • TINYINT, intero di 4 cifre,
    • DATE, data,
    • TIME, data e ora,
    • FLOAT, virgola mobile,
    • DOUBLE, doppia precisione,
    • ENUM, valori ammissibili. I valori possibili di un ENUM sono rappresentati da stringhe racchiuse tra apici, e divisi da virgole,
    • SET, a differenza di ENUM, con SET è possibile assegnare al campo una combinazione qualunque di membri della lista.
  • [facoltativo] qualificativo:
    • PRIMARY KEY, chiave primaria
    • FOREIGN KEY, chiave esterna con riferimento alla chiave primaria della tabella associata
    • obbligatorietà (NOT NULL)
    • valore di default (DEFAULT)

Esempio 1 - Tipi di dati e chiave primaria di tipo "contatore", chiave esterna

CREATE TABLE IF NOT EXISTS Tabella3 (
  id2 int(11) NOT NULL AUTO_INCREMENT,
  campo1 varchar(20) COLLATE utf8_bin NOT NULL,
  campo2 int(11) NOT NULL,
  campo3 date DEFAULT NULL,
  campo4 time NOT NULL,
  campo5 float NOT NULL,
  campo6 double NOT NULL,
  campo7 enum('S','N') COLLATE utf8_bin NOT NULL DEFAULT 'S',
  campo8 tinyint(4) NOT NULL,
  campo9 int(11) NOT NULL,
  PRIMARY KEY (id2),
  FOREIGN KEY (campo9) REFERENCES Tabella2(id2)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1;

  • chiave primaria "INT" di tipo contatore: ID2 autoincrement primary key,
  • chiave esterna di tipo "INT" con riferimento alla chiave primaria della tabella associata: Campo9 INT references Tabella2(id2));

Esempio 2 - Chiave esterna

CREATE TABLE Tabella1(
ID1 AUTO_INCREMENT PRIMARY KEY,
Campo1 varchar(20),
Campo2 date,
Campo3 INT,
FOREIGN KEY (Campo3) references Tabella2(id2));

CREATE TABLE tabella2(
id2 autoincrement PRIMARY KEY,
Campo1 varchar(10),
unique(campo1));

  • chiave primaria "INT" di tipo contatore: ID1 autoincrement primary key,
  • chiave esterna di tipo "INT" con riferimento alla chiave primaria della tabella associata: Foreign Key (Campo3) references Tabella2(id2))
  • campo non duplicato: unique(campo1)

Esempio 3 - Chiavi composte

CREATE TABLE Tabella4(
Campo1 char(3),
Campo2  char(3),
Campo3 varchar(10),
PRIMARY KEY (campo1, campo2),
ID2 INT references Tabella2(id2));

  • chiave primaria composta da due campi alfanumerici: primary key (campo1, campo2),
  • chiave esterna di tipo "INT" con riferimento alla chiave primaria della tabella associata: FOREIGN KEY ID2 references Tabella2(id2))

CREATE TABLE Tabella5 (
ida INT,
idb INT,
descrizione varchar(40),
idconto INT,
idcliente INT,
PRIMARY KEY (ida, idb));

  • chiave primaria composta da due campi numerici: primary key (ida, idb),

Un altro comando DDL per intervenire sulle tabelle è create index.
Create index viene utilizzata per creare un nuovo indice su una tabella esistente, indicando:

  • nume tabella,
  • nome attributo/i cui è associato all'indice,
  • [facoltativo] UNIQUE, se non si vuole che vi siano valori duplicati per l'attributo associato all'indice.

Esempio - Creazione di un indice

CREATE INDEX Campo4
ON Tabella1(Campo1, Campo2);

CREATE Unique INDEX Campo5
ON Tabella1( Campo1, Campo2);

CREATE TABLE IF NOT EXISTS valutatissimo (
  idv int(11) NOT NULL AUTO_INCREMENT,
  ids int(11) NOT NULL,
  idm int(11) NOT NULL,
  data date NOT NULL,
  voto int(11) NOT NULL,
  tipo ENUM('O', 'S', 'P') NOT NULL,
  PRIMARY KEY (idv),
  FOREIGN KEY (ids) REFERENCES studenti(ids),
  FOREIGN KEY (idm) REFERENCES materie(idm)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1;


CREATE TABLE employee_person (
    id int unsigned not null primary key,
    address varchar(60),
    phone int,
    email varchar(60),
    birthday DATE,
    sex ENUM('M', 'F'),
    m_status ENUM('Y','N') Default 'Y',
    s_name varchar(40),
    children int
    )

Create view

La specifica SQL CREATE VIEW 

In SQL, una vista è una tabella virtuale basata sul set di risultati di un'istruzione SQL.
Una vista contiene righe e colonne, proprio come una tabella reale. I campi in una vista sono campi di una o più tabelle reali nel database.
È possibile aggiungere le funzioni SQL, WHERE e JOIN a una vista e presentare i dati come se i dati provenissero da una singola tabella.

Sintassi della CREATE VIEW 

CREATE VIEW view_name AS
SELEZIONA colonna1, colonna2, ...
FROM nome_tabella
WHERE condizione;

Nota: una vista mostra sempre dati aggiornati! Il motore di database ricrea i dati, utilizzando l'istruzione SQL 

Esempi di SQL CREATE VIEW

CREATE VIEW [Current Product List] AS
SELECT IDProdotto, NomeProdotto
FROM  Prodotti
WHERE Discontinued = "No";

Quindi, possiamo interrogare la vista come segue:
SELECT * FROM [Current Product List];

Un'altra vista è questa che seleziona ogni prodotto nella tabella "Prodotti" con un prezzo unitario superiore al prezzo unitario medio:

CREATE VIEW [Prodotti sopra il prezzo medio] AS
SELECT NomeProdotto, PrezzoUnitario
FROM  Prodotti
WHERE Prezzo unitario> (SELEZIONA AVG (Prezzo unitario) FROM Prodotti);

Possiamo interrogare la vista sopra come segue:

SELECT * FROM [Prodotti sopra il prezzo medio];

Una vista che seleziona i suoi dati da un'altra vista:

CREATE VIEW [Categoria di vendita per il 1997] AS
SELECT DISTINCT CategoryName, Sum (ProductSales) AS CategorySales
FROM  [Vendite di prodotti per il 1997]
GROUP BY CategoryName;

Possiamo interrogare la vista sopra come segue:

SELECT * FROM [Category Sales For 1997];
WHERE CategoryName = 'Bevande';

Aggiornamento di una vista SQL 

È possibile aggiornare una vista utilizzando la seguente sintassi:

CREATE OR REPLACE VIEW Sintassi

CREATE OR REPLACE VIEW view_name AS
SELEZIONA colonna1, colonna2, ...
FROM nome_tabella
WHERE condizione;

Ora vogliamo aggiungere la colonna "Category" alla vista "Current Product List". Aggiorneremo la vista con il seguente SQL:
CREATE OR REPLACE VIEW [Elenco prodotti corrente] AS
SELECT IDProdotto, NomeProdotto, Categoria
FROM Prodotti
WHERE Discontinued = "No";

Eliminazione di una vista

È possibile eliminare una vista con il comando DROP VIEW.

DROP VIEW Sintassi

DROP VIEW view_name;

CURDATE()

Differenze fra Curdate () e Now ()

  • CURDATE () restituisce la parte DATE dell'ora corrente. 
  • NOW () restituisce le parti di data e ora come un timestamp in vari formati, a seconda di come è stato richiesto. 

Solo per il gusto di farlo:

  • CURDATE () = DATE (NOW ())
  • NOW () = CONCAT (CURDATE (), '', CURTIME ())

CURDATE () fornirà la data corrente mentre NOW () fornirà l'intera data.

Eseguire le query che seguono per scoprirai la differenza tra loro:

  • SELECT NOW(); --- si ottiene 2010-12-09 17:10:18
  • SELECT CURDATE (); --- si ottiene 2010-12-09

In realtà MySQL offre molte funzioni facili da usare nella vita di tutti i giorni senza uno sforzo maggiore da parte dell'utente:

  • NOW () produce data e ora sia nello scenario corrente mentre
  • CURDATE () produce solo la data,
  • CURTIME () visualizza solo il tempo,

possiamo usarne uno in base alle nostre necessità con CAST o unire altri calcoli ad esso, MySQL è ricco in questi tipi di funzione, è possibile visualizzare la differenza utilizzando la query:

  • SELECT NOW() as NOWDATETIME, CURDATE() as NOWDATE, CURTIME() as NOWTIME;

da https://stackoverflow.com/questions/4397755/mysql-curdate-vs-now

D

DATE MySQL

Esempi sull'uso delle date con MySQL:

DATE_SUB(data1, INTERVAL 30 DAY)
DATE_SUB(data1, INTERVAL -30 DAY)
sottrae un intervallo temporale ad una data
DATE_ADD(data1, INTERVAL 30 DAY) somma un intervallo temporale ad una data
DATE(data1) Estrae la data da un'espressione "date/datetime"
DATEDIFF(data2, data1)
DATEDIFF
(CURDATE(),dataA)
Sottrae due date
year(data1) anno della data
month(data1) mese della data
day(data1) giorno del mese della data
dayofweek(data1) numero del giorno della settimana della data
dayname(data1) nome del giorno della settimana della data
CURDATE() data odierna
NOW() data odierna ed ora odierna

DATEADD

In Microsoft Access, la funzione DateAdd restituisce una data cui è stato aggiunto un intervallo.

La sintassi per la funzione DateAdd è:

DateAdd (intervallo, numero, data) 

intervallo è l'intervallo di tempo / data che si desidera aggiungere. Può essere uno dei seguenti valori:

Value ValoreExplanation Spiegazione
yyyy   Anno
q  Trimestre
m   Mese
y   Giorno dell'anno
d   Giorno
w   Giorno feriale
ww   Settimana
h   Ora
n   Minuto
s   Secondo

numero è il numero che si desidera aggiungere.

data è la data alla quale l'intervallo deve essere aggiunto.

Per Esempio

DateAdd ("yyyy", 3, #22/11/2003#)  restituisce '22 / 11/2006 '
DateAdd ("q", 2, #22/11/2003#)  restituisce '22 / 05/2004 '
DateAdd ("m", 5, #22/11/2003#)  restituisce '22 / 04/2004 '
DateAdd ("n", 51, #22/11/2003 10:31:58 AM#)  restituisce '22 / 11/2003 11:22:58 '
DateAdd("yyyy", -1, #22/11/2003#)  restituisce '22 / 11/2002 '

DateDiff

La sintassi della funzione DateDiff è:

DateDiff ( intervallo, data1, data2, [primogiornodellasettimana], [primasettimanadell'anno])

  • data1 e data2 sono due date su cui calcolare la differenza.

  • intervallo indica l'intervallo di tempo da usare per calcolare la differenza fra data1 e data2. 
s secondi
n minuti
h ore
ww settimane
d giorni della settimana
y giorni dell'anno
m mesi
q trimestri
yyyy anni

 

  • primogiornodellasettimana è opzionale. E' una costante che specifica il primo giorno della settimana. Se si omette il parametro Access assume la Domenica come primo giorno della settmana.
  • primasettimanadell'anno è opzionale. E' una costante che specifica la prima settimana dell'anno. Se si omette il parametro Access assume il 1^gennaio come prima settimana dell'anno.

Esempi

  • DateDiff ("yyyy", #15/10/1998#, #22/11/2003#) restituisce 5
  • DateDiff ("m", #15/10/2003#, #22/11/2003#) restituisce 1
  • DateDiff ("d", #15/10/2003#, #22/11/2003#) restituisce 38

Day Month Year

  • Day: Restituisce un intero che rappresenta il giorno di una specifica data.
    Sintassi: DAY ( data )
  • Month: Restituisce un intero che rappresenta il mese di una specifica data.
    Sintassi: MONTH ( data )
  • Year: Restituisce un intero che rappresenta l’anno di una specifica data.
    Sintassi: YEAR ( data )

Esempi:

  • SELECT DAY (DATA) AS Giorno
  • SELECT MONTH(DATA) AS Mese
  • SELECT YEAR(DATA) AS Anno

Delete

La Delete serve ad eliminare i dati di una tabella segue questa forma:

Delete From Impiegati
Where ID=20

La where  consenti di operare su gruppi di record anziché su una sola riga per volta:
basta indicare dopo la where  basta indicare una condizione che deve essere verificata dalle righe che si vogliono modificare o cancellare.

Se si vuole eliminare  un determinato dato relativo a più tabelle bisogna fare:

Delete From Impiegati
Where IDI=(select IDI from Impiegati inner join Aziende on Impiegati.IDI=Aziende.IDI where IDI=[Immettere codice dipendente]);

Perciò bisogna utilizzare una query nidificata

DISTINCT

La clausola Distinct serve a non ripetere nei risultati della SELECT quelli con lo stesso valore. Per eliminare le ripetizioni occorre inserire la clausola immediatamente dopo l'istruzione SELECT. Ad esempio, per visualizzare tutti i nomi contenuti in una database dovremo scrivere:

SELECT DISTINCT nome
FROM alunni

L'interrogazione seleziona tutti i ricord visualizzando però soltanto i nomi diversi. In questo caso, la SELECT non distingue il numero degli alunni con lo stesso nome ma si limita a visualizzare ogni nome trovato nel database.

Quando viene combinato con altre funzioni di conteggio permette di ottenere risultati sintetici altrimenti impossibili da calcolare. Ad esempio nella seguente query SQL:

SELECT COUNT(DISTINCT cliente) 
FROM fatturazione;

L'interrogazione estrapola come risultato finale il numero effettivo dei clienti eliminando le duplicazioni.

DML

Il DML (Data Manipulation Language) è un linguaggio presente all'interno del linguaggio SQL e serve per effettuare le operazioni di manipolazione (INSERT, UPDATE, DELETE).

DROP

Il comando DROP permette di modivifacre la struttura di una tabella.

Più precisamente con il comando DROP serve per eliminare una tabella o cancellarne un indice.

Esempi:

  • Per cancellare una tabella

DROP TABLE Tabella1;

Si deve specificare la tabella che si vuole eliminare. In questo caso Tabella1

  • Per cancellare un indice

DROP INDEX Indice1;

Si deve specificare l'indice che si vuole eliminare. In questo caso Indice1.

E

ENUM

ENUM

CREATE TABLE localita_puglia (
nome VARCHAR(50),
comune ENUM('Bari', 'Brindisi', 'Foggia', 'Lecce', 'Taranto')
);

1. INSERT

Un valore di un campo ENUM può essere assegnato sia con la stringa che rappresenta l'elemento, che con il suo indice intero.

INSERT INTO localita_puglia(nome, comune) VALUES ('San Martino', 'Bari');
INSERT INTO localita_puglia(nome, comune) VALUES ('San Martino', 1);

 

MySql memorizza internamente l'intero, e non la stringa.

2. SELECT

La SELECT su campi ENUM restituisce la stringa dell'elemento. Se vogliamo il valore numerico corrispondente è sufficiente fare un semplice cast ad intero:

SELECT nome, comune+0 # sommando 0 al campo si esegue il CAST ad intero
FROM localita_puglia;

SET

CREATE TABLE spiagge (
nome VARCHAR(50),
composizione SET('sabbia fine', 'sabbia grossa', 'ciottoli', 'scogli')
);

INSERT INTO spiagge (nome, composizione) VALUES ('Lacona', 'sabbia fine');
INSERT INTO spiagge (nome, composizione) VALUES ('Enfola', 'ciottoli,sabbia grossa');

F

FORMAT

Funzione MySQL FORMAT()

La funzione FORMAT() formatta un numero come un formato di "#, ###. ##", arrotondandolo a un determinato numero di posizioni decimali. Quindi restituisce il risultato come una stringa.

Sintassi
FORMATO (numero, posizioni_decimali)

Valori dei parametri 

parametroDescrizione
numero Obbligatorio. Il numero da formattare
posizioni_decimali Obbligatorio. Il numero di posizioni decimali per arrotondare il numero

Nota
Se posizioni_decimali è 0, la funzione FORMAT() restituisce una stringa senza posizioni decimali

Esempi

Formatta il numero con formato "#, ###. ##":

  • arrotondato con due cifre decimali: SELECT FORMAT (250500.5634, 2);
  • arrotondato senza cifre decimali: SELECT FORMAT (250500.5634, 0);

FROM

Il comando FROM è usato per indicare i nomi della/e tabella/e che vengono usate per l'interrogazione. Nel caso in cui la tabella interessata sia solo una la query sarà la seguente:
   SELECT *
   FROM nome tabella
Invece nel caso in cui la query interessa più tabelle esistono 2 modi per far si che la query usi due tabelle.
Il primo modo è quello di usare i JOIN.

ESISTONO DIVERSI TIPI DI JOIN:

  • INNER JOIN: L'inner join è un join interno che collega due tabelle mettendo in relazione le chiavi esterne con le chiavi primarie. La sintassi è la seguente:

SELECT *
FROM tab1 INNER JOIN tab2 ON tab1.chiave primaria=tab2.chiaveesterna

N.B: Le 2 chiavi devono essere state messe precedentemente in relazione (REFERENCE)

  • Esistono altri 2 tipi di JOIN: Il left join e il right join

Ecco alcuni esempi:

Prendiamo in considerazione queste due tabelle:

TAB 1

K1

Dati1

1

Bianchi

2

Rossi

3

Verdi

4

Brown



TAB 2

K2

K1

Dati2

1

1

1500

2

1

200

3

3

8000

4

3

9000

5

3

100

6

8

1500

 

Eseguendo la seguente query:

Select *
From tabella1 RIGHT  join tabella2 on tabella1.k1 = tabella2.k1


Otterremo il seguente risultato:

K1

Dati1

K2

K1

Dati2

1

Bianchi

1

1

1500

1

Bianchi

2

1

200

3

Verdi

3

3

8000

3

Verdi

4

3

9000

3

Verdi

5

3

100

 

 

6

8

1500

 

Eseguendo invece quest'altra query:

Select *
From tabella1 left  join tabella2 on tabella1.k1 = tabella2.k1


Otterremo il seguente risultato

K1

Dati1

K2

K1

Dati2

1

Bianchi

1

1

1500

1

Bianchi

2

1

200

2

Rossi

 

 

 

3

Verdi

3

3

8000

3

Verdi

4

3

9000

3

Verdi

5

3

100

4

Brown

 

 

 

 

Nel caso del righ join vediamo che la query prende in considerazione e confronta la chiave esterna della tabella di destra con la chiave primaria della tabella di sinistra.
Mentre nel caso del left join la query confronta la chiave primaria della tabella di sinistra con la chiave esterna della tabella di destra

Un altro modo per usare piu tabelle in una query è quello di unirle nella WHERE in questo modo:

SELECT * 
FROM Tab1, Tab2, Tab3
WHERE tab1.chiave primaria=tab2.chiaveesterna and tab1.chiave primaria=tab3.chiave esterna

Funzioni di aggregazioni

Le funzioni di aggregazioni sono funzioni predefinite del comando Select, che agiscono sui valori contenuti in insiemi di righe della tabella, per esattezza agiscono sui valori di una singola colonna e restituiscono un solo valore come ad esempio il massimo o in minimo dei valori considerati. Le righe considerate per l'aggregazione sono quelle prodotte dall'interrogazione e quindi, in presenza di una clausola Where, sono le righe che soddisfano la condizione specificata.

  • Funzione COUNT - conta il numero di righe selezionate dall'interrogazione
    L'argomento della COUNT può essere:
    • *
      quando si desidera contare il numero delle righe includento anche eventuali valori nulli per i campi. Lo stesso risultato si ottiene contando in base al campo chiave.
    • nome-campo
      quando si desidera contare il numero delle righe escludendo eventuali valori nulli per il campo indicato
  • Funzione SUM - somma di tutti i valori contenuti nella colonna specificata
    L'argomento deve essere un campo numerico.
  • Funzione AVG (dall'inglese average = media) - media di tutti i valori contenuti nella colonna specificata
    L'argomento deve essere un campo numerico.
  • Funzione MIN e MAX  - determinano il valore minimo e il valore massimo tra tutti i valori nella colonna specificata

I

IF

La funzione IF() restituisce un valore se una condizione è TRUE o un altro valore se una condizione è FALSE.

Nota:
la funzione IF () può restituire una stringa o un valore numerico.

IF(condizionevalore_if_verovalore_if_falso)

Esempi

SELECT nome, cognome, IF (nazione = 'IT','Italia','Estero') AS paese
FROM utenti

SELECT  *, IF (prezzo<=100,'Economiche','Professionali') AS categoria
FROM bicicletta
ORDER BY categoria

IN

L'operatore IN preceduto da WHERE permette di controllare se un valore corrsisponde ad uno o piu valori di un insieme.


Esempio1

Select *
From Alunni
Where Classe IN ("4ap", "4ai", "4am", "4ae");

INSERT

La prima istruzione utilizzata dalle query di inserimento è INSERT INTO, che presuppone che la tabella di destinazione esista e presenta la seguente sintassi:

INSERT INTO Impiegati
(campo1, campo2, ..., campon)
VALUES(valore1, valore2, ..., valoren);

La INSERT serve a inserire dei valori in una nuova riga di una tabella

Esempi:

Tabella impiegati:
con chiave primaria NON di tipo contatore

INSERT INTO Impiegati
(ID, Nome, Cognome, Residenza, Stipendio, Dipartimento)
VALUES(20, 'Mario', 'Rossini', 'Caserta', 31500, 'Mag');

L'ordine dei campi indicati deve corrispondere all'ordine dei valori indicati. Il campo chiave, nel caso in cui sia di tipo contatore, gestito automaticamente dal DBMS, non deve essere indicato.

 

I dati che vengono inseriti con la INSERT possono anche provenire da un'altra tabella:

Esempi

INSERT INTO volontari_napoli (cognome, nome)
SELECT cognome, nome
FROM volontari
WHERE lcase(citta) = 'napoli';

INSERT INTO volontari_napoli
SELECT *
FROM volontari;

L

LCASE

Restituisce una stringa o un carattere convertito in minuscolo.

LIKE

L'istruzione LIKE consente di realizzare una ricerca basandosi su un modello.

                           La sintassi è la seguente:

SELECT "nome_di_colonna"
FROM "nome_della_tabella"
WHERE "nome_di_colonna" LIKE {modello}

Spesso il {modello} è composto da caratteri jolly %.

Il carattere % viene utilizzato pre rappresentare ogni possibile carattere o blocco di caratteri che possono venire trovati dopo il carattere Il carattere {modello}.

Esempio:

Visualizzare tutte le informazioni sui clienti che risiedono in una città che contiene il gruppo 'PG' in qualsiasi posizione

SELECT *
FROM clienti
WHERE CITTA LIKE "%PG%";

M

MAX

DIP

idd

cognome

stipendio

dat

1

Cognome1

25252

25/01/2013

2

Cognome1

21452

12/04/2001

3

Cognome1

4

08/01/2000

4

Cognome2

15252

25/01/2013

5

Cognome2

21452

12/04/2001

6

Cognome2

4

08/01/2000

7

Cognome3

11152

25/01/2013

8

Cognome3

21452

12/04/2001

9

Cognome3

4

08/01/2000

 

MAX restituisce il valore massimo tra i valori della colonna di una tabella specificata come argomento della funzione.

Esempio 1:

Select cognome, max(stipendio)
From dipendenti
Group by cognome

Query_max

cognome

MAX

Cognome1

25252

Cognome2

21452

Cognome3

21452

 

Con questa query vengono visualizzati i stipendi piu alti per ogni diverso cognome

Esempio  2:

Select cognome, stipendio
From dipendenti
Where stipendio=(select max(stipendio) from dipendenti)

Query_max_nidificata

cognome

stipendio

Cognome1

25252

 

Qui invece avendo usato la nidificata viene visualizzato solo lo stipendio piu alto di tutti

N

NOT IN

L'operatore IN preceduto da NOT permette di controllare la non appartenenza di un valore ad un insieme.


Esempio

Select *
From  Alunni
Where Classe NOT IN ("4ap", "4ai", "4am", "4ae");

NOW()

La funzione CURRDATE() consente di ottenere la data di sistema in formato data  mentre la funzione NOW() consente di ottenere la data di sistema in formato data e ora.

Esempio:

cognomenomedatanData_di_sistema
CURRDATE()
Orario_di_sistema
NOW()
cognome1 nome1 15/10/1990 23/02/2013 23/02/2013 08:16:58
cognome2 nome2 10/05/1980 23/02/2013 23/02/2013 08:16:58

 

Se si desidera confrontare un campo data in formato DATE con la data del giorno si usera CURDATE() mentre se si desidera confrontare un campo data in formato TIME con la data del giorno si usera NOW()

O

OR

OR viene utilizzato per definire una condizione abbinandolo alla WHERE. La condizione risulterà vera solo se almeno una delle due proposizioni è vera

SELECT *

FROM Tabella

WHERE a=b OR c=d;

 

Nella negazione OR diventa AND

SELECT *

FROM Tabella

WHERE  c<>1 AND  c<>25 AND  c<>68 AND  c<>99;

ORDER BY

Nel comando Select si può inserire la clausola ORDER BY per ottenere risultati di un'interrogazione ordinati secondo i valori contenuti in una o più colonne, tra quelle elencate accanto alla clausola ORDER BY.

Esempi:

  • ORDER BY Campo1 Desc, Campo2 (dal più grande al più piccolo)
    ORDER BY Campo1 Asc, Campo2 (dal più piccolo al più grande)

COGNOME

NOME

Rossi

Ildebrando

Rossi

Alarico

Verdi

Antonio

Bianchi

Antonio

Belkebir

Ada

 

ORDER BY COGNOME Asc, NOME

Ordino per cognome

COGNOME

NOME

Belkebir

Ada

Bianchi

Antonio

Rossi

Alarico

Rossi

Ildebrando

Verdi

Antonio

 

ORDER BY NOME Asc, COGNOME

Ordino per nome

COGNOME

NOME

Belkebir

Ada

Rossi

Alarico

Bianchi

Antonio

Verdi

Antonio

Rossi

Ildebrando

Q

QL

Il QL (Query Language) è un linguaggio contenuto all'interno di SQL ed utilizzato per le interrogazioni.

R

RAND

Richiedere una riga casuale (o il più vicino possibile al caso reale) in SQL:

SELECT * 
FROM acquista 
ORDER BY RAND() 
LIMIT 1

Generare un numero casuale

  • La funzione RAND() restituisce un numero casuale o un numero casuale all'interno di un intervallo.
  • La funzione RAND() restituirà un valore compreso tra 0 (incluso) e 1 (esclusivo).
  • La funzione RAND() restituirà un numero completamente casuale se non viene fornito alcun seme e una sequenza ripetibile di numeri casuali se viene utilizzato un valore seme.

Sintassi
RAND (seme)

Esempio

Restituisce un numero decimale casuale >= 5 e <10:

SELECT RAND()*(10-5)+5;

Esempio

Restituire un numero casuale >= 5 e <=10:

SELECT FLOOR(RAND()*(10-5+1)+5);
 
Esempio:

Senza usare un valore iniziale viene generato un numero decimale casuale > = 0 e <1:

SELECT RAND();

RENAME (MySQL)

Per rinominare e/o spostare una tabella:

RENAME TABLE DATABASE1.prenota TO DATABASE2.prenota3;

 

S

SELECT

Il comando SELECT consente di estrarre le informazioni desiderate dal database mediante interrogazioni (query).

Esempio

SELECT cognome, nome
FROM studenti;

SELF JOIN

Un self join consente di unire una tabella a se stessa. Utilizzare un self join quando si desidera creare un set di risultati che unisce record in una tabella ad altri record nella stessa tabella. 

Esempio:

SELECT Parti.Descrizione As Componente,parti.qta,coposto.descrizione As prodotto
FROM Oggetti As Parti, Oggetti as Composto
WHERE Parti.componenteDi = Composto.ID AND Composto.Descrizione ='Camicia';

ovvero

SELECT Parti.Descrizione As Componente,parti.qta,coposto.descrizione As prodotto
FROM Oggetti As Parti INNER JOIN Oggetti as Composto ON  Parti.componenteDi = Composto.ID
WHERE Composto.Descrizione ='Camicia';

 

T

TRIM

TRIM / LTRIM / RTRIM

Mediante queste funzioni è possibile liberare il campo "str" dagli spazi bianchi all’inizio, alla fine o da entrambe le estremità della stringa.

  • TRIM(str) , consente di rimuovere tutti gli spazi vuoti dall’inizio della stringa ed alla fine della stringa.
  • LTRIM(str): consente di rimuovere tutti gli spazi vuoti dall’inizio della stringa.
  • RTRIM(str): consente di rimuovere tutti gli spazi vuoti dalla fine della stringa.

Esempio 1:

SELECT TRIM(' Sample ');
Risultato : 'Sample'

Esempio 2:

SELECT LTRIM(' Sample ');
Risultato : 'Sample '

Esempio 3 :

SELECT RTRIM(' Sample ');
Risultato : ' Sample'

U

Union

La funzione union è un metodo ke ci permette di unire due tabelle con la stessa select.

Per utilazzare la UNION è necesario ke:

  • ke le tabelle siano interrogate sul medesimo numero di colonne;
  • ke le colonne richieste abbiano lo stesso nome;
  • ke le colonne richieste nelle due tabelle abbiano dei tipi di dato omogenei;

Esempio: poniamo di dover operare su un database di un'ipotetica agenzia viaggio e supponiamo che il nostro DB contenga due sole tabelle:

  • hotel_italia
    • nome
    • stelle
    • citta
    • nazione
  • hotel_europa
    • nome
    • stelle
    • citta
    • nazione

ESEMPIO UNION SQL  per conoscere indifferentemente le offerte degli hotel sia in Italia che in Europa:

SELECT nome, stelle, citta, nazione
FROM hotel_italia
UNION
SELECT nome, stelle, citta, nazione
FROM hotel_europa

UPDATE

I dati di una tabella sono spesso soggetti a cambiamenti ed a modifiche,per aggiornare, o modificare i dati di una tabella, si utilizza l'istruzione UPDATE come segue: 

Esempio:

UPDATE nome_tabella SET nome_campo = 'valore'

con questo comando vengono aggiornati tutti i record,per aggiornare un record specifico si introduce WHERE

Esempio:

UPDATE nome_tabella
SET
nome_campo = 'valore'
WHERE
campo_di_condizione = 'valoredi_condizione'

W

WHERE

Con la clausola WHERE si indica una condizione logica su uno o più attributi con l'obbiettivo di filtrare le righe delle tabelle, deve essere seguita sempre da una condizione. Qualsiasi clausola scritta dopo la WHERE viene considerata come condizione.

Esempio

Select cognome,nome
From studenti
Where nome="paolo"

Select cognome, nome
From studenti
Where nome = "paolo" AND cognome = "testi"

Select cognome, nome
From studenti
Where nome = "antonio" OR nome = "luca"