Sei sulla pagina 1di 34

SQL

SQL l'acronimo di Structured Query Language. SQL il linguaggio utilizzato per comunicare con un database. La prima versione standard di Sql stata quella definita dall'American National Standards Institute (ANSI), Sql il linguaggio standard per la gestione dei DBMS relazionali (versione SQL-3). Le istruzioni SQL vengono utilizzate per eseguire operazioni come l'aggiornamento dei dati su un database, o recuperare i dati da un database.

Prof.ssa G. Russo

SQL

Molti tra i pi noti DBMS relazionali utilizzano il linguaggio Sql: Oracle Sybase Microsoft SQL Server Access Ingres MySql

Prof.ssa G. Russo

SQL

Sebbene la maggior parte dei DBMS utilizzino SQL standard, importante considerare che quasi tutti hanno anche le proprie ulteriori estensioni proprietarie, in genere utilizzabili e comprensibili solo al loro interno. Tuttavia, lo standard di SQL che mette a disposizione istruzioni come "Select", "Insert", "Update", "Delete", "Create", e "Drop" pu essere utilizzato per realizzare quasi tutto ci che si vuole da un database.

Prof.ssa G. Russo

Tabelle

Un database relazionale contiene una o pi oggetti denominati tabelle. I dati o le informazioni del database sono memorizzate in tabelle. Le tabelle sono univocamente identificate dal nome e sono organizzate in righe e colonne.

Prof.ssa G. Russo

Tabelle

Elenco delle definizioni utilizzate nella descrizione formale delle tabelle.


Scalare: la pi piccola unit di informazione di una tabella . Es.: nominatico cliente, prezzo prodotto, ecc... Tupla: insieme degli scalari che compongono una riga di una tabella. Attributo: una colonna di una tabella, in cui tutti gli scalari godono della propriet di essere dello stesso tipo. Cardinalit: il numero di tuple in una tabella, mentre il grado il numero di attributi di una tabella. Dominio: l'insieme di scalari dai quali uno o pi attributi prendono i loro dati. Scalari dello stesso tipo formano un dominio.

Prof.ssa G. Russo

Tabelle

Elenco delle definizioni utilizzate nella descrizione formale delle tabelle.


Tabella: un insieme di domini costituito da un intestazione e da un insieme di righe. Chiave primaria: identificatore univoco per la tupla di una tabella (primary Key) Chiave esterna: un attributo di una tabella che in relazione con una chiave primaria di un'altra tabella (Foreign Key).

Prof.ssa G. Russo

Tabelle

Elenco delle definizioni utilizzate nella descrizione formale delle tabelle.


Tabella: un insieme di domini costituito da un intestazione e da un insieme di righe. Chiave primaria: identificatore univoco per la tupla di una tabella (primary Key) Chiave esterna: un attributo di una tabella che in relazione con una chiave primaria di un'altra tabella (Foreign Key).

Prof.ssa G. Russo

Tabelle

Le colonne contengono il nome della colonna, il tipo di dato, ed ogni altro attributo della colonna stessa. Le righe contengono i record o i dati della colonna.

Prof.ssa G. Russo

Query Language: Select statement

L'istruzione o statement select viene usata per realizzare delle query (interrogazioni) sulla base di dati. L'istruzione select pu ricercare dei dati in base a criteri specifici.

Prof.ssa G. Russo

Query Language: Select statement

Formato tipo di select semplice: select nome_colonnax [,"nome_colonnay",etc] from "nome_tabella" [where "condizione"];

N.B.: le parentesi quadre indicano le opzioni, se si vogliono tutte le colonne baster indicare solo *, il ; termina l'istruzione.

Prof.ssa G. Russo

Query Language: Select statement

