Друзья, LEFT JOIN (левое соединение) и LEFT OUTER JOIN (левое ВНЕШНЕЕ соединение) - это одно и тоже. Левое соединение оно всегда внешнее. На заре SQL, для создания левого соединения, писали LEFT OUTER JOIN. Но, из-за того, что LEFT JOIN итак всегда OUTER (внешнее), смысл этого слова постепенно отпал. Необходимость использования этого слова упразднили и оно стало не обязательным. Его наличие или отсутствие при составлении левого соединения ничего не меняет.
👍23🔥7
Всем кому актуально обучение по SQL и PostgreSql, приглашаю на интенсив!
Начинаем 24 сентября во вторник!
10 онлайн встреч со мной минимум по 1.5 часа. Обучаться будем так же: вт и чт в 19:30 и сб в 9:30.
Закрытая Телеграм группа с записью всех эфиров (на случай, если пропустите).
Цена сейчас: 8.900 р за все!
Посмотреть мощную программу курса, а также записаться на него можно здесь:
https://prime-soft.biz/courses/postgresql
Вопросы пишите, пожалуйста, под постом.
Буду Вас ждать!
Начинаем 24 сентября во вторник!
10 онлайн встреч со мной минимум по 1.5 часа. Обучаться будем так же: вт и чт в 19:30 и сб в 9:30.
Закрытая Телеграм группа с записью всех эфиров (на случай, если пропустите).
Цена сейчас: 8.900 р за все!
Посмотреть мощную программу курса, а также записаться на него можно здесь:
https://prime-soft.biz/courses/postgresql
Вопросы пишите, пожалуйста, под постом.
Буду Вас ждать!
prime-soft.biz
Prime | Курс SQL, PostgreSql
Уроки и курсы SQL, PostgreSQL, Базы данных.
👍2
Всех с днём знаний и доброго понедельника!
Начинаем рабочую неделю как всегда с разминки по SQL! Задача с собеседования. Базовый уровень.
Начинаем рабочую неделю как всегда с разминки по SQL! Задача с собеседования. Базовый уровень.
🔥4
Необходимо добавить новый столбец ADDRESS с типом данных VARCHAR(250) в существующую таблицу PERSONS.
Anonymous Quiz
7%
INTO TABLE PERSONS ADD ADDRESS VARCHAR(250)
5%
UPDATE TABLE PERSONS ALTER COLUMN ADDRESS VARCHAR(250)
14%
UPDATE TABLE PERSONS ADD COLUMN ADDRESS VARCHAR(250)
60%
ALTER TABLE PERSONS ADD ADDRESS VARCHAR(250)
14%
ALTER TABLE PERSONS ALTER COLUMN ADDRESS(250)
В SQL запросах допустимо соединение таблиц с помощью ключевого слова JOIN без указания типа соединения (LEFT, RIGHT и т.д.). Например:
SELECT *
FROM CLIENTS c
JOIN INVOICES i
ON i.ID_CLIENT = c.ID
SELECT *
FROM CLIENTS c
JOIN INVOICES i
ON i.ID_CLIENT = c.ID
Такое написание означает:
Anonymous Quiz
73%
INNER JOIN
11%
LEFT JOIN
3%
RIGHT JOIN
9%
FULL JOIN
2%
CROSS JOIN
2%
что СУБД сама должна выбрать нужный тип соединения
В таблице GOODS ("Товары") для уникальной идентификации записей использовался столбец ARTICLE ("Артикул товара"). Этот столбец был установлен в качестве первичного ключа. С некоторыми последними доработками и расширением функционала, возникла необходимость наличия товаров с одинаковым артикулом. Для идентификации товаров пришлось создать новый отдельный столбец "ID" со сквозной нумерацией.
Этот новый столбец будет являться:
Anonymous Quiz
39%
первичным ключом
23%
суррогатным ключом
21%
первичным и суррогатным ключом
9%
внешним ключом
8%
первичным и внешним ключом
10-ти дневный он-лайн интенсив по SQL и PostgreSql. Начинаем 24.09.2024. У нас уже три участника! Не пропусти! Узнать больше и записаться можно тут: https://prime-soft.biz/courses/postgresql
🔥4❤2
Какая ошибка допущена в следующей SQL команде?
CREATE VIEW CLIENTS_INFO
AS SELECT INN, NAME, PHONE
FROM CLIENTS, CLIENT_CONTACTS
WHERE CLIENTS.CLIENT_ID = CLIENT_CONTACTS.CLIENT_ID
CREATE VIEW CLIENTS_INFO
AS SELECT INN, NAME, PHONE
FROM CLIENTS, CLIENT_CONTACTS
WHERE CLIENTS.CLIENT_ID = CLIENT_CONTACTS.CLIENT_ID
Какая ошибка допущена в указанной SQL команде?
Anonymous Quiz
15%
В блоке SELECT нужно указывать из каких таблиц взяты данные, т.е. INN.CLIENTS, NAME.CLIENTS, ...
13%
Перед SELECT есть AS, который не нужен
5%
Вместо CREATE VIEW CLIENTS_INFO нужно писать CREATE CLIENTS_INFO VIEW
21%
Не нужно указывать обе таблицы в блоке FROM
47%
В блоке SELECT нужно указывать из каких таблиц взяты данные, т.е. CLIENTS.INN, CLIENTS.NAME, ...
👍2
Всем отличного понедельника!
Новая задача с собеседования. Базовый уровень.
В базе данных есть таблица адресов клиентов CLIENT_ADDR. Таблица CLIENT_ADDR, среди прочих, имеет столбец CITY_NAME (город). Какой из запросов ниже покажет 10 городов клиентов (10 значений из столбца CITY_NAME)? Один и тот же город не должен быть показан в результирующей таблице более одного раза. Полученный список городов клиентов должен быть упорядочен по алфавиту.
Новая задача с собеседования. Базовый уровень.
В базе данных есть таблица адресов клиентов CLIENT_ADDR. Таблица CLIENT_ADDR, среди прочих, имеет столбец CITY_NAME (город). Какой из запросов ниже покажет 10 городов клиентов (10 значений из столбца CITY_NAME)? Один и тот же город не должен быть показан в результирующей таблице более одного раза. Полученный список городов клиентов должен быть упорядочен по алфавиту.
Какой запрос покажет 10 городов клиентов без повторов, расположенных по алфавиту?
Anonymous Quiz
3%
SELECT CITY_NAME FROM CLIENT_ADDR ORDER BY CITY_NAME LIMIT 10
6%
SELECT CITY_NAME FROM CLIENT_ADDR SORT BY CITY_NAME DESC LIMIT 10
6%
SELECT DISTINCT CITY_NAME FROM CLIENT_ADDR GROUP BY CITY_NAME LIMIT 11
85%
SELECT DISTINCT CITY_NAME FROM CLIENT_ADDR ORDER BY CITY_NAME LIMIT 10
❤5
Всем хорошей пятницы!
Действительно ли, что:
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 или других подзапросов в транзакциях в некоторых СУБД могут быть проблемы.
Расскажу об этом дополнительно!
Действительно ли, что:
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 или других подзапросов в транзакциях в некоторых СУБД могут быть проблемы.
Расскажу об этом дополнительно!
👍9
Друзья, всем добрый день!
Очередная задача по SQL!
В базе данных есть две таблицы CODES и CODES2, в каждой из которых есть столбец CODE. В таблицах CODES и CODES2 всего по три строки. В первой строке обеих таблиц в столбце CODE - значение: 1, во второй строке значение тоже 1 и в третьей строке - NULL.
Очередная задача по SQL!
В базе данных есть две таблицы CODES и CODES2, в каждой из которых есть столбец CODE. В таблицах CODES и CODES2 всего по три строки. В первой строке обеих таблиц в столбце CODE - значение: 1, во второй строке значение тоже 1 и в третьей строке - NULL.
👍1
Сколько строк вернёт следующий запрос:
SELECT * FROM CODES JOIN CODES2 ON CODES.CODE = CODES2.CODE
SELECT * FROM CODES JOIN CODES2 ON CODES.CODE = CODES2.CODE
Anonymous Quiz
6%
0
52%
2
38%
4
4%
8
❤4👍3👎2
Друзья, всем отличной пятницы!
На следующей неделе начинаем интенсив SQL, PostgreSQL!
У нас будет:
10 насыщенных онлайн занятий (с записью эфира);
Много совместной работы в режиме онлайн! Будет много практики! Готовимся работать, не просто слушать:)
Закрытая группа Телеграм с записями наших встреч и кратким конспектом! Здесь же я буду отвечать и на все вопросы по самостоятельным задачам (они тоже будут, работа один-на-один с базой данных обязательна).
Сертификат по окончанию он-лайн курса! И помощь в составлении резюме если потребуется!
Подробнее:
https://prime-soft.biz/courses/postgresql
На следующей неделе начинаем интенсив SQL, PostgreSQL!
У нас будет:
10 насыщенных онлайн занятий (с записью эфира);
Много совместной работы в режиме онлайн! Будет много практики! Готовимся работать, не просто слушать:)
Закрытая группа Телеграм с записями наших встреч и кратким конспектом! Здесь же я буду отвечать и на все вопросы по самостоятельным задачам (они тоже будут, работа один-на-один с базой данных обязательна).
Сертификат по окончанию он-лайн курса! И помощь в составлении резюме если потребуется!
Подробнее:
https://prime-soft.biz/courses/postgresql
prime-soft.biz
Prime | Курс SQL, PostgreSql
Уроки и курсы SQL, PostgreSQL, Базы данных.
👍2🔥2