Изучаем SQL с нуля По всем вопросам @valentin_mascarov Реклама на бирже - https://telega.in/c/SQl_and_DB_Learning № 4974313625
Пейджинг данных CTE
Пейджинг данных – это процесс разбиения большого объема данных на меньшие части или страницы. Это может быть полезно при работе с большими таблицами, когда нужно извлечь данные только для определенной страницы.
CTE – это временная таблица, которая создается внутри запроса и может быть использована в других частях этого же запроса. CTE часто используется для реализации рекурсивных запросов или для улучшения читаемости и поддерживаемости запросов.
WITH Orders_CTE AS (
SELECT OrderID, CustomerID, OrderDate,
ROW_NUMBER() OVER (ORDER BY OrderDate) AS RowNumber
FROM Orders
)
SELECT OrderID, CustomerID, OrderDate
FROM Orders_CTE
WHERE RowNumber BETWEEN {start} AND {end}
- {start} – начальный номер строки
- {end} – конечный номер строки
🖥 Полезная шпаргалка по связке Python + MySQL
▪Создание БД и таблиц
▪Внесение, чтение, обновление и удаление данных
#Вопросы_с_собеседования
📚 Каким образом можно найти дублирующиеся значения в столбце таблицы?
Для поиска дублирующихся значений в столбце можно использовать операторы GROUP BY и HAVING в комбинации с функцией COUNT. Например, следующий SQL-запрос вернет все дубликаты в столбце "name" таблицы "employees».
Исключения и PDO
PDO умеет выбрасывать исключения при ошибках, поэтому все должно находиться в блоке try/catch. Сразу после создания подключения, PDO можно перевести в любой из трех режимов ошибок.
Но стоит заметить, что ошибка при попытке соединения будет всегда вызывать исключение.
PDO::ERRMODE_SILENT
Это режим по умолчанию. Примерно то же самое вы, скорее всего, используете для отлавливания ошибок в расширениях mysql и mysqli. Следующие два режима больше подходят для DRY программирования.
PDO::ERRMODE_WARNING
Этот режим вызовет стандартный Warning и позволит скрипту продолжить выполнение. Удобен при отладке.
PDO::ERRMODE_EXCEPTION
В большинстве ситуаций этот тип контроля выполнения скрипта предпочтителен. Он выбрасывает исключение, что позволяет вам ловко обрабатывать ошибки и скрывать щепетильную информацию.
В SQL-выражении есть синтаксическая ошибка, которая вызовет исключение. Мы можем записать детали ошибки в лог-файл и человеческим языком намекнуть пользователю, что что-то случилось.
Хакеры в шоке!!!
Среди них завелся бесстрашный и начал вести свой канал, где сливает все их рабочие схемы!
0.09% людей: пока что попали на канал «АнтиХакер» и больше не поведутся на дешевые разводы
Успей подписаться, пока бывшие коллеги до него не добрались!
✈️ @a_xaker
Важные моменты при сравнении record и NULL:
При использовании ROW expression в SQL и сравнении с IS NULL результат будет TRUE только в том случае, если каждый столбец содержит значение NULL. Это важно знать, чтобы избежать ошибок в своем коде.
Таким образом, при сравнении ROW expression с NULL необходимо учитывать, что результат будет зависеть от того, есть ли в каждом столбце значение NULL или нет.
#Вопросы_с_собеседования
Что такое сущности и отношения в SQL?
В SQL, сущности (или таблицы) - это коллекции данных, которые содержат информацию о конкретных объектах или событиях. Каждая сущность представляет собой набор атрибутов, которые описывают свойства объекта или события.
Отношения в SQL - это связи между сущностями. Они описывают, как данные в одной таблице связаны с данными в другой таблице. Отношения в SQL могут быть один к одному, один ко многим, многие к одному и многие ко многим.
Например, предположим, что у нас есть две таблицы:
"Клиенты" и "Заказы". Каждый клиент может иметь множество заказов, но каждый заказ может принадлежать только одному клиенту. Это описывает отношение "один ко многим" между таблицами "Клиенты" и "Заказы".
Count (1) вместо count (*)
При любой возможности выбирайте count(1) вместо count(*). Оператор count(*) принимает в расчет все столбцы таблицы для выполнения вычислений, тогда как count(1) учитывает только первый столбец.
Обратите внимание, что результат остается неизменным, будь то count (*) или count (1).
При использовании count(1) движок базы данных задействует меньше ресурсов и работает быстрее. В случае небольших таблиц эта разница будет незаметна, но если дело касается больших из них, то данный фактор существенно отразится на производительности запросов.
⚡️Нейросеть впервые заменила фотографов
MintAI может всё: улучшить качество плохой фотографии или окрасить чёрно-белый снимок ваших родителей. Результат генерируется за секунды и ничем не уступает работе топовых фотографов.
Проверить, как это работает, можно на канале «IT Insider». Здесь каждый день находят прикольные нейронки и показывают необычные фишки наших смартфонов.
Пользуйтесь, всё есть в закрепе – /channel/+uQb9A_FgIPM1Njhi
Короткие функции MS Acess (часть 1)
1. Функция LCase используется для преобразования строки в нижний регистр.
2. Функция Left используется для извлечения ряда символов из строки (начиная слева).
3. Функция Len используется для получения длины строки.
4. Функция LTrim используется для удаления начальных пробелов из строки.
Кластеризация в PostgreSQL
Кластеризация - это процесс упорядочивания данных в таблице на основе значения одного или нескольких столбцов. В PostgreSQL кластеризация может быть выполнена с помощью индексов.
Создание кластеризованного индекса
Для создания кластеризованного индекса в PostgreSQL используется ключевое слово CLUSTER. Например, чтобы создать кластеризованный индекс по столбцу name в таблице users, необходимо выполнить следующий запрос:
CLUSTER users USING users_name_idx;
Здесь users_name_idx - это имя индекса, созданного на столбце name в таблице users.
Найдите всех авторов, которые просмотрели хотя бы одну из своих статей.
Верните таблицу результатов, отсортированную по id в порядке возрастания.
Решение:
Запрос направлен на получение списка идентификаторов авторов из таблицы «Просмотры», где идентификаторы автора и зрителя совпадают. Использование ключевого слова DISTINCT гарантирует, что возвращаются только уникальные идентификаторы авторов.
Подход:
1. Запрос выбирает идентификатор автора как «id» из таблицы «Views».
2. Он применяет условие с использованием предложения WHERE для фильтрации строк, в которых идентификатор автора равен идентификатору зрителя.
3. Ключевое слово DISTINCT используется для удаления дубликатов и возврата только уникальных идентификаторов авторов.
4. Результат упорядочивается в порядке возрастания на основе идентификатора автора с использованием предложения ORDER BY.
Полное присоединение в SQL Server
Полное присоединение (Full Outer Join) — это операция соединения, которая возвращает все строки из обеих таблиц, которые соответствуют заданному условию. Если записи в одной из таблиц отсутствуют, то вместо значений будут NULL.
В SQL Server полное присоединение выполняется с использованием ключевого слова FULL OUTER JOIN.
При использовании полного присоединения важно помнить, что оно может привести к большому количеству дублирующихся строк в результирующей таблице. Поэтому перед применением этой операции следует тщательно продумать условия соединения и проверить результирующий набор данных.
Функции ISDATE() - SQL Server
Функция ISDATE() используется для проверки, является ли выражение допустимой датой или нет. Функция возвращает 1, если выражение является допустимой датой, и 0, если не является.
Синтаксис функции ISDATE(): ISDATE ( expression )
- expression: выражение, которое необходимо проверить. Может быть любым типом данных, который может быть преобразован в тип данных дата/время.
Однако при использовании функции ISDATE() нужно учитывать, что она не является полностью надежной и может допускать ошибки при проверке даты. Например, функция не сможет обнаружить ошибку в дате "@", так как такая дата не существует.
Функция DEGREES - SQL Server
Функция DEGREES используется для преобразования значения в радианах в значение в градусах. Эта функция принимает один аргумент, который должен быть числом в радианах, и возвращает это значение в градусах.
Синтаксис:
- DEGREES ( numeric_expression )
Параметры:
- numeric_expression - значение в радианах, которое нужно преобразовать в градусы. Это значение должно быть числом.
Мяу-новость от «Лаборатории Касперского» 🙀
Начинается набор на оплачиваемую стажировку SafeBoard по направлению Разработка на C++. Если ты живешь в Москве или МО, учишься в вузе или школе № 21 и готов(а) работать от 20 часов в неделю, смело запрыгивай в команду и приземляйся сразу на четыре лапы в IT 🐈
Предложение для тебя, если хочешь поработать в крутой команде, которая занимается разработкой базовых компонентов, на основе которых мы строим продукты и сервисы компании.
Ты можешь учиться и работать одновременно, пользоваться спортзалом с сауной в офисе, кабинетом массажа, библиотекой, игровыми и музыкальными комнатами, прокачать навыки программирования и получить приглашение на работу в Kaspersky после стажировки.
Мы принимаем студентов любых университетов и специальностей с 1 курса. Главное — пройти тестирование и собеседование 😎
Прием заявок закончится 12 октября, успевай 🐾
Реклама. АО «ЛАБОРАТОРИЯ КАСПЕРСКОГО» ИНН: 7713140469 erid:LatgBzCsy
💉 SQL Injection Master - самый полный курс по SQL инъекциям
Старт: 9 октября
Продолжительность: 3 месяца
На курсе подробно разберём эксплуатацию SQL-инъекций, одного из наиболее распространенных и опасных видов атак на веб-приложения. Вы узнаете не только о том, как обнаруживать и эксплуатировать SQL-инъекции, но и как защитить свои веб-приложения от подобных атак.
Курс будет полезен как новичкам в сфере информационной безопасности, так и продвинутым специалистам.
🎓 В ходе обучения вы научитесь:
- Базовым навыкам работы с SQL
- Поиску уязвимостей в базах данных
- Внедрению произвольного SQL-кода в уязвимые приложения
У данного курса нет аналогов в СНГ и англоязычном пространстве.
🏆 Выдаём УПК/сертификат при успешной сдаче экзамена. Возможна оплата в рассрочку
📌 Узнать подробнее о курсе
Реклама. ООО "АКАДЕМИЯ КОДЕБАЙ". ИНН 9706020333. erid: LjN8JwbKX
⚡️Python - это мощный и универсальный язык программирования, который широко используется в аналитической работе. Он обладает множеством библиотек, которые упрощают работу с данными и делают процесс анализа более эффективным.
NumPy, Pandas, SciPy, Matplotlib и многие другие библиотеки предоставляют инструменты для работы с данными, их обработки и визуализации. Это позволяет аналитикам быстро и точно выполнять свою работу, а также создавать наглядные отчеты.
🔥Прокачать свои навыки Python можно на онлайн-курсе «Python для аналитики» в OTUS. Курс подойдёт аналитикам, маркетологам, менеджерам и начинающим Python-разработчикам. Начинаем 27 октября. Регистрируйтесь прямо сейчас по спеццене
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Использование библиотеки libpqxx для работы с SQL
Библиотека libpqxx - это C++ библиотека для работы с базами данных PostgreSQL. Она предоставляет удобный и безопасный интерфейс для выполнения SQL запросов и работы с данными.
Она является высокоуровневой библиотекой, что означает, что она абстрагирует от низкоуровневых деталей работы с базами данных, таких как создание соединения, управление транзакциями, контроль ошибок и т.д.
Библиотека libpqxx написана на C++, и поэтому ее можно использовать в любом проекте, который использует этот язык программирования.
#вопросы_с_собеседований
В базе данных есть две таблицы: TABLE1 и TABLE2. Отработает ли данный запрос или упадет с ошибкой? И объяснить, почему.
Данный запрос отработает, так как синтаксически он правильный и все поля существуют в таблице и соответствуют нужному типу данных.
Поля id, value, i, y должны быть в таблице table1 и соответствовать нужному типу данных.
Группировка выполняется по столбцу i, указанному в PARTITION BY. Сортировка выполняется по столбцу y, указанному в ORDER BY.
Функция SUM с оконной функцией OVER выполняет суммирование значения столбца value сгруппированного по столбцу i и упорядоченного по столбцу y. Также выбираются все поля.
⚡️ Друзья, мы создали новый канал по изучению C# и разработке игр на Unity.
👉 C#/Unity Learning👈
Заходите, если интересно
❓Как сочетать мощь SQL и гибкость Pandas для комплексного анализа данных?
Расскажем на практическом открытом уроке 25 сентября в 20:00 по Москве.
Преподаватель: Роман Козлов, ведущий аналитик ГКУ "Новые технологии управления"
Вебинар приурочен к онлайн-курсу "Python для аналитики"
🔸На вебинаре рассмотрим:
- Основы работы с библиотекой Pandas для анализа данных;
- Извлечение данных из SQL-базы данных прямо в Pandas DataFrame;
- Применение SQL-запросов внутри Pandas;
- Выгрузку обработанных данных из Pandas обратно в SQL;
- Примеры реальных сценариев анализа данных с использованием SQL и Pandas.
🔸В результате вебинара вы попрактикуетесь в интеграции SQL-запросов и Pandas, обработке и сохранении результатов анализа в базе данных.
Больше навыков по аналитике можно получить на курсе "Python для аналитики" от OTUS.
👉Зарегистрироваться на вебинар
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Найдите название, численность населения и площадь больших стран.
Задача требует от нас найти «большие» страны, исходя из определенных условий, связанных с их площадью и населением. Нам нужно получить название, население и площадь стран, площадь которых больше или равна 3 000 000, либо население больше или равно 25 000 000. Для этого мы запросим таблицу «Мир» и применим необходимые условия фильтрации.
Вот пошаговое объяснение вашего подхода:
1. Начнем с выбора столбцов имени, населения и площади из таблицы World. Это позволяет нам получить необходимую информацию о странах.
2. Мы используем предложение WHERE для применения условий фильтрации. В этом случае условия гласят, что мы хотим включить страны с площадью не менее 3 000 000 или с населением не менее 25 000 000.
3. Наконец, мы получаем название, население и площадь стран, которые удовлетворяют условиям фильтрации.
MySQL: CONV
CONV - это функция MySQL, которая позволяет конвертировать число из одной системы счисления в другую.
Синтаксис - CONV(N, from_base, to_base)
- N - число, которое нужно конвертировать.
- from_base - исходная система счисления числа N (от 2 до 36).
- to_base - целевая система счисления (от 2 до 36).
Полезные советы
- Если число в исходной системе счисления from_base содержит цифры, которые больше или равны 10, используйте буквы A до Z для представления этих цифр. Например, если from_base равен 16, то используйте цифры от 0 до 9 и буквы от A до F.
- Если N является отрицательным числом, то CONV() будет работать правильно, но результат будет представлен в виде числа с плавающей точкой в экспоненциальной форме. Если нужно получить целое число, то используйте функцию CAST() для преобразования результата в целое число.
Команда VK Cloud недавно запустила новый канал о работе с данными — Данные на стероидах.
В нем ребята публикуют подборки интересного контента по тематике работы с данными, эксклюзивные интервью с вендорами российских баз данных, такими как Postgress Professional и Arenadata, а еще переодически подкидывают интересные задачки (вот тут, например, подписчикам предлагали взломать базу данных).
Помимо прочего, в канале много полезной информации о работе с данными, архитектуре дата-решений и новостей российского и международного Data-сообщества.
👉🏻 Подписывайтесь на канал Данные на стероидах, будет интересно!
IF, IFNULL и NULLIF в MySQL
1. Функция IF позволяет выполнить операцию, основываясь на том, является ли выражение истинным или ложным.
Синтаксис функции IF выглядит так: IF(expr1, expr2, expr3)
где expr1 - это условие, которое нужно проверить, expr2 - значение, которое возвращается, если условие истинно, а expr3 - значение, которое возвращается, если условие ложно.
2. Функция IFNULL возвращает второй аргумент, если первый аргумент равен NULL. Если первый аргумент не является NULL, то он будет возвращен.
Синтаксис функции IFNULL выглядит так: IFNULL(expr1, expr2)
где expr1 - это значение, которое нужно проверить на NULL, а expr2 - значение, которое возвращается, если expr1 равен NULL
3. Функция NULLIF используется для сравнения двух выражений. Она возвращает NULL, если выражения равны, иначе возвращает первое выражение.
Синтаксис функции NULLIF выглядит так: NULLIF(expr1, expr2)
где expr1 и expr2 - это выражения, которые нужно сравнить. Если expr1 равно expr2, то функция вернет NULL, иначе вернется значение expr1.
Показ N-числа наиболее затратных запросов
Это предложение с фото, кажущееся сложным, но таким не являющееся, демонстрирует типы предложений, выполнение которых занимает у движка базы данных особенно много времени. Поэтому нам пригодится умение выявлять инструкции SQL, требующие оптимизации.
Для того, чтобы показать наиболее затратные запросы, нужно использовать SQL-запрос с фото
Запрос с фото позволит вывести наиболее затратные запросы, сгруппированные по названию запроса, количеству выполнений, общему времени выполнения на CPU в секундах, среднему времени выполнения на CPU в миллисекундах, плану запроса и названию базы данных.
SHRINK в MSSQL
SHRINK - это операция сжатия базы данных в Microsoft SQL Server. Она используется для освобождения места на жестком диске.
Существует два вида операции SHRINK:
- SHRINK DATABASE - сжатие всей базы данных
- SHRINK FILE - сжатие отдельных файлов базы данных
Для выполнения операции SHRINK с помощью SQL Server Management Studio (SSMS), нужно выполнить следующие шаги:
1. Подключиться к экземпляру SQL Server в SSMS
2. Выбрать нужную базу данных
3. Нажать правой кнопкой мыши на базе данных и выбрать "Tasks" -> "Shrink" -> "Database" (или "File", если нужно сжать только отдельный файл)
4. В появившемся диалоговом окне выбрать опции сжатия и нажать "OK"
Опции сжатия, доступные в диалоговом окне:
- Release unused space - освободить неиспользуемое пространство (рекомендуется)
- Reorganize pages before releasing unused space - переорганизовать страницы перед освобождением неиспользуемого пространства (улучшает производительность индексов)
- Shrink file to - сжать файл до указанного размера (в МБ)
Также, операцию SHRINK можно выполнить с помощью T-SQL команды:
- SHRINKDATABASE - для сжатия всей базы данных
- SHRINKFILE - для сжатия отдельного файла
Готовы погрузиться в мир нереляционных DB? Тогда добро пожаловать на онлайн-курс «NoSQL» от OTUS!
📢📢 12 сентября в 20:00 (мск) мы приглашаем вас на бесплатный открытый урок, где автор курса - Евгений Аристов, архитектор высоконагруженных баз данных и инфраструктуры с 25-летним опытом в разработке, - расскажет вам о создании отказоустойчивых кластеров MongoDB.
На открытом уроке мы исследуем:
📌 Цели и задачи MongoDB;
📌 Концепцию кворума;
📌 Основные моменты установки и настройки кластера MongoDB.
Это уникальная возможность не только окунуться в тему MongoDB, но и познакомиться с форматом нашего курса.
👉 Пройдите тестирование для регистрации на открытый урок и проверьте свой уровень компетенций
Продолжить изучение тонкостей NoSQL вы сможете на самом курсе, который стартует уже в сентябре.
Оплата курса возможна в рассрочку.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
#вопросы_с_собеседований
Почему SELECT * и SELECT column возвращает строки в разном порядке?
Выражение SELECT * возвращает все столбцы таблицы в том порядке, в котором они были созданы. Однако, если вы используете выражение SELECT column, то возвращаемые строки будут отсортированы по значению столбца, указанного в команде ORDER BY.
Это происходит потому, что в первом случае MySQL не знает, какую сортировку применять к строкам, и возвращает их в порядке, в котором они были добавлены в таблицу. В случае с SELECT column, MySQL сортирует строки по значению столбца, указанного в команде ORDER BY.
Чтобы получить строки в определенном порядке при использовании SELECT *, вы должны указать порядок с помощью команды ORDER BY.