2 Stimmen

1Z0-007 Prüfungsfrage

Frage: In welchen vier Klauseln kann eine Subquery verwendet werden? (Wählen Sie vier.)

A. in der INTO-Klausel einer INSERT-Anweisung

B. in der FROM-Klausel einer SELECT-Anweisung

C. in der GROUP BY-Klausel einer SELECT-Anweisung

D. in der WHERE-Klausel einer SELECT-Anweisung

E. in der SET-Klausel einer UPDATE-Anweisung

F. in der VALUES-Klausel einer INSERT-Anweisung

Antwort: B, D, E, F

Aber ich denke, die richtigen Antworten sind die folgenden: A, B, D, E ABER NICHT F . Ist es nicht so???

4voto

Lucero Punkte 57715

Nein, B, D, E, F klingt richtig.

Warum sollte Ihrer Meinung nach A gültig sein? Das INTO bezeichnet ein Ziel-Rowset, das keine Subquery sein kann. Und in F können Sie problemlos Unterabfragen verwenden, die einen Einzelwert zurückgeben.

2voto

Alin Purcaru Punkte 41895

Zunächst einmal müssen wir feststellen, dass eine Unterabfrage eine Reihe von Werttupeln (Zeilen) zurückgibt: {(value_1_A, value_1_B, ...), (value_2_A, value_2_B, ...), ...}

A - Die INTO Klausel erwartet einen Tabellennamen, nicht eine Reihe von Werten, so dass Sie keine Unterabfrage verwenden können. Beachten Sie, dass dies nicht vergleichbar ist mit B weil es erlaubt ist, eine anonyme Tabelle abzufragen (eine Reihe von Zeilen, die von einer Unterabfrage zurückgegeben werden), aber es macht keinen Sinn, Werte in eine anonyme Tabelle einzufügen, die nicht verwendet wird.

F - Die VALUES-Klausel der Datei INSERT Anweisung erwartet genau das, was ich gesagt habe, dass eine Unterabfrage eine Reihe von Werten zurückgibt.

Die richtige Antwort lautet B , D , E y F .

Hier finden Sie weitere Informationen zu Unterabfragen: http://www.techonthenet.com/oracle/subqueries.php

0 Stimmen

Insert into (select col1,col2 from table1) values ('k','k') COMMIT; es wird Zeilen in table1 einfügen try

0 Stimmen

Ich habe es mit (MySQL) versucht und es hat nicht funktioniert. Leider kann ich nicht auf Oracle testen, aber ich denke, Ihre Abfrage macht keinen Sinn. Es kann funktionieren, aber es macht keinen Sinn. (Argumente finden Sie in meiner Antwort.)

1 Stimmen

Oracle (und andere RDBMS) erlauben beschreibbare Ansichten, und im Grunde gelten hier die gleichen Regeln für die Unterabfrage. Aber wie ich in meiner Antwort schrieb, kann die Subquery dort nicht generell verwendet werden, sondern nur, wenn sie im Grunde die gleiche Struktur/Regeln wie eine beschreibbare Ansicht verwendet.

2voto

kupa Punkte 1831

Beute an! ...Ich habe etwas sehr Wichtiges gefunden, das meine Behauptung bestätigt...

Unterabfragen in anderen DML-Anweisungen

Unterabfragen können in DML-Anweisungen verwendet werden wie INSERT , UPDATE , DELETE ,

MERGE . Es folgen einige Beispiele für Unterabfragen in DML

Erklärungen.

So aktualisieren Sie das Gehalt aller Mitarbeiter auf das Höchstgehalt in der

die entsprechende Abteilung (korrelierte Unterabfrage):

UPDATE employees e1

SET  salary = (SELECT MAX(salary)

     FROM  employees e2

     WHERE e1.department_id = e2.department_id);

Löschen der Datensätze von Arbeitnehmern, deren Gehalt unter dem Durchschnitt liegt

Gehalt in der Abteilung (unter Verwendung einer korrelierten Unterabfrage):

DELETE FROM employees e

WHERE salary < (SELECT AVG(salary) FROM employees

      WHERE  department_id = e.department_id);

So fügen Sie mithilfe einer Unterabfrage Datensätze in eine Tabelle ein:

INSERT INTO employee_archive

SELECT * FROM employees;

So geben Sie eine Unterabfrage in der VALUES-Klausel der INSERT-Anweisung an:

INSERT INTO departments

       (department_id, department_name)

VALUES ((SELECT MAX(department_id)

         +10 FROM departments), 'EDP');

Sie können auch eine Unterabfrage in den INSERT-, UPDATE- und DELETE-Anweisungen anstelle des Tabellennamens verwenden . Hier ist ein Beispiel:

DELETE FROM

(SELECT * FROM departments

 WHERE department_id < 20)

WHERE department_id = 10;

INSERT INTO (SELECT department_id, department_name

FROM departments

WHERE department_id < 20)

VALUES (35, 'MARKETING');

1 Zeile erstellt.

1voto

Sunil Punkte 11

Subquery kann in der INTO-Klausel einer INSERT-Anweisung verwendet werden. Daher ist A auch die richtige Antwort.

Die folgende Abfrage funktioniert:

insert into (select name from emp) 
values ((select 'sunil' from dual));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X