#Вопросы_с_собеседования
Что такое "SQL инъекция" и как её можно предотвратить?
SQL инъекция – это вид атаки на приложения, при котором злоумышленник вводит или "инъецирует" вредоносный SQL-код в запрос, который затем выполняется базой данных. Это может привести к несанкционированному доступу к данным, их изменению или удалению, а также к другим серьезным уязвимостям безопасности.
Для предотвращения SQL инъекций следует использовать параметризованные запросы, при которых вводимые пользователем данные обрабатываются как параметры, а не как часть SQL-кода. Это изолирует эти данные от самого запроса, предотвращая их интерпретацию как часть SQL-команды. Также важно проводить валидацию и санитизацию вводимых данных, ограничивая возможность ввода потенциально опасных символов или конструкций.
Что такое "SQL инъекция" и как её можно предотвратить?
SQL инъекция – это вид атаки на приложения, при котором злоумышленник вводит или "инъецирует" вредоносный SQL-код в запрос, который затем выполняется базой данных. Это может привести к несанкционированному доступу к данным, их изменению или удалению, а также к другим серьезным уязвимостям безопасности.
Для предотвращения SQL инъекций следует использовать параметризованные запросы, при которых вводимые пользователем данные обрабатываются как параметры, а не как часть SQL-кода. Это изолирует эти данные от самого запроса, предотвращая их интерпретацию как часть SQL-команды. Также важно проводить валидацию и санитизацию вводимых данных, ограничивая возможность ввода потенциально опасных символов или конструкций.
👍9
This media is not supported in your browser
VIEW IN TELEGRAM
В Oracle Database 21c это можно сделать с помощью функции
CREATE MULTIVALUE INDEX ...
ON t ( t.col.json_array_path[*]... ).Затем база данных может использовать его для обработки SQL-запросов
JSON_exists с поиском пути к массиву.Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Установка значения по умолчанию для NULL
Предположим, у вас есть таблица Users с полями Name и Email. Некоторые строки имеют NULL в поле Email. Вы хотите выбрать все имена и электронные адреса, но для строк с NULL в Email вы хотите установить значение по умолчанию, например, 'no-еmail@example.c0m'.
Предположим, у вас есть таблица Users с полями Name и Email. Некоторые строки имеют NULL в поле Email. Вы хотите выбрать все имена и электронные адреса, но для строк с NULL в Email вы хотите установить значение по умолчанию, например, 'no-еmail@example.c0m'.
👍12🔥2❤1
Рекомендации по ведению SQL-кода
В этом материале разберем общие рекомендации по ведению SQL-кода на примере СУБД MS SQL (T-SQL).
Смотреть статью
В этом материале разберем общие рекомендации по ведению SQL-кода на примере СУБД MS SQL (T-SQL).
Смотреть статью
Хабр
Рекомендации по ведению SQL-кода
В этом материале разберем общие рекомендации по ведению SQL-кода на примере СУБД MS SQL (T-SQL). Однако, многие пункты можно также применить и к другим СУБД. Рекомендации по ведению SQL-кода Все...
👍4
SQL вопрос: Что такое первичный ключ (primary key)? Укажите наиболее точное определение
Anonymous Quiz
42%
Одна колонка, однозначно идентифицирующая запись в таблице и может быть описана как автоинкремент
12%
Колонка, в которую можно писать только уникальные значения
2%
Это синоним внешнего ключа (foreign key)
2%
Первая колонка в таблице
37%
Одна или несколько колонок, которые однозначно идентифицируют запись в таблице
4%
Посмотреть ответы
👍12
#Вопросы_с_собеседования
Каковы различия между INNER JOIN и OUTER JOIN в SQL, и в каких сценариях каждый из них является наиболее подходящим для использования? Приведите примеры, где использование OUTER JOIN (LEFT, RIGHT или FULL) предпочтительнее по сравнению с INNER JOIN.
Основное различие между INNER JOIN и OUTER JOIN заключается в обработке несоответствующих строк в соединяемых таблицах. INNER JOIN возвращает только те строки, которые имеют соответствующие значения в обеих таблицах. Если совпадений нет, строки не включаются в результат. Напротив, OUTER JOIN (LEFT, RIGHT, FULL) включает все строки из одной (LEFT или RIGHT) или обеих таблиц (FULL), даже если совпадений нет, добавляя NULL значения для отсутствующих данных.
Пример, где OUTER JOIN предпочтительнее:
Использование LEFT JOIN для получения списка всех сотрудников и их проектов, включая сотрудников без проектов. Здесь INNER JOIN исключил бы сотрудников, не работающих над проектами, тогда как LEFT JOIN позволит включить их в результат с NULL в столбцах, связанных с проектами.
Каковы различия между INNER JOIN и OUTER JOIN в SQL, и в каких сценариях каждый из них является наиболее подходящим для использования? Приведите примеры, где использование OUTER JOIN (LEFT, RIGHT или FULL) предпочтительнее по сравнению с INNER JOIN.
Основное различие между INNER JOIN и OUTER JOIN заключается в обработке несоответствующих строк в соединяемых таблицах. INNER JOIN возвращает только те строки, которые имеют соответствующие значения в обеих таблицах. Если совпадений нет, строки не включаются в результат. Напротив, OUTER JOIN (LEFT, RIGHT, FULL) включает все строки из одной (LEFT или RIGHT) или обеих таблиц (FULL), даже если совпадений нет, добавляя NULL значения для отсутствующих данных.
Пример, где OUTER JOIN предпочтительнее:
Использование LEFT JOIN для получения списка всех сотрудников и их проектов, включая сотрудников без проектов. Здесь INNER JOIN исключил бы сотрудников, не работающих над проектами, тогда как LEFT JOIN позволит включить их в результат с NULL в столбцах, связанных с проектами.
👍11
Что покажет следующий запрос:
select concat(`index`," ", `city`) AS delivery_address from Orders;
select concat(`index`," ", `city`) AS delivery_address from Orders;
Anonymous Quiz
14%
ничего, запрос составлен неверно
4%
покажет уникальные значения индексов и адресов из таблицы Orders
66%
соединит поля с индексом и адресом из таблицы Orders и покажет их с псевдонимом delivery_address
4%
соединит поля с индексом и адресом из таблицы Orders, но покажет их без псевдонима
11%
Посмотреть ответ
👍9🔥1
Трюк на SQL
Один из интересных и полезных трюков в SQL - использование общих табличных выражений (Common Table Expressions, CTE) для создания временных наборов результатов, которые могут быть использованы в более сложных запросах. CTE обеспечивают более чистый и организованный подход к написанию сложных запросов, особенно при работе с рекурсивными запросами или при необходимости разделения запроса на несколько логических частей.
В этом примере CTE используется для рекурсивного обхода иерархических данных, например, структуры организации. Сначала выбираются сотрудники без менеджеров (верхний уровень иерархии), затем рекурсивно добавляются их подчиненные. Это очень полезно для работы с древовидными структурами данных, такими как организационные схемы, категории продуктов и т.д.
Один из интересных и полезных трюков в SQL - использование общих табличных выражений (Common Table Expressions, CTE) для создания временных наборов результатов, которые могут быть использованы в более сложных запросах. CTE обеспечивают более чистый и организованный подход к написанию сложных запросов, особенно при работе с рекурсивными запросами или при необходимости разделения запроса на несколько логических частей.
В этом примере CTE используется для рекурсивного обхода иерархических данных, например, структуры организации. Сначала выбираются сотрудники без менеджеров (верхний уровень иерархии), затем рекурсивно добавляются их подчиненные. Это очень полезно для работы с древовидными структурами данных, такими как организационные схемы, категории продуктов и т.д.
🔥9👍4
JSON_MODIFY в Microsoft SQL Server
JSON_MODIFY - это функция в Microsoft SQL Server, которая позволяет изменять свойства в объекте JSON и возвращать измененный объект JSON.
Синтаксис использования функции JSON_MODIFY выглядит следующим образом: JSON_MODIFY ( expression , path , newValue )
- expression: Это объект JSON, который вы хотите изменить.
- path: Это путь к свойству, которое вы хотите изменить. Он должен быть в формате “$.ключ”, где “ключ” - это имя свойства, которое вы хотите изменить.
- newValue: Это новое значение, которое вы хотите присвоить свойству.
Функция также может использоваться в сочетании с другими функциями JSON в SQL Server, такими как JSON_VALUE и JSON_QUERY, для манипулирования JSON-данными.
JSON_MODIFY - это функция в Microsoft SQL Server, которая позволяет изменять свойства в объекте JSON и возвращать измененный объект JSON.
Синтаксис использования функции JSON_MODIFY выглядит следующим образом: JSON_MODIFY ( expression , path , newValue )
- expression: Это объект JSON, который вы хотите изменить.
- path: Это путь к свойству, которое вы хотите изменить. Он должен быть в формате “$.ключ”, где “ключ” - это имя свойства, которое вы хотите изменить.
- newValue: Это новое значение, которое вы хотите присвоить свойству.
Функция также может использоваться в сочетании с другими функциями JSON в SQL Server, такими как JSON_VALUE и JSON_QUERY, для манипулирования JSON-данными.
👍2❤1
#Вопросы_с_собеседования
Объясните, что такое фантомное чтение в транзакциях баз данных, и какие меры могут быть приняты для его предотвращения?
Фантомное чтение — это явление в базах данных, когда транзакция повторно читает данные и обнаруживает строки, которых раньше не было, из-за изменений, внесенных другой недавно завершенной транзакцией. Это может привести к неконсистентности данных, если одна транзакция основывается на предыдущем чтении, которое было сделано до внесения изменений.
Для предотвращения фантомного чтения можно использовать строгие уровни изоляции транзакций, например, уровень сериализуемости, который гарантирует, что транзакции выполняются так, как если бы они происходили в отдельной последовательности, а не параллельно. Это может быть достигнуто с помощью механизмов блокировки строк, предотвращающих другие транзакции от внесения изменений в строки, которые используются текущей транзакцией, или с помощью многоуровневых версий снимков данных (MVCC), которые предоставляют каждой транзакции консистентный снимок базы данных на определенный момент времени.
Объясните, что такое фантомное чтение в транзакциях баз данных, и какие меры могут быть приняты для его предотвращения?
Для предотвращения фантомного чтения можно использовать строгие уровни изоляции транзакций, например, уровень сериализуемости, который гарантирует, что транзакции выполняются так, как если бы они происходили в отдельной последовательности, а не параллельно. Это может быть достигнуто с помощью механизмов блокировки строк, предотвращающих другие транзакции от внесения изменений в строки, которые используются текущей транзакцией, или с помощью многоуровневых версий снимков данных (MVCC), которые предоставляют каждой транзакции консистентный снимок базы данных на определенный момент времени.
👍6
Если не указывается ни NULL, ни NOT NULL, то столбец интерпретируется так, как будто указано...
Anonymous Quiz
46%
NULL
9%
NOT NULL
34%
DEFAULT
11%
Узнать ответ
👍6
Прыжок по облакам: кейс миграции MS SQL Server из Azure в VK Cloud
В этом материале разобрали процесс миграции PaaS MS SQL Server с гигабайтами данных из Azure в VK Cloud, отличия от работы иностранными инструментами, с возникшие проблемы, важные выводы.
Смотреть статью
В этом материале разобрали процесс миграции PaaS MS SQL Server с гигабайтами данных из Azure в VK Cloud, отличия от работы иностранными инструментами, с возникшие проблемы, важные выводы.
Смотреть статью
👍2❤1
#Вопросы_с_собеседования
Какая разница между реляционной базой данных и графовой базой данных, и какая из них лучше для работы с социальными сетями?
Реляционная база данных организована в виде таблиц, связанных между собой по ключам, а графовая база данных использует графовую модель и хранит данные в виде узлов и связей между ними.
Для работы с социальными сетями лучше подходит графовая база данных. Социальные сети характеризуются сложными связями между пользователями, например, дружба, подписки и взаимодействия. Графовые базы данных эффективно моделируют такие связи и обеспечивают быстрый доступ к информации, связанной с каждым пользователем и его связями.
Какая разница между реляционной базой данных и графовой базой данных, и какая из них лучше для работы с социальными сетями?
Реляционная база данных организована в виде таблиц, связанных между собой по ключам, а графовая база данных использует графовую модель и хранит данные в виде узлов и связей между ними.
Для работы с социальными сетями лучше подходит графовая база данных. Социальные сети характеризуются сложными связями между пользователями, например, дружба, подписки и взаимодействия. Графовые базы данных эффективно моделируют такие связи и обеспечивают быстрый доступ к информации, связанной с каждым пользователем и его связями.
👍8❤2