Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriversi a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Quando completi il tuo laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Esplora le funzionalità SQL in Oracle Database 23ai
Introduzione
Impareremo 10 caratteristiche in questo tutorial che è necessario conoscere e come si confrontano con le loro controparti esistenti. Di seguito sono riportate le funzioni disponibili.
- clausola
FROM
(facoltativo). BOOLEAN
per SQL.- clausola DDL (Data Definition Language)
IF NOT EXISTS
. INSERT
multivalori.- Nuovo costruttore della tabella
VALUE
. - Alias nella clausola
GROUP BY
. - La clausola
RETURNING
dell'istruzioneUPDATE
eMERGE
- Join in
UPDATE
eDELETE
. - Annotazioni, nuovi metadati per gli oggetti di database.
- Tipi di oggetti leggeri con domini SQL.
Obiettivi
-
Utilizzare SQL senza la clausola
FROM
: abilitare query più semplici rimuovendo il requisito di utilizzare la clausolaFROM
quando si selezionano espressioni o funzioni predefinite. -
Implementa tipo di dati
BOOLEAN
nativo in SQL: utilizza il tipo di datiBOOLEAN
nativo in tabelle SQL, query e condizioni per una gestione logica true/false più intuitiva. -
Utilizzare
IF NOT EXISTS
nelle istruzioni DDL: semplifica la logica di creazione ed eliminazione degli oggetti eseguendo in modo condizionale le istruzioniCREATE
eDROP
senza controlli PL/SQL aggiuntivi. -
Esecuzione di operazioni multivalore
INSERT
: inserire più righe in un'unica istruzioneINSERT
per migliorare la leggibilità del codice e ridurre i viaggi di andata e ritorno nel database. -
Usa costruttore valore tabella per set di dati in linea: creare set di righe temporanei direttamente in SQL utilizzando il costruttore
VALUES
, supportando operazioni qualiMERGE
,SELECT
o il confronto. -
Alias di colonna di riferimento nelle clausole GROUP BY: migliorare la leggibilità delle query consentendo l'uso di alias
SELECT
inGROUP BY
anziché ripetere le espressioni. -
Sfruttare la clausola
RETURNING
inUPDATE
eMERGE
: recuperare i dati interessati direttamente dalle istruzioniUPDATE
eMERGE
senza richiedere una query di follow-up. -
Eseguire i join nelle istruzioni
UPDATE
eDELETE
: utilizzare la logicaJOIN
direttamente nelle operazioniUPDATE
eDELETE
per modificare o rimuovere i record in base alle condizioni della tabella correlata. -
Annotare gli oggetti di database con metadati: documentare gli oggetti di database utilizzando
ANNOTATION
per memorizzare metadati descrittivi (ad esempio, proprietario, scopo) per semplificare la manutenzione e l'introspezione. -
Definisci tipi di oggetto leggeri utilizzando domini SQL: crea tipi di dominio riutilizzabili con vincoli per applicare coerenza e tipizzazione rigorosi su più tabelle.
Prerequisiti
-
Conoscenza di base di SQL.
-
Comprendere la sintassi SQL:
SELECT
,INSERT
,UPDATE
,DELETE
,JOIN
,GROUP BY
e così via. -
Acquisire familiarità con i concetti e i tipi di dati dei database relazionali.
-
-
Esperienza con Oracle Database 23ai e le versioni precedenti.
-
Conoscenza del funzionamento di DDL, Data Manipulation Language (DML) e PL/SQL in Oracle Database 19c, Oracle Database 21c e nelle versioni precedenti.
-
Conoscenza di funzionalità specifiche di Oracle come
DUAL
,MERGE
,RETURNING INTO
e così via.
-
-
Accesso all'ambiente Oracle Database 23ai.
-
Accedi a Oracle Database 23ai (impostazione locale, istanza cloud o Oracle Live SQL).
-
Alcune funzioni (ad esempio i domini SQL o
BOOLEAN
) funzionano solo in Oracle Database 23ai.
-
-
Strumenti SQL*Plus, SQLcl o GUI (ad esempio SQL Developer o DataGrip). Possibilità di eseguire ed eseguire il test delle istruzioni SQL in un'interfaccia compatibile.
-
Nozioni di base su PL/SQL (per funzioni avanzate). Per l'uso di
RETURNING INTO
, i blocchi procedurali e la gestione del codice SQL dinamico. -
Conoscenza dei vincoli e delle regole di integrità dei dati. Necessario per comprendere i domini SQL e i vincoli di tabella.
-
Familiarità con le viste del dizionario dati Oracle. Per eseguire query su annotazioni o metadati. Ad esempio,
USER_TABLES
,USER_ANNOTATIONS
. -
Ruolo e privilegi in Oracle Database. La possibilità di creare/alterare tabelle, domini e annotazioni richiede privilegi utente appropriati.
-
Consapevolezza della versione. Assicurati che i tuoi strumenti e i tuoi client supportino le funzionalità di Oracle Database 23ai (i driver o gli strumenti più vecchi potrebbero non riuscire).
-
(Facoltativo) Esposizione ad altri dialetti SQL moderni (PostgreSQL, MySQL e così via). Questo ti aiuterà ad apprezzare la compatibilità incrociata delle nuove funzionalità come
VALUES
,BOOLEAN
eIF EXISTS
.
Funzione 1: Usa clausola FROM
Una funzione interessante introdotta in Oracle Database 23ai è l'opzionalità della clausola FROM
nelle istruzioni SELECT
. Fino a questa versione era richiesta la clausola FROM
.
Ecco alcuni potenziali vantaggi di una funzione SELECT
senza FROM
in Oracle Database 23ai.
-
Selezionare la data corrente per semplificare la manipolazione dei dati.
SELECT CURRENT_DATE;
-
Operazioni o calcoli matematici senza coinvolgere dati di tabella.
SELECT 25.50*25.25; 25.50*25.25 ----------- 643.875 Elapsed: 00:00:00.002 1 rows selected.
-
Blocco PL/SQL senza utilizzare la clausola
FROM
.CREATE SEQUENCE empno_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 1000; Sequence EMPNO_SEQ created. Elapsed: 00:00:00.005 declare v1 number; begin select empno_seq.nextval into v1; dbms_output.put_line ('v1= '||v1); end; / v1= 1 PL/SQL procedure successfully completed. Elapsed: 00:00:00.009
-
Funzioni incorporate o definite dall'utente per eseguire operazioni o recuperare valori.
SELECT DBMS_RANDOM.VALUE() as random_number;
-
Manipolazioni di stringhe o conversioni senza fare affidamento sui dati della tabella.
SELECT UPPER('oracle') AS uppercase_text;
-
Espressioni condizionali o logiche senza utilizzare una tabella.
SELECT CASE WHEN 10 > 5 THEN 'True' ELSE 'False' END AS result;
Funzione 2: Usa tipo di dati BOOLEAN
Oracle Database 23ai introduce il nuovo tipo di dati BOOLEAN
. Ciò sfrutta l'uso di colonne/variabili booleane vere, invece di simularle con un valore numerico o Varchar. La capacità di scrivere predicati booleani semplifica la sintassi delle istruzioni SQL.
-
Creare una tabella denominata
TEST_BOOLEAN
.CREATE TABLE IF NOT EXISTS TEST_BOOLEAN (name VARCHAR2(100), IS_SLEEPING BOOLEAN); Table TEST_BOOLEAN created. Elapsed: 00:00:00.004
-
Immettere i dati nella nuova tabella. Il valore
IS_SLEEPING
saràNOT NULL
impostato suFALSE
come valore predefinito.ALTER TABLE TEST_BOOLEAN modify (IS_SLEEPING boolean NOT NULL);
ALTER TABLE TEST_BOOLEAN modify (IS_SLEEPING default FALSE); Table TEST_BOOLEAN altered. Elapsed: 00:00:00.014
Qui puoi vedere i diversi tipi di input booleano per Mick, Keith e Ron. Tutti sono validi. Per Mick viene utilizzato il valore predefinito FALSE: Mick non dorme.
1 row inserted. Elapsed: 00:00:00.006
Per Keith viene utilizzato un valore NO, ovvero Keith non sta dormendo.
INSERT INTO TEST_BOOLEAN (name, is_sleeping) values ('Keith','NO'); 1 row inserted. Elapsed: 00:00:00.002
E per Ron usiamo un valore di 1: Ron dorme.
-
Vedi alcuni risultati in base ai nostri valori booleani.
SELECT * FROM test_boolean;
Non è più necessario ricordare che tipo di sistema booleano hai messo in atto. Come abbiamo dimostrato, l'utilizzo di 0/1, True/False, Yes/No o qualsiasi altro input comune restituirà un valore di tabella accurato.
Funzione 3: Usa clausola DDL IF NOT EXISTS
A partire da Oracle Database 23ai, la nuova clausola DDL IF NOT EXISTS
consente di decidere come verranno gestiti gli errori DDL. Ciò semplifica lo script DDL, poiché i potenziali errori dovuti all'esistenza o all'inesistenza di oggetti possono essere nascosti allo scripting.
-
In primo luogo, eseguire il test senza utilizzare questa nuova funzionalità. Eseguire la seguente istruzione.
DROP TABLE DEPT;
Poiché non esiste alcuna tabella
DEPT
da eliminare, verrà visualizzato un errore:ORA-00942: table or view does not exist
. -
Tuttavia, in Oracle Database 23ai, possiamo utilizzare
DROP IF EXISTS
senza errori. Questo ci dà tranquillità evitando gli errori. Ora, eseguire la stessa istruzione, ma includere questa nuova funzioneIF EXISTS
.DROP TABLE IF EXISTS DEPT;
-
Allo stesso modo, possiamo utilizzare questa funzione per creare tabelle, se non esistono già. Creare la tabella
DEPT
.CREATE TABLE IF NOT EXISTS DEPT (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY, DNAME VARCHAR2(14) , LOC VARCHAR2(13) ) ;
-
Utilizzare questa funzione per creare più tabelle di esempio in questa esercitazione. Qui, faremo una tabella dei dipendenti chiamata
EMP
.CREATE TABLE IF NOT EXISTS EMP (EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT); Table EMP created. Elapsed: 00:00:00.006
Funzione 4: utilizzare INSERT
per più righe
Un'altra caratteristica interessante che garantisce una migliore coesistenza e compatibilità con altri sistemi di gestione di database utilizzati di frequente è l'istruzione INSERT
multivalore.
-
Nelle versioni precedenti del database Oracle, ad esempio, l'inserimento di più righe richiedeva un'istruzione di inserimento separata per ogni riga.
INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK'); INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS'); INSERT INTO DEPT VALUES (30,'SALES','CHICAGO'); INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON'); INSERT INTO DEPT VALUES (50,'HR','LOS ANGELES'); INSERT INTO DEPT VALUES (60,'IT','SAN FRANCISCO'); INSERT INTO DEPT VALUES (70,'MANUFACTURING','DETROIT');
Oracle Database 23ai ha introdotto la nuova sintassi che consente di inserire tutte queste righe in un'unica istruzione
INSERT
, in modo da poter inserire diverse tuple in un unico DML. Eseguire la seguente istruzione.INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK'), (20,'RESEARCH','DALLAS'), (30,'SALES','CHICAGO'), (40,'OPERATIONS','BOSTON'), (50,'HR','LOS ANGELES'), (60,'IT','SAN FRANCISCO'), (70,'MANUFACTURING','DETROIT');
Oltre a una migliore compatibilità con altri database, questa istruzione può essere utilizzata per garantire la coerenza di alcune operazioni di inserimento in modalità di commit automatico. Ciò potrebbe essere importante, ad esempio, per le applicazioni Oracle APEX che utilizzano questa modalità per lavorare sui dati.
-
Eseguire l'istruzione seguente per utilizzare questa funzione per inserire i valori per la tabella
EMP
.INSERT INTO EMP VALUES (7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20), (7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30), (7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30), (7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20), (7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30), (7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30), (7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10), (7788,'SCOTT','ANALYST',7566,to_date('13-JUL-87')-85,3000,NULL,20), (7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10), (7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30), (7876,'ADAMS','CLERK',7788,to_date('13-JUL-87')-51,1100,NULL,20), (7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30), (7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20), (7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);
Funzione 5: Usa nuovo costruttore VALUE
A partire dal database Oracle 23ai, il costruttore dei valori di tabella è stato esteso. Ora può essere utilizzato nelle istruzioni INSERT
, per creare più righe in un singolo comando. Può essere utilizzato anche nelle istruzioni SELECT
e nella sintassi di fattorizzazione della vista. In quest'ultimo caso, semplifica la sintassi delle istruzioni ed evita l'uso della tabella DUAL
.
L'istruzione seguente sembra una sorta di funzione tabella al volo.
SELECT * FROM (VALUES (50,'HR'), (60,'DEV'), (70,'AI')) virt_dept (deptno, dname);
Funzione 6: Usa alias nella clausola GROUP BY
Oracle Database 23ai introduce la possibilità di utilizzare gli alias nella clausola GROUP BY
di un'istruzione SELECT
. Questa funzione semplifica la scrittura di query con espressioni complesse e garantisce una migliore compatibilità con alcuni altri database relazionali, come Teradata, MySQL e PostgreSQL.
Ad esempio:
SELECT to_char(hiredate,'YYYY') "Year", count(*)
FROM emp
GROUP BY to_char(hiredate,'YYYY');
In Oracle Database 23ai questo può essere scritto in modo più semplice, come mostrato nell'immagine seguente:
Funzione 7: utilizzare la clausola RETURNING
della dichiarazione UPDATE
e MERGE
Questa clausola era stata implementata in precedenza come parte dell'istruzione EXECUTE IMMEDIATE
. Tuttavia, in Oracle Database 23ai possiamo trovarlo come parte delle istruzioni DML tradizionali e statiche.
-
In questo caso, consente di ottenere valori vecchi e nuovi di colonne da una riga elaborata. In primo luogo, vediamo lo stipendio attuale di King.
SELECT ename, sal FROM emp WHERE ename = 'KING';
-
Per utilizzare le variabili in LiveSQL, le istruzioni verranno completate in PL/SQL. Eseguire questo script. In primo luogo creerà le variabili per il vecchio e il nuovo stipendio, quindi aggiornerà lo stipendio di King utilizzando la clausola
RETURNING
per impostare le nostre variabili. Esamineremo quindi i risultati.BEGIN DECLARE old_salary NUMBER; new_salary NUMBER; BEGIN UPDATE emp SET sal = sal + 1000 WHERE ename = 'KING' RETURNING OLD sal, NEW sal INTO old_salary, new_salary; DBMS_OUTPUT.PUT_LINE('Old Salary: ' || old_salary); DBMS_OUTPUT.PUT_LINE('New Salary: ' || new_salary); END; END;
Old Salary: 6000 New Salary: 7000
In questo esempio è stata utilizzata un'istruzione
UPDATE
, ma la clausolaRETURNING
può essere utilizzata in modo simile con le istruzioniMERGE
.
Funzione 8: Usa join in UPDATE
e DELETE
È possibile aggiornare i dati della tabella utilizzando i join in base alle condizioni della tabella esterna. Non sono necessarie selezioni secondarie o clausole IN
.
-
Eseguire il seguente rendiconto per visualizzare le informazioni sullo stipendio del dipendente dal reparto di ricerca.
select e.sal, e.empno from emp e, dept d where e.deptno=d.deptno and d.dname='RESEARCH';
-
Per aggiornare le informazioni sullo stipendio, prima di Oracle Database 23ai è necessario utilizzare un'istruzione nidificata.
UPDATE emp e set e.sal=e.sal*2 WHERE e.deptno in (SELECT d.deptno FROM dept d WHERE e.deptno=d.deptno and d.dname='RESEARCH');
Con Oracle Database 23ai, puoi usarlo in questo modo:
UPDATE emp e set e.sal=e.sal*2 FROM dept d WHERE e.deptno=d.deptno and d.dname='RESEARCH';
-
Lo stipendio è stato aggiornato correttamente.
select e.sal, e.empno from emp e, dept d where e.deptno=d.deptno and d.dname='RESEARCH';
Funzione 9: Usa annotazioni
Le annotazioni sono metadati facoltativi per gli oggetti di database. Un'annotazione è una coppia nome-valore o un nome da sola. Il nome e il valore facoltativo sono campi di testo in formato libero. Un'annotazione è rappresentata come elemento subordinato all'oggetto di database a cui è stata aggiunta l'annotazione. Gli oggetti schema supportati includono tabelle, viste, viste materializzate e indici. Con le annotazioni è possibile memorizzare e recuperare i metadati relativi a un oggetto di database. È possibile utilizzarlo per personalizzare la business logic, le interfacce utente o fornire metadati ai repository di metadati. Può essere aggiunto con l'istruzione CREATE
o ALTER
a livello di tabella o colonna.
Con le annotazioni è possibile memorizzare e recuperare i metadati sugli oggetti di database. È possibile utilizzarlo per personalizzare la business logic, le interfacce utente o fornire metadati ai repository di metadati.
-
Creare una tabella annotata
EMP_ANNOTATED_NEW
con annotazioni di colonna e tabella.CREATE TABLE emp_annotated_new (empno number annotations(identity, display 'person_identity', details 'person_info'), ename varchar2(50), salary number annotations (display 'person_salary', col_hidden)) annotations (display 'employee_table');
-
Le viste del dizionario dati, ad esempio
USER_ANNOTATIONS
eUSER_ANNOTATIONS_USAGE
, consentono di monitorare l'uso.SELECT object_name, object_type, column_name, annotation_name, annotation_value FROM user_annotations_usage;
Funzione 10: Usa domini SQL
Un dominio SQL è un oggetto dizionario che appartiene a uno schema e incapsula un set di proprietà e vincoli facoltativi e viene creato con un'istruzione CREATE DOMAIN
. I domini forniscono attributi di vincoli, visualizzazione, ordinamento e annotazioni. Dopo aver definito un dominio SQL, è possibile definire le colonne di tabella da associare a tale dominio, applicando in modo esplicito le proprietà e i vincoli facoltativi del dominio a tali colonne.
I domini SQL consentono agli utenti di dichiarare l'uso previsto per le colonne. Si tratta di oggetti del dizionario dati in modo che le conoscenze specifiche del dominio astratto possano essere facilmente riutilizzate.
-
Creare un dominio denominato
yearbirth
e una tabella denominataperson
.CREATE DOMAIN yearbirth as number(4) constraint check ((trunc(yearbirth) = yearbirth) and (yearbirth >= 1900)) display (case when yearbirth < 2000 then '19-' ELSE '20-' end)||mod(yearbirth, 100) order (yearbirth -1900) annotations (title 'yearformat');
CREATE TABLE person (id number(5), name varchar2(50), salary number, person_birth number(4) DOMAIN yearbirth ) annotations (display 'person_table');
``desc persona;
Nome Null? Type
ID NUMBER(5) NOME VARCHAR2(50) STIPENDIO NUMBER PERSON_BIRTH NUMBER(4) DOMINIO YEARBIRTH
INSERIRE I valori persona (1,'MARTIN',3000, 1988);
2. With the new function `DOMAIN_DISPLAY` you can display the property.
SELEZIONARE DOMAIN_DISPLAY(person_birth) DA persona;

3. Domain usage and annotations can be monitored with data dictionary views. Let us view `user_annotations_usage`.
SELEZIONARE * DA user_annotations_usage;
Define reusable domain types (lightweight objects).
CREA DOMINIO EmailAddress COME CONTROLLO VARCHAR2(100) (REGEXP_LIKE(VALORE, '^[^@]+@[^@]+.[^@]+$'));
CREATE TABLE utenti ( user_id NUMBER, e-mail EmailAddress ); ```
Limitazioni e restrizioni nelle funzioni di Oracle Database 23ai
-
FROM
Clausola.-
Applicabile solo a espressioni semplici come funzioni, valori letterali o variabili.
-
Non può essere utilizzato con query relative a tabelle, join o subquery.
-
Non supportato nel contesto PL/SQL con loop del cursore che prevedono una clausola
FROM
.
-
-
Tipo di dati
BOOLEAN
nativo.-
Può essere utilizzato in colonne ed espressioni di tabella.
-
Non indicizzabile. Impossibile indicizzare le colonne con tipo di dati
BOOLEAN
. -
Non è supportato direttamente in tutti gli strumenti del cliente o negli strumenti di reporting (può essere necessario eseguire la traduzione a 0/1 o Y/N).
-
Non supportato in alcune interfacce API o driver precedenti (i client JDBC/ODBC potrebbero richiedere aggiornamenti).
-
-
IF NOT EXISTS
in DDL.-
Semplifica gli script DDL idempotenti.
-
Disponibile solo per oggetti specifici:
TABLE
,INDEX
,SEQUENCE
,VIEW
e così via. -
Non tutti i tipi di oggetto supportano questa funzionalità (ad esempio,
TRIGGER
,SYNONYM
potrebbe richiedere un controllo manuale). -
Non supportato nelle versioni precedenti di Oracle.
-
-
INSERT
multivali.-
Pulire la sintassi per gli inserimenti batch.
-
I set di valori limitati a quelli espliciti non possono essere inseriti utilizzando
SELECT
o subquery nella stessa clausolaVALUES
. -
Impossibile combinare la clausola
RETURNING
per tutte le righe inserite in un passo.
-
-
Valore tabella Costruttore (clausola
VALUES
).-
Ideale per piccoli set di righe ad hoc.
-
Ha limiti di riga (in genere 999 o meno a seconda del contesto).
-
Non ottimizzato per carichi su larga scala, è preferibile utilizzare tabelle temporanee o aree intermedie per set di dati di grandi dimensioni.
-
-
Alias nella clausola
GROUP BY
.-
Consente di semplificare la lettura e la scrittura delle query.
-
Non supportato in tutte le funzioni analitiche o query complesse che coinvolgono colonne di subquery.
-
Potrebbe causare confusione nelle query in cui l'alias è sovraccarico (ad esempio, lo stesso nome nella query interna).
-
-
RETURNING
Clausola inUPDATE
/MERGE
.-
Riduce la necessità di
SELECT
dopo DML. -
Può restituire solo i valori delle righe effettivamente modificate.
-
Non utilizzabile per gli aggiornamenti in blocco senza
FORALL
, è necessario utilizzare PL/SQL conRETURNING BULK COLLECT
esplicito.
-
-
Join in
UPDATE
eDELETE
.-
Rende la logica multi-tabella più semplice.
-
In alcuni contesti sono supportati solo i tipi
INNER JOIN
eLEFT JOIN
. -
Può richiedere la riscrittura per la logica
MERGE
se si utilizzano strumenti precedenti o se è necessaria la compatibilità con le versioni precedenti di Oracle.
-
-
Annotazioni.
-
Ottimo per la documentazione.
-
Le annotazioni sono solo metadati, non applicabili in runtime.
-
Richiede l'uso delle viste del dizionario dati Oracle (
*_ANNOTATIONS
) da recuperare. -
Non ancora integrato negli strumenti di esportazione/importazione o replica di Oracle Data Pump.
-
-
Tipi di oggetti leggeri con domini SQL.
-
Applicazione del tipo riutilizzabile e coerente.
-
Ancora meno potente dei tipi di oggetto completi (nessun metodo, attributo).
-
Nessuna eredità o composizione, destinata solo all'applicazione di vincoli primitivi.
-
Impossibile definire i valori predefiniti nel dominio stesso (impostazioni predefinite ancora specificate a livello di colonna).
-
Restrizioni generali
-
Compatibilità degli strumenti: molti strumenti GUI e librerie client Oracle precedenti potrebbero non supportare ancora completamente la sintassi di Oracle Database 23ai (in particolare
VALUES
,BOOLEAN
,DOMAIN
). -
Esporta/Importa: alcune funzioni, ad esempio le annotazioni o i domini, potrebbero non essere conservate nei flussi di lavoro
expdp
/impdp
precedenti. -
Comportamento sperimentale: poiché queste funzioni sono nuove, alcune potrebbero evolversi in versioni secondarie: controllare frequentemente le note sulle patch e la documentazione.
Collegamenti correlati
Conferme
- Autore: Aditya Srivastawa (Principal Cloud Architect)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.
Per la documentazione del prodotto, visitare Oracle Help Center.
Explore SQL Features in Oracle Database 23ai
G35698-01
Copyright ©2025, Oracle and/or its affiliates.