Друзья, если вы ответили не правильно и если не понятно пояснение правильного ответа, то можете написать в комментариях почему выбрали вашу строку (которую считаете ошибочной в запросе). Я поясню почему она правильная👍
Доброе утро, друзья!
Что оптимальнее для ORACLE писать в блоке SELECT подзапроса, проверяющего наличие записи в другой таблице, звёздочку:
SELECT *
FROM Persons p
WHERE EXISTS (SELECT * FROM PersonCars WHERE PersonID = p.PersonID)
или псевдостолбец:
SELECT *
FROM Persons p
WHERE EXISTS (SELECT 1 FROM PersonCars WHERE PersonID = p.PersonID)
Как ответил, один из разработчиков ORACLE, для СУБД по трудозатратам это даст равнозначные показатели! Поэтому можно писать как больше нравится 🙂👍
Что оптимальнее для ORACLE писать в блоке SELECT подзапроса, проверяющего наличие записи в другой таблице, звёздочку:
SELECT *
FROM Persons p
WHERE EXISTS (SELECT * FROM PersonCars WHERE PersonID = p.PersonID)
или псевдостолбец:
SELECT *
FROM Persons p
WHERE EXISTS (SELECT 1 FROM PersonCars WHERE PersonID = p.PersonID)
Как ответил, один из разработчиков ORACLE, для СУБД по трудозатратам это даст равнозначные показатели! Поэтому можно писать как больше нравится 🙂👍
👍7
В конце прошлой недели получил хорошую новость: моя книга "Курс SQL. Базы данных. ORACLE" стала доступна и в Google. Books!
https://play.google.com/store/books/details?id=MLSREAAAQBAJ
https://play.google.com/store/books/details?id=MLSREAAAQBAJ
👍7
Предлагаю ещё одну похожую задачу. В следующем SQL-коде в одной из строчек ошибка.
SELECT v.VOUCHER_DATE,
v.VOUCHER_STATE,
NULL CREATE_USER,
NULL ADD_INFO,
v.USER_ID
FROM VOUCHERS v
UNION ALL
SELECT ov.VOUCHER_DATE,
2 VOUCHER_STATE,
NULL CREATE_USER,
NULL
FROM OLD_VOUCHERS ov
LEFT JOIN CLIENTS c
ON c.ID_CLIENT = ov.ID_CLIENT
WHERE c.ID_CLIENT IS NULL
ORDER BY 1
SELECT v.VOUCHER_DATE,
v.VOUCHER_STATE,
NULL CREATE_USER,
NULL ADD_INFO,
v.USER_ID
FROM VOUCHERS v
UNION ALL
SELECT ov.VOUCHER_DATE,
2 VOUCHER_STATE,
NULL CREATE_USER,
NULL
FROM OLD_VOUCHERS ov
LEFT JOIN CLIENTS c
ON c.ID_CLIENT = ov.ID_CLIENT
WHERE c.ID_CLIENT IS NULL
ORDER BY 1
В каком блоке ошибка, если известно, что все используемые таблицы в базе данных существуют и имена столбцов написаны правильно?
Anonymous Quiz
36%
В блоке SELECT одного из запросов
26%
В соединении во втором SELECT-е
17%
В блоке WHERE во втором SELECT-е
21%
В блоке ORDER BY
👍5
Две из нижеприведённых функций в ORACLE во многих случаях могут равноценно заменять друг друга (работают одинаково), а другая работает по-другому. Какая?
Anonymous Quiz
10%
NVL
55%
NVL2
36%
COALESCE
👍3
Здравствуйте, друзья!
Следующий вопрос для тех, кто уже прошёл 25ый урок нашего курса. Посложнее 🙂💪
Следующий вопрос для тех, кто уже прошёл 25ый урок нашего курса. Посложнее 🙂💪
Имеется новая пустая таблица, с привязанным к ней сиквенсом для генерации значений идентификаторов в столбец ID. При выполнили первых двух команд INSERT, вставились две строки в таблицу с идентификаторами в столбце ID 1 и 2, соответственно. Потом решили начать добавление строк заново, выполнив ROLLBACK. Произведённая вставка двух строк, естественно, откатилась. Таблица стала снова пустой. Снова выполняем команду INSERT.
Строчка с каким идентификатором в столбец ID будет вставлена?
Anonymous Quiz
22%
1
4%
2
58%
3
4%
4
6%
NULL
6%
Будет ошибка выполнения команды INSERT
Спасибо всем за участие в тесте! 🙂 Почти все ответили правильно! 👍
С началом новой рабочей и учебной недели!
И вот ещё одна задачка на тему транзакций 😌
Есть пустая таблица Table1, выполнили следующие команды к ней:
Insert into Table1...; вставка 1 строки
Insert into Table1...; вставка 1 строки
Alter table ...; добавили один столбец
Insert into Table1...; вставка 1 строки
Rollback;
И вот ещё одна задачка на тему транзакций 😌
Есть пустая таблица Table1, выполнили следующие команды к ней:
Insert into Table1...; вставка 1 строки
Insert into Table1...; вставка 1 строки
Alter table ...; добавили один столбец
Insert into Table1...; вставка 1 строки
Rollback;
Какая цифра будет в результате выполнения запроса:
Select count(*) from Table1
Select count(*) from Table1
Anonymous Quiz
23%
0
11%
1
41%
2
12%
3
14%
NULL
👍3
Доброе утро!
Подготовил небольшое видео с решениями нескольких задач, которые мы с Вами разобрали:
https://dzen.ru/video/watch/637830fcbe4db80030157f94
Подготовил небольшое видео с решениями нескольких задач, которые мы с Вами разобрали:
https://dzen.ru/video/watch/637830fcbe4db80030157f94
Дзен.Видео
Илья Хохлов | Решаем задачи по SQL ORACLE
Отвечаем на вопросы и решаем задачи по SQL с нашего телеграмм-канала: https://t.me/sql_oracle_databases
👍7🔥2👏1
Всем привет!
Предлагаю ещё один вопрос по базам данных:
В базе данных есть таблица PERSONS, хранящая сведения о сотрудниках компании. Телефоны сотрудников рабочие и мобильные хранятся в отдельной таблице PHONES.
Предлагаю ещё один вопрос по базам данных:
В базе данных есть таблица PERSONS, хранящая сведения о сотрудниках компании. Телефоны сотрудников рабочие и мобильные хранятся в отдельной таблице PHONES.
👍2
Если мы решим хранить мобильный телефон ещё и в таблице PERSONS (создадим новый для этого столбец), то это будет:
Anonymous Quiz
18%
Полиморфизм
68%
Денормализация
14%
Объектно-ориентированное программирование
👍4
Друзья, всем привет!
Очень хочу объяснить что такое ПОЛИМОРФИЗМ в языках программирования.
Это возможность создавать методы (функции, процедуры) с одним и тем же именем!
То есть можно иметь несколько функций, которые будут называться одинаково!!! 😌
Как программа узнает какую из функций выполнять, когда мы вызовем функцию по имени?! Ответ прост: функции должны иметь разные наборы параметров. Будет выполнена именно та функция, которой подойдёт набор параметров, указанный при её вызове!
Очень хочу объяснить что такое ПОЛИМОРФИЗМ в языках программирования.
Это возможность создавать методы (функции, процедуры) с одним и тем же именем!
То есть можно иметь несколько функций, которые будут называться одинаково!!! 😌
Как программа узнает какую из функций выполнять, когда мы вызовем функцию по имени?! Ответ прост: функции должны иметь разные наборы параметров. Будет выполнена именно та функция, которой подойдёт набор параметров, указанный при её вызове!
👍10🔥3
Здравствуйте, друзья!
В языке SQL в группе DML (команды для работы с ДАННЫМИ) есть 4 основные команды:
SELECT - выборка, чтение данных;
INSERT - добавление новых строк данных в таблицы;
UPDATE - изменение данных;
DELETE - удаление данных.
Есть ещё одна команда - MERGE.
Это универсальная команда заливки данных в таблицу, которая будет сама выбирать добавлять ли новые строки или редактировать информацию в существующих (сама выбирает для каких строк делать INSERT, а каким UPDATE) 🙂
КАК РАБОТАЕТ MERGE?
MERGE, как и INSERT, добавляет данные в целевую таблицу, но ей можно указать набор столбцов по которому предварительно проверять на наличие таких же записей в целевой таблице. Если по этим ключевым столбцам MERGE находит уже существующие такие же данные в целевой таблице, то эта команда обновляет данные этих строк. Можно указать конкретно какие столбцы должны быть обновлены, информация в каких столбцах должна быть обновлена (из источника).
В языке SQL в группе DML (команды для работы с ДАННЫМИ) есть 4 основные команды:
SELECT - выборка, чтение данных;
INSERT - добавление новых строк данных в таблицы;
UPDATE - изменение данных;
DELETE - удаление данных.
Есть ещё одна команда - MERGE.
Это универсальная команда заливки данных в таблицу, которая будет сама выбирать добавлять ли новые строки или редактировать информацию в существующих (сама выбирает для каких строк делать INSERT, а каким UPDATE) 🙂
КАК РАБОТАЕТ MERGE?
MERGE, как и INSERT, добавляет данные в целевую таблицу, но ей можно указать набор столбцов по которому предварительно проверять на наличие таких же записей в целевой таблице. Если по этим ключевым столбцам MERGE находит уже существующие такие же данные в целевой таблице, то эта команда обновляет данные этих строк. Можно указать конкретно какие столбцы должны быть обновлены, информация в каких столбцах должна быть обновлена (из источника).
👍20