Реферат Курсовая Конспект
Operatori Relazionali - раздел Программирование, Appunti sui DataBase Relazionali e sul linguaggio SQL Ci Sono Sei Operatori Relazionali In Sql, E Dopo Averli Specificati Vedremo C...
|
Ci sono sei operatori relazionali in SQL, e dopo averli specificati vedremo come si usano. gli operatori sono:
= | Uguale |
<> oppure != (vedere manuali) | Non Uguale |
< | Minore di |
> | Maggiore di |
<= | Minore o uguale di |
>= | Maggiore o uguale di |
La clausola WHERE viene utilizzata per specificare che si desidera vedere solo certe righe della tabella, basandosi per la scelta sul criterio stabilito nella clausola stessa. Penso che un paio di esempi possano rendere più chiaro il funzionamento della stessa.
Se si vuole vedere il Codice Impiegato di quegli impiegati che hanno uno stipendio annuo maggiore di 50 milioni possiamo farlo così:
SELECT CodiceImpiegato
FROM TabellaStatisticeImpiegati
WHERE StipendioAnnuo >= 50000000;
Notate che abbiamo utilizzato il simbolo >= (Maggiore o uguale di), in quanto vogliamo vedere sia coloro che hanno uno stipendio di 50 milioni che quelli che hanno uno stipendio maggiore di 50 milioni. il risultato sarà il seguente:
CodiceImpiegato
------------
010
105
152
215
244
la parte del comando WHERE che contiene la regola discriminante, in questo caso StipendioAnnuo >= 50000000, e' conosciuta come una condizione (un' operazione il cui risultato può essere Vero o Falso). La stessa cosa può essere fatta anche con colonne che contengono testo invece che numeri:
SELECT CodiceImpiegato
FROM TabellaStatisticheImpiegati
WHERE POSIZIONE = 'Dirigente';
Questo comando mostrerà come risultato il codice impiegato di tutti i dirigenti. Generalmente quando si utilizzano colonne di testo ci si limita agli operatori = e != , e bisogna assicurarsi che tutti i testi utilizzati compaiano nel comando racchiusi tra singoli apici ('). N.B. il singolo apice e' l' identificatore di testo nell' SQL ANSI, ma alcuni DBMS usano altri qualificatori come i doppi apici.
Condizioni più complesse: Condizioni multiple e Operatori Logici
L' operatore AND congiunge due o più condizioni, e ritorna tutte e solo le righe che soddisfano TUTTE le condizioni. Per esempio, per mostrare i codici di tutti gli impiegati con uno stipendio superiore ai 40 milioni si utilizza il comando seguente:
SELECT CodiceImpiegato
FROM TabellaStatisticheImpiegati
WHERE StipendioAnnuo > 40000000 AND Posizione = 'Impiegato';
L' operatore OR collega anch'esso due o più condizioni, ma ritorna una riga se UNA QUALSIASI delle condizioni inserite risulta vera. ad esempio per vedere tutti coloro che hanno uno stipendio annuo inferiore a 40 milioni o ricevono meno di 10 milioni in benefici accessori si utilizza la seguente query:
SELECT CodiceImpiegato
FROM TabellaStatisticheImpiegati
WHERE StipendioAnnuo < 40000000 OR Benefici < 10000000;
AND ed OR possono venire combinati, come nell' esempio seguente:
SELECT CodiceImpiegato
FROM TabellaStatisticheImpiegati
WHERE Posizione = 'Dirigente' AND StipendioAnnuo > 60000000 OR Benefici > 12000000;
Per prima cosa, SQL trova le righe in cui lo stipendio annuo e' maggiore di 60 milioni e che contengono nella colonna Posizione la parola 'Dirigente', quindi si tiene in memoria questa lista e controlla che soddisfino la condizione OR relativa ad avere benefici per più di 12 milioni. Notate che la condizione AND viene risolta per prima, cosa che modifica nettamente i risultati. spendiamo un paio di parole in più su questo fatto, in quanto se non ben compreso può portare a differenze sostanziali nei risultati delle query ed alla difficile comprensione del perché ciò è avvenuto.
Per generalizzare quello che avviene, SQL calcola i risultati delle operazioni AND per determinare quali sono le righe che soddisfano la condizione (ricordate: TUTTE le condizioni devono essere vere), quindi questi risultati vengono utilizzati per essere confrontati con la condizione OR, e vengono mostrate solo le righe rimanenti dove una qualsiasi delle operazioni collegate dall' operatore OR risulta vera (True). Matematicamente , SQL valuta tutte le condizioni realizzate tramite operatori relazionali, quindi valuta le "coppie" di AND e quindi gli OR (dove entrambi gli operatori sono valutati da sinistra a destra).
Per fare un esempio, guardiamo cosa succede quando il nostro DBMS valuta una determinata condizione, ricordando che i valori booleani "vero" e "falso" in SQL vengono espressi come True e False . il primo passo che il DBMS fa e' di valutare i risultati delle operazioni svolte tramite gli operatori relazionali, quindi si prepara a valutare gli operatori logici sui risultati. mettiamo che dalla valutazione di una condizione complessa al nostro DBMS sia risultato quanto segue:
True AND False OR True AND True OR False AND False
La prima cosa che fa sarà valutare le coppie di AND, ottenendo quanto segue:
True AND False OR True AND True OR False AND False = False OR True OR False
1° coppia 2° Coppia 3°Coppia
Quindi parte a valutare gli OR, da sinistra a destra, ottenendo al primo passaggio quanto segue:
False OR True OR False = True OR False
1° coppia
ed alla fine, valutando l' ultima espressione , arriva al risultato definitivo
True OR False = True
Il risultato finale e' True (vero) e quindi la riga che ha generato questa sequenza di valori verrà inserita all' interno di quelle passate dalla query. Assicuratevi di leggere attentamente anche la prossima sezione sull' operatore NOT e di avere ben compreso l' ordine di valutazione degli operatori, in quanto e' un argomento difficile da spiegare in poche righe, pertanto posso solo sperare di essere stato sufficientemente chiaro.
Per variare l' ordine di esecuzione , ad esempio se volete una lista di dipendenti che percepiscono uno stipendio maggiore di 50 milioni o con benefici maggiori di 10 milioni e che siano dei dirigenti, si usano le parentesi, come in questo esempio:
SELECT CodiceImpiegato
FROM TabellaStatisticheImpiegati
WHERE Posizione = 'Dirigente' AND (StipendioAnnuo > 50000000 OR Benefici > 10000000);
IN , BETWEEN e NOT
Un metodo semplice per usare delle condizioni multiple e' quello di impiegare le due clausole IN e BETWEEN. Per esempio, se volete vedere tutti i dipendenti che siano dirigenti o impiegati potete fare così:
SELECT CodiceImpiegato
FROM TabellaStatisticheImpiegati
WHERE Posizione IN ('Dirigente', 'Impiegato');
Oppure per avere la lista di coloro che hanno uno stipendio maggiore o uguale di 30 milioni e minore o uguale a 50 milioni potete impiegare il seguente comando
SELECT CodiceImpiegato
FROM TabellaStatisticheImpiegati
WHERE StipendioAnnuo BETWEEN 30000000 AND 50000000;
Invece, per mostrare tutti quelli che non sono compresi nell' intervallo, potete usare:
SELECT CodiceImpiegato
FROM TabellaStatisticheImpiegati
WHERE StipendioAnnuo NOT BETWEEN 30000000 AND 50000000;
Similarmente, la clausola NOT IN restituisce tutte le righe escluse dalla lista generata dalla relativa IN, quindi se voleste vedere tutti coloro che non sono ne' dirigenti ne' impiegati potete farlo con il comando
SELECT CodiceImpiegato
FROM TabellaStatisticheImpiegati
WHERE Posizione NOT IN ('Dirigente', 'Impiegato');
Inoltre, l' operatore NOT può venire utilizzato in congiunzione con AND ed OR per invertirne il risultato, ma va tenuto conto che mentre i due operatori AND ed OR sono binari (usano 2 condizioni) il NOT e' unario, cioè si riferisce ad una sola condizione; inoltre il NOT viene calcolato PRIMA dell' AND e dell' OR .
Ordine in SQL degli operatori logici (tutti funzionano da sinistra a destra)
1. NOT
2. AND
3. OR
Utilizzare la clausola LIKE ed il carattere jolly %
Mettiamo di voler estrarre dalla nostra tabella TabellaImpiegati i codici fiscali di tutti gli impiegati il cui nome inizia per "S"; possiamo procedere così:
SELECT CFisc
FROM TabellaImpiegati
WHERE NOME LIKE 'A%';
Il carattere percento (%) viene utilizzato pre rappresentare ogni possibile carattere (numeri, lettere o segni di interpunzione) o blocchi di caratteri che possono venire trovati dopo il carattere "A". similmente, se volessimo trovare coloro il cui nome termina in "A" potremmo farlo con "%A", o se volessimo trovare quelli il cui nome contiene una A potremmo farlo con "%A%". Visto che il funzionamento dell' operatore Like varia tantissimo da DBMS a DBMS consiglio di verificare la sintassi esatta nel vostro sistema prima di impiegarlo e per vedere quali altre possibilità vi può offrire
– Конец работы –
Эта тема принадлежит разделу:
Indice... Introduzione sui database Cos e un database Piccola storia dei database assolutamente incompleta...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Operatori Relazionali
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов