Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. In der Übung ersetzen Sie diese Werte durch die Werte, die für Ihre Cloud-Umgebung spezifisch sind.
SQL-Features in Oracle Database 23ai kennenlernen
Einführung
In diesem Tutorial lernen wir 10 Funktionen kennen, die Sie kennen müssen und wie sie mit ihren vorhandenen Gegenstücken verglichen werden. Folgende Features sind verfügbar:
FROM
-Klausel (optional).BOOLEAN
für SQL.IF NOT EXISTS
Data Definition Language-(DDL-)Klausel.INSERT
Multivalente.- Neuer Tabellenkonstruktor
VALUE
. - Aliasnamen in
GROUP BY
-Klausel. RETURNING
-Klausel derUPDATE
- undMERGE
-Anweisung.- Joins in
UPDATE
undDELETE
. - Annotationen, neue Metadaten für Datenbankobjekte.
- Leichte Objekttypen mit SQL-Domains.
Ziele
-
SQL ohne Klausel
FROM
verwenden: Aktivieren Sie einfachere Abfragen, indem Sie die Anforderung zur Verwendung der KlauselFROM
entfernen, wenn Sie Ausdrücke oder integrierte Funktionen auswählen. -
Nativen
BOOLEAN
-Datentyp in SQL implementieren: Nutzen Sie den nativenBOOLEAN
-Datentyp in SQL-Tabellen, Abfragen und Bedingungen für eine intuitivere Verarbeitung von True/False-Logik. -
IF NOT EXISTS
in DDL-Anweisungen verwenden: Vereinfachen Sie das Erstellen und Löschen von Objekten, indem SieCREATE
- undDROP
-Anweisungen ohne zusätzliche PL/SQL-Prüfungen bedingt ausführen. -
Multivalue
INSERT
-Vorgänge ausführen: Fügen Sie mehrere Zeilen in eine einzelneINSERT
-Anweisung ein, um die Lesbarkeit des Codes zu verbessern und Roundtrips zur Datenbank zu reduzieren. -
Tabellenwert-Konstruktor für Inline-Datasets verwenden: Erstellen Sie temporäre Zeilensets direkt in SQL mit dem
VALUES
-Konstruktor, unterstützenden Vorgängen wieMERGE
,SELECT
oder Vergleich. -
Referenzspalten-Aliasnamen in GROUP BY-Klauseln: Verbessern Sie die Lesbarkeit von Abfragen, indem Sie die Verwendung von
SELECT
-Aliasnamen inGROUP BY
zulassen, anstatt Ausdrücke zu wiederholen. -
Klausel
RETURNING
inUPDATE
undMERGE
verwenden: Ruft betroffene Daten direkt aus den AnweisungenUPDATE
undMERGE
ab, ohne dass eine Folgeabfrage erforderlich ist. -
Joins in
UPDATE
- undDELETE
-Anweisungen ausführen: Verwenden Sie die LogikJOIN
direkt in den VorgängenUPDATE
undDELETE
, um Datensätze basierend auf zugehörigen Tabellenbedingungen zu ändern oder zu entfernen. -
Datenbankobjekte mit Metadaten anmerken: Dokumentdatenbankobjekte, die beschreibende Metadaten (z.B. Eigentümer, Zweck) mit
ANNOTATION
speichern, um die Verwaltung und Introspektion zu vereinfachen. -
Lightweight-Objekttypen mit SQL-Domains definieren: Erstellen Sie wiederverwendbare Domaintypen mit Constraints, um Konsistenz und starke Typisierung über mehrere Tabellen hinweg durchzusetzen.
Voraussetzungen
-
SQL-Grundkenntnisse
-
SQL-Syntax verstehen:
SELECT
,INSERT
,UPDATE
,DELETE
,JOIN
,GROUP BY
usw. -
Vertrautheit mit relationalen Datenbankkonzepten und Datentypen.
-
-
Erfahrung mit Oracle Database 23ai und seinen früheren Versionen.
-
Kenntnis der Funktionsweise von DDL, Data Manipulation Language (DML) und PL/SQL in Oracle Database 19c, Oracle Database 21c und früheren Versionen.
-
Kenntnisse der Oracle-spezifischen Features wie
DUAL
,MERGE
,RETURNING INTO
usw.
-
-
Zugriff auf die Oracle Database 23ai-Umgebung.
-
Sie haben Zugriff auf Oracle Database 23ai (lokales Setup, Cloud-Instanz oder Oracle Live SQL).
-
Einige Features (wie SQL-Domains oder
BOOLEAN
) funktionieren nur in Oracle Database 23ai.
-
-
SQL*Plus-, SQLcl- oder GUI-Tools (wie SQL Developer oder DataGrip). Kann SQL-Anweisungen in einer kompatiblen Schnittstelle ausführen und testen.
-
PL/SQL-Grundlagen (für erweiterte Features). Für die Verwendung von
RETURNING INTO
, prozeduralen Blöcken und die Verarbeitung von dynamischem SQL. -
Kenntnis von Constraints und Datenintegritätsregeln. SQL-Domains und Tabellen-Constraints müssen verstanden werden.
-
Vertrautheit mit Oracle Data Dictionary Views Zum Abfragen von Annotationen oder Metadaten. Beispiel:
USER_TABLES
,USER_ANNOTATIONS
. -
Rolle und Privilegien in Oracle Database. Die Möglichkeit, Tabellen, Domains und Annotationen zu erstellen/zu ändern, erfordert entsprechende Benutzerberechtigungen.
-
Versionserkennung. Stellen Sie sicher, dass Ihre Tools und Clients Oracle Database 23ai-Features unterstützen (ältere Treiber oder Tools können nicht erfolgreich ausgeführt werden).
-
(Optional) Exposition gegenüber anderen modernen SQL-Dialekten (PostgreSQL, MySQL usw.). Dadurch können Sie die Kompatibilität neuer Features wie
VALUES
,BOOLEAN
undIF EXISTS
schätzen.
Feature 1: Klausel FROM
verwenden
Ein interessantes Feature, das in Oracle Database 23ai eingeführt wurde, ist die Optionalität der FROM
-Klausel in SELECT
-Anweisungen. Bis zu dieser Version war die FROM
-Klausel erforderlich.
Im Folgenden finden Sie einige potenzielle Vorteile eines Features SELECT
ohne FROM
in Oracle Database 23ai.
-
Wählen Sie das aktuelle Datum aus, um die Daten leichter zu bearbeiten.
SELECT CURRENT_DATE;
-
Mathematische Operationen oder Berechnungen ohne Berücksichtigung von Tabellendaten.
SELECT 25.50*25.25; 25.50*25.25 ----------- 643.875 Elapsed: 00:00:00.002 1 rows selected.
-
PL/SQL-Block ohne
FROM
-Klausel.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
-
Integrierte oder benutzerdefinierte Funktionen zum Ausführen von Vorgängen oder Abrufen von Werten.
SELECT DBMS_RANDOM.VALUE() as random_number;
-
Manipulationen oder Konvertierungen von Zeichenfolgen, ohne sich auf Tabellendaten zu verlassen.
SELECT UPPER('oracle') AS uppercase_text;
-
Bedingte oder logische Ausdrücke ohne Verwendung einer Tabelle.
SELECT CASE WHEN 10 > 5 THEN 'True' ELSE 'False' END AS result;
Feature 2: Datentyp BOOLEAN
verwenden
Oracle Database 23ai führt den neuen Datentyp BOOLEAN
ein. Dabei werden echte boolesche Spalten/Variablen verwendet, anstatt sie mit einem numerischen Wert oder Varchar zu simulieren. Die Fähigkeit, boolesche Prädikate zu schreiben, vereinfacht die Syntax von SQL-Anweisungen.
-
Erstellen Sie eine Tabelle mit dem Namen
TEST_BOOLEAN
.CREATE TABLE IF NOT EXISTS TEST_BOOLEAN (name VARCHAR2(100), IS_SLEEPING BOOLEAN); Table TEST_BOOLEAN created. Elapsed: 00:00:00.004
-
Geben Sie Daten in die neue Tabelle ein. Der Wert
IS_SLEEPING
istNOT NULL
, der standardmäßig aufFALSE
gesetzt ist.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
Hier sehen Sie die verschiedenen Arten von booleschen Eingaben für Mick, Keith und Ron. Alle sind gültig. Bei Mick wird der Standardwert FALSE verwendet - Mick schläft nicht.
1 row inserted. Elapsed: 00:00:00.006
Für Keith wird ein NO-Wert verwendet - Keith schläft nicht.
INSERT INTO TEST_BOOLEAN (name, is_sleeping) values ('Keith','NO'); 1 row inserted. Elapsed: 00:00:00.002
Und für Ron verwenden wir einen 1 Wert - Ron schläft.
-
Sehen Sie einige Ergebnisse basierend auf unseren booleschen Werten.
SELECT * FROM test_boolean;
Sie müssen sich nicht mehr daran erinnern, welche Art von booleschem System Sie eingeführt haben. Wie wir gezeigt haben, gibt die Verwendung von 0/1, True/False, Yes/No oder anderen gemeinsamen Eingaben einen genauen Tabellenwert zurück.
Feature 3: DDL-Klausel IF NOT EXISTS
verwenden
Ab Oracle Database 23ai können Sie mit der neuen DDL-Klausel IF NOT EXISTS
entscheiden, wie DDL-Fehler behandelt werden. Dadurch wird das DDL-Skripting vereinfacht, da potenzielle Fehler aufgrund vorhandener oder fehlender Objekte im Skripting ausgeblendet werden können.
-
Testen Sie zunächst, ohne dieses neue Feature zu verwenden. Führen Sie die folgende Anweisung aus.
DROP TABLE DEPT;
Da keine vorhandene
DEPT
-Tabelle zum Löschen vorhanden ist, wird ein Fehler angezeigt:ORA-00942: table or view does not exist
. -
In Oracle Database 23ai können wir
DROP IF EXISTS
jedoch ohne Fehler verwenden. Dies gibt uns Sicherheit, während wir Fehler vermeiden. Führen Sie jetzt dieselbe Anweisung aus, schließen Sie jedoch dieses neueIF EXISTS
-Feature ein.DROP TABLE IF EXISTS DEPT;
-
Ebenso können Sie mit dieser Funktion Tabellen erstellen, sofern diese noch nicht vorhanden sind. Erstellen Sie die Tabelle
DEPT
.CREATE TABLE IF NOT EXISTS DEPT (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY, DNAME VARCHAR2(14) , LOC VARCHAR2(13) ) ;
-
Mit dieser Funktion können Sie weitere Beispieltabellen in diesem Tutorial erstellen. Hier erstellen wir eine Mitarbeitertabelle mit dem Namen
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
Feature 4: INSERT
für mehrere Zeilen verwenden
Eine weitere interessante Funktion, die eine bessere Koexistenz und Kompatibilität mit anderen häufig verwendeten Datenbankmanagementsystemen gewährleistet, ist die mehrwertige INSERT
-Anweisung.
-
In früheren Versionen der Oracle-Datenbank erforderte das Einfügen mehrerer Zeilen beispielsweise eine separate Insert-Anweisung für jede Zeile.
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');
In Oracle Database 23ai wurde die neue Syntax eingeführt, mit der alle diese Zeilen in eine einzelne
INSERT
-Anweisung eingefügt werden können. Sie können also mehrere Tupel in eine DML einfügen. Führen Sie die folgende Anweisung aus.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');
Zusätzlich zu einer besseren Kompatibilität mit anderen Datenbanken kann diese Anweisung verwendet werden, um die Konsistenz einiger Einfügevorgänge im Auto-Commit-Modus sicherzustellen. Dies könnte beispielsweise für Oracle APEX-Anwendungen wichtig sein, die diesen Modus verwenden, um an Daten zu arbeiten.
-
Führen Sie die folgende Anweisung aus, um dieses Feature zum Ausfüllen von Werten für die Tabelle
EMP
zu verwenden.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);
Feature 5: Neuen VALUE
-Konstruktor verwenden
Ab der Oracle-Datenbank 23ai wurde der Konstruktor für Tabellenwerte erweitert. Sie kann jetzt in INSERT
-Anweisungen verwendet werden, um mehrere Zeilen in einem einzigen Befehl zu erstellen. Sie kann auch in SELECT
-Anweisungen und in der Syntax für die View-Faktorisierung verwendet werden. In diesem letzten Fall wird die Syntax der Anweisungen vereinfacht, und die Verwendung der Tabelle DUAL
wird vermieden.
Die folgende Anweisung sieht wie eine Art Tabellenfunktion aus.
SELECT * FROM (VALUES (50,'HR'), (60,'DEV'), (70,'AI')) virt_dept (deptno, dname);
Feature 6: Aliasnamen in GROUP BY
-Klausel verwenden
Oracle Database 23ai bietet die Möglichkeit, Aliasnamen in der GROUP BY
-Klausel einer SELECT
-Anweisung zu verwenden. Diese Funktion vereinfacht das Schreiben von Abfragen mit komplexen Ausdrücken und gewährleistet eine bessere Kompatibilität mit einigen anderen relationalen Datenbanken, wie Teradata, MySQL und PostgreSQL.
Beispiel:
SELECT to_char(hiredate,'YYYY') "Year", count(*)
FROM emp
GROUP BY to_char(hiredate,'YYYY');
In Oracle Database 23ai kann dies einfacher geschrieben werden, wie in der folgenden Abbildung dargestellt:
Feature 7: RETURNING
-Klausel der Anweisung UPDATE
und MERGE
verwenden
Diese Klausel wurde bereits als Teil der EXECUTE IMMEDIATE
-Anweisung implementiert. In Oracle Database 23ai können wir sie jedoch als Teil herkömmlicher, statischer DML-Anweisungen finden.
-
In diesem Fall können alte und neue Werte von Spalten aus einer verarbeiteten Zeile abgerufen werden. Lassen Sie uns zunächst das aktuelle Gehalt von King sehen.
SELECT ename, sal FROM emp WHERE ename = 'KING';
-
Um Variablen in LiveSQL zu verwenden, werden Anweisungen in PL/SQL ausgeblendet. Führen Sie dieses Skript aus. Es erstellt zuerst die Variablen für altes und neues Gehalt und aktualisiert dann das Gehalt von King mit der
RETURNING
-Klausel, um unsere Variablen festzulegen. Wir werden uns dann die Ergebnisse ansehen.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 diesem Beispiel wurde eine
UPDATE
-Anweisung verwendet. DieRETURNING
-Klausel kann jedoch ähnlich mitMERGE
-Anweisungen verwendet werden.
Feature 8: Joins in UPDATE
und DELETE
verwenden
Sie können Tabellendaten mithilfe von Joins aktualisieren, die auf Fremdtabellenbedingungen basieren. Unterauswahlen oder IN
-Klausel sind nicht erforderlich.
-
Führen Sie die folgende Anweisung aus, um die Gehaltsdaten des Mitarbeiters aus der Forschungsabteilung anzuzeigen.
select e.sal, e.empno from emp e, dept d where e.deptno=d.deptno and d.dname='RESEARCH';
-
Um die Gehaltsinformationen zu aktualisieren, müssen wir vor Oracle Database 23ai eine verschachtelte Anweisung verwenden.
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');
Mit Oracle Database 23ai können Sie sie wie folgt verwenden:
UPDATE emp e set e.sal=e.sal*2 FROM dept d WHERE e.deptno=d.deptno and d.dname='RESEARCH';
-
Sie können sehen, dass das Gehalt erfolgreich aktualisiert wurde.
select e.sal, e.empno from emp e, dept d where e.deptno=d.deptno and d.dname='RESEARCH';
Feature 9: Annotationen verwenden
Anmerkungen sind optionale Metadaten für Datenbankobjekte. Eine Annotation ist entweder ein Name/Wert-Paar oder ein Name für sich. Der Name und der optionale Wert sind Freiformtextfelder. Eine Annotation wird als untergeordnetes Element des Datenbankobjekts dargestellt, dem die Annotation hinzugefügt wurde. Unterstützte Schemaobjekte sind Tabellen, Views, Materialized Views und Indizes. Mit Annotationen können Sie Metadaten zu Datenbankobjekten speichern und abrufen. Sie können damit Geschäftslogik und Benutzeroberflächen anpassen oder Metadaten für Metadaten-Repositorys bereitstellen. Sie kann mit der Anweisung CREATE
oder ALTER
auf Tabellen- oder Spaltenebene hinzugefügt werden.
Mit Annotationen können Sie Metadaten zu Datenbankobjekten speichern und abrufen. Sie können damit Geschäftslogik und Benutzeroberflächen anpassen oder Metadaten für Metadaten-Repositorys bereitstellen.
-
Erstellen Sie eine annotierte Tabelle
EMP_ANNOTATED_NEW
mit Spalten- und Tabellenannotationen.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');
-
Data Dictionary Views wie
USER_ANNOTATIONS
undUSER_ANNOTATIONS_USAGE
können dazu beitragen, die Nutzung zu überwachen.SELECT object_name, object_type, column_name, annotation_name, annotation_value FROM user_annotations_usage;
Feature 10: SQL-Domains verwenden
Eine SQL-Domain ist ein Dictionary-Objekt, das zu einem Schema gehört und eine Gruppe optionaler Eigenschaften und Constraints kapselt und mit einer CREATE DOMAIN
-Anweisung erstellt wird. Domains bieten Constraints, Anzeige-, Sortier- und Annotationsattribute. Nachdem Sie eine SQL-Domain definiert haben, können Sie Tabellenspalten definieren, die mit dieser Domain verknüpft werden sollen. Dadurch werden die optionalen Eigenschaften und Constraints der Domain explizit auf diese Spalten angewendet.
Mit SQL-Domains können Benutzer die beabsichtigte Verwendung für Spalten deklarieren. Es handelt sich um Data Dictionary-Objekte, damit abstrakte domänenspezifische Kenntnisse leicht wiederverwendet werden können.
-
Erstellen Sie eine Domain namens
yearbirth
und eine Tabelle namensperson
.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');
``beschriebene Person;
Name Null? Typ
ID-NUMMER(5) NAME VARCHAR2(50) GEHALTSNUMMER PERSON_BIRTH ZAHL(4) DOMAIN JAHRGEBURT
Personenwerte INSERT (1,'MARTIN',3000, 1988);
2. With the new function `DOMAIN_DISPLAY` you can display the property.
SELECT DOMAIN_DISPLAY(person_birth) FROM person;

3. Domain usage and annotations can be monitored with data dictionary views. Let us view `user_annotations_usage`.
WÄHLEN SIE * AUS user_annotations_usage;
Define reusable domain types (lightweight objects).
DOMAIN EmailAddress ALS VARCHAR2(100) ERSTELLEN (REGEXP_LIKE(WERT, '^[^@]+@[^@]+.[^@]+[^@]+$'));
CREATE TABLE-Benutzer (user_id NUMBER, E-Mail EmailAddress ); ``
Einschränkungen und Einschränkungen in den Features von Oracle Database 23ai
-
FROM
-Klausel.-
Gilt nur für einfache Ausdrücke wie Funktionen, Literale oder Variablen.
-
Kann nicht mit Abfragen verwendet werden, die Tabellen, Joins oder Unterabfragen enthalten.
-
Wird im PL/SQL-Kontext nicht unterstützt, wobei Cursor-Schleifen eine
FROM
-Klausel erwarten.
-
-
Nativer
BOOLEAN
-Datentyp.-
Kann in Tabellenspalten und Ausdrücken verwendet werden.
-
Nicht indexierbar. Spalten mit dem Datentyp
BOOLEAN
können nicht indexiert werden. -
Nicht direkt in allen Clienttools oder Reportingtools unterstützt (kann Übersetzung in 0/1 oder Y/N erforderlich sein).
-
In einigen älteren APIs oder Treibern nicht unterstützt (JDBC/ODBC-Clients benötigen möglicherweise Updates).
-
-
IF NOT EXISTS
in DDL.-
Vereinfacht idempotentes DDL-Skript.
-
Nur für bestimmte Objekte verfügbar:
TABLE
,INDEX
,SEQUENCE
,VIEW
usw. -
Dies wird nicht von allen Objekttypen unterstützt (z.B.
TRIGGER
,SYNONYM
erfordert möglicherweise noch eine manuelle Prüfung). -
In älteren Oracle-Versionen nicht unterstützt.
-
-
Mehrwertige
INSERT
.-
Syntax für Batch-Inserts bereinigen.
-
Begrenzt auf explizite Wertesets können nicht mit
SELECT
oder Unterabfragen in derselbenVALUES
-Klausel eingefügt werden. -
Kann nicht mit der
RETURNING
-Klausel für alle eingefügten Zeilen in einem Schritt kombiniert werden.
-
-
Tabellenwert-Konstruktor (
VALUES
-Klausel).-
Ideal für kleine Ad-hoc-Zeilensets.
-
Hat Zeilengrenzwerte (in der Regel 999 oder weniger je nach Kontext).
-
Nicht für große Lasten optimiert, besser für temporäre Tabellen oder Staging für große Datasets.
-
-
Aliasnamen in
GROUP BY
-Klausel.-
erleichtert das Lesen und Schreiben von Abfragen.
-
Nicht in allen analytischen Funktionen oder komplexen Abfragen mit Unterabfragespalten unterstützt.
-
Dies kann zu Verwirrung bei Abfragen führen, bei denen der Alias überlastet ist (z.B. derselbe Name in der inneren Abfrage).
-
-
RETURNING
-Klausel inUPDATE
/MERGE
.-
Reduziert den Bedarf an
SELECT
nach DML. -
Es können nur Werte aus tatsächlich geänderten Zeilen zurückgegeben werden.
-
Nicht für Massenaktualisierungen ohne
FORALL
verwendbar, muss PL/SQL mit expliziterRETURNING BULK COLLECT
verwenden.
-
-
Beitritt zu
UPDATE
undDELETE
.-
Vereinfacht die Logik mehrerer Tabellen.
-
In einigen Kontexten werden nur die Typen
INNER JOIN
undLEFT JOIN
unterstützt. -
Möglicherweise muss die
MERGE
-Logik neu geschrieben werden, wenn ältere Tools verwendet werden oder Kompatibilität mit früheren Oracle-Versionen erforderlich ist.
-
-
Anmerkungen.
-
Toll für Dokumentation.
-
Annotationen sind nur Metadaten und können zur Laufzeit nicht durchgesetzt werden.
-
Erfordert die Verwendung von Oracle Data Dictionary Views (
*_ANNOTATIONS
) zum Abrufen. -
Noch nicht in Export-/Import- oder Replikationstools von Oracle Data Pump integriert.
-
-
Leichte Objekttypen mit SQL-Domains.
-
Wiederverwendbare, konsistente Typdurchsetzung.
-
Noch weniger leistungsfähig als vollständige Objekttypen (keine Methoden, Attribute).
-
Keine Vererbung oder Zusammensetzung, nur für die Durchsetzung primitiver Beschränkungen bestimmt.
-
Standardwerte können nicht in der Domain selbst definiert werden (Standardeinstellungen werden weiterhin auf Spaltenebene angegeben).
-
Allgemeine Einschränkungen
-
Toolkompatibilität: Viele GUI-Tools und ältere Oracle-Clientbibliotheken unterstützen die Oracle Database 23ai-Syntax möglicherweise noch nicht vollständig (insbesondere
VALUES
,BOOLEAN
,DOMAIN
). -
Exportieren/Importieren: Einige Features wie Anmerkungen oder Domains werden möglicherweise nicht in älteren
expdp
/impdp
-Workflows beibehalten. -
Experimentelles Verhalten: Da diese Funktionen neu sind, können sich einige in kleineren Releases weiterentwickeln – überprüfen Sie häufig die Patchhinweise und die Dokumentation.
Verwandte Links
Bestätigungen
- Autor – Aditya Srivastawa (Principal Cloud Architect)
Weitere Lernressourcen
Sehen Sie sich weitere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um ein Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Explore SQL Features in Oracle Database 23ai
G35694-01
Copyright ©2025, Oracle and/or its affiliates.