SELECT [ALL | DISTINCT] column1[,column2] FROM table1[,table2] [WHERE "conditions"] [GROUP BY "column-list"] [HAVING "conditions] [ORDER BY "column-list" [ASC | DESC] ]

N.B.: le parentesi quadre indicano le opzioni, se si vogliono tutte le colonne baster indicare solo *, il ; termina l'istruzione.

Prof.ssa G. Russo

Query Language: Select statement

Operatori condizionali utilizzati nella clausola where: = Equal > Greater than < Less than >= Greater than or equal <= Less than or equal <> Not equal to LIKE

Prof.ssa G. Russo

Query Language: Select statement

LIKE Si tratta di un operatore logico utilizzabile nella condizione WHERE, particolarmente utile per effettuare le ricerche su dati parziali. Nel caso dell'operatore LIKE chiediamo al sistema SQL di ricercare tutti quei record in cui un determinato campo simile alla parola ricercata

Prof.ssa G. Russo

Query Language: Select statement

Esempio LIKE SELECT * FROM alunni WHERE nome LIKE '%anna%' ;

(le stringhe sono racchiuse da apici singoli)

Il risultato dell'interrogazione sar una lista di alunni con nome simile e comprensivo della parola 'anna'. Ad esempio: Annalaura, Anna, Marianna...

Prof.ssa G. Russo

Data Definition Language: Create table statement

Lo statement CREATE TABLE serve a creare una tabella. Il formato pi semplice il seguente:
CREATE TABLE tablename (nome_columnx DATA TYPE, nome_columny DATA TYPE, nome_columnz DATA TYPE);

Sintassi in MySql: http://dev.mysql.com/doc/refman/5.0/en/createtable.html

Prof.ssa G. Russo

Data Definition Language: Create table statement

Esempio semplice:

CREATE TABLE impiegati (nome varchar(15), cognome varchar(20), anni number(3), indirizzo varchar(30), citta varchar(20), regione varchar(20));

Prof.ssa G. Russo

Data Definition Language: Create table statement

Data types pi comuni:

Prof.ssa G. Russo

Data Definition Language: Create table statement

I nomi delle tabelle e delle colonne devono iniziare con una lettera. Dopo il primo carattere possono seguire numeri o underscore. Massimo 30 caratteri. Non devono essere usate parole chiave del lingiaggio, ad esempio "select", "create", "insert", etc.

Prof.ssa G. Russo

Data Definition Language: Create table statement

Chiave primaria e chiave esterna


CREATE TABLE parent ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB;

Nota: InnoDb consente l'uso della Foreign Key e delle transazioni

Prof.ssa G. Russo

Data Definition Language: Create table statement

Chiave primaria e chiave esterna


CREATE TABLE child ( id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE ) ENGINE=INNODB;

Nota: InnoDb consente l'uso della Foreign Key e delle transazioni

Prof.ssa G. Russo

Data Definition Language: Create statement

Chiave primaria e chiave esterna


CREATE TABLE libro ( id INT auto_increment, titolo VARCHAR (20), editore INT NOT NULL, PRIMARY KEY id (id), KEY editore (editore) ) ENGINE=InnoDB;

Nota: InnoDb consente l'uso della Foreign Key e delle transazioni KEY editore indice su campo editore

Prof.ssa G. Russo

Data Definition Language: Create statement

Chiave primaria e chiave esterna


CREATE TABLE editore ( id INT auto_increment, nome VARCHAR (20), PRIMARY KEY id (id), FOREIGN KEY libri (id) REFERENCES libro (editore) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE=InnoDB;

Prof.ssa G. Russo

Esercizio

Creare la seguente tabella utilizzando istruzioni sql:

Prof.ssa G. Russo

Esercizio

Selezionare dalla tabella precedente,utilizzando istruzioni sql, tutti gli studenti (nome, cognome e matricola) nati nell'anno 2005. Selezionare dalla tabella precedente, utilizzando istruzioni sql, tutti gli studenti di nome Giovanni.

Prof.ssa G. Russo

Esercizio

Select statement exercises Enter select statements to: Display the first name and age for everyone that's in the table. Display the first name, last name, and address for everyone that's not from Payson. Display all columns for everyone that is over 40 years old. Display the first and last names for everyone whose last name ends in an "ay". Display all columns for everyone whose first name equals "Mary". Display all columns for everyone whose first name contains "Mary".

Prof.ssa G. Russo

Data Definition Language: Alter table statement

La struttura di una tabella pu essere modificata mediante l'istruzione Alter table.


ALTER TABLE nome_tabella {ADD | CHANGE | DROP} [column] vecchio_nome_campo nuovo_nome_campo [[FIRST | AFTER] nome_campo] tipo [INDEX [nome indice] ({nome campo} [,...])] [PRIMARY KEY [nome indice] ({nome campo} [,...])] [UNIQUE ({nome campo} [,...])] FOREIGN KEY [nome indice] ({nome campo} [,...])] [REFERENCES] Prof.ssa G. Russo

Dot notation, abbreviazioni, alias Partiamo dalla seguente select SELECT articoli.descrizione, Percentuali.percentuale From articoli, percentuali Where articoli.codice=Percentuali.codice; Equivale anche a Select A.descrizione, P.percentuale From articoli A, percentuali P Where A.codice=B.codice; Con gli alias Select A.descrizione AS Descrizione Articolo, P.percentuale as Percentuale di incremento prezzo From articoli A, percentuali P Where A.codice=B.codice;

Prof.ssa G. Russo

Alter table statement: esempio Aggiunta di un campo alla tabella Mansioni ALTER TABLE Mansioni ADD COLUMN data_mansione DATE; Eliminazione di un campo ALTER TABLE Mansioni DROP COLUMN data_mansione;

Prof.ssa G. Russo

INSERT INTO statement Il costrutto INSERT consente di inserire nuove righe nella tabella specificata. Il nuovo record viene aggiunto in coda, sempre che non violi eventuali vincoli (ad esempio l'integrit referenziale). Sintassi INSERT INTO nome tabella [(nome campo[,...])] {VALUES (espressione[,...]) | SELECT...} Esempio INSERT INTO piloti (codice,cognome) VALUES (1,'Schumaker');

Prof.ssa G. Russo

DELETE FROM statement L'eliminazione di tuple da una tabella si ottiene mediante il costrutto DELETE (in rispetto dei vincoli d'integrit se presenti). Sintassi DELETE FROM nome tabella [WHERE condizione] [LIMIT massimo numero di righe ammesse] Esempio DELETE FROM piloti; (cancella tutte le tuple presenti in piloti) DELETE FROM atleti WHERE nome_atleta='Gustav';

Prof.ssa G. Russo

UPDATE statement Il costrutto UPDATE consente l'aggiornamento delle righe di una tabella, eventualmente in base a d una condizione. Sintassi UPDATE nome tabella SET nome campo= {espressione | NULL | DEFAULT | SELECT...} [WHERE condizione] Esempio UPDATE piloti SET gare_vinte=101 WHERE cognome='Schumacher' and nome='Michael';

Prof.ssa G. Russo

Le relazioni Creiamo due tabelle che sono in relazione 1 a N tramite la chiave primaria ID_Paziente della tabella pazienti, con id_paziente della tabella Visite. CREATE TABLE Pazienti (ID_paziente int not null, nome CHAR(20), Cognome CHAR(20), DataNascita DATE, Provincia char (2), Cod ASL char(8), Primary Key(Id_paziente), UNIQUE(Id_paziente), INDEX(Id-paziente)) TYPE=Innodb;

Prof.ssa G. Russo

Le relazioni

CREATE TABLE Visite (ID_paziente int, (id_paziente INT NULL, DataVisita DATE, Peso INT, Altezza INT, PressioneMin SMALLINT, PressioneMax SMALLINT, Primary Key(Id_visita), UNIQUE(Id_visita), INDEX(Id_visita), INDEX (id_paziente), FOREIGN KEY(id_paziente) REFERENCES Pazienti(Id_paziente) ON DELETE CASCADE) Type=Innodb;

Prof.ssa G. Russo

Le relazioni: Select

SELECT V.dataVisita, P.cognome, P.nome From pazienti P, visite V Where P.ID_paziente=V.id_paziente and (V.pressioneMAXV.pressionemin)>40;

Prof.ssa G. Russo

Potrebbero piacerti anche