Отсутствует ключевое слово oracle

Обновлено: 07.07.2024

Я пытаюсь выполнить этот запрос ; Grant SELECT on TYPE PPZ_C.BTS_BAUTEIL_STATION_INFO to PPZ_W; и я получаю следующую ошибку: Ошибка, начинающаяся в строке: 3 в команде-Grant SELECT on TYPE PPZ_C.BTS_BAUTEIL_STATION_INFO к отчету об ошибке PPZ_W-ORA-00905: пропущенное ключевое слово 00905. 00000 -.

Если в таблице ASSIGNMENT нет ни одной строки , а ASSIGNMENT_20081120 не является локальной переменной PL/SQL типа ASSIGNMENT%ROWTYPE , это не то, что вам нужно.

Предположим, что вы пытаетесь создать новую таблицу и скопировать существующие данные в эту новую таблицу

Сначала я подумал:

". В Microsoft SQL Server SELECT. INTO автоматически создает новая таблица, в то время как Oracle, по-видимому , требует, чтобы вы вручную создали ее перед выполнением оператора SELECT. INTO . "

Но после создания таблицы вручную она все еще не работала, по-прежнему показывая ошибку "missing keyword".

Поэтому на этот раз я сдался и решил эту проблему, сначала создав таблицу вручную, а затем используя оператор "classic" SELECT :

Что сработало, как и ожидалось. Если кто-нибудь придумает объяснение того, как правильно использовать SELECT. INTO , я буду счастлив!

Вы можете использовать select into внутри блока PLSQL, как показано ниже.

Этот код будет работать только тогда, когда в присваивании будет ровно 1 строка. Обычно вы используете этот код для выбора определенной строки, идентифицируемой номером ключа.

Поздний ответ, но я только сегодня попал в этот список!

СОЗДАЙТЕ ТАБЛИЦУ assignment_20101120 КАК SELECT * FROM assignment;

Делает то же самое.

Хотя это напрямую не связано с точным вопросом OP, но я только что узнал, что использование зарезервированного слова Oracle в вашем запросе (в моем случае псевдоним IN ) может вызвать ту же ошибку.

Или если его в самом запросе в качестве имени поля

Это также приведет к этой ошибке. Я надеюсь, что это кому-то поможет.

Похожие вопросы:

