Пишем на SQL
1.92K subscribers
38 photos
6 videos
7 files
97 links
Уроки по SQL. Изучаем базы данных на примере СУБД ORACLE, MySQL, MS SQL Server, PostgreSql
Download Telegram
Друзья, если вы ответили не правильно и если не понятно пояснение правильного ответа, то можете написать в комментариях почему выбрали вашу строку (которую считаете ошибочной в запросе). Я поясню почему она правильная👍
Доброе утро, друзья!

Что оптимальнее для 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
👍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
В каком блоке ошибка, если известно, что все используемые таблицы в базе данных существуют и имена столбцов написаны правильно?
Anonymous Quiz
36%
В блоке SELECT одного из запросов
26%
В соединении во втором SELECT-е
17%
В блоке WHERE во втором SELECT-е
21%
В блоке ORDER BY
👍5
Две из нижеприведённых функций в ORACLE во многих случаях могут равноценно заменять друг друга (работают одинаково), а другая работает по-другому. Какая?
Anonymous Quiz
10%
NVL
55%
NVL2
36%
COALESCE
👍3
Здравствуйте, друзья!

Следующий вопрос для тех, кто уже прошёл 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;
Какая цифра будет в результате выполнения запроса:
Select count(*) from Table1
Anonymous Quiz
23%
0
11%
1
41%
2
12%
3
14%
NULL
👍3
Доброе утро!
Подготовил небольшое видео с решениями нескольких задач, которые мы с Вами разобрали:
https://dzen.ru/video/watch/637830fcbe4db80030157f94
👍7🔥2👏1
Всем привет!
Предлагаю ещё один вопрос по базам данных:
В базе данных есть таблица 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 находит уже существующие такие же данные в целевой таблице, то эта команда обновляет данные этих строк. Можно указать конкретно какие столбцы должны быть обновлены, информация в каких столбцах должна быть обновлена (из источника).
👍20