В этой статье мы рассмотрим 80 основных вопросов и ответов по SQL для новичков и практиков среднего звена. Эти вопросы и ответы помогут вам лучше подготовиться к собеседованию и узнать, чего ожидать от интервьюера.
Содержание
БЕСПЛАТНО СКАЧАТЬ КНИГИ в телеграм канале Библиотека тестировщика
Общие советы
Несколько общих советов:
Для начинающих
- Общие вопросы. Ожидайте вопросов о вашем опыте, какие диалекты SQL вы знаете, и о вашем общем уровне знаний.
- Технические вопросы. В них будут рассмотрены основы SQL, области применения, операторы и команды SQL, типы запросов и др.
Для практиков среднего уровня
- Функции в SQL. Вы должны знать об агрегатных и скалярных функциях, а также о встроенных и определяемых пользователем функциях.
- Расширенные команды. Вопросы могут охватывать такие темы, как соединения, первичные и внешние ключи, индексы и отношения.
- Проектирование баз данных. Вас ждут вопросы по нормализации, денормализации и различиям между операторами DELETE, TRUNCATE и DROP.
- Расширенные запросы. Вас могут спросить о подзапросах, как вложенных, так и коррелированных, а также о том, как выполнять конкретные задачи, например, находить n-ое наибольшее значение в столбце.
Общие вопросы для собеседования по SQL для начинающих
Прежде чем задать технические вопросы, интервьюер может задать вам несколько общих вопросов о вашем опыте работы с SQL. Например:
- С какими диалектами SQL вы знакомы?
- Оцените свой уровень владения SQL.
- Как давно вы работаете с SQL?
Хотя эта информация может быть упомянута в вашем резюме, будьте готовы подробно рассказать об этом. Естественно, на такие вопросы нет “идеально правильных” ответов, и не стоит придумывать что-то, отвечая на них.
Не волнуйтесь, если ваш опыт работы с SQL ограничен: скорее всего, интервьюер уже знает об этом из вашего резюме. Но поскольку он все равно заинтересован в общении с вами, значит, ваше резюме в целом подходит для компании.
Совершенно не страшно, если вы работали только с одним из диалектов SQL. Все диалекты SQL довольно похожи. Поэтому знакомство только с одним из них – вполне надежная основа для изучения других.
Технические вопросы для собеседования по SQL для начинающих
Теперь перейдем к техническим вопросам на собеседовании по SQL и возможным ответам на них.
Отвечая на технические вопросы, лучше всего давать как можно более точные ответы, хотя это может выглядеть как попытка отклониться от основной темы, или вызвать дополнительные вопросы.
1. Что такое SQL?
Это язык программирования, используемый для взаимодействия с реляционными системами управления базами данных (РСУБД). Взаимодействие включает в себя получение, обновление, вставку и удаление данных из таблиц (CRUD-операции).
2. Что такое диалекты SQL? Приведите несколько примеров.
Различные версии SQL, как бесплатные, так и платные, также называются диалектами SQL. Все диалекты SQL имеют очень похожий синтаксис и незначительно отличаются дополнительной функциональностью. В качестве примера можно привести: Microsoft SQL Server, PostgreSQL, MySQL, SQLite, T-SQL, Oracle и MongoDB.
3. Каковы основные задачи SQL?
Используя SQL, мы можем:
- создавать, удалять и обновлять таблицы в базах данных
- получать доступ, манипулировать и изменять данные в таблицах
- извлекать и обобщать необходимую информацию из таблицы или нескольких таблиц
- добавлять или удалять определенные строки или столбцы из таблицы
В целом, SQL позволяет выполнять запросы к базе данных множеством способов. Кроме того, SQL легко интегрируется с другими языками программирования, такими как Python или R, чтобы мы могли использовать их совокупную мощь.
4. Что такое оператор SQL? Приведите несколько примеров.
Оператор (statement), или команда SQL – это строка символов, интерпретируемая движком SQL как правильная команда, выполняемая соответствующим образом. Примерами операторов SQL являются SELECT
, CREATE
, DELETE
, DROP
, REVOKE
и так далее.
5. Какие типы команд SQL (или подмножества SQL) вы знаете?
- Язык определения данных (DDL) – для определения и изменения структуры базы данных.
- Язык манипулирования данными (DML) – для доступа, манипулирования и изменения данных в базе данных.
- Data Control Language (DCL) – для управления доступом пользователей к данным в БД и предоставления (или отмены) привилегий определенному пользователю или группе пользователей.
- Язык управления транзакциями (TCL) – для управления транзакциями в базе данных.
- Язык запросов к данным (DQL) – для выполнения запросов к данным с целью получения из них необходимой информации.
6. Приведите примеры распространенных команд SQL каждого типа.
- DDL:
CREATE
,ALTER
TABLE
,DROP
,TRUNCATE
, иADD COLUMN
- DML:
UPDATE
,DELETE
, иINSERT
- DCL:
GRANT
иREVOKE
- TCL:
COMMIT
,SET TRANSACTION
,ROLLBACK
, иSAVEPOINT
- DQL: –
SELECT
7. Что такое база данных?
Структурированное пространство, где данные хранятся во множестве таблиц и организованы таким образом, чтобы необходимую информацию можно было легко получить, манипулировать ею и обобщать.
8. Что такое СУБД (DBMS), и какие типы СУБД вы знаете?
Расшифровывается как система управления базами данных – программный пакет, используемый для выполнения операций с данными, хранящимися в БД, таких как доступ к ним, обновление, операции с ними, вставка и удаление. Существуют различные типы СУБД, такие как реляционные, иерархические, сетевые, графовые или объектно-ориентированные. Классификация основана на способе организации, структурирования и хранения данных в системе.
9. Что такое РСУБД (RDBMS)? Приведите несколько примеров РСУБД.
Расшифровывается как реляционная система управления базами данных. Это наиболее распространенный тип СУБД, используемый для работы с данными, хранящимися в нескольких таблицах, связанных друг с другом с помощью общих ключей. Язык SQL предназначен для взаимодействия с РСУБД. Примерами таких СУБД являются MySQL, PostgreSQL, Oracle, MariaDB и др.
10. Что такое таблицы и поля в SQL?
Таблица – это организованный набор связанных данных, хранящихся в табличной форме, т. е. в строках и столбцах. Поле – это другой термин для обозначения столбца таблицы.
11. Что такое SQL-запрос, и какие типы запросов вы знаете?
Запрос – это часть кода, написанная на языке SQL для доступа или изменения данных из базы данных.
Существует два типа SQL-запросов: запросы выбора и запросы действия. Первые используются для получения необходимых данных (сюда же относятся ограничение, группировка, упорядочивание данных, извлечение данных из нескольких таблиц и т. д.), а вторые – для создания, добавления, удаления, обновления, переименования данных и т. д.
12. Что такое подзапрос?
Также называется внутренним запросом, запросом, помещенным внутрь другого запроса, или внешним запросом. Подзапрос может встречаться в таких запросах, как SELECT
, FROM
, WHERE
, UPDATE
и т. д. Также возможно размещение подзапроса внутри другого подзапроса. Внутренний подзапрос выполняется первым, и его результат передается содержащему его запросу (или подзапросу).
13. Какие типы подзапросов SQL вы знаете?
- Одностроковый – возвращает не более одной строки.
- Многостроковый – возвращает не менее двух строк.
- Многостолбцовый – возвращает не менее двух столбцов.
- Коррелированный – подзапрос, связанный с информацией из внешнего запроса.
- Вложенный – подзапрос внутри другого подзапроса.
14. Что такое ограничение и зачем нужны ограничения?
Набор условий, определяющих тип данных, которые могут быть введены в каждый столбец таблицы. Ограничения обеспечивают целостность данных в таблице и блокируют нежелательные действия.
15. Какие ограничения SQL вы знаете?
DEFAULT
– предоставляет значение по умолчанию для столбца.UNIQUE
– допускает только уникальные значения.NOT NULL
– допускает только ненулевые значения.PRIMARY KEY
– допускает только уникальные и строго ненулевые значения(NOT NULL
иUNIQUE
).FOREIGN KEY
– обеспечивает общие ключи между двумя или более таблицами.
16. Что такое JOIN
?
Оператор, используемый для объединения и получения записей из двух или нескольких таблиц. Таблицы SQL могут быть объединены на основе связи между столбцами этих таблиц.
17. Какие типы соединений вы знаете?
(INNER) JOIN
– возвращает только те записи, которые удовлетворяют заданному условию соединения в обеих (или во всех) таблицах. Это стандартное соединение SQL.LEFT (OUTER) JOIN
– возвращает все записи из левой таблицы и те записи из правой таблицы, которые удовлетворяют заданному условию объединения.RIGHT (OUTER) JOIN
– возвращает все записи из правой таблицы и те записи из левой таблицы, которые удовлетворяют заданному условию объединения.FULL (OUTER) JOIN
– возвращает все записи из обеих (или всех) таблиц. Его можно рассматривать как комбинацию левого и правого объединений.
18. Что такое первичный ключ?
Столбец (или несколько столбцов) таблицы, на который наложено ограничение PRIMARY KEY
для обеспечения уникальности и отсутствия нулевых значений в этом столбце. Другими словами, первичный ключ – это комбинация ограничений NOT NULL
и UNIQUE
. Первичный ключ уникально идентифицирует каждую запись таблицы. Каждая таблица должна содержать первичный ключ и не может содержать более одного первичного ключа.
19. Что такое уникальный ключ?
Столбец (или несколько столбцов) таблицы, на который было наложено ограничение UNIQUE
для обеспечения уникальных значений в этом столбце, включая возможное значение NULL
(единственное).
20. Что такое внешний ключ?
Столбец (или несколько столбцов) таблицы, на который наложено ограничение FOREIGN KEY
, чтобы связать этот столбец с первичным ключом в другой таблице (или нескольких таблицах). Цель внешних ключей – поддерживать связь между различными таблицами базы данных.
21. Что такое индекс?
Специальная структура данных, связанная с таблицей базы данных и используемая для хранения ее важных частей, а также для ускорения поиска и извлечения данных. Индексы особенно эффективны для больших баз данных, где они значительно повышают производительность запросов.
22. Какие типы индексов вы знаете?
- Уникальный индекс – не допускает дубликатов в столбцах таблицы и, следовательно, помогает поддерживать целостность данных.
- Кластеризованный индекс – определяет физический порядок записей в таблице базы данных и выполняет поиск данных на основе значений ключей. Таблица может иметь только один кластеризованный индекс.
- Некластеризованный индекс – сохраняет порядок записей в таблице, который не совпадает с физическим порядком реальных данных на диске. Это означает, что данные хранятся в одном месте, а некластеризованный индекс – в другом. Таблица может иметь несколько некластеризованных индексов.
23. Что такое схема?
Совокупность структурных элементов базы данных, таких как таблицы, хранимые процедуры, индексы, функции и триггеры. Она показывает общую архитектуру базы данных, определяет отношения между различными объектами базы данных и устанавливает для них различные разрешения доступа.
24. Что такое комментарий SQL?
Человекочитаемое пояснение того, что делает определенный фрагмент кода. Комментарии к коду SQL могут быть однострочными (перед ними ставится двойное тире --
) или занимать несколько строк (так: /*comment_text*/
). Когда работает движок SQL, он игнорирует комментарии к коду. Цель добавления комментариев – сделать код более понятным для тех, кто будет читать его в будущем.
25. Что такое оператор SQL?
Зарезервированный символ, комбинация символов или ключевое слово, используемое в SQL-запросах для выполнения определенной операции. Операторы SQL обычно используются вместе с предложением WHERE
, чтобы задать условие (или условия) для фильтрации данных.
26. Какие типы операторов SQL вы знаете?
- Арифметические
(+
,-
,*
,/
, и т.д.) - Сравнения
(>
,<
,=
,>=
, и т.д.) - Составные
(+=
,-=
,*=
,/=
и т.д.) - Логические
(AND
,OR
,NOT
,BETWEEN
и т.д.) - Строка
(%
,_
,+
,^
, etc.) - Набор (UNION, UNION ALL, INTERSECT и MINUS (или EXCEPT))
27. Что такое псевдоним (alias)?
Временное имя, присваиваемое таблице (или столбцу в таблице) при выполнении SQL-запроса. Псевдонимы используются для того, чтобы улучшить читаемость кода и сделать его более компактным. Псевдоним вводится с помощью ключевого слова AS
:
SELECT col_1 AS column FROM table_name;
28. Что такое clause?
Clause, или утверждение, это условие, накладываемое на SQL-запрос для фильтрации данных с целью получения желаемого результата. Некоторые примеры: WHERE
, LIMIT
, HAVING
, LIKE
, AND
, OR
, ORDER BY
и т. д.
29. Какие утверждения используются в запросе SELECT?
Наиболее распространенными являются FROM
, GROUP BY
, JOIN
, WHERE
, ORDER BY
, LIMIT
и HAVING
.
30. Как создать таблицу?
Использование оператора CREATE TABLE
. Например, чтобы создать таблицу с тремя столбцами предопределенных типов данных, мы используем следующий синтаксис:
CREATE TABLE table_name (col_1 datatype, col_2 datatype, col_3 datatype);
31. Как обновить таблицу?
Используем оператор UPDATE. Синтаксис следующий:
UPDATE table_name SET col_1 = value_1, column_2 = value_2 WHERE condition;
32. Как удалить таблицу из базы данных?
Используем оператор DROP TABLE
. Синтаксис выглядит так: DROP TABLE table_name;
.
33. Как узнать количество записей в таблице?
Используем агрегатную функцию COUNT()
с переданной в качестве аргумента звездочкой: SELECT COUNT(*) FROM table_name;
.
34. Как отсортировать записи в таблице?
Использование оператора ORDER BY
:
SELECT * FROM table_name ORDER BY col_1;
Мы можем указать, что нам нужен нисходящий порядок, используя ключевое слово DESC
; порядок по умолчанию восходящий. Кроме того, мы можем сортировать по нескольким столбцам и указывать для каждого из них порядок по возрастанию или убыванию отдельно. Например:
SELECT * FROM table_name ORDER BY col_1 DESC, col_3, col_6 DESC;
35. Как выбрать все столбцы из таблицы?
Использование звездочки * в операторе SELECT
. Синтаксис выглядит так: SELECT * FROM имя_таблицы;
.
36. Как выбрать общие записи из двух таблиц?
Using the INTERSECT statement: SELECT * FROM table_1 INTERSECT SELECT * FROM table_1;
37. Что такое оператор DISTINCT и как его использовать?
Этот оператор используется вместе с оператором SELECT
для отсеивания дубликатов и возврата только уникальных значений из столбца. Синтаксис следующий:
SELECT DISTINCT col_1 FROM table_name;
38. Что такое сущности? Приведите несколько примеров.
Сущность (entity) – это объект реального мира, существо, место или явление, данные о котором могут быть собраны и сохранены в таблице базы данных. Каждой сущности соответствует строка в таблице, а столбцы таблицы описывают ее свойства. Примерами сущностей могут быть банковские операции, ученики в школе, проданные автомобили и т. д.
39. Что такое отношения? Приведите несколько примеров.
Отношения (relationships) – это связи и корреляции между сущностями, в описывающие, как две или более таблицы в БД связаны друг с другом. Например, мы можем найти идентификатор одного и того же клиента в таблице данных о продажах и в таблице клиентов.
40. Что такое значение NULL? Чем оно отличается от нуля или пустого значения?
Значение NULL
означает отсутствие данных для определенной ячейки таблицы. Вместо этого ноль является допустимым числовым значением, а пустая строка – это законная строка нулевой длины.
40 вопросов и ответов на собеседовании по SQL уровня Intermediate
В этом разделе мы рассмотрим 40 наиболее популярных вопросов и ответов на вопросы по SQL среднего уровня подготовки, чтобы вы знали, чего ожидать от интервьюера. Эти вопросы больше подходят для практиков SQL с несколькими годами опыта.
1. Что такое функция в SQL и зачем нужны функции?
Объект базы данных, представляющий собой набор операторов SQL, часто используемых для решения определенной задачи. Функция принимает некоторые входные параметры, выполняет с ними вычисления или другие манипуляции, и возвращает результат. Функции помогают улучшить читаемость кода и избежать повторения одних и тех же фрагментов кода.
2. Какие типы функций SQL вы знаете?
- Агрегатные функции – работают с несколькими, обычно сгруппированными записями по заданным столбцам таблицы, и возвращают одно значение (обычно по группам).
- Скалярные функции – работают с каждым отдельным значением и возвращают одно значение.
С другой стороны, функции SQL могут быть встроенными (определенными системой) или кастомными (созданными пользователем для своих нужд).
3. Какие агрегатные функции вы знаете?
AVG()
– возвращает среднее значениеSUM()
– возвращает сумму значенийMIN()
– возвращает минимальное значениеMAX()
– возвращает максимальное значениеCOUNT()
– возвращает количество строк, включая строки с нулевыми значениямиFIRST()
– возвращает первое значение из столбцаLAST()
– возвращает последнее значение из столбца
4. Какие скалярные функции вы знаете?
LEN()
(в некоторых диалектах SQL –LENGTH()
) – возвращает длину строки, включая пробелыUCASE()
(в некоторых диалектах SQL –UPPER()
) – возвращает строку, преобразованную в верхний регистрLCASE()
(в некоторых диалектах SQL –LOWER()
) – возвращает строку, преобразованную в нижний регистрINITCAP(
) – возвращает строку, преобразованную в заглавный регистр (т.е. каждое слово строки начинается с заглавной буквы)MID()
(в некоторых диалектах SQL –SUBSTR()
) – извлекает подстроку из строкиROUND()
– возвращает числовое значение, округленное до указанного количества десятичных знаковNOW()
– возвращает текущую дату и время
5. Что такое функции манипулирования регистром? Приведите несколько примеров.
Функции работы с регистром представляют собой подмножество символьных функций и используются для изменения регистра текстовых данных. С помощью этих функций мы можем преобразовать данные в верхний, нижний или заглавный регистр.
UCASE()
(в других диалектах SQL –UPPER(
)) – возвращает строку, преобразованную в верхний регистр.LCASE()
(в других диалектах SQL –LOWER()
) – возвращает строку, преобразованную в нижний регистрINITCAP()
– возвращает строку, преобразованную в заглавный регистр (т.е. каждое слово строки начинается с заглавной буквы)
6. Что такое функции работы с символами? Приведите несколько примеров.
Функции работы с символами представляют собой подмножество символьных функций и используются для изменения текстовых данных.
CONCAT()
– объединяет два или более строковых значения, добавляя вторую строку в конец первой.SUBSTR()
– возвращает часть строки, удовлетворяющую заданным начальной и конечной точкамLENGTH()
(в других диалектах –LEN()
) – возвращает длину строки, включая пробелыREPLACE()
– заменяет все вхождения определенной подстроки в предоставленной строке на другую подстрокуINSTR()
– возвращает числовую позицию определенной подстроки в заданной строкеLPAD()
иRPAD()
– возвращают отступы от левого/правого символа для правого/левого выравнивания.TRIM()
– удаляет все определенные символы, а также пробелы с левого, правого или обоих концов заданной строки.
7. В чем разница между локальными и глобальными переменными?
Доступ к локальным переменным возможен только внутри функции, в которой они были объявлены. Глобальные переменные, будучи объявленными вне какой-либо функции, хранятся в фиксированных структурах памяти и могут использоваться во всей программе.
8. Каков порядок данных по умолчанию в операторе ORDER BY
и как его изменить?
По умолчанию порядок будет возрастающим. Чтобы изменить его на убывающий, нужно добавить ключевое слово DESC
, как показано ниже:
SELECT * FROM table_name ORDER BY col_1 DESC;
9. Какие операторы множеств вы знаете?
UNION
– возвращает записи, полученные хотя бы по одному из двух запросов (исключая дубликаты).UNION ALL
– возвращает записи, полученные хотя бы по одному из двух запросов (включая дубликаты).INTERSECT
– возвращает записи, полученные по обоим запросамEXCEPT
(в MySQL и Oracle называетсяMINUS
) – возвращает только записи, полученные первым запросом, но не вторым.
10. Какой оператор используется в запросе для сопоставления?
Оператор LIKE
в сочетании с подстановочными знаками %
и _
. Подстановочный знак %
обозначает любое количество символов, включая ноль, а _
– строго один символ.
11. В чем разница между первичным и уникальным ключом?
Хотя оба типа ключей обеспечивают уникальные значения в столбце таблицы, первый из них однозначно идентифицирует каждую запись таблицы, а второй предотвращает появление дубликатов в этом столбце.
12. Что такое составной первичный ключ?
Первичный ключ таблицы, основанный на нескольких столбцах.
13. Каков порядок появления общих утверждений в запросе SELECT?
SELECT
– FROM
– JOIN
– ON
– WHERE
– GROUP BY
– HAVING
– ORDER BY
– LIMIT
14. В каком порядке интерпретатор выполняет общие операторы в запросе SELECT?
FROM
– JOIN
– ON
– WHERE
– GROUP BY
– HAVING
– SELECT
– ORDER BY
– LIMIT
15. Что такое представление (View) и зачем его использовать?
Виртуальная таблица, содержащая подмножество данных, полученных из одной или нескольких таблиц базы данных (или других представлений). Представления занимают очень мало места, упрощают сложные запросы, ограничивают доступ к данным в целях безопасности, обеспечивают независимость данных и обобщают данные из нескольких таблиц.
16. Можно ли создать представление на основе другого представления?
Да. Это также известно как вложенные представления. Однако следует избегать вложенности нескольких представлений, поскольку код становится трудно читать и отлаживать.
17. Можно ли по-прежнему использовать представление, если исходная таблица удалена?
Нет. Любые представления, основанные на этой таблице, станут недействительными после удаления базовой таблицы. Если мы попытаемся использовать такое представление, то получим сообщение об ошибке.
18. Какие типы SQL-отношений вам известны?
- Один к одному – каждая запись в одной таблице соответствует только одной записи в другой таблице
- Один-ко-многим – каждая запись в одной таблице соответствует нескольким записям в другой таблице
- Многие-ко-многим – каждая запись в обеих таблицах соответствует нескольким записям в другой таблице
19. Каковы возможные значения поля данных BOOLEAN?
В некоторых версиях SQL, таких как PostgreSQL, тип данных BOOLEAN существует в явном виде и принимает значения TRUE
, FALSE
или NULL
. В других версиях, таких как Microsoft SQL Server, тип данных BIT используется для хранения булевых значений в виде целых чисел 1
(истина) или 0
(ложь).
20. Что такое нормализация в SQL и зачем ее использовать?
Нормализация – это процесс дизайна базы данных, включающий организацию и реструктуризацию данных таким образом, чтобы уменьшить их избыточность, зависимость, дублирование и несогласованность. Это приводит к повышению целостности данных, увеличению количества таблиц в базе данных, более эффективному доступу к данным и контролю безопасности, а также к большей гибкости запросов.
21. Что такое денормализация в SQL и зачем ее использовать?
Денормализация – это процесс, противоположный нормализации: она вносит избыточность в данные и объединяет данные из нескольких таблиц. Денормализация оптимизирует производительность инфраструктуры базы данных в ситуациях, когда операции чтения важнее операций записи, поскольку помогает избежать сложных объединений и сокращает время выполнения запросов.
22. В чем разница между переименованием столбца и присвоением ему псевдонима?
Переименование столбца означает постоянное изменение его фактического имени в исходной таблице. Присвоение псевдонима столбцу означает присвоение ему временного имени при выполнении SQL-запроса с целью сделать код более читабельным и компактным.
23. В чем разница между вложенными и коррелированными подзапросами?
Коррелированный подзапрос – это внутренний запрос, вложенный в больший (внешний) запрос, который при выполнении ссылается на значения из внешнего запроса, то есть коррелированный подзапрос зависит от внешнего запроса. В то время как некоррелированный подзапрос не зависит от данных внешнего запроса и может выполняться независимо от него.
24. В чем разница между кластеризованными и некластеризованными индексами?
В то время как кластеризованный индекс определяет физический порядок записей в таблице и выполняет поиск данных на основе значений ключей, некластеризованный индекс сохраняет порядок записей, который не совпадает с физическим порядком реальных данных на диске. Таблица может иметь только один кластеризованный индекс, но множество некластеризованных.
25. Что представляет собой функция CASE()
?
Способ реализации логики if-then-else в SQL. Эта функция последовательно проверяет заданные условия в предложениях WHEN
и возвращает значение из соответствующего предложения THEN
, если выполнено первое условие. Если ни одно из условий не выполнено, функция возвращает значение из условия ELSE
, если оно было задано, в противном случае возвращается NULL
. Синтаксис следующий:
CASE WHEN condition_1 THEN value_1 WHEN condition_2 THEN value_2 WHEN condition_3 THEN value_3 ... ELSE value END;
26. В чем разница между операторами DELETE
и TRUNCATE
?
DELETE
– это обратимая DML-команда (Data Manipulation Language), используемая для удаления одной или нескольких строк из таблицы на основе условий, указанных в предложении WHERE
. TRUNCATE
– это необратимая команда DDL (Data Definition Language), используемая для удаления всех строк из таблицы. DELETE
работает медленнее, чем TRUNCATE
. Кроме того, мы не можем использовать оператор TRUNCATE
для таблицы, содержащей внешний ключ.
27. В чем разница между операторами DROP
и TRUNCATE
?
DROP
полностью удаляет таблицу из базы данных, включая структуру таблицы и все связанные с ней ограничения, связи с другими таблицами и привилегии доступа. TRUNCATE
удаляет все строки из таблицы, не затрагивая структуру таблицы и ограничения. DROP
работает медленнее, чем TRUNCATE
. Обе команды являются необратимыми DDL-командами (Data Definition Language).
28. В чем разница между операторами HAVING и WHERE?
Первый работает с агрегированными данными после их группировки, а второй проверяет каждую строку по отдельности. Если в запросе присутствуют оба оператора, они располагаются в следующем порядке: WHERE
– GROUP BY
– HAVING
. Движок SQL интерпретирует их также в том же порядке.
29. Как добавить запись в таблицу?
Использование оператора
INSERT INTO
в сочетании с VALUES
. Синтаксис следующий:
INSERT INTO table_name VALUES (value_1, value_2, ...);
30. Как удалить запись из таблицы?
Используем оператор DELETE
. Синтаксис следующий:
DELETE FROM table_name WHERE condition;
Таким образом, мы можем удалить несколько записей, если они удовлетворяют заданному условию.
31. Как добавить столбец в таблицу?
Использование оператора ALTER TABLE
в сочетании с ADD
. Синтаксис следующий:
ALTER TABLE table_name ADD column_name datatype;
32. Как переименовать столбец таблицы?
Использование оператора ALTER TABLE
в сочетании с RENAME COLUMN ... TO ...
Синтаксис следующий:
ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name;
33. Как удалить столбец из таблицы?
Использование оператора ALTER TABLE
в сочетании с DROP COLUMN
.
ALTER TABLE table_name DROP COLUMN column_name;
34. Как выбрать все четные или все нечетные записи в таблице?
Проверяя остаток от деления на 2. В некоторых версиях SQL (например, PostgreSQL и My SQL) используем функцию MOD
, в других (Microsoft SQL Server и SQLite) – оператор модуля(%
). Чтобы выбрать все четные записи с помощью MOD
:
SELECT * FROM table_name WHERE MOD(ID_column, 2) = 0;
Чтобы выбрать все четные записи, используйте %
:
SELECT * FROM table_name WHERE ID_column % 2 = 0;
Чтобы выбрать все нечетные записи, синтаксис в обоих случаях идентичен, только вместо =
мы используем оператор неравенства <> .
35. Как предотвратить дублирование записей при выполнении запроса?
Использование оператора DISTINCT
в сочетании с SELECT
или создание уникального ключа для этой таблицы.
36. Как вставить много строк в таблицу?
Используем оператор INSERT INTO
в сочетании с VALUES
. Синтаксис следующий:
INSERT INTO table_name VALUES (value_1, value_2, ...), (value_3, value_4, ...), (value_5, value_6, ...), ...;
37. Как найти n-ое наибольшее значение в столбце таблицы?
Используем OFFSET
. Например, чтобы найти 6-е наибольшее значение из столбца, мы используем следующий синтаксис:
SELECT * FROM table_name ORDER BY column_name DESC LIMIT 1 OFFSET 5;
38. Как найти в текстовом столбце таблицы значения, начинающиеся с определенной буквы?
Использование оператора LIKE
в сочетании с подстановочными знаками %
и _
. Например, нам нужно найти в таблице все фамилии, начинающиеся на “A”. Запрос выглядит следующим образом:
SELECT * FROM table_name WHERE surname LIKE 'A_';
Здесь мы предполагаем, что фамилия должна содержать не менее двух букв. Без этого предположения (то есть фамилия может быть просто A) запрос выглядит следующим образом:
SELECT * FROM table_name WHERE surname LIKE 'A%';
39. Как найти последний ID в таблице?
Используем функцию MAX()
. В противном случае, во многих версиях SQL, можно использовать следующий синтаксис:
SELECT id FROM table_name ORDER BY id DESC LIMIT 1;
или в Microsoft SQL Server:
SELECT TOP 1 id FROM table_name ORDER BY id DESC
40. Как выбрать случайные строки из таблицы?
Используем функцию RAND()
в сочетании с ORDER BY
и LIMIT
. В некоторых версиях SQL, таких как PostgreSQL, она называется RANDOM()
. Например, следующий код вернет пять случайных строк из таблицы в MySQL:
SELECT * FROM table_name ORDER BY RAND() LIMIT 5;
Заключение
Подводя итог: мы рассмотрели 80 основных вопросов на собеседовании по SQL для начинающих и средних специалистов и правильные ответы на них. Надеемся, эта информация поможет вам подготовиться к собеседованию и чувствовать себя более уверенно.
Перевод статьи «80 Top SQL Interview Questions and Answers for Beginners & Intermediate Practitioners».