Привет, когда я пытаюсь выполнить следующий запрос oracle , я получаю [Err] ORA-00905: отсутствует ключевое слово CREATE VIEW MJNSXJJRW_view AS SELECT B.oID AS _oid, B.oTm AS _otm FROM (SELECT.

Я пытаюсь создать универсальную процедуру для синхронизации последовательностей. Я хочу вызвать процедуру и передать имя таблицы, столбца и последовательности, но моя процедура не будет запущена.

я пытаюсь это сделать SELECT 'LL' INTO IPA_PRCADJ_HDR(IPAPH_REMARKS) FROM DUAL; но показывает ошибку ORA-00905: отсутствует ключевое слово

Я пытаюсь выполнить этот запрос ; Grant SELECT on TYPE PPZ_C.BTS_BAUTEIL_STATION_INFO to PPZ_W; и я получаю следующую ошибку: Ошибка, начинающаяся в строке: 3 в команде-Grant SELECT on TYPE.

Я работаю над sql developer (11g), я пытаюсь создать эту таблицу, но она не работает, она говорит ORA-00905: отсутствует ключевое слово SQL код CREATE TABLE module( code_mod int NOT NULL, intitule.

У меня есть этот код: select inventory.store_id as store_id, film.title as Titel_Film, count(film.film_id) as Anz_ausleihbar from film join inventory on film.film_id = inventory.film_id join (select.

Может ли кто-нибудь помочь мне со следующим заявлением Oracle SQL. Я получаю ошибку: ORA-00905: отсутствует ключевое слово ALTER TABLE loan_transaction_codes ADD FOREIGN KEY (non_accrual_debit_code).

Для запроса ниже select gi.group_members as ID, em.EMP_NAME as NAME, em.EMAIL as EMAIL from groupinfo gi join empmaster em where gi.group_members= em.'3'|| emp_code || '0'; Я получаю ошибку.

Когда я пытаюсь запустить приведенный ниже запрос в SQL developer, запрос выдает исключение ORA-00905: отсутствует ключевое слово. SQL разработчик не распознает ключевые слова right и join. Я знаю.

У меня есть следующий запрос, который показывает мне ошибку пропущенного ключевого слова в Oracle:

В чем будет заключаться ошибка?

3 ответа

Я пытаюсь объединить две таблицы в oracle, и запрос, который я использую, таков merge into sales_history sh using sales s on (s.prod=sh.prod and s.month=sh.month) when matched update set sh.amount = s.amount when not matched insert (sh.prod,sh.month,sh.amount) values (s.prod,s.month,s.amount);.

Существует несколько способов вернуть значение из execute immediate . Наличие into n в строке не является одним из них.

Ваша ошибка: вам не нужно писать 'into' в своем запросе. Но вы можете добавить его к своему вызову 'execute'. Этот запрос должен работать:

Вот пример кода, о котором вы думаете

Похожие вопросы:

Привет, когда я пытаюсь выполнить следующий запрос oracle , я получаю [Err] ORA-00905: отсутствует ключевое слово CREATE VIEW MJNSXJJRW_view AS SELECT B.oID AS _oid, B.oTm AS _otm FROM (SELECT.

Я пытаюсь изменить таблицу в базе данных Oracle, добавив в нее два новых столбца с помощью запроса SQL, как показано ниже: ALTER TABLE Members ADD annual_dues NUMBER(5,2) not null DEFAULT '52.50'.

Вычеркивая строку SQL: SELECT * INTO assignment_20081120 FROM assignment ; против базы данных в oracle для резервного копирования таблицы под названием присваивание дает мне следующую ошибку ORACLE.

Я пытаюсь объединить две таблицы в oracle, и запрос, который я использую, таков merge into sales_history sh using sales s on (s.prod=sh.prod and s.month=sh.month) when matched update set sh.amount =.

Поэтому в настоящее время я пишу в SQL для своей оценки, и эта ошибка продолжает появляться (отсутствует ключевое слово select, а также отсутствующие скобки) Вот во что я ввожу Oracle: CREATE TABLE.

Может ли кто-нибудь помочь мне со следующим заявлением Oracle SQL. Я получаю ошибку: ORA-00905: отсутствует ключевое слово ALTER TABLE loan_transaction_codes ADD FOREIGN KEY (non_accrual_debit_code).

я не могу понять, какое ключевое слово отсутствует, когда я пытался выполнить нижеприведенный запрос, то, что я хочу, это если startDate и endDate присутствуют между данными else return sysdate-7.

Я получаю эту ошибку SQL ошибка: ORA-00928: отсутствует ключевое слово SELECT 00928. 00000 - отсутствует ключевое слово SELECT` когда я пытаюсь вставить вот так create table certf ( certificate_id.

Я пытаюсь создать простую таблицу в Oracle SQL. Код аналога отлично работает в SQL management studio, но не в Oracle APEX. Следующий запрос: CREATE TABLE Conference( ConferenceID NUMBER GENERATED.

В реляционной алгебре существует операция полуобъединения (semi join), которая, к сожалению, не имеет синтаксического представления в SQL. Если бы синтаксис для данной операции существовал, вероятно, он имел бы следующий вид: LEFT SEMI JOIN и RIGHT SEMI JOIN, аналогичный реализованному в Cloudera Impala.

Что же представляет собой операция «SEMI» JOIN? Рассмотрим следующий воображаемый запрос:

В результате данного запроса мы хотим получить всех актеров, снимавшихся в фильмах, но при этом нам не нужны сами фильмы. Более того, мы не хотим, чтобы данный актер появлялся в результате несколько раз (по одному разу на каждый фильм, в котором он играл), мы хотим получить каждого актера только один (или ноль) раз.

«Semi» – это латинское слово, обозначающее «половину». То есть данная операция реализует «половину объединения», в данном случае, левую половину.

В SQL мы можем использовать два варианта альтернативного синтаксиса, чтобы реализовать операцию «SEMI» JOIN.

Альтернативный синтаксис: EXISTS

Представленный ниже вариант является более мощным и чуть более многословным:

SELECT * FROM film_actor fa

WHERE a.actor_id = fa.actor_id

Мы извлекаем всех актеров, для которых существует (exists) фильм, то есть актеров, сыгравших хотя бы в одном в фильме. При рассмотрении данного синтаксиса (где код, реализующий «SEMI» JOIN, помещен в предложении WHERE) сразу становится очевидно, что мы можем получить в результате каждого актера максимум один раз.

Следует отметить, что в данном синтаксисе отсутствует ключевое слово JOIN. Несмотря на это, большинство СУБД способны распознать, что данный запрос выполняет именно «SEMI» JOIN, а не просто обычным образом использует предикат EXISTS(). Для примера рассмотрим план выполнения приведенного выше запроса в Oracle:


Обратите внимание, Oracle называет эту операцию «HASH JOIN (SEMI)» («SEMI» присутствует в названии).

Аналогично в PostgreSQL:


Аналогично в SQL Server:


Применение «SEMI» JOIN вместо INNER JOIN для решения поставленной задачи не только более корректно, но также обеспечивает преимущество в отношении производительности. Это объясняется тем, что после того, как найдено первое совпадение, СУБД не будет искать другие совпадения!

Альтернативный синтаксис: IN

Варианты синтаксиса на основе IN и EXISTS являются эквивалентными реализациями операции «SEMI» JOIN. Большинство СУБД (за исключением MySQL) сформируют идентичный план выполнения, как для рассмотренного выше запроса на основе EXISTS, так и для представленного ниже запроса на основе IN:

Если ваша СУБД поддерживает оба описанных выше синтаксиса, вы может выбрать любой из них, руководствуясь стилистическими соображениями.

Антиобъединение («ANTI» JOIN)

Операция «ANTI» JOIN является противоположностью операции «SEMI» JOIN. Представим себе следующий воображаемый запрос:

В результате этого запроса мы хотим получить всех актеров, которые не сыграли ни в одном фильме. К сожалению, данная операция также не имеет специального синтаксиса в SQL, но мы можем реализовать ее с помощью NOT EXISTS.

Альтернативный синтаксис: NOT EXISTS

Следующий запрос выполняет поставленную задачу:

(Опасный) альтернативный синтаксис: NOT IN

Будьте осторожны! В то время как синтаксисы на основе EXISTS и IN эквивалентны, синтаксисы на основе NOT EXISTS и NOT IN не эквивалентны. Это связано со спецификой NULL-значений.

В данном конкретном случае представленный ниже запрос на основе NOT IN даст тот же результат, что и предыдущий запрос на основе NOT EXISTS, поскольку таблица film_actor имеет ограничение NOT NULL для столбца film_actor.actor_id:

Однако если бы столбец actor_id мог содержать значения NULL, запрос оказался бы неверным. Не верите? Попробуйте выполнить следующий запрос:

Этот запрос не вернет никакого результата, поскольку NULL является неопределенным (UNKNOWN) значением в SQL. Таким образом, предикат можно переписать следующим образом:

Поскольку невозможно сказать, принадлежит ли actor_id ко множеству значений, одно из которых является неопределенным, весь предикат становится неопределенным:

Подробнее о трехзначной логике вы можете прочитать в этой статье.

Как сказал Лукас Эдер (Lukas Eder): «Никогда не используйте предикат NOT IN в SQL, за исключением тех случаев, когда вы указали в нем константные, не содержащие NULL значения».

Также не стоит полагаться на наличие ограничения NOT NULL, поскольку администратор базы данных может временно отключить это ограничение, и ваш запрос не будет работать. Просто используйте NOT EXISTS.

(Опасный) альтернативный синтаксис: LEFT JOIN / IS NULL

Как ни странно, некоторые люди предпочитают следующий синтаксис:

Этот синтаксис является корректным, поскольку мы выполняем следующее:

  • Объединяем актеров и фильмы.
  • Получаем всех актеров, в том числе не сыгравших ни в одном фильме (LEFT JOIN).
  • Оставляем только тех актеров, которые не сыграли ни в одном фильме (film_id IS NULL).

На мой взгляд, данный вариант синтаксиса является не очень удачным, поскольку он не выражает намерение выполнить «ANTI» JOIN. Кроме того, с большой вероятностью этот запрос будет медленнее аналогов, поскольку оптимизатор СУБД не сможет распознать, что программист хочет выполнить «ANTI» JOIN. Поэтому, вместо данного варианта опять же рекомендуется использовать NOT EXISTS.

Интересную (правда, немного устаревшую) статью, в которой сравниваются три рассмотренных варианта синтаксиса, вы можете найти здесь.

Латеральное объединение (LATERAL JOIN)

Ключевое слово LATERAL появилось в стандарте SQL относительно недавно. Это ключевое слово поддерживается в PostgreSQL и Oracle. СУБД SQL Server предоставляет альтернативный синтаксис на основе ключевого слова APPLY (который лично для меня является предпочтительным). Давайте рассмотрим пример использования ключевого слова LATERAL в PostgreSQL / Oracle:

И правда, вместо того, чтобы выполнять CROSS JOIN, объединяя все отделы со всеми днями, почему бы просто не сгенерировать необходимые дни для каждого отдела? Именно эту задачу и выполняет LATERAL. Ключевое слово LATERAL применяется в качестве префикса для правого операнда любой операции JOIN (в том числе INNER JOIN, LEFT OUTER JOIN и т.д.) и позволяет правому операнду получить доступ к столбцам левого операнда.

Безусловно, здесь больше нет связи с реляционной алгеброй, однако в некоторых случаях подзапрос может быть настолько сложным, что этот подход является единственным способом его использования.

Другим распространенным практическим примером является ситуация, в которой мы хотим объединить результат «топ N» запроса с обычной таблицей. В частности, мы можем запросить каждого актера и 5 его самых кассовых фильмов:

Получим следующий результат:


Не беспокойтесь по поводу длинного списка операций JOIN, таким образом мы просто устанавливаем связь между таблицами film и payment в базе данных Sakila:


Подзапрос вычисляет 5 самых кассовых фильмов каждого актера. Таким образом, это не «классическая» производная таблица, а коррелирующий подзапрос (correlated subquery), возвращающий более чем одну строку и один столбец. Все мы привыкли писать коррелирующие подзапросы следующим образом:

Результатом представленного выше коррелирующего подзапроса является одна строка и один столбец. Если мы хотим возвратить из коррелирующего подзапроса более одной строки и/или более одного столбца, в этом нам поможет LATERAL или APPLY.

Обратите внимание, поскольку совместно с LATERAL мы использовали LEFT OUTER JOIN, для корректности синтаксиса необходимо было использовать предложение ON true. Операция OUTER JOIN с ключевым словом LATERAL всегда возвращает левый операнд JOIN, то есть мы также получаем актеров, которые не сыграли ни в одном фильме.

Свойства

Ключевое слово LATERAL не меняет семантику операции JOIN, к которой применяется. Если мы выполним операцию CROSS JOIN LATERAL, размер результата по-прежнему будет следующим:

Это справедливо даже в том случае, если правая таблица создана построчно на основе левой таблицы.

Альтернативный синтаксис: APPLY

Разработчики SQL Server не стали использовать неоднозначное ключевое слово LATERAL, а вместо этого ввели ключевое слово APPLY (в частности, CROSS APPLY и OUTER APPLY). Ключевое слово APPLY является более обоснованным, поскольку мы действительно применяем (apply) функцию к каждой строке таблицы. Давайте представим, что у нас есть функция generate_series():

Тогда мы можем использовать CROSS APPLY, чтобы вызвать эту функцию для каждого отдела:

Интересной особенностью данного синтаксиса является то, что, как уже было сказано, мы применяем функцию к каждой строке таблицы, и эта функция генерирует строки. Что это вам напоминает? В Java 8 мы можем реализовать это с помощью Stream.flatMap()! Рассмотрим следующий вариант использования потока:

Представленный выше фрагмент кода выполняет следующее:

  • Таблица departments является просто Java-потоком departments.
  • Мы применяем flatMap к потоку departments, используя функцию, которая генерирует кортежи для каждого отдела.
  • Кортежи содержат сам отдел и день, сгенерированный из серии дней, начиная с дня создания (createdAt) отдела.

Таким образом, CROSS APPLY / CROSS JOIN LATERAL в SQL представляют собой то же самое, что и Stream.flatMap() в Java. В целом, SQL и потоки достаточно похожи. Подробнее об этом сходстве вы можете прочитать здесь.

Отметим, что мы можем применить OUTER APPLY (по аналогии с LEFT OUTER JOIN LATERAL) в том случае, когда хотим сохранить левый операнд выражения JOIN.

Объединение на основе MULTISET

Немногие СУБД поддерживают данный тип объединения (на самом деле, только Oracle), но если задуматься, это крайне полезный вариант операции JOIN, позволяющий создавать вложенные коллекции (nested collection). Если бы все СУБД поддерживали эту операцию, нам больше не понадобилось бы объектно-реляционное отображение (object-relational mapping, ORM)!

Рассмотрим гипотетический пример (на основе стандартного синтаксиса SQL, а не синтаксиса Oracle):

Оператор MULTISET принимает коррелирующий подзапрос в качестве аргумента и агрегирует все его результирующие строки во вложенную коллекцию. Эта операция работает аналогично LEFT OUTER JOIN (где мы извлекаем всех актеров, а также все их фильмы, если они снялись в каких-либо фильмах), но вместо того, чтобы дублировать актеров в результате, мы собираем их во вложенную коллекцию.

Те же действия мы выполняли бы в ORM, при извлечении данных в следующую структуру:

Не обращайте внимания на неполные JPA-аннотации, мы просто хотели продемонстрировать силу вложенных коллекций. В отличие от ORM, оператор MULTISET позволяет собирать во вложенные коллекции произвольные результаты коррелирующих подзапросов, а не только фактические сущности (entity). Это обеспечивает такие возможности, о которых ORM может только мечтать.

Альтернативный синтаксис: Oracle

Как мы уже говорили, Oracle поддерживает MULTISET, однако мы не можем создавать ad-hoc вложенные коллекции. По некоторым причинам, разработчики Oracle решили реализовать номинальную типизацию (nominal typing) для этих вложенных коллекций, а не обычную структурную типизацию (structural typing) в SQL-стиле. Поэтому мы должны объявить наши типы заранее:

Чуть более многословно, но все же решает поставленную задачу!

Альтернативный синтаксис: PostgreSQL

К сожалению PostgreSQL не поддерживает MULTISET. Однако эту проблему несложно решить с помощью массивов! Кстати, здесь мы можем использовать структурные типы! Отлично! Следующий запрос возвращает вложенный массив строк:

Результат является объектно-реляционной мечтой каждого! Мы получили вложенные записи и коллекции (и всего два столбца):

Если это вас не впечатляет, тогда что же?

Заключение

Итак, мы рассмотрели множество различных способов объединения таблиц в SQL. Надеемся, вы нашли в этой статье пару новых трюков. Впрочем, JOIN – это лишь одна из многих очень полезных операций SQL.


Каждый должен изучать SQL. Спрос на SQL еще не уменьшился, и на рынке высоко ценится экспертиза SQL. Существует множество поставщиков, предлагающих решения для баз данных, причем Oracle является самой популярной в мире для выполнения OLTP (онлайн-обработка транзакций) и DW (хранилище данных).

Так что, если вы, наконец, нашли работу своей мечты в Oracle, но задаетесь вопросом, как взломать Oracle Interview и какие могут быть возможные вопросы Oracle Interview для 2019 года. Каждое собеседование отличается от других, а объем работы также различен. Помня об этом, мы разработали самые распространенные вопросы и ответы Oracle для 2018 года, чтобы помочь вам добиться успеха в вашем собеседовании.

В этой статье мы рассмотрим наиболее распространенные вопросы интервью с Oracle в 2019 году, которые чаще всего задаются во время интервью. Эти вопросы делятся на две части:

Часть 1 - вопросы интервью с Oracle (базовый уровень)

Эта первая часть охватывает основные вопросы и ответы на собеседования с Oracle

1. Найти ошибку из приведенного ниже SQL-запроса?

Ответ:
SELECT Name, YEAR(BirthDate) AS BirthYear
FROM StudentDetails
WHERE BirthYear >= 1998;
Этот запрос выдаст ошибку в предложении WHERE. Хотя псевдоним указан в предложении SELECT, он не отображается в предложении WHERE. Правильный код можно записать следующим образом:
SELECT Name, YEAR(BirthDate) AS BirthYear
FROM StudentDetails
WHERE YEAR(BirthDate) >= 1998;

2. Что такое Semijoin? Как реализовать это в SQL?

Ответ:
Semijoin возвращает записи из левой таблицы, которые соответствуют правой таблице. Даже если в правой таблице несколько совпадающих записей, Semijoin возвращает одну запись левой таблицы. Это предотвращает дублирование. Semijoin может быть реализован с помощью предложения WHERE EXISTS.

3. Что такое PL / SQL?

Ответ:
PL / SQL - это расширение процедурного языка поверх SQL, предоставляемое Oracle. Это облегчает объявление переменных, функций и условных операторов в синтаксисе SQL, тем самым предоставляя разработчику больше свободы и простоты при разработке сложных запросов.

Давайте перейдем к следующим вопросам интервью Oracle.

4. Как обрабатывать ошибки в PL / SQL?

Ответ:
В PL / SQL условие ошибки называется исключением, а ошибки PL / SQL обрабатываются с помощью блока EXCEPTION. Синтаксис для обработки исключений написан ниже:
DECLARE
.
BEGIN
.
EXCEPTION
WHEN exception1 THEN
.
WHEN exception2 THEN
.
WHEN others THEN
.
END;

5. Каковы ограничения? Как добавить именованное ограничение PRIMARY KEY в SQL?

Ответ:
Это наиболее распространенные вопросы интервью Oracle, задаваемые в интервью. Ограничения - это правила, определенные для данных. Именованное ограничение для первичного ключа может быть добавлено двумя способами:
1. При создании таблицы:
CREATE TABLE Employees (
Eid int NOT NULL,
Name varchar(255) NOT NULL,
Salary number(8),
Age int,
CONSTRAINT PK_ID PRIMARY KEY (Eid)
);
2. В утверждении Alter
ALTER TABLE Employees
ADD CONSTRAINT PK_ID PRIMARY KEY (Eid);

6. Что такое точки сохранения?

Ответ:
Точки сохранения похожи на маркеры. При выполнении длинной транзакции рекомендуется программировать периодические точки сохранения, чтобы мы могли откатиться к точке сохранения в случае сбоя транзакции.

Давайте перейдем к следующим вопросам интервью Oracle.

7. Что такое BLOB?

Ответ:
BLOB - это тип данных больших двоичных объектов. Он используется для хранения неструктурированных данных, таких как видео, аудио или изображения. Максимальная емкость большого двоичного объекта в Oracle составляет 4 ГБ-1.

Часть 2 - вопросы интервью с Oracle (Advanced)

Давайте теперь посмотрим на расширенные вопросы интервью Oracle.

8. Найдите ошибку в приведенном ниже фрагменте кода, если есть?

Ответ:
SELECT student_id s_id, student_name name, birthdate date, student_number s_no FROM students;
Здесь зарезервированное ключевое слово date использовалось в качестве псевдонима для даты рождения столбца. Это действие недопустимо в Oracle SQL. Чтобы установить зарезервированное ключевое слово в качестве псевдонима, мы можем использовать кавычки.
SELECT student_id s_id, student_name name, birthdate “date”, student_number s_no FROM students;

9. Напишите запрос для отображения списка таблиц, принадлежащих пользователю.

Ответ:
Запрос может быть записан как:
SELECT tablespace_name, table_name FROM user_tables;

10. Что такое динамический SQL? Когда использовать динамический SQL?

Ответ:
Динамический SQL является улучшением по сравнению со статическим SQL. Это позволяет писать запросы SQL во время выполнения. Это проявляется, когда нам нужно настроить запросы SQL во время выполнения.
Несколько распространенных случаев, когда можно использовать динамический SQL:
• Если объекты базы данных не существуют во время компиляции, мы можем использовать динамический SQL для ссылки на них.
• Некоторые операторы DDL (язык определения данных) и операторы SCL (язык управления сеансом) не поддерживаются статическим SQL в PL / SQL. Эти операторы могут быть выполнены посредством динамического программирования SQL.
• Динамический SQL может использоваться для выполнения блока Dynamic PL / SQL. Используя предложение EXECUTE IMMEDIATE, вызовы PL / SQL могут быть определены во время выполнения.

11. Что такое триггер базы данных? Как это создать?

Ответ:
Триггер базы данных - это сохраненный блок PL / SQL. База данных Oracle выполняет ее автоматически, когда выполняются определенные условия. Сохраненный блок PL / SQL связан с таблицей, схемой или базой данных. Триггер может быть создан с помощью предложения CREATE TRIGGER. Мы можем включить или отключить его, используя предложения ENABLE и DISABLE инструкции ALTER TABLE или ALTER TRIGGER. Это часто задаваемые вопросы об интервью Oracle в интервью.

Давайте перейдем к следующим вопросам интервью Oracle.

12. Расскажите мне об операциях над множествами в SQL?

Ответ:
UNION, UNION ALL, INTERSECT и MINUS - это различные операторы множеств в Oracle SQL. Оператор UNION объединяет результат двух или более запросов SQL и возвращает результат без дублирования. Операторы UNION ALL работают так же, как оператор UNION, сохраняя дубликаты записей. Оператор INTERSECT возвращает результаты, которые являются общими для всех запросов. Оператор MINUS возвращает результаты, которые являются уникальными для первого запроса и отсутствуют во втором запросе.

13. Каков ответ на запрос ниже? Кроме того, внесите исправление, чтобы приведенный ниже запрос вел себя как ожидалось?

14. Какова цель функций COALESCE и NVL?

Ответ:
Обе функции используются для проверки наличия нулей в указанном столбце и замены его другим значением в случае успешной проверки нуля.
Пример использования:
SELECT NVL(null, 12) FROM DUAL;
SELECT COALESCE(null, null, 12) FROM DUAL;
Функция COALESCE может принимать несколько аргументов, в то время как NVL принимает два аргумента.

15. Какая польза от предложения HAVING?

Ответ:
Предложение HAVING ограничивает агрегированные запросы. После выполнения агрегации с использованием предложения GROUP BY мы можем использовать предложение HAVING, чтобы добавить дополнительные условия к результату.

Вопросы об интервью Oracle - Заключительные мысли

Как правило, разработчик Oracle должен знать основы запросов наряду с продвинутыми концепциями. Здесь мы рассмотрели вопросы, сфокусированные не только на основах программирования на SQL, но и на теоретическом понимании. Быстрый просмотр этой статьи поможет вам лучше понять, чего ожидать во время интервью.

Рекомендуемая статья

Читайте также: