en
Feedback
Пишем на SQL

Пишем на SQL

Open in Telegram

Уроки по SQL. Изучаем базы данных на примере СУБД ORACLE, MySQL, MS SQL Server, PostgreSql Мой курс по SQL и базам данных: https://prime-soft.biz/courses/sql Связь со мной @iliahohlov

Show more
1 900
Subscribers
-124 hours
+17 days
-130 days
Posts Archive
В таблице DOCUMENTS четыре строки. В поле DOC_TYPE в первых двух строках число 1, в двух других строках число 2. Запрос SELECT DISTINCT COUNT(DOC_TYPE) FROM DOCUMENTS вернёт число:
Anonymous voting

Обучение на ошибках (особенно на своих 😀) - один из самых эффективных методов обучения! Здесь нужно было заметить неправильное использование EXISTS. Оператор EXISTS используют для проверки того, возвращается ли что-то подзапросом, указанным в скобках. Как правило, в скобках для оператора EXISTS/NOT EXISTS пишут: SELECT * или: SELECT 1 В задаче выше нарочно допущена ошибка (в EXISTS нарочно написал SELECT COUNT). SELECT COUNT всегда будет возвращать данные. Написанный в скобочках подзапрос всегда будет возвращать количество, хоть и иногда 0. Но данные-то есть. Ноль - это тоже данные. Поэтому EXISTS будет давать TRUE для каждой из трех строчек основного запроса. И еще немного по теме COUNT напомню: COUNT всегда возвращает значение. Никогда не возвращает NULL. Если по условиям WHERE подзапроса не будет подходящих данных, то COUNT вернёт 0, не NULL.

Какое количество строк вернёт запрос SELECT * FROM CLIENTS WHERE EXISTS (SELECT COUNT(*) FROM INVOICES WHERE ID_CLIENT = CLIENTS.ID)
Anonymous voting

В таблице CLIENTS три строки: ID NAME 1 АО "Проблемы и решения" 2 АО "Решения без проблем" 3 ИП "Иванов Иван Иванович" В таблице INVOICES две строки: ID ID_CLIENT DATE_INV 1 1 03.09.2024 2 1 03.09.2024

В таблице INVOICES две строки. В первой строке в столбце QTY число 25, во второй строке в этом же столбце лежит NULL. Каким будет результат запроса: SELECT MIN(QTY) FROM INVOICES
Anonymous voting

Всем доброго понедельника! Надеюсь, неделя началась отлично, или, по крайней мере, не плохо☺️ Предлашаю небольшую задачу по SQL, похожую на одну из тех, что мы с Вами уже решали.

Друзья, всем отличной пятницы! На следующей неделе начинаем интенсив SQL, PostgreSQL! У нас будет: 10 насыщенных онлайн занятий (с записью эфира); Много совместной работы в режиме онлайн! Будет много практики! Готовимся работать, не просто слушать:) Закрытая группа Телеграм с записями наших встреч и кратким конспектом! Здесь же я буду отвечать и на все вопросы по самостоятельным задачам (они тоже будут, работа один-на-один с базой данных обязательна). Сертификат по окончанию он-лайн курса! И помощь в составлении резюме если потребуется! Подробнее: https://prime-soft.biz/courses/postgresql

Сколько строк вернёт следующий запрос: SELECT * FROM CODES JOIN CODES2 ON CODES.CODE = CODES2.CODE
Anonymous voting

Сколько строк вернёт следующий запрос:
Anonymous voting

Друзья, всем добрый день! Очередная задача по SQL!  В базе данных есть две таблицы CODES и CODES2, в каждой из которых есть столбец CODE. В таблицах CODES и CODES2 всего по три строки. В первой строке обеих таблиц в столбце CODE - значение: 1, во второй строке значение тоже 1 и в третьей строке - NULL.

Друзья, до 16го сентября предлагаем пакет курсов: "SQL. Базы данных. ORACLE" и "Программирование в PL/SQL (ORACLE)" по специальной цене: 14.990 ₽ за оба курса! Записаться и оплатить можно картой российского банка на нашем сайте: https://prime-soft.biz/pay/210 Если у Вас нет карты российского банка, но напишите, пожалуйста, нам на info@prime-soft.biz и мы предложим другие способы оплаты из-за границы!

Всем хорошей пятницы! Действительно ли, что: Oracle запрос SQL, использующий условие EXISTS очень неэффективен, так как подзапрос перезапускается для каждой строки в таблице внешнего запроса. Есть более эффективные способы написания большинства запросов, которые бы не использовали условие EXISTS. Ответ: Для решения каждой задачи есть свои эффективные методы. Если EXISTS применяется в основном запросе выборки из небольшой таблицы для проверки данных в большой таблице, и если выборка из большой таблицы будет вестись по индексам, то его использование будет очень эффективно. Вот пример: В таблице клиентов не более 1000 строк. В таблице PAYMENTS миллион строк и таблица проиндексована по столбцу CLIENT_ID. Нужно выбрать клиентов, по которым была хотя бы одна оплата. SELECT *    FROM CLIENTS WHERE EXISTS (SELECT 1 FROM PAYMENTS WHERE PAYMENTS.CLIENT_ID = CLIENTS.CLIENT_ID) По таблице CLIENTS мы видим полный перебор строк (TABLE ACCESS FULL), но с проверкой есть ли платеж по клиенту. Запрос, отбирая клиентов, проверит есть ли в таблице PAYMENTS хотя бы одна строчка с таким CLIENT_ID. Хотя бы одна. И, так как на таблицу PAYMENTS есть индекс для выборки по столбцу CLIENT_ID, то таблица PAYMENTS вообще не будет читаться! Согласно приведённому запросу нам от неё не нужны данные. Нужно просто проверить есть ли строчка, где бы в столбце CLIENT_ID было бы конкретное значение. СУБД посмотрит в индекс и сразу поймёт есть ли строчка с таким то значением CLIENT_ID. Самого чтения миллионной таблицы не будет. Многие СУБД, при правильной их настройке, хранят индексы постоянно используемых таблиц в оперативной памяти. Стоит, всё же, заметить, что при использовании EXISTS или других подзапросов в транзакциях в некоторых СУБД могут быть проблемы. Расскажу об этом дополнительно!

Какой запрос покажет 10 городов клиентов без повторов, расположенных по алфавиту?
Anonymous voting

Всем отличного понедельника! Новая задача с собеседования. Базовый уровень. В базе данных есть таблица адресов клиентов CLIENT_ADDR. Таблица CLIENT_ADDR, среди прочих, имеет столбец CITY_NAME (город). Какой из запросов ниже покажет 10 городов клиентов (10 значений из столбца CITY_NAME)? Один и тот же город не должен быть показан в результирующей таблице более одного раза. Полученный список городов клиентов должен быть упорядочен по алфавиту.

Какая ошибка допущена в указанной SQL команде?
Anonymous voting

Какая ошибка допущена в следующей SQL команде? CREATE VIEW CLIENTS_INFO AS SELECT INN, NAME, PHONE FROM CLIENTS, CLIENT_CONTACTS WHERE CLIENTS.CLIENT_ID = CLIENT_CONTACTS.CLIENT_ID

Как насчёт ещё одной задачи по SQL? Задача-тест с собеседования. Необходимо создать представление (VIEW) с названием CLIENTS_
Как насчёт ещё одной задачи по SQL? Задача-тест с собеседования. Необходимо создать представление (VIEW) с названием CLIENTS_INFO, содержащее следующую информацию о клиентах: INN, NAME, PHONE.

10-ти дневный он-лайн интенсив по SQL и PostgreSql. Начинаем 24.09.2024. У нас уже три участника! Не пропусти! Узнать больше
10-ти дневный он-лайн интенсив по SQL и PostgreSql. Начинаем 24.09.2024. У нас уже три участника! Не пропусти! Узнать больше и записаться можно тут: https://prime-soft.biz/courses/postgresql

Первичный ключ является суррогатным, если он состоит из столбца, который не содержит бизнес-данных и был создан исключительно
Первичный ключ является суррогатным, если он состоит из столбца, который не содержит бизнес-данных и был создан исключительно для возможности идентификации записей.

Пишем на SQL - Statistics & analytics of Telegram channel @sql_oracle_databases