Друзья, всем хорошей пятницы!
У нас есть небольшое объявление:
- теперь по выходным и праздникам будем проверять работу только два раза в день: утром и вечером.
То есть, например, на самостоятельные работы, присланные в обед, ответим вечером!
И, как всегда, немного айти юмора🙂
У нас есть небольшое объявление:
- теперь по выходным и праздникам будем проверять работу только два раза в день: утром и вечером.
То есть, например, на самостоятельные работы, присланные в обед, ответим вечером!
И, как всегда, немного айти юмора🙂
👍4
Пишем на SQL
Как насчёт новой задачки по SQL посложнее? Готовы? Тогда задание следующее: в базе данных есть таблица ORDER_BOXES в которой определено по какому заказу сколько коробок оформлено в доставку, а также указано сколько в каждой коробке штук товара и прочая не…
Всем отличного понедельника, дорогие друзья!
Вы помните, что в конце прошлого года (а именно, прямо под Новый год) я задался мечтой до конца 2023 года набрать 1000 подписчиков на канале. Как Вы думаете, получится?
Было бы здорово!
Надо сказать, что уже октябрь, а мне не хватает ещё почти половины🙂
Совсем ничего страшного! Кому-то интересно время от времени решать задачи по SQL и подписывается на канал, а у кого-то это перестаёт быть важным и поэтому покидает нас.
Но я благодарен Вам за Ваше активное участие при решении задач! Очень радостно видеть Вашу вовлечённость! Особенно приятно было как Вы подошли к задаче, в которой нужно было SQL-запросом выявить некорректную нумерацию коробок в заказах. Посмотрите сколько интересных решений одной задачи! Спасибо Вам!
Ещё, я был бы рад, даже если Вы решили задачу правильно, то рассмотрите другие способы, которыми была решена задача, постарайтесь их понять! Может быть найдёте что-то для себя полезное и сами этим воспользуйтесь в следующий раз!
Вы помните, что в конце прошлого года (а именно, прямо под Новый год) я задался мечтой до конца 2023 года набрать 1000 подписчиков на канале. Как Вы думаете, получится?
Было бы здорово!
Надо сказать, что уже октябрь, а мне не хватает ещё почти половины🙂
Совсем ничего страшного! Кому-то интересно время от времени решать задачи по SQL и подписывается на канал, а у кого-то это перестаёт быть важным и поэтому покидает нас.
Но я благодарен Вам за Ваше активное участие при решении задач! Очень радостно видеть Вашу вовлечённость! Особенно приятно было как Вы подошли к задаче, в которой нужно было SQL-запросом выявить некорректную нумерацию коробок в заказах. Посмотрите сколько интересных решений одной задачи! Спасибо Вам!
Ещё, я был бы рад, даже если Вы решили задачу правильно, то рассмотрите другие способы, которыми была решена задача, постарайтесь их понять! Может быть найдёте что-то для себя полезное и сами этим воспользуйтесь в следующий раз!
❤7👍7
Представляю Вашему вниманию команду INSERT, которая может использоваться в некоторых скриптах для прогрузки в базу данных:
INSERT INTO CLIENTS
(ID, FIO, FILIAL_ID)
SELECT (select max(ID)
from CLIENTS) +1,
'Малинкин В. В.',
1
FROM DUAL
В таблице CLIENTS столбец ID определён как первичный ключ 🔑
Столбец FILIAL_ID определён как внешний ключ. В таблице Филиалов имеется филиал с идентификатором 1.
INSERT INTO CLIENTS
(ID, FIO, FILIAL_ID)
SELECT (select max(ID)
from CLIENTS) +1,
'Малинкин В. В.',
1
FROM DUAL
В таблице CLIENTS столбец ID определён как первичный ключ 🔑
Столбец FILIAL_ID определён как внешний ключ. В таблице Филиалов имеется филиал с идентификатором 1.
Есть ли вероятность возникновения проблемы (или ошибки) при выполнении этой команды?
Anonymous Quiz
2%
1. Команда всегда может быть выполнена и проблем выполнения не имеет.
23%
2. Может быть проблема при параллельном (единовременном) выполнении этой команды в другой транзакции
15%
3. Не удастся вставить строчку этой командой, если в таблице CLIENTS ещё нет строк.
60%
4. Пункты 2 и 3.
Всем доброго понедельника!
Мини тест на внимательность. Найди лишнее!
Мини тест на внимательность. Найди лишнее!
Anonymous Quiz
2%
MIN
1%
MAX
7%
AVG
90%
ABS
Здравствуйте, друзья! Спасибо Вам за тёплые отзывы, которые мы от вас получаем🤗
Это наше вдохновение! 🙂🎉
Это наше вдохновение! 🙂🎉
Здравствуйте, друзья!
Готовы решить задачку по SQL несмотря на субботу 🙂?
Тогда вот:
Запрос SELECT NUM FROM CODES1 возвращает две строки (со значением 1 и 2, соответственно).
Запрос SELECT NUM FROM CODES2 возвращает тоже две строки. В каждой строке значение 2. То есть возвращает две одинаковые строчки.
Какие числа будут получены в результате применения UNION?
SELECT NUM FROM CODES1
UNION
SELECT NUM FROM CODES2
Готовы решить задачку по SQL несмотря на субботу 🙂?
Тогда вот:
Запрос SELECT NUM FROM CODES1 возвращает две строки (со значением 1 и 2, соответственно).
Запрос SELECT NUM FROM CODES2 возвращает тоже две строки. В каждой строке значение 2. То есть возвращает две одинаковые строчки.
Какие числа будут получены в результате применения UNION?
SELECT NUM FROM CODES1
UNION
SELECT NUM FROM CODES2
Какие числа будут получены в результате применения UNION?
Anonymous Quiz
3%
1, 2, 3
66%
1, 2
7%
1, 2, 2
24%
1, 2, 2, 2
👍4
Здравствуйте, друзья!
Всем хороших выходных!
Небольшое видео про UNION и UNION ALL: https://youtu.be/_NwlRLbPSGw
Всем хороших выходных!
Небольшое видео про UNION и UNION ALL: https://youtu.be/_NwlRLbPSGw
YouTube
Для чего нужен UNION. И в чем разница между UNION и UNION ALL
За 1 минуту покажу как работает UNION и в чем разница между UNION и UNION ALL. UNION и UNION ALL нужны для объединения наборов данных, получаемых запросами. Разница состоит в том, что UNION в результате объединения, оставляет только уникальные строки.
Наш…
Наш…
👍11
Всем доброго понедельника!
Объясню немного ответ по предыдущей задаче😌
Операторы UNION и UNION ALL объединяют наборы данных. Селекты получают таблицы данных, а юнионы их "склеивают" по вертикали. Иначе говоря, можно вторым отдельным запросом SELECT продолжить выводить данные после первого SELECT-а.
Первый SELECT вернул таблицу из двух строк (в таблице один столбец):
1
2
Второй запрос SELECT вернул ещё две строчки:
2
2
Написав, UNION между SELECT-ами, мы объединяем строки, полученные первым запросом со строками, которые вернул второй запрос SELECT. Но только объединяем такие строки, которых ещё нет в первом наборе данных. Получается, что ни одну строку из второго набора данных мы не возьмём, так как так во втором наборе данных дубли того, что есть в первом наборе. Если бы у нас были бы дубли строк и в рамках первого набора данных, то они бы тоже исчезли. Осталось бы по одной версии каждой строки.
Вот если бы мы использовали не UNION, а UNION ALL, то в результате объединили бы все строки обоих наборов данных БЕЗ проверки на наличие дублей. И получили бы:
1
2
2
2
Буду рад, если стало понятнее 😉
Объясню немного ответ по предыдущей задаче😌
Операторы UNION и UNION ALL объединяют наборы данных. Селекты получают таблицы данных, а юнионы их "склеивают" по вертикали. Иначе говоря, можно вторым отдельным запросом SELECT продолжить выводить данные после первого SELECT-а.
Первый SELECT вернул таблицу из двух строк (в таблице один столбец):
1
2
Второй запрос SELECT вернул ещё две строчки:
2
2
Написав, UNION между SELECT-ами, мы объединяем строки, полученные первым запросом со строками, которые вернул второй запрос SELECT. Но только объединяем такие строки, которых ещё нет в первом наборе данных. Получается, что ни одну строку из второго набора данных мы не возьмём, так как так во втором наборе данных дубли того, что есть в первом наборе. Если бы у нас были бы дубли строк и в рамках первого набора данных, то они бы тоже исчезли. Осталось бы по одной версии каждой строки.
Вот если бы мы использовали не UNION, а UNION ALL, то в результате объединили бы все строки обоих наборов данных БЕЗ проверки на наличие дублей. И получили бы:
1
2
2
2
Буду рад, если стало понятнее 😉
👍10
Всем доброй пятницы, дорогие друзья!
Специалистам работы с данными часто необходимы знания нескольких разных инструментов. Например, бывает нужно выгружать данные из базы данных для последующего сравнения, анализа или отчётности в Excel.
Я подготовил два бесплатных курса по MS Excel на популярной платформе Stepik. Надо сказать, что это первые два мои курса на этой платформе. Но начало положено!
Базовый курс Excel:
https://stepik.org/course/185640
Знакомство с программой, ячейки, диапазоны, формулы, относительные и абсолютные адреса ячеек, автозаполнение, промежуточные итоги, самые нужные функции, вставка графиков и т.д.
Продвинутый Excel:
https://stepik.org/course/185674
Сводные таблицы, функции анализа данных, ВПР, ГПР, ИНДЕКС, ПОИСКПОЗ и т.д.
Оба курса сопровождаются практическими файлами и небольшими тестами знания материала.
Буду рад Вашему отзыву!
Специалистам работы с данными часто необходимы знания нескольких разных инструментов. Например, бывает нужно выгружать данные из базы данных для последующего сравнения, анализа или отчётности в Excel.
Я подготовил два бесплатных курса по MS Excel на популярной платформе Stepik. Надо сказать, что это первые два мои курса на этой платформе. Но начало положено!
Базовый курс Excel:
https://stepik.org/course/185640
Знакомство с программой, ячейки, диапазоны, формулы, относительные и абсолютные адреса ячеек, автозаполнение, промежуточные итоги, самые нужные функции, вставка графиков и т.д.
Продвинутый Excel:
https://stepik.org/course/185674
Сводные таблицы, функции анализа данных, ВПР, ГПР, ИНДЕКС, ПОИСКПОЗ и т.д.
Оба курса сопровождаются практическими файлами и небольшими тестами знания материала.
Буду рад Вашему отзыву!
👍13❤9
Здравствуйте, друзья!
Всем хорошего понедельника! Предлагаю повторить разницу между типами данных VARCHAR и VARCHAR2 в ORACLE. А заодно расскажу ещё несколько интересных фактов!
Оба типа мы можем использовать в качестве типа данных при создании столбцов в таблице.
Тип VARCHAR2 - это аналог VARCHAR (тоже служит для хранения текстовой информации в столбце) и есть только в СУБД ORACLE.
ORACLE взял за основу VARCHAR и создал у себя такой же тип данных, но немного оптимизировал его.
Итак, VARCHAR2 есть только в ORACLE, то есть это Оракловый тип данных, аналогичный стандартному VARCHAR. Преимущество VARCHAR2 в скорости: поиск по нему ведётся быстрее.
Ещё одно преимущество VARCHAR2: с версии ORACLE 12с значительно увеличен максимальный размер, который можно указывать для этого типа данных.
Для VARCHAR максимальное количество символов 4.000.
Для VARCHAR2 максимальное количество байт 32.767.
При создании столбца в таблице, когда мы указываем тип данных для столбца, мы уточняем сколько максимум символов будет в нём храниться. Например:
CREATE TABLE CLIENTS (
ID NUMBER,
NAME VARCHAR(100),
INN VARCHAR(12)
)
Для VARCHAR мы указываем в скобочках именно количество символов, а для VARCHAR2 - количество байт. По стандарту, для неюникодных баз данных, 1 байт - это один символ. Но для юникодных баз данных 1 символ кодируется двумя байтами, поэтому для VARCHAR2 в юникодных базах данных нужно указывать размер в два раза больший, чем размер символов, который требуется иметь возможность хранить в столбце. То есть наш пример пришлось бы переделать на:
CREATE TABLE CLIENTS (
ID NUMBER,
NAME VARCHAR2(200),
INN VARCHAR2(24)
)
В 2011-ом году, компания Diasoft, поставляющая банковское программное обеспечение, смогла найти клиента в Туркменистане в лице банка Халк Банк. Этот банк стал первым банком с юникодной кодировкой для Diasoft, и фирме пришлось дорабатывать весь софт, расширять максимальное значение VARCHAR2 всех полей всех таблиц в два раза!
Итак, повторим: для VARCHAR в скобочках указывается максимальное количество символов, которое можно хранить в столбце, а для VARCHAR2- максимальное количество байт. Для русского, английского языка 1 байт = 1 символ. ORACLE позволяет с помощью NLS параметров указать другую единицу измерения максимальной длины данных. То есть можно настроить, что для VARCHAR2 тоже будет указываться количество символов, а не байт. Можно настроить как удобно!
И ещё, при объявлении столбца с типом данных VARCHAR2, можно указывать даже явно единицу измерения:
CREATE TABLE CLIENTS (
ID NUMBER,
NAME VARCHAR2(100 BYTE),
INN VARCHAR2(12 CHAR)
)
И напоследок очень важная деталь: для типа данных VARCHAR2 понятие пустой строки и NULL.... это одно и тоже! То есть если в некотором столбце типа данных VARCHAR2 пустая строка, то это NULL. Всех разработчиков это когда то застигает врасплох! Ведь согласно ANSI стандарту пустая строка и NULL - это разные вещи! Но не для VARCHAR2! Дело в том, что ORACLE придумал тип данных VARCHAR2 до того, как появился стандарт ANSI, регламентирующий это. И теперь приходится с этим жить!
Всем хорошего начала рабочей и учебной недели!
Всем хорошего понедельника! Предлагаю повторить разницу между типами данных VARCHAR и VARCHAR2 в ORACLE. А заодно расскажу ещё несколько интересных фактов!
Оба типа мы можем использовать в качестве типа данных при создании столбцов в таблице.
Тип VARCHAR2 - это аналог VARCHAR (тоже служит для хранения текстовой информации в столбце) и есть только в СУБД ORACLE.
ORACLE взял за основу VARCHAR и создал у себя такой же тип данных, но немного оптимизировал его.
Итак, VARCHAR2 есть только в ORACLE, то есть это Оракловый тип данных, аналогичный стандартному VARCHAR. Преимущество VARCHAR2 в скорости: поиск по нему ведётся быстрее.
Ещё одно преимущество VARCHAR2: с версии ORACLE 12с значительно увеличен максимальный размер, который можно указывать для этого типа данных.
Для VARCHAR максимальное количество символов 4.000.
Для VARCHAR2 максимальное количество байт 32.767.
При создании столбца в таблице, когда мы указываем тип данных для столбца, мы уточняем сколько максимум символов будет в нём храниться. Например:
CREATE TABLE CLIENTS (
ID NUMBER,
NAME VARCHAR(100),
INN VARCHAR(12)
)
Для VARCHAR мы указываем в скобочках именно количество символов, а для VARCHAR2 - количество байт. По стандарту, для неюникодных баз данных, 1 байт - это один символ. Но для юникодных баз данных 1 символ кодируется двумя байтами, поэтому для VARCHAR2 в юникодных базах данных нужно указывать размер в два раза больший, чем размер символов, который требуется иметь возможность хранить в столбце. То есть наш пример пришлось бы переделать на:
CREATE TABLE CLIENTS (
ID NUMBER,
NAME VARCHAR2(200),
INN VARCHAR2(24)
)
В 2011-ом году, компания Diasoft, поставляющая банковское программное обеспечение, смогла найти клиента в Туркменистане в лице банка Халк Банк. Этот банк стал первым банком с юникодной кодировкой для Diasoft, и фирме пришлось дорабатывать весь софт, расширять максимальное значение VARCHAR2 всех полей всех таблиц в два раза!
Итак, повторим: для VARCHAR в скобочках указывается максимальное количество символов, которое можно хранить в столбце, а для VARCHAR2- максимальное количество байт. Для русского, английского языка 1 байт = 1 символ. ORACLE позволяет с помощью NLS параметров указать другую единицу измерения максимальной длины данных. То есть можно настроить, что для VARCHAR2 тоже будет указываться количество символов, а не байт. Можно настроить как удобно!
И ещё, при объявлении столбца с типом данных VARCHAR2, можно указывать даже явно единицу измерения:
CREATE TABLE CLIENTS (
ID NUMBER,
NAME VARCHAR2(100 BYTE),
INN VARCHAR2(12 CHAR)
)
И напоследок очень важная деталь: для типа данных VARCHAR2 понятие пустой строки и NULL.... это одно и тоже! То есть если в некотором столбце типа данных VARCHAR2 пустая строка, то это NULL. Всех разработчиков это когда то застигает врасплох! Ведь согласно ANSI стандарту пустая строка и NULL - это разные вещи! Но не для VARCHAR2! Дело в том, что ORACLE придумал тип данных VARCHAR2 до того, как появился стандарт ANSI, регламентирующий это. И теперь приходится с этим жить!
Всем хорошего начала рабочей и учебной недели!
👍25
У нас новый прекрасный отзыв на курс SQL от Дмитрия! 🤗
Дмитрий, спасибо Вам большое!
... ... ...
Вот и настала моя очередь подводить итоги!
Юлия, спасибо Вам большое за помощь, старания объяснить, там где нужно разжевать, за ваше терпение и проделанную работу. Я рад, что у меня был именно такой ментор. Спасибо!)
Курс отлично подходит для новичков, с плавным и детальным погружением в дальнейший материал курса. Четкие и грамотные объяснения, сразу заметно, что Илья, вместе с командой потратили много сил и времени на создание этого курса. И за это ему огромный респект 👍
Илья, вам отдельное спасибо за этот курс! Реально достойный проект!!
Желаю вам и вашей команде удачи и успехов во всех ваших начинаниях!!!
Дмитрий, спасибо Вам большое!
... ... ...
Вот и настала моя очередь подводить итоги!
Юлия, спасибо Вам большое за помощь, старания объяснить, там где нужно разжевать, за ваше терпение и проделанную работу. Я рад, что у меня был именно такой ментор. Спасибо!)
Курс отлично подходит для новичков, с плавным и детальным погружением в дальнейший материал курса. Четкие и грамотные объяснения, сразу заметно, что Илья, вместе с командой потратили много сил и времени на создание этого курса. И за это ему огромный респект 👍
Илья, вам отдельное спасибо за этот курс! Реально достойный проект!!
Желаю вам и вашей команде удачи и успехов во всех ваших начинаниях!!!
👍9
Доброе утро!
Сделал небольшое видео с разбором нескольких последних задач:
https://dzen.ru/video/watch/653a031f9519254e281467e9
Сделал небольшое видео с разбором нескольких последних задач:
https://dzen.ru/video/watch/653a031f9519254e281467e9
Дзен | Видео
SQL задачи на поиск ошибок ⭐⭐⭐ | Илья Хохлов | Дзен
Видео автора «Илья Хохлов» в Дзене 🎦: Задачи по SQL. Поиск ошибок в SQL коде. Практические задачи.
Телеграмм-канал: https://t.me/sql_oracle_databases
Полный курс SQL. Базы данных. ORACLE.
Телеграмм-канал: https://t.me/sql_oracle_databases
Полный курс SQL. Базы данных. ORACLE.
❤🔥5👍2
Добрый день, друзья!
Предлагаю рассмотреть очередную задачу с собеседования! В базе данных имеется таблица CLIENTS со столбцами: ID_CLIENT, NAME_CLIENT, ADDR_CLIENT. Какой будет результат работы запроса: SELECT ID_CLIENT FROM CLIENTS ORDER BY 2 DESC
Предлагаю рассмотреть очередную задачу с собеседования! В базе данных имеется таблица CLIENTS со столбцами: ID_CLIENT, NAME_CLIENT, ADDR_CLIENT. Какой будет результат работы запроса: SELECT ID_CLIENT FROM CLIENTS ORDER BY 2 DESC
Anonymous Quiz
3%
Будут выведены идентификаторы клиентов в прямом порядке
9%
Будут выведены идентификаторы клиентов в обратном порядке
36%
Будут выведены идентификаторы клиентов, но с сортировкой по другому столбцу
51%
Будет ошибка выполнения SQL-запроса