Шпаргалка по SQL. Взято с linkedin чтоб всегда держать под рукой (Скачать pdf на английском).
- Что такое SQL?
- SQL - это Структурированный язык запросов. Это язык программирования используемый для управления реляционными базами данных.
- Что такое база данных?
- База данных - это упорядоченный набор данных хранимый и доступный в электронном виде. База данных обеспечивает способы хранения, огранизации и доступа к большому количеству данных эффективно
- Что такое первичный ключ?
- Первичный ключ это столбец или комбинация столбцов которая уникально идентифицирует каждую запись. Это лежит в основе обеспечения правила целостности в реляционной базе данных
- Что такое внешний ключ?
- Внешний ключ это столбец или комбинация столбцов с помощью которого устанавливается свзяь между двумя таблицами. Он гарантирует согласованность данных между таблицами
- В чём разница между первичным ключом и уникальным?
- Первичный ключ используется чтоб уникально определить запись в таблице и должен иметь уникальное значение. С другой стороны, уникальный ключ обеспечивает что столбец или комбинация столбцов имеет уникальное значение но необязательно определяет уникальность записи
- Что такое нормализация?
- Нормализация - это процесс организации данных в БД для минимизации избыточности. Для этого таблицы разделяют на несколько меньших таблиц и устанавливают связи между ними
- Какие нормальные формы есть и различия между нами?
- Выделяют следующие типы нормальных форм:
- Первая НФ (1NF)
- Вторя НФ (2NF)
- Третья НФ (3NF)
- Бойс-Кодд НФ (BCNF)
- Четвертая НФ (4NF)
- Пятая НФ (5NF) или Project-Join НФ (PJNF)
- Что такое join в SQL?
- join - это оператор для объединения столбцов из двух и более таблиц на основе связей между ними. Это дает возможность получать данные из нескольких таблиц одновременно
- В чем разница между DELETE и TRUNCATE в SQL?
- Оператор DELETE используется для удаления записей из таблицы по определенным условиям. Он может быть отменен так как отрабатывает по одной записи. TRUNCATE используется для удаления всех записей из таблицы. Он не может быть отменён, работает быстрее чем DELETE так как удаляет сразу все записи и не логирует удаление отдельных записей
- В чём разница между UNION и UNION ALL?
- UNION и UNION ALL используются для объединения наборов записей неслокльких SELECT операторов. UNION удаляет дубликаты из общих результатов, в то время ка UNION ALL включает все записи, в том числе дубликаты
- В чём разница между HAVING и WHERE?
- WHERE используется для фильтра записей по условиям перед группировкой и агрегацией, т.е. для фильтрации отдельных записей. HAVING используется для фильтрации сгруппированных столбцов по условию после GROUP BY операции по группировке
- Что такое транзакции в SQL?
- Транзакция - это последовательность SQL операторов объединенных в отдельный логический блок. Транзакция грантирует согласованность (consistency) и целостность (integrity) всего блока или отмену всех операций при ошибке
- В чём отличия между кластиризованным и некластиризованным идексом?
- Кластеризованный индекс определяет физически порядок записей в таблице. Он изменяет размещение данных на диске и может быть создан только для одного поля. Таблица может иметь только один кластеризованных индекс. Некластеризованный не затрагивает физически порядок данных. Он расположен в БД отдельно и содержит указатель на действительные данные. Таблица может иметь множественный некластеризованный индекс.
- Что значит ACID касаемо базы данных и транзакций?
- ACID от слов Атомарность (Atomicity), Согласованность (Consistency), Изоляция (Isolation), и Надёжность (Durability). Это набор свойств, которые гарантируют правильность выполнения транзакция в базе данных.
- Атомарность гарантирует что транзакция выполнится как единый блок, что или все изменения будут применены или никакие не будут
- Согласованность гарантирует правильность выполнения всех операций в блоке транзакции
- Изоляция гарантирует что параллельные транзакции не повлияют на итоговый результат
- Надежность гарантирует что если транзакция завершилась, изменения сохранятся в даже случае системных отказов
- Что такое deadlock?
- deadlock случается когда две или более транзакций ожидают освобождение ресурсов из-за зацикливания. В результате ни одна транзакция не может быть выполнена, и система не отвечает (зависает)
- В чём разница между базой данных и схемой?
- База данных - это контейнер, который содержит различные объекты, как таблицы, отчеты, индексы и процедуры. БД представляет логически сгруппированные различные данные. Схема - это контейнер в базе данных, который содержит объекты и определяет их принадлежность. Схема - для организации и управления объектами в БД.
- В чем различия между временной таблицей (temporary table) и переменной таблицей (table variable)?
- Временная таблица создаётся и существует в течении сессии или транзакции. Временная явно или автоматически удаляется когда сессия или транзакция завершиться. Переменная таблица сохраняет структуру в памяти. Переменная используется смысл в рамках одной задачи для встроенной процедуры или функции. Она автоматически удаляется когда задача завершается
- Для чего используется оператор группировки GROUP BY?
- GROUP BY используется для группировки записей по столбцам в таблице. Обычно используется для сложения стольбцов с такими функциями как AVG, COUNT, и т.п.., для выполнения расчетов группированных данных
- Какая разница между CHAR и VARCHAR типами данных?
- CHAR - строка фиксированной длины, VARCHAR может хранить переменную длину строки
- Что такое процедура?
- Процедура - это набор SQL операторов сохраненный в БД, поэтому может быть использован повторно и так обеспечивает лучшую производительность
- Что такое подзапрос (subquery)?
- Подзапрос - это запрос, размещенный внутри другого запроса, когда основной запрос использует данные подзапроса
- Что такое отчёт (view)?
- Отчёт - это виртуальная таблица из результатов SQL-запроса что позволяет использовать данные из нескольких таблиц
- В чём разница между cross join и inner join?
- Cross join (Cartesian product) вернет комбинацию всех строк из двух или более таблиц. inner join вернет только столбцы по условию "on" в join операторе
- Для чего используется оператор COMMIT?
- Оператор COMMIT используется для фиксации изменений транзакции. Он находится в конце блока транзакции и делает изменения видимыми для пользователей
- Для чего используется оператор ROLLBACK?
- Оператор ROLLBACK используется для отмены изменений транзакции. Он возвращает данные в предыдущее состояние как перед началом транзакции
- Для чего используется значение поля NULL в SQL?
- NULL предполагает отсутствие значения или его неопределенность. В этом отличие от нуля или пустого значения. Требуется указывать разные условия в SQL-запросах
- В чём разница между отчетом и материализованным отчетом (materialized view)?
- Материализованный отчет - это физическая копия отчета, сохраненная в базе данных, которая обновляется периодически. Применяется для увеличения скорости и снижения затрат на обновление данных
- Что такое коррелированны подзапрос (correlated subquery)?
- коррелированны подзапрос это подзапрос, который ссылается на поле внешнего запроса. Он выполняется для кажной записи внешнего запроса
- Для чего используется DISTINCT?
- Ключевое слово DISTINCT используется для получения уникальных значений столбца или группы солбцов в операторе SELECT
- Какая разница между CHAR и VARCHAR типами данных? [Повтор 19 вопроса]
- CHAR - фиксированной длины, в то время как VARCHAR - строка переменной длины. Размер CHAR на диске будет постоянным, а VARCHAR определяться динамически
- В чём разница между IN и EXISTS операторами?
- IN - для проверки наличия значений внутри запроса или подзапроса. EXISTS - для проверки наличия строк в подзапросе
- Для чего используется Триггер (TRIGGER)?
- TRIGGER предназначен для выполнения набора SQL-запросов при наступлении соответствующего событиея в БД. Триггер выполнится автоматически при наступлении события
- В чём различия между unique constraint и unique index?
- unique constraint гарантирует уникальность значения в одном или более столбцоа, в то время как unique index услиливает уникальность и скорость выполнения запроса
- Для чего используются TOP или LIMIT в запросе?
- TOP (в SQL Server) или LIMIT (в MySQL) используется для ограничения количества данных, возвращаемых запросом. Чаще всего используется вместе с ORDER BY
- В чём различия между UNION и JOIN операторами?
- UNION объединяет результаты двух и более SELECT - операторов вертикально, а JOIN объединяет столбцы двух и более таблиц горизонтально по условиям "on" в join-не
- Что такое хранилище данных (data warehouse - DWH)?
- Хранилище данных - это большой централизованный репозиторий для хранения и управления данными из различных источников. Оно спроектировано для эффективности получения отчетов, аналитики и других задач бизнеса
- Какая разница между первичным ключом (primary key) и candidate key?
- Первичный ключ - это выбранный candidate key, который уникально определяет запись в таблице. candidate key - это набор из одного или более полей, который может стать первичным ключом
- Для чего используется GRANT оператор?
- GRANT используется для выдачи конкретных разрешений и привелегий пользователям или ролям в базе данных
- Для чего используют correlated update?
- correlated update - это update который ссылается на столбец той же самой таблицы в подзапросе. Это обновляет значения на основе результатов подзапроса для каждого столбца
- Для чего используется оператор CASE?
- CASE в логических условиях SQL запросов. Это позволяет возвращать различные данные на основе определенных условий
- Для чего используется функция COALESCE?
- COALESCE возвращает первое не нулл (non-null) выражение из списка выражений. Обычно используется для эффективной обработки null-значений
- Для чего используется функция ROW_NUMBER()?
- ROW_NUMBER() назначает уникальный инкрементированный номер каждой записи в результирующем наборе. Обычно используется для эффективности постраничного разделения данных или ранжирования
- В чём различия между natural join и inner join?
- natural join - это inner join который работает по совпадениям полей (столбцов) с одинаковым именем в связанной таблице. Он автоматически отрабатывается базой данных
- Для чего используется CASCADE DELETE constraint?
- CASCADE DELETE constraint используется для автоматческого удаления записей в дочерней таблице когда удаляются записи в родительской таблице
- Для чего используется ключевое слово ALL в SQL?
- Ключевое слово ALL используется в запросе вместе с оператором сравнения (like =, >, <, >=, <=, !=) чтобы сравнить эту величину со всеми значениям в подзапросе
- В чём разница между операторами EXISTS и NOT EXISTS?
- Оператор EXISTS вернет true если подзапрос вернет любые строки, NOT EXISTS вернёт true если подзапрос не вернет строк
- Для чего используется CROSS APPLY оператор?
- CROSS APPLY - оператор чтобы вызвать табличную функцию для кажной строки в таблице, возвращает объединенный набор данных
- Что такое self-join?
- Self-join - это оператор для соединения таблицы с самой собой. Обычно используется для сравнения записей по одинаковым столбцам в той же таблице.
- Для чего используется ALIAS команда?
- ALIAS используется чтобы присвоить имя талице или полю. Alias можно использовать в WHERE для таблицы или поля.
- Для чего вообще используются SQL-функции?
- SQL-функции обычно используются для:
- вычисления данных
- для изменения данных в отдельных записях
- для обработки выводимых данных
- для форматирования дат и чисел
- для преобразования типов данных
Комментарии