Sei sulla pagina 1di 4

DISPENSINA essenziale sui comandi SQL implementati in MySQL di Altervista.

Esempi tratti dal Libro di testo (Pro.Tech)


------------

Nota: in Altervista i nomi delle tabelle sono case sensitive, tutto il resto è case insensitive.
NOTA: con MySQL Altervista è possibile usare il DB già esistente e associato al proprio account.
------------
Comandi DDL (Data Definition Language): Comandi per la Definizione dei Dati.

> CREATE DATABASE nomeDB; /*crea un DB di nome nomeDB*/


/*Il suddetto comando è disattivato in MySQL Altervista*/
> DROP DATABASE nomeDB; /*Elimina (distrugge) un DB di nome nomeDB*/

> SHOW DATABASES; /*Visualizza la lista dei DB (associati al nostro account) sul server*/

> USE NomeDB; /*specifica il DB su cui operare*/


/* in MySQL Altervista c’è un unico DB ed è inutile specificarlo */

ESEMPI implementabili in MySQL Altervista

> CREATE TABLE utenti ( /*crea una tabella di nome utenti*/


Codice INT NOT NULL,
Cognome VARCHAR(30),
Nome VARCHAR(30),
Indirizzo VARCHAR(40),
Citta VARCHAR(25),
PRIMARY KEY (Codice)
);

> CREATE TABLE bollette( /*crea una tabella di nome bollette*/


Numero INT NOT NULL AUTO_INCREMENT,
Data DATE,
Consumo INT,
Importo DOUBLE, /* l’indicazione dimensionale (12,2) è deprecata in MySQL Altervista*/
CodUtente INT,
PRIMARY KEY (Numero),
FOREIGN KEY (CodUtente)
REFERENCES utenti(Codice)
);

> SHOW TABLES; /*mostra le tabelle del DB utenze*/


+---------------------+
| Tables_in_utenze |
+---------------------+
| bollette |
| utenti |
+---------------------+

Author: A. Muscara 1/4


> DESCRIBE bollette; /*mostra la struttura della tabella bollette*/
+-------------+----------------+------+---------+---------+--------------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------------+------+---------+---------+--------------------+
| Numero | int(11) | NO | PRI | NULL | auto_increment |
| Data | date | YES | | NULL | |
| Consumo | int(11) | YES | | NULL | |
| Importo | double(12,2) | YES | | NULL | |
| CodUtente | int(11) | YES | MUL | NULL | |
+-------------+----------------+------+---------+---------+--------------------+

> SHOW COLUMS FROM bollette; /*analogo al comando describe*/

> DROP TABLE nomeTabella; /* elimina (ditrugge) una tabella.*/


--------------------------
ALTER TABLE nomeTabella CHANGE VecchioNomeCampo NuovoNomeCampo Definizione
Campo;
/* modifica il nome di un campo (colonna) e anche la sua definizione.*/

ESEMPIO:
> ALTER TABLE utenti CHANGE Indirizzo Indirizzo VARCHAR(70);
/* abbiamo aumentato la dimensione del campo da 40 a 70 */

ALTER TABLE vecchioNomeTabella RENAME NuovoNomeTabella;


/* modifica il nome di una tabella.*/
---------------------
ALTER TABLE nomeTabella ADD nomeCampo Definizione; /* aggiunge un campo*/

ESEMPIO:
> ALTER TABLE utenti ADD NumeroCivico VARCHAR(10);
/* abbiamo aggiunto il campo NumeroCivico alla tabella utenti*/

ALTER TABLE nomeTabella DROP nomeCampo; /* elimina un campo*/

ESEMPIO:
> ALTER TABLE utenti DROP NumeroCivico;
/* abbiamo eliminato il campo NumeroCivico dalla tabella utenti*/
------------

Comandi DML (Data Manipulation Language): Comandi per la Manipolazione dei dati.

INSERT (inserisce), UPDATE (aggiorna), DELETE (cancella).

ESEMPI

> INSERT INTO utenti


(Codice, Cognome, Nome, Indirizzo, NumCivico, Citta)
VALUES(1, 'Rossi', 'Antonio', 'Via Roma',34, 'Milano');

Author: A. Muscara 2/4


> UPDATE utenti
SET Indirizzo = 'Via Roma'
WHERE Codice=1;

> UPDATE utenti


SET NumCivico = 34
WHERE Codice=1;

> DELETE FROM utenti /* cancella la riga con Codice=1*/


WHERE Codice = 1;

> DELETE FROM utenti; /* cancella (non distrugge) la tabella utenti*/

==> INTERROGAZIONI CON IL COMANDO SELECT su una tabella

SELECT nomiCampi separati da virgola


FROM nomeTabella
WHERE condizioni;

ESEMPI

> SELECT * FROM utenti; /*mostra tutte le colonne (e le righe) della tabella utenti*/

> SELECT * FROM utenti /* mostra tutte le colonne della tabella utenti ma solo le */
WHERE Citta= 'Milano'; /* righe che soddisfano Citta= ‘Milano’ */

> SELECT Cognome, Nome FROM utenti /* mostra le colonne Cognome, Nome e le righe */
WHERE Citta= 'Milano'; /* che soddisfano Citta= ‘Milano’ */

> SELECT * FROM utenti /* mostra tutte le colonne della tabella utenti ma solo le */
WHERE Codice>2; /* righe che soddisfano Codice>2 */

> SELECT Codice, Cognome, Nome


FROM utenti
WHERE Cognome='Rossi' AND Citta= 'Roma';

==> INTERROGAZIONI CON IL COMANDO SELECT su due tabelle (join)


Si possono effettuare in due modi:

Primo modo:
> SELECT Cognome, Nome, Data, Importo /*elenco dei campi da visulizzare*/
FROM utenti, bollette /*elenco delle tabelle contenenti i campi di cui sopra */
WHERE Codice = CodUtente; /*vincolo di congiunzione: PK(utenti)=FK(bollette) */

Secondo modo:
> SELECT Cognome, Nome, Data, Importo
FROM utenti INNER JOIN bollette ON Codice = CodUtente;

In MySQL funzionano entrambi ma il primo modo è oramai sconsigliato (ma funziona).

Author: A. Muscara 3/4


I vincoli di congiunzione sono necessari perché occorre congiungere righe appartenenti a tabelle
diverse ma che riguardano lo stesso utente.

Per maggiore chiarezza (a volte è necessario) si può far uso della “dot notation”:
si scrive “utenti.Codice = bollette.CodUtente” invece di “Codice = CodUtente” sia nel primo e sia
nel secondo modo.

---------

OPERATORI NELLE CONDIZIONI DI RICERCA

Per ora consideriamo l’operatore LIKE con i caratteri jolly “%” (percento) e “_” (underscore).

Supponiamo di avere una Tabella “Impiegati” costituita dai campi:


ID, Nome, Cognome, Residenza, Stipendio, Dipartimento.

> SELECT Cognome, Dipartimento


FROM Impiegati
WHERE Cognome LIKE 'R%'; /*fornisce il cognome e il dipartimento di tutti gli impiegati */
/*il cui cognome inizia per “R” */

> SELECT Cognome, Dipartimento


FROM Impiegati
WHERE Cognome LIKE 'Ro%'; /*fornisce il cognome e il dipartimento di tutti gli impiegati */
/*il cui cognome inizia per “Ro” */

> SELECT Cognome, Dipartimento


FROM Impiegati
WHERE Cognome LIKE '%ra'; /*fornisce il cognome e il dipartimento di tutti gli impiegati */
/*il cui cognome termina per “ra” */

LIKE '%ra%'; /* ricerca tutte le stringhe contenenti “ra” */

LIKE '_ra'; /* ricerca tutte le stringhe lunghe 3 caratteri terminanti con “ra” */

LIKE '__ra'; /* ricerca tutte le stringhe lunghe 4 caratteri terminanti con “ra” */

LIKE '_ab_'; /* ricerca tutte le stringhe lunghe 4 caratteri contenenti al centro “ab” */

LIKE ''__ R%''; /* ricerca tutte le stringhe formate da una parola di 2 caratteri prima */
/* dello spazio e da una parola che inizia per “R” dopo lo spazio */
Esempio: De Rossi.

LIKE ''_%'_%''; /* ricerca tutte le stringhe contenenti 1 o più caratteri prima dell’apostrofo */
/* e 1 o più caratteri dopo l’apostrofo*/
Esempio: D’Antonio, Sant’Antonio.

Author: A. Muscara 4/4

Potrebbero piacerti anche