Comments 28
с пунктом 50 сильно ошибаетесь
with req_table (fields...) as (
select fields… from table t1
union all
select fields… from req_table t2…
)
with req_table (fields...) as (
select fields… from table t1
union all
select fields… from req_table t2…
)
Доброго времени суток. Ну… как сказать) Тут дело в терминологии. Экзамен так требует. В рамках экзамена — если речь идет о «Hierarchical query», то наличие start with и connect обязательно. Ну а в жизни, разумеется, все по разному можно представить и интерпретировать)
сдали экзамен?
Пункт 25 не совсем понятен. Это значит, что сделать колонку NULL или NOT NULL после создания таблицы уже нельзя?
Нет. Конечно можно. Просто есть два метода создания и модификации constraint-ов: inline и outline. Ну так вот, NOT NULL — может быть создани модифицирован только inline методом.
а если сделать так:
create table sample (a number not null, b number);
alter table sample add constraint(check b is not null);
(в синтаксической верности второй команды не уверен, а oracle под рукой нет, чтобы проверить).
Так вот, если посмотреть словарь данных, то будет ли разница между полями A и B? Насколько я помню, никакой.
create table sample (a number not null, b number);
alter table sample add constraint(check b is not null);
(в синтаксической верности второй команды не уверен, а oracle под рукой нет, чтобы проверить).
Так вот, если посмотреть словарь данных, то будет ли разница между полями A и B? Насколько я помню, никакой.
>> 18. DISTINCT можно использовать с любой из агрегирующих функций.
Почему-то справедливо только для чистого sql. В PLSQL, например,
Вернёт ora-30482. Справедливо и для некоторых других вроде collect\listagg.
Почему-то справедливо только для чистого sql. В PLSQL, например,
declare
t char;
begin
select stringagg(distinct dummy) into t
from dual;
end;
Вернёт ora-30482. Справедливо и для некоторых других вроде collect\listagg.
1. PL/SQL не рассматривается на экзамене.
2. Я не встречал никогда данную функцию. Она built-in? Может устаревшая? В референсе тоже о ней ничего не сказано. Если есть информация, то скиньте линк, пожалуйста.
3. Иcпользуйте listagg.
4. Должен с Вами согласиться (из документации):
Many (but not all) aggregate functions that take a single argument accept these clauses:
DISTINCT and UNIQUE, which are synonymous, cause an aggregate function to consider only distinct values of the argument expression. The syntax diagrams for aggregate functions in this chapter use the keyword DISTINCT for simplicity.
ALL causes an aggregate function to consider all values, including all duplicates.
2. Я не встречал никогда данную функцию. Она built-in? Может устаревшая? В референсе тоже о ней ничего не сказано. Если есть информация, то скиньте линк, пожалуйста.
3. Иcпользуйте listagg.
4. Должен с Вами согласиться (из документации):
Many (but not all) aggregate functions that take a single argument accept these clauses:
DISTINCT and UNIQUE, which are synonymous, cause an aggregate function to consider only distinct values of the argument expression. The syntax diagrams for aggregate functions in this chapter use the keyword DISTINCT for simplicity.
ALL causes an aggregate function to consider all values, including all duplicates.
п. 11 неверен.
Если в списке есть NULL, то not in (..) вернёт NULL.
Разница в том, что
NOT FALSE = TRUE
NOT NULL = NULL
другими словами where X not in (1,2,3,NULL) и where not(x not in (1,2,3,NULL)) вернут одинаково пустые множества.
Если в списке есть NULL, то not in (..) вернёт NULL.
Разница в том, что
NOT FALSE = TRUE
NOT NULL = NULL
другими словами where X not in (1,2,3,NULL) и where not(x not in (1,2,3,NULL)) вернут одинаково пустые множества.
Доброго времени суток. Правильно. Я подразумевал, что FALSE вернет все WHERE-условие. Поправил.
Ну опять же ерунду написали. Откройте хотя бы документацию и посмотрите, чем NULL отличается от FALSE:
NULL AND FALSE = FALSE
NULL AND TRUE = NULL
NULL OR TRUE = TRUE
NULL OR FALSE = NULL
NULL — это не FALSE и не TRUE, это что-то типа «ХЗ». То есть NULL это не TRUE, но и NOT NULL — это тоже не TRUE, а отсюда возможны всякие забавные спецэффекты.
NULL AND FALSE = FALSE
NULL AND TRUE = NULL
NULL OR TRUE = TRUE
NULL OR FALSE = NULL
NULL — это не FALSE и не TRUE, это что-то типа «ХЗ». То есть NULL это не TRUE, но и NOT NULL — это тоже не TRUE, а отсюда возможны всякие забавные спецэффекты.
Максимальная размерность… RAW = 4000 байт
Небольшая поправка:
Лимит для RAW = 2000 байт (если MAX_STRING_SIZE = STANDARD)
Сдавать данный экзамен можно сразу или требуются последовательно сдать Associate -> Professional?
На сайте вроде как не указано, что нужно иметь эти сертификаты. Но тогда вопрос — почему для Professional нужен Associate?
На сайте вроде как не указано, что нужно иметь эти сертификаты. Но тогда вопрос — почему для Professional нужен Associate?
п.36. Наверное имеется ввиду DDL, вместо DML.
Надеюсь тут просто опечатка насчет DML?
#36. Случаи, когда транзакция насильно завершается:
#…
#Пользователь издал любую DML или DCL команду.
#…
#36. Случаи, когда транзакция насильно завершается:
#…
#Пользователь издал любую DML или DCL команду.
#…
24 пункт ложный
select 'hello world'
from dual
having count(*)>1
вполне себе рабочий запрос где having без group by
select 'hello world'
from dual
having count(*)>1
вполне себе рабочий запрос где having без group by
Добрый день. Да ну) Рабочий значит запрос) Ну тогда покажите, пожалуйста, как Вы в ORACLE DB таким запросом извлечете данные из реального столбца? Или хотя бы, попробуйте, прокрутить вот этот запрос:
select dummy
from dual
having count(*)>1
Вывести количество строк таблицы если этих строк больше нуля. Случай частный
select count(*) from tbl having count(*)>1
1. я не утверждаю что этим запросом Вы решите свою бизнес задачу.
2. я увидел ошибку в утверждении п.24 — и написал это.
select count(*) from tbl having count(*)>1
1. я не утверждаю что этим запросом Вы решите свою бизнес задачу.
2. я увидел ошибку в утверждении п.24 — и написал это.
Доброго времени суток!
Спасибо Вам за комментарий!
Я понял, что Вы имеете ввиду. Правильно: данное выражение сработает и не выдаст ошибочки при компиляции. Но не в этом суть.
А суть п.24 в том, что нельзя использовать HAVING, если не происходит агрегации (т.е. GROUP). Поскольку, вопросы на экзамене, больше приближены к решению поседневных задач, следует настраиваться именно на это.
В тестовых же условиях — ради Бога :) Можете извращаться как угодно :)
В том числе, и выводить количество строк таблицы, «если этих строк больше нуля» :)
«если этих строк больше нуля» — вот чтобы понять каких же именно строк, то их надо сначала сгруппировать по какому-либо признаку, например:
Так что пункт гласит не синтаксическое правило. А логическое.
В любом случае, еще раз спасибо за реакцию!
Спасибо Вам за комментарий!
Я понял, что Вы имеете ввиду. Правильно: данное выражение сработает и не выдаст ошибочки при компиляции. Но не в этом суть.
А суть п.24 в том, что нельзя использовать HAVING, если не происходит агрегации (т.е. GROUP). Поскольку, вопросы на экзамене, больше приближены к решению поседневных задач, следует настраиваться именно на это.
В тестовых же условиях — ради Бога :) Можете извращаться как угодно :)
В том числе, и выводить количество строк таблицы, «если этих строк больше нуля» :)
«если этих строк больше нуля» — вот чтобы понять каких же именно строк, то их надо сначала сгруппировать по какому-либо признаку, например:
WITH tbl
AS (SELECT 'критерий1' criteria FROM DUAL
UNION ALL
SELECT 'критерий1' criteria FROM DUAL
UNION ALL
SELECT 'критерий2' criteria FROM DUAL
UNION ALL
SELECT 'критерий2' criteria FROM DUAL
UNION ALL
SELECT 'критерий2' criteria FROM DUAL
UNION ALL
SELECT 'критерий3' criteria FROM DUAL
UNION ALL
SELECT 'критерий3' criteria FROM DUAL
UNION ALL
SELECT 'критерий3' criteria FROM DUAL
UNION ALL
SELECT 'критерий3' criteria FROM DUAL)
SELECT criteria, COUNT (*)
FROM tbl
GROUP BY criteria
HAVING COUNT (*) > 1
Так что пункт гласит не синтаксическое правило. А логическое.
В любом случае, еще раз спасибо за реакцию!
Sign up to leave a comment.
Выходим на уровень эксперта! 50 оттенков экзамена 1Z0-047 (сертификация Oracle Database SQL Certified Expert)