SQL Ready | Базы Данных
10.7K subscribers
668 photos
28 videos
2 files
330 links
Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

Реклама на бирже: https://telega.in/c/sql_ready
加入频道
🖥 Базовые методы для работы с таблицами

В этой шпаргалке собраны самые важные табличные методы, которые нужны для построения запросов в таблицы

➡️ SQL Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥5🤝3
This media is not supported in your browser
VIEW IN TELEGRAM
Mockaroo — это онлайн-инструмент для генерации фейковых данных в различных форматах (JSON, CSV, SQL и др.), идеально подходящий для тестирования приложений и прототипирования.

Ссылочка: mockaroo.com

➡️ SQL Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3
Как защитить свои запросы от SQL-инъекций?

Если вы используете данные, введенные пользователем, напрямую в SQL запросах, вы рискуете дать доступ к вашей БД вредоносному коду.

Разберем, как НЕ нужно писать запросы, и какая практика обезопасит вас от SQL Injection.

Например, для авторизации пользователя проверяем его существование в нашей БД:
SELECT * FROM users WHERE username = '$username' AND password = '$password'


Но что если юзер в поле логин решил ввести следующее:
' OR '1'='1'


Тогда запрос приобретет вид:
SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '$password'


И поскольку для запроса поле username остается пустым, левая часть оператора OR будет истиной, запрос вернет пользователю все учетные записи из БД, и тот сможет авторизоваться под любой из них.

Решение — использование параметризованных запросов и placeholders вида %s для PostgreSQL.

Перепишем запрос с помощью Python, но условимся, что уже подключены к БД и объекту курсора для выполнения запросов:
username = input()
password = input()

sql = "SELECT * FROM users WHERE username = %s AND password = %s;"
cur.execute(sql, (username, password)) # метод объекта курсора, выполняющий запрос

results = cur.fetchall() # возвращает все строки результата запроса


И не забудем закрыть подключение к БД и объекту курсора.

🔥 Поэтому! Используйте параметризацию данных или ORM, внимательно настраивайте валидацию этих данных и вы точно избежите утечек связанными с SQL-инъекциями.

➡️ SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥7
Как отследить, кто внес изменения в вашу таблицу?

Поговорим про снифферы трафика триггеры в SQL:

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

В основном их используют для:

• Предобработка данных перед записью в БД.

Логирование изменений - кто внес изменения, добавил или удалил строчки.

• Оповещение другие модулей или сервисов при взаимодействии с таблицей.

• Реализация бизнес-логики.


В следующей части рассмотрим как создать исполняемую функцию для такого триггера!

➡️ SQL Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10🤝4👍3
🖥 Держите хорошую напоминалку с порядком работы операторов в запросе!

Эта шпаргалка поможет понять, в каком порядке вызываются SQL операторы и как правильно писать запросы, учитывая этот порядок.

➡️ SQL Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥5🤝4
This media is not supported in your browser
VIEW IN TELEGRAM
Exercism — это платформа для изучения программирования через практические задания. Можно практиковаться на 70 различных языках, в том числе и на SQL.

📌 Ссылочка: exercism.org

➡️ SQL Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3