Corso base SQL Emanuele Tertulliani DBMS Un DBMS
Corso base SQL Emanuele Tertulliani
DBMS Un DBMS (Data base management system) è, letteralmente, un sistema di gestione di basi di dati, che per attuare questa gestione utilizza il software. Queste «basi di dati» sono dei contenitori atti a immagazzinare una grande quantità di dati, per i quali il «sistema di gestione» è necessario a permetterne la fruizione. Un DBMS è fatto per gestire grandi quantità di dati. Questi: 1. devono poter essere condivisibili 2. essere persistenti e affidabili 3. L’accesso deve essere controllabile. L’organizzazione di una base di dati è compito del suo amministratore, definito DBA. Il concetto di DBA non è molto preciso, perché include assieme ruoli che possono essere differenti. Si va dall’amministratore dell’intero DBMS, fino a coloro che hanno la responsabilità di una base di dati singola. Corso Base SQL - Emanuele Tertulliani 2
Modello relazionale Una base di dati può essere impostata secondo diversi tipi di modelli (logici) di rappresentazione. Quello più comune è il modello relazionale. In tal senso, un DBMS relazionale viene anche definito semplicemente come RDBMS. Nel modello relazionale, i dati sono raccolti all’interno di relazioni. Ogni relazione è una raccolta di nessuna o più tuple di tipo omogeneo. La tupla rappresenta una singola informazione completa, in rapporto alla relazione a cui appartiene, suddivisa in attributi. Una relazione non ha una «forma» particolare, tuttavia questo concetto si presta a una rappresentazione tabellare: gli attributi sono rappresentati dalle colonne e le tuple dalle righe. A differenza delle tuple, gli attributi devono essere identificati attraverso un nome. Generalmente, una relazione da sola non è sufficiente a rappresentare tutti i dati riferiti a un problema o a un interesse della vita reale. Quando una relazione contiene tante volte le stesse informazioni, è opportuno scinderla in due o più relazioni più piccole, collegate in qualche modo attraverso dei riferimenti. Corso Base SQL - Emanuele Tertulliani 3
Nelle relazioni, ogni attributo contiene una singola informazione elementare di un certo tipo, per il quale esiste un dominio determinato di valori possibili. Ogni attributo di ogni tupla deve contenere un valore ammissibile, nell’ambito del proprio dominio. Spesso capitano situazioni in cui i valori di uno o più attributi di una tupla non sono disponibili per qualche motivo. In tal caso si pone il problema di assegnare a questi attributi un valore che definisca in modo non ambiguo questo stato di indeterminatezza. Questo valore viene definito come ‘NULL’ ed è ammissibile per tutti i tipi di attributi possibili. Corso Base SQL - Emanuele Tertulliani 4
Il caso più importante di un vincolo interno alla relazione, che coinvolge più tuple, è quello che riguarda le chiavi. In certe situazioni, un attributo, o un gruppo particolare di attributi di una relazione, deve essere unico per ogni tupla. Quindi, questo attributo, o questo gruppo di attributi, è valido solo quando non è già presente in un’altra tupla della stessa relazione. In questo senso non è ammissibile una relazione contenente due tuple identiche. Una chiave di una relazione è un gruppo di attributi che permette di identificare univocamente le tuple in essa contenute; per questo, tali attributi devono contenere dati differenti per ogni tupla. Stabilendo quali attributi devono costituire una chiave per una certa relazione, si comprende intuitivamente che questi attributi non possono mai contenere un valore indeterminato. Corso Base SQL - Emanuele Tertulliani 5
Quando si maneggiano relazioni contenenti gli stessi attributi, hanno senso le operazioni fondamentali sugli insiemi: unione, intersezione e differenza. Il significato è evidente 1. l’unione genera una relazione composta da tutte le tuple distinte delle relazioni di origine; 2. l’intersezione genera una relazione composta dalle tuple presenti simultaneamente in tutte le relazioni di origine 3. la differenza genera una relazione contenente le tuple che compaiono esclusivamente nella prima delle relazioni di origine Corso Base SQL - Emanuele Tertulliani 6
La selezione e la proiezione sono operazioni che si eseguono su una sola relazione e generano una relazione che contiene una porzione dei dati di quella di origine. La selezione permette di estrarre alcune tuple dalla relazione, mentre la proiezione estrae parte degli attributi di tutte le tuple. Il primo caso, quello della selezione, non richiede considerazioni particolari, mentre la proiezione ha delle implicazioni importanti. Attraverso la proiezione, utilizzando solo parte degli attributi, si genera una relazione in cui si potrebbero perdere delle tuple, a causa della possibilità che risultino dei doppioni. La congiunzione di relazioni, o join, è un’operazione in cui due o più relazioni vengono unite a formare una nuova relazione. Questo congiungimento implica la creazione di tuple formate dall’unione di tuple provenienti dalle relazioni di origine. La congiunzione naturale si ottiene quando le relazioni oggetto di tale operazione vengono collegate in base ad attributi aventi lo stesso nome. Queste tuple, quelle che non hanno una corrispondenza, sono dette «penzolanti» , o dangling, e di fatto vengono perdute dopo la congiunzione. Corso Base SQL - Emanuele Tertulliani 7
Sql SQL è l’acronimo di Structured query language e identifica un linguaggio di interrogazione (gestione) per basi di dati relazionali. SQL è un linguaggio completo per la gestione di una base di dati relazionale, includendo le funzionalità di un DDL (Data definition language), di un DML (Data manipulation language) e di un DCL (Data control language). Lo scopo di SQL è fornire un'interfaccia per un database relazionale come Oracle Database, e tutte le istruzioni SQL sono le istruzioni al database. Tutte le istruzioni SQL utilizzano l'ottimizzatore, una parte di Oracle Database che determina il mezzo più efficace di accesso a specifici dati. Oracle fornisce anche tecniche è possibile utilizzare per far si che l'ottimizzatore possa svolgere il suo lavoro in modo migliore. Corso Base SQL - Emanuele Tertulliani 8
SQL fornisce istruzioni per una varietà di compiti, tra cui: ■ Interrogazione dati ■ Inserimento, aggiornamento ed eliminazione delle righe di una tabella ■ Creazione, Sostituzione, Modifica, cancellazione degli oggetti ■ Controllo dell'accesso al database ed ai suoi oggetti ■ Garantire la consistenza e l'integrità del database SQL unifica tutte le attività precedenti in una lingua coerente. SQL non distingue tra lettere minuscole e maiuscole nelle parole chiave delle istruzioni e nemmeno nei nomi di relazioni, attributi e altri oggetti. Solo quando si tratta di definire il contenuto di una variabile, allora le differenze contano. I nomi degli oggetti possono essere composti utilizzando lettere, numeri e il trattino basso; il primo carattere deve essere una lettera oppure il trattino basso. Le istruzioni SQL possono essere distribuite su più righe, senza una regola precisa e di norma finiscono con un punto e virgola. L’SQL standard prevede la possibilità di inserire commenti; si può usare un trattino doppio (‘--’) seguito dal commento desiderato, fino alla fine della riga oppure inserire un commento su più righe utilizzando /**/. Corso Base SQL - Emanuele Tertulliani 9
Elementi base di Oracle SQL 1. Data Types 2. Literals 3. Nulls 4. Comments 5. Database Objects Corso Base SQL - Emanuele Tertulliani 10
Data Types Ogni valore gestito da Oracle Database ha un tipo di dati. Il tipo di dati di un valore associa un insieme determinato di proprietà con il valore stesso. Queste proprietà fanno si che Oracle tratti i valori diversamente a seconda del tipo di dati. Oracle fornisce un certo numero di tipi di dati built-in così come diverse categorie per i tipi definiti dall'utente che possono essere utilizzati come tipi di dati. Un tipo di dati è scalare o non-scalare. Un tipo scalare contiene un valore atomico, mentre un non-scalare (talvolta chiamato "collection") contiene un insieme di valori. Un oggetto di grandi dimensioni (LOB) è una forma speciale del tipo di dati scalari che rappresenta un grande valore di dati binari o di caratteri. LOB sono soggetti ad alcune restrizioni che non hanno altri tipi scalari a causa delle loro dimensioni. Corso Base SQL - Emanuele Tertulliani 11
Basic Oracle Built-in Data Types VARCHAR 2(size [BYTE | CHAR]) CHAR [(size [BYTE | CHAR])] NUMBER [ (p [, s]) ] DATE stringa di caratteri di lunghezza variabile con dimensione massima in byte o caratteri. È obbligatorio specificare la dimensione. Dimensione minima è 1 byte / carattere. La dimensione massima è: ■ 32767 byte o caratteri se MAX_STRING_SIZE = EXTENDED ■ 4000 byte o caratteri se MAX_STRING_SIZE = STANDARD Stringa di caratteri a lunghezza fissa di caratteri / byte. La dimensione massima è di 2000 byte o caratteri e di default la dimensione minima è 1 byte. BYTE e CHAR hanno la stessa semantica come per VARCHAR 2. Numerico con precisione p e la scala s. La precisione p può variare da 1 a 38. La scala s può variare da -84 a 127. Sia la precisione che la scala sono in cifre decimali. Un valore numerico richiede da 1 a 22 byte. Intervallo di date valido è dal 1 ° gennaio 4712 AC al 31 dicembre 9999 DC. Il formato predefinito è determinato in modo esplicito dal parametro NLS_DATE_FORMAT o implicitamente dal parametro NLS_TERRITORY. La dimensione è fissata a 7 byte. Questo tipo di dati contiene i campi datetime anno, mese, giorno, ora, minuto e secondo. Non ha frazioni di secondo o un fuso orario. Corso Base SQL - Emanuele Tertulliani 12
Other Oracle Built-in Data Types FLOAT [(p)] LONG CLOB BFILE Un sottotipo dei dati Number con precisione p. Un valore float è rappresentato internamente come Number. La precisione p può variare da 1 a 126 cifre binarie. Un valore float richiede da 1 a 22 byte. i tipi di dati caratteri di lunghezza variabile fino a 2 gigabyte o 231 -1 byte. Previsto per la compatibilità all'indietro. Un oggetto di grandi dimensioni di caratteri contenente un singolo byte o multibyte. È supportato sia a larghezza fissa che a variabile, utilizzando il set di caratteri del database. La dimensione massima è (4 gigabyte - 1) * (database dimensione del blocco). U oggetto binario di grandi dimensioni. La dimensione massima è (4 gigabyte - 1) * (database dimensione del blocco). Contiene un localizzatore di un file di grandi dimensioni binario memorizzato all'esterno del database. Abilita l’accesso di un flusso di byte I / O al LOB esterni che risiedono sul DB server. La dimensione massima è di 4 gigabyte. Altri fare riferimento a SQL Language Reference Corso Base SQL - Emanuele Tertulliani 13
User-Defined Types I tipi di dati definiti dall'utente utilizzano tipi di dati Oracle built-in e altri tipi di dati definiti dall'utente come gli elementi costitutivi di tipi di oggetti che modellano la struttura e il comportamento dei dati nelle applicazioni. 1. 2. 3. 4. Object Types REF Data Types Varrays Nested Tables Corso Base SQL - Emanuele Tertulliani 14
Object Types Object types sono astrazioni delle entità del mondo reale. Un object type è un schema object con tre tipi di componenti: • Name, identifica lo object type univocamente all’interno dello schema. • Attributes, sono tipi built-in o altri user-defined types. Sono i modelli di struttura con le entità del mondo reale. • Methods, sono le funzioni/procedure scritte in PL/SQL e memorizzate nel Database o scritte in un linguaggio come C o Java e memorizzate esternamente. I metodi implementano le operazioni che l'applicazione può eseguire sulle entità del mondo reale. Corso Base SQL - Emanuele Tertulliani 15
REF Data Types Un object identifier (rappresentato dalla parola chiave OID) identifica in modo univoco un oggetto e vi permette di fare riferimento all'oggetto da altri oggetti o dalle tabelle relazionali. Una categoria di tipo di dati denominato REF rappresenta tali riferimenti. Un tipo di dati REF è un contenitore per un identificatore di oggetto. I valori REF sono puntatori a oggetti. Quando un valore REF punti a un oggetto inesistente, il REF è detto "dangling“ (penzolante). Un dangling REF è diverso da un Null REF. Per determinare se un REF è dangling o no, si può utilizzare la condizione IS [NOT] DANGLING. Corso Base SQL - Emanuele Tertulliani 16
Varrays Un array è un insieme ordinato di elementi di dati. Tutti gli elementi di un dato array sono dello stesso tipo di dati. Ciascun elemento ha un indice, che è un numero corrispondente alla posizione dell'elemento nell'array. Il numero di elementi di un array è la dimensione della array stesso. Gli array Oracle sono di dimensioni variabili, che è il motivo per cui essi sono chiamati varray. È necessario specificare una dimensione massima quando si dichiara il varray. Quando si dichiara un varray esso NON alloca spazio. Esso definisce un tipo che si può usare come: • Il data type di una colonna di una tabella relazionale • Un attributo di un object type • Una variabile, parametro o ritorno di funzione in PL/SQL Oracle normalmente memorizza un oggetto array sia in linea (come parte dei dati di riga) o fuori linea (in un LOB), a seconda delle sue dimensioni. Tuttavia, se si specificano le caratteristiche di storage separate per un varray, quindi memorizza Oracle è fuori linea indipendentemente dalle sue dimensioni. Corso Base SQL - Emanuele Tertulliani 17
Nested Tables Un modello nested table type è un insieme non ordinato di elementi. Gli elementi possono essere tipi built-in o tipi definiti dall'utente. È possibile visualizzare una nested table come un single-column table oppure, se la tabella nidificata è object type, come un multicolumn table, con una colonna per ogni attributo del tipo di oggetto. Una definizione di nested table NON alloca spazio. Essa definisce un tipo che si può utilizzare per dichiarare • Il data type di una colonna di una tabella relazionale • Un attributo di un object type • Una variabile, parametro o ritorno di funzione in PL/SQL Quando una nested table appare come il tipo di una colonna in una tabella relazionale o come un attributo del tipo di oggetto sottostante di una tabella di oggetti, Oracle memorizza tutti i dati della tabella annidati in una singola tabella, che è associate con la relazione che la racchiude o object table. Corso Base SQL - Emanuele Tertulliani 18
Other Types • Any Types, fornisce modellazione altamente flessibile dei parametri della procedura e le colonne della tabella in cui il tipo effettivo non è noto. Questi tipi di dati consentono di incapsulare in modo dinamico e di accedere alle descrizioni del tipo, istanze di dati e set di istanze di dati di qualsiasi altro tipo SQL. Questi tipi hanno interfacce PL/SQL e OCI per la costruzione e l'accesso • XML Types, Extensible Markup Language (XML) è un format standard sviluppato dal World Wide Web Consortium (W 3 C) per rappresentare dati strutturati e non del World Wide Web. • Spatial Types, Oracle Spatial and Graph è stato progettato per rendere la gestione dei dati spaziali più semplice e più naturale per gli utenti di applicazioni location-enabled, applicazioni geografico sistema di informazione (GIS), e applicazioni Geo. Imaging. • Media Types, Oracle Multimedia utilizza tipi di oggetti, simili a classi Java o C ++, per descrivere i dati multimediali. Un esempio di questi tipi di oggetti è costituita da attributi, inclusi i metadati ei dati multimediali, e metodi. I tipi di dati multimediali sono creati nello schema ORDSYS. esistono i sinonimi pubblici per tutti i tipi di dati, in modo da potervi accedere senza specificare il nome dello schema. Corso Base SQL - Emanuele Tertulliani 19
Literals I termini Literal e constant value sono sinonimi e si riferiscono ad un valore fisso di dati. Per esempio: • 'Pippo', 'Zio Paperone', e '443673' sono tutti “character literals” • 5001 è un “numeric literal” Character literals sono racchiusi tra apici singoli in modo che Oracle possa distinguerli dai nomi degli oggetti dello schema. Corso Base SQL - Emanuele Tertulliani 20
Nulls Se una colonna in una riga non ha alcun valore, allora la colonna si dice che è NULL o contiene NULL. Null possono apparire in colonne di qualsiasi tipo di dati che non sono limitati da NOT NULL o PRIMARY KEY integrity constraints. Si dovrebbe utilizzare un NULL quando il valore attuale non è noto o quando un valore non è significativo. Oracle Database considera la lunghezza a zero di una variabile carattere come Null. Tuttavia, non si deve utilizzare Null per rappresentare un valore numerico pari a zero, perché non sono assolutamente equivalenti. Corso Base SQL - Emanuele Tertulliani 21
Gestione dei valori nulli Gli attributi di una relazione possano contenere anche il valore indeterminato, o NULL. Con questo valore indeterminato non si possono fare comparazioni con valori determinati e di solito nemmeno con altri valori indeterminati. Per esempio, non si può dire che NULL sia maggiore o minore di qualcosa; una comparazione di questo tipo genera solo un risultato indeterminato. NULL è solo uguale a se stesso ed è diverso da ogni altro valore, compreso un altro valore NULL. Per verificare la presenza o l’assenza di un valore indeterminato si utilizzano generalmente operatori specifici: • IS NULL, che si avvera quando il valore controllato è indeterminato; • IS NOT NULL, che si avvera quando il valore controllato è determinato, quindi diverso da indeterminato. Nel momento in cui si eseguono delle espressioni logiche, utilizzando i soliti operatori AND, OR e NOT, si pone il problema di stabilire cosa accade quando si presentano valori indeterminati. La soluzione è intuitiva: quando non si può fare a meno di conoscere il valore che si presenta come indeterminato, il risultato è indeterminato. Questo concetto deriva dalla cosiddetta logica fuzzy. Corso Base SQL - Emanuele Tertulliani 22
Comments È possibile creare due tipi di commenti: 1. Commenti all'interno di istruzioni SQL vengono memorizzati come parte del codice dell'applicazione che esegue le istruzioni SQL 2. commenti associati con i singoli schema o nonschema objects vengono memorizzati nel Data Dictionary insieme ai metadati sugli oggetti stessi Hints sono commenti in un'istruzione SQL che passano istruzioni per l'ottimizzatore di Oracle Database. L'ottimizzatore utilizza questi suggerimenti per scegliere un execution plan per l'istruzione a meno che non esista una condizione che impedisce all'ottimizzatore di farlo. Using Hints Un blocco di istruzioni può avere solo un commento che contiene hints e il commento deve seguire una tra le parole chiave SELECT, UPDATE, INSERT, MERGE o DELETE. Corso Base SQL - Emanuele Tertulliani 23
Database Objects Oracle Database riconosce gli oggetti che sono associati a un particolare schema e oggetti che non sono associati con un particolare schema, come descritto nelle sezioni che seguono. 1. Schema Objects 2. Nonschema Objects Corso Base SQL - Emanuele Tertulliani 24
Schema Objects Uno schema è un insieme di strutture logiche di dati o degli oggetti dello schema stesso. Uno schema è di proprietà di un utente del database e ha lo stesso nome di quell'utente. Ogni utente possiede un unico schema. Schema objects possono essere creati e manipolati con SQL. Alcuni esempi di tipi di schema objects: Constraints Database links Database triggers Index-organized tables Indexes Materialized views Object tables Object types Object views Operators Packages Sequences Corso Base SQL - Emanuele Tertulliani 25
Nonschema Objects Altri tipi di oggetti che vengono memorizzati nel database e possono essere creati e manipolati con SQL, ma non sono contenuti in uno schema. Alcuni esempi di tipi di Nonschema objects: Roles Rollback segments Tablespaces Users Corso Base SQL - Emanuele Tertulliani 26
Altri oggetti 1. 2. 3. 4. 5. Pseudocolumns Operators Expressions Conditions Functions Corso Base SQL - Emanuele Tertulliani 27
Pseudocolumns Un pseudocolonna si comporta come una colonna della tabella ma non è effettivamente memorizzata nella tabella. È possibile selezionare da pseudocolonne ma non è possibile inserire, aggiornare o eliminare il loro contenuto. Un pseudocolonna è anche simile a una funzione senza argomenti. Tuttavia, le funzioni senza argomenti tipicamente restituisce lo stesso valore per ogni riga del set di risultati, mentre le pseudo-colonne tipicamente restituiscono un valore differente per ogni riga. Esistono differenti tipologie di pseudo-colonne: • Hierarchical Query • Sequence (CURRVAL, NEXTVAL) • Version Query • COLUMN_VALUE • OBJECT_ID • OBJECT_VALUE • ORA_ROWSCN • ROWID • ROWNUM • XMLDATA Corso Base SQL - Emanuele Tertulliani 28
Operatori Un «operatore» manipola dati e restituisce un risultato. Sintatticamente, un operatore appare prima o dopo un operando o tra due operandi. Unary and Binary Operators Ci sono due generiche classi di operatori: • unary: Un operatore “unario” lavora su un solo operatore operator operand • binary: Un operatore “binario” lavora su due operand 1 operator operand 2 Altri operatori con formati speciali accettano più di due operatori. Se un operatore è combinato con un operando NULL il risultato è NULL sempre. L’unico operatore che non risponde a questa regola è la concatenazione (||). Corso Base SQL - Emanuele Tertulliani 29
SQL Operator Precedence Operatore Operazione +, - (come operatori unari), PRIOR, CONNECT_BY_ROOT Identità, negazione, posizione gerarchica *, / Moltiplicazione, divisione +, - (come operatori binari), || Somma, sottrazione, concatenazione Condizioni SQL sono valutate dopo gli operatori SQL Corso Base SQL - Emanuele Tertulliani 30
SQL Operatore Caratteristiche +, - Quando denotano un’espressione positiva o negativa sono operatori unari +, - Quando aggiungono o sottraggono sono operatori binari *, / Moltiplicazione, divisione. Operatori binari. || Concatenazione di stringhe di caratteri o CLOB PRIOR, CONNECT_BY_ROOT Operatori gerarchici Corso Base SQL - Emanuele Tertulliani 31
SQL Operatore Caratteristiche UNION Tutte le righe distinte selezionate da una query UNION ALL Tutte le righe distinte selezionate da una query Inclusi tutti i duplicati INTERSECT Tutte le righe distinte selezionate da entrambe le query MINUS Tutte le righe distinte selezionate dalla prima query ma non la seconda Corso Base SQL - Emanuele Tertulliani 32
Expressions Un'espressione è una combinazione di uno o più valori, operatori e funzioni SQL che restituisce un valore. Un'espressione assume generalmente il tipo di dati del suo componenti. Si può utilizzare le espressioni nelle: • • • Select list di un SELECT statement Condizioni di WHERE clause e HAVING clause Clausole di CONNECT BY, START WITH e ORDER BY Clausola VALUES di un INSERT statement Clausola SET di un UPDATE statement Corso Base SQL - Emanuele Tertulliani 33
Conditions Una condizione specifica una combinazione di una o più espressioni e operatori logici (boolean) e restituisce un valore vero, falso o sconosciuto. Si possono utilizzare Condizioni nelle Clausole WHERE di questi statements: • DELETE • SELECT • UPDATE Si possono utilizzare Condizioni in ognuna delle Clausole della SELECT: • WHERE • START WITH • CONNECT BY • HAVING Corso Base SQL - Emanuele Tertulliani 34
Conditions Precedence Operatore Operazione Condizioni SQL sono valutate dopo gli operatori SQL =, !=, <, >, <=, >= comparazione IS [NOT] NULL, LIKE, [NOT] BETWEEN, [NOT] IN, EXISTS, IS OF type comparazione NOT Elevamento a potenza, negazione logica AND Congiunzione OR Disgiunzione Corso Base SQL - Emanuele Tertulliani 35
SQL Conditions Operatore Caratteristiche = Test di uguaglianza !=, ^=, <>, ¬= Test di disuguaglianza. Non sono disponibili in tutte le piattaforme. >, <, >=, <= Maggiore di, Minore di, Maggiore o uguale di, Minore o uguale di ANY, SOME Confronta un valore con ogni valore in un elenco o restituito da una query. Deve essere preceduto da =, ! =, >, <, <=, > =. Può essere seguito da qualsiasi espressione o sottoquery che restituisce uno o più valori. FALSE se la query non restituisce alcuna riga. ALL Confronta un valore con ogni valore in un elenco o restituito da una query. Deve essere preceduto da =, ! =, >, <, <=, > =. Può essere seguito da qualsiasi espressione o sottoquery che restituisce uno o più valori. Restituisce TRUE se la query non restituisce alcuna riga. Corso Base SQL - Emanuele Tertulliani 36
SQL Conditions Operatore Caratteristiche NOT Restituisce TRUE se la condizione seguente è FALSE. Restituisce FALSE Se è TRUE. Se UNKNOWN, allora rimane sconosciuto. AND Restituisce TRUE se tutte le componenti in condizioni sono TRUE. Restituisce FALSE se almeno uno delle condizioni è FALSE. Altrimenti restituisce UNKNOWN. OR Restituisce TRUE se almeno uno dei componenti della condizione è TRUE. Restituisce FALSE se tutte sono FALSE. Altrimenti restituisce UNKNOWN. IS [NOT] NULL Test per NULL [NOT] BETWEEN x AND y [NOT] un espressione maggiore/uguale a X e inferiore/pari a Y EXISTS TRUE se una subquery ritorna almeno una riga [NOT] IN Uguale ad ogni membro del test. Equivalente a =ANY. Diverso da ogni membro del test. Equivalente a !=ALL. Corso Base SQL - Emanuele Tertulliani 37
Functions Le funzioni sono simili agli operatori che manipolano elementi di dati e restituiscono un risultato. Le funzioni differiscono dagli operatori nel formato dei loro argomenti. Questo formato consente loro di operare su zero, uno, due, o più argomenti: function(arg 1, arg 2, . . . ) Una funzione senza argomenti è simile a un pseudocolonna. Tuttavia, un pseudocolonna restituisce in genere un valore diverso per ogni riga del result set mentre una funzione senza argomenti restituisce in genere lo stesso valore per ogni riga. Le funzioni SQL sono integrate in Oracle Database e sono disponibili per l'uso negli statements SQL. Non confondere le funzioni di SQL con funzioni definite dall'utente scritte in Pl. Sql. Se si chiama una funzione SQL con un argomento di un tipo di dati diverso dal tipo di dati previsto dalla funzione SQL, Oracle tenta di convertire l'argomento al tipo di dati previsto prima di eseguire la funzione SQL. Nulls in SQL Functions la maggior parte delle funzioni scalari restituiscono null quando un argomento è nullo. È possibile utilizzare la funzione NVL per restituire un valore quando si verifica un nullo. Corso Base SQL - Emanuele Tertulliani 38
Functions I principali raggruppamenti delle funzioni Sql sono: 1. Single-Row Functions, le cui principali categorie sono: a) Numeric Functions (ABS, MOD, SIGN, TRUNC(number), etc. ) b) Character Functions Returning Character Values (TRIM, LPAD, RPAD, SUBSTR, etc. ) c) Character Functions Returning Number Values (INSTR, LENGTH, etc. ) d) Datetime Functions (ADD_MONTHS, LAST_DAY, MONTHS_BETWEEN, SYSDATE, TRUNC (date), etc. ) e) General Comparison Functions (GREATEST, LEAST) f) Conversion Functions (TO_CHAR, TO_DATE, TO_NUMBER, etc. ) g) NULL-Related Functions (NVL, etc. ) 1. Aggregate Functions (COUNT, MAX, MIN, SUM, etc. ) Corso Base SQL - Emanuele Tertulliani 39
Types of SQL Statements 1. Data Definition Language (DDL) Statements 2. Data Manipulation Language (DML) Statements 3. Transaction Control Statements 4. Session Control Statements 5. System Control Statement 6. Embedded SQL Statements Corso Base SQL - Emanuele Tertulliani 40
DDL Le istruzioni DDL definiscono, cambiano strutturalmente e cancellano gli oggetti di uno schema. Le DDL consentono di alterare gli attributi di un oggetto senza alterare le applicazioni che accedono l’oggetto stesso. Le principali sono: ALTER ANALYZE AUDIT COMMENT CREATE DROP FLASHBACK NOAUDIT PURGE RENAME TRUNCATE Corso Base SQL - Emanuele Tertulliani 41
DML Le istruzioni DML agiscono sui dati in oggetti dello schema esistenti. Le principali sono: DELETE INSERT MERGE SELECT UPDATE Corso Base SQL - Emanuele Tertulliani 42
TCL Sono statement utilizzati per gestire i cambiamenti effettuati tramite le istruzioni DML. Permettono agli statements di essere raggruppati insieme in transazioni logiche. COMMIT SAVEPOINT ROLLBACK SET TRANSACTION Corso Base SQL - Emanuele Tertulliani 43
DCL (Data Control Language) Non rientrano nella canonica divisione dei «tipi di statement» Sql. Le istruzioni DCL agiscono sui permessi degli oggetti dello schema esistenti. GRANT REVOKE Corso Base SQL - Emanuele Tertulliani 44
- Slides: 44