Добрый день, дорогие друзья!
Вчера записал видео проверки одной из самостоятельных работ ученика нашего курса программирования в PL/SQL (ORACLE).
И уже смонтировал первый кусочек того, что записал. Вся проверка (с детальным разбором кода ученика и его оптимизацией) заняла около получаса. Пока смонтировал первых примерно минут 15. Ниже выложу ссылку на видео.
Если Вы прошли наш курс "SQL. Базы данных. ORACLE. MS SQL Server. MySql", то можно одним глазком посмотреть что мы изучаем на курсе программирования🙂
Правда я вчера проверял 14 урок курса. Возможно будет не легко 😅
Но мы и на курсе "SQL. Базы данных. ORACLE. MS SQL Server. MySql" немного программируем: создаём триггеры, пишем функции. Поэтому часть, всё же, должна быть понятна! 💪
https://youtu.be/SYVarKc1U0g
Вчера записал видео проверки одной из самостоятельных работ ученика нашего курса программирования в PL/SQL (ORACLE).
И уже смонтировал первый кусочек того, что записал. Вся проверка (с детальным разбором кода ученика и его оптимизацией) заняла около получаса. Пока смонтировал первых примерно минут 15. Ниже выложу ссылку на видео.
Если Вы прошли наш курс "SQL. Базы данных. ORACLE. MS SQL Server. MySql", то можно одним глазком посмотреть что мы изучаем на курсе программирования🙂
Правда я вчера проверял 14 урок курса. Возможно будет не легко 😅
Но мы и на курсе "SQL. Базы данных. ORACLE. MS SQL Server. MySql" немного программируем: создаём триггеры, пишем функции. Поэтому часть, всё же, должна быть понятна! 💪
https://youtu.be/SYVarKc1U0g
YouTube
Программирование в PL/SQL (ORACLE). Массивы, Циклы. ⭐⭐⭐⭐
Уроки программирования в PL/SQL (ORACLE). Разбираем задачу с массивами, циклами. Оптимизация решения, поиск ошибок.
#массив #программирование #программированиедляначинающих #plsql #sql #oracle #циклы #программированиеснуля
#массив #программирование #программированиедляначинающих #plsql #sql #oracle #циклы #программированиеснуля
👍10
Здравствуйте, друзья!
Продолжаем решать SQL задачи!
Есть таблица клиентов CLIENTS, имеющая столбцы ID, DATE_CREATE и NAME, и есть таблица счетов клиентам INVOICES со столбцами ID, DATE_INVOICE, ID_CLIENT и SUM_INVOICE.
Требуется вывести клиентов, которым выставлен хотя бы один счёт.
Предположите, пожалуйста, правильно ли составлен SQL-запрос:
SELECT *
FROM CLIENTS
WHERE EXISTS (SELECT * FROM INVOICES WHERE ID_CLIENT = ID)
Продолжаем решать SQL задачи!
Есть таблица клиентов CLIENTS, имеющая столбцы ID, DATE_CREATE и NAME, и есть таблица счетов клиентам INVOICES со столбцами ID, DATE_INVOICE, ID_CLIENT и SUM_INVOICE.
Требуется вывести клиентов, которым выставлен хотя бы один счёт.
Предположите, пожалуйста, правильно ли составлен SQL-запрос:
SELECT *
FROM CLIENTS
WHERE EXISTS (SELECT * FROM INVOICES WHERE ID_CLIENT = ID)
Правильно ли составлен SQL-запрос?
Anonymous Quiz
36%
Да, запрос вернёт клиентов, имеющих хотя бы один счёт.
64%
Нет, запрос составлен не правильно. Он вернёт неверные данные.
Друзья, всем хорошей пятницы!
У нас есть небольшое объявление:
- теперь по выходным и праздникам будем проверять работу только два раза в день: утром и вечером.
То есть, например, на самостоятельные работы, присланные в обед, ответим вечером!
И, как всегда, немного айти юмора🙂
У нас есть небольшое объявление:
- теперь по выходным и праздникам будем проверять работу только два раза в день: утром и вечером.
То есть, например, на самостоятельные работы, присланные в обед, ответим вечером!
И, как всегда, немного айти юмора🙂
👍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. Может быть проблема при параллельном (единовременном) выполнении этой команды в другой транзакции
14%
3. Не удастся вставить строчку этой командой, если в таблице CLIENTS ещё нет строк.
61%
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
Буду рад, если стало понятнее 😉
👍11
Всем доброй пятницы, дорогие друзья!
Специалистам работы с данными часто необходимы знания нескольких разных инструментов. Например, бывает нужно выгружать данные из базы данных для последующего сравнения, анализа или отчётности в 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