ch
Feedback
Пишем на SQL

Пишем на SQL

前往频道在 Telegram

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

显示更多
1 891
订阅者
-124 小时
-57
-730
帖子存档
Напоминаю, что на наши курсы действует скидка: Курс "SQL, базы данных, ORACLE, MS SQL Server, MySql" можно пройти за 8.900 р и Курс "Программирование в PL/SQL (ORACLE)" пока стоит 11.900 р Скидка действует до конца этой недели! Подробнее: https://prime-soft.biz/courses

Сегодня получил такой замечательный отзыв - благодарность от ученика курса по SQL и базам данных! Спасибо большое за такие сл
Сегодня получил такой замечательный отзыв - благодарность от ученика курса по SQL и базам данных! Спасибо большое за такие слова!

В столбце COLOR таблицы GOODS указан цвет товара. У многих товаров может быть один и тот же цвет. Какой из запросов ниже вернёт количество возможных цветов товаров (один и тот же цвет не нужно учитывать более одного раза)?
Anonymous voting

Всем доброго понедельника! Лёгкая задачка по SQL. Ставлю одну звезду уровня сложности из пяти.

Между таблицами CLIENTS и CLIENTS_JUR_INFO:
Anonymous voting

В базе данных имеются, среди прочих, таблицы CLIENTS и CLIENTS_JUR_INFO, определённые следующим образом: CREATE TABLE CLIENTS ( ID_CLIENT NUMBER NOT NULL PRIMARY KEY, NAME_CLIENT VARCHAR(100) NOT NULL, PHONE VARCHAR(30) DEFAULT NULL, EMAIL VARCHAR(30) DEFAULT NULL, IS_JUR NUMBER(2) DEFAULT 0 NOT NULL); CREATE TABLE CLIENTS_JUR_INFO ( ID_CLIENT NUMBER NOT NULL PRIMARY KEY, INN VARCHAR(20) DEFAULT NULL, KPP VARCHAR(20) DEFAULT NULL, CONSTRAINT FK1 FOREIGN KEY (ID_CLIENT) REFERENCES CLIENTS (ID_CLIENT));

В таблице 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)? Один и тот же город не должен быть показан в результирующей таблице более одного раза. Полученный список городов клиентов должен быть упорядочен по алфавиту.