SQL Flashcards
Что такое данные и информация, в чем разница?
Данные - это фактические сведения, фрагменты информации, которые не обработаны и не организованы в какой-либо осмысленной форме. Они могут быть представлены в виде чисел, текста, изображений или других форматов.
Информация, в отличие от данных, представляет собой данные, которые были обработаны и организованы таким образом, чтобы они стали полезными, понятными и имели значение для получателя. Информация содержит смысловую и конкретную интерпретацию данных, и она часто связана с контекстом или целью, для которой она используется.
Таким образом, данные являются сырыми фактами, тогда как информация - это результат обработки и анализа этих данных, которые могут быть использованы для принятия решений или извлечения пользы.
Что такое база данных?
База данных — это упорядоченный набор структурированной информации или данных, которые обычно хранятся в электронном виде в компьютерной системе. База данных обычно управляется системой управления базами данных (СУБД).
Виды БД
Существует несколько видов баз данных, вот некоторые из них:
- Реляционные базы данных (RDBMS): Это самый распространенный тип баз данных, который использует модель реляционной алгебры для организации и управления данными. Примеры включают MySQL, Oracle, Microsoft SQL Server, PostgreSQL и SQLite.
- Иерархические базы данных: Этот тип баз данных организован в виде древовидной структуры, где каждая запись может содержать одну или несколько связей с другими записями. Примером может служить IBM’s Information Management System (IMS).
- Сетевые базы данных: В таких базах данных данные связаны с помощью подразумеваемых связей между записями, что позволяет представлять сложные структуры. Примерами могут быть Integrated Data Store (IDS) и Integrated Data Store 2 (IDS2).
- Объектно-ориентированные базы данных (OODBMS): Эти базы данных разработаны для хранения объектов, которые могут быть обработаны объектно-ориентированным языком программирования. Примеры включают Objectivity/DB и MongoDB.
- NoSQL базы данных: Это широкий класс баз данных, которые отличаются от реляционных моделей и позволяют более гибкое хранение и обработку данных. Примеры включают MongoDB, CouchDB, Cassandra и Redis.
Как устроены реляционные бд?
Реляционные базы данных (РБД) устроены на основе реляционной модели данных, которая была предложена Эдгаром Коддом в 1970 году. РБД состоят из таблиц, которые содержат данные в виде строк и столбцов. Каждая таблица представляет отдельную сущность, например, пользователей, заказов или продуктов.
Каждая строка в таблице представляет конкретный экземпляр сущности, а каждый столбец представляет отдельное свойство этой сущности. Например, таблица пользователей может содержать столбцы для имени, фамилии, адреса электронной почты и пароля.
Как устроены NoSql базы данных?
NOSQL (Not Only SQL) базы данных отличаются от реляционных баз данных тем, что они не используют реляционную модель данных и SQL язык запросов. Вместо этого они используют различные модели данных, такие как документоориентированные, ключ-значение, столбцовые и графовые модели.
Документоориентированные базы данных хранят данные в виде документов, которые могут быть представлены в формате JSON или XML. Каждый документ представляет отдельную сущность и может содержать вложенные документы и массивы. Примерами документоориентированных баз данных являются MongoDB и Couchbase.
Ключ-значение базы данных хранят данные в виде пар ключ-значение. Ключи могут быть строками или числами, а значения могут быть любого типа данных, включая строки, числа, массивы и объекты. Примерами ключ-значение баз данных являются Redis и Riak.
Столбцовые базы данных хранят данные в виде столбцов, а не строк, как в реляционных базах данных. Каждый столбец представляет отдельное свойство сущности, а каждая строка представляет конкретный экземпляр этой сущности. Примерами столбцовых баз данных являются Apache Cassandra и HBase.
Графовые базы данных хранят данные в виде узлов и ребер графа. Узлы представляют сущности, а ребра представляют связи между этими сущностями. Примерами графовых баз данных являются Neo4j и OrientDB.
NOSQL базы данных обычно масштабируются горизонтально, что означает, что они могут быть распределены на несколько серверов для обработки больших объемов данных. Они также обеспечивают высокую доступность и отказоустойчивость с помощью репликации данных и механизмов обнаружения и восстановления сбоев.
Что такое SQL?
SQL (Structured Query Language) - это язык программирования, используемый для работы с реляционными базами данных.
Что такое Query?
Запрос (query) - это команда, которая отправляется в базу данных для извленечния информации из нее, либо для манипуляции данными в ней или таблицами.
Какие бывают связи таблиц SQL?
В SQL существует несколько типов связей между таблицами:
Один к одному (One-to-One) - каждая запись в одной таблице соответствует одной записи в другой таблице.
Один ко многим (One-to-Many) - каждая запись в одной таблице может соответствовать нескольким записям в другой таблице.
Многие ко многим (Many-to-Many) - каждая запись в одной таблице может соответствовать нескольким записям в другой таблице, и наоборот.
Для установления связей между таблицами используются внешние ключи (foreign keys), которые связывают записи в одной таблице с записями в другой таблице. Внешний ключ - это поле или набор полей в таблице, которые ссылаются на первичный ключ (primary key) в другой таблице. Связи между таблицами позволяют эффективно организовывать данные в базе данных и выполнять запросы для извлечения нужной информации.
Что такое DDL? Какие операции в него входят? Рассказать про них.
DDL (Data Definition Language) - это язык определения данных, который используется для создания, изменения и удаления объектов базы данных, таких как таблицы, индексы, представления и другие. Операции DDL включают в себя следующие:
CREATE - операция, которая используется для создания новых объектов базы данных, таких как таблицы, индексы, представления и другие.
ALTER - операция, которая используется для изменения существующих объектов базы данных, таких как таблицы, индексы, представления и другие.
DROP - операция, которая используется для удаления объектов базы данных, таких как таблицы, индексы, представления и другие.
TRUNCATE - операция, которая используется для удаления всех записей из таблицы, но не самой таблицы.
RENAME - операция, которая используется для переименования объектов базы данных, таких как таблицы, индексы, представления и другие.
COMMENT - операция, которая используется для добавления комментариев к объектам базы данных, таким как таблицы, индексы, представления и другие.
Операции DDL позволяют создавать, изменять и удалять объекты базы данных, что позволяет эффективно управлять данными и обеспечивать их целостность и безопасность.
Что такое DML? Какие операции в него входят? Рассказать про них.
DML (Data Manipulation Language) - это язык управления данными, который используется для вставки, обновления, удаления и выборки данных из таблиц базы данных. Операции DML включают в себя следующие:
SELECT - операция, которая используется для выборки данных из таблицы.
INSERT - операция, которая используется для вставки новых записей в таблицу.
UPDATE - операция, которая используется для обновления существующих записей в таблице.
DELETE - операция, которая используется для удаления записей из таблицы.
Операции DML позволяют управлять данными в таблицах базы данных, что позволяет эффективно хранить и обрабатывать информацию. Они также позволяют обеспечивать целостность данных и защиту от ошибок и несанкционированного доступа.
Что такое TCL? Какие операции в него входят? Рассказать про них.
TCL (Transaction Control Language) - это язык управления транзакциями, который используется для управления транзакциями в базе данных. Операции TCL включают в себя следующие:
COMMIT - операция, которая используется для сохранения изменений, внесенных в базу данных в рамках текущей транзакции.
ROLLBACK - операция, которая используется для отмены изменений, внесенных в базу данных в рамках текущей транзакции.
SAVEPOINT - операция, которая используется для создания точки сохранения в рамках текущей транзакции.
RELEASE - операция, которая используется для удаления точки сохранения в рамках текущей транзакции.
Операции TCL позволяют управлять транзакциями в базе данных, что позволяет обеспечивать целостность данных и защиту от ошибок и несанкционированного доступа. Они также позволяют обеспечивать согласованность данных в базе данных и предотвращать потерю данных в случае сбоев в системе
Что такое DCL? Какие операции в него входят? Рассказать про них.
DCL (Data Control Language) - это язык управления доступом к данным, который используется для управления правами доступа к объектам базы данных. Операции DCL включают в себя следующие:
GRANT - операция, которая используется для предоставления прав доступа к объектам базы данных, таким как таблицы, представления и другие.
REVOKE - операция, которая используется для отзыва прав доступа к объектам базы данных, которые были предоставлены с помощью операции GRANT.
Операции DCL позволяют управлять доступом к объектам базы данных, что позволяет обеспечивать безопасность данных и защиту от несанкционированного доступа. Они также позволяют управлять правами доступа к данным в зависимости от роли пользователя или группы пользователей.
Нюансы работы с NULL в SQL. Как проверить поле на NULL?
NULL - это специальное значение в SQL, которое указывает на отсутствие значения в поле. При работе с NULL в SQL есть несколько нюансов, которые нужно учитывать.
Сравнение с NULL. При сравнении значения поля с NULL необходимо использовать оператор IS NULL или IS NOT NULL, так как операторы сравнения (=, <>, <, >, <=, >=) не работают с NULL.
Арифметические операции с NULL. Любая арифметическая операция с NULL возвращает NULL.
Функции и NULL. Некоторые функции в SQL могут возвращать NULL, если один из аргументов функции равен NULL.
Использование NULL в индексах. Индексы в SQL не могут использовать NULL, поэтому при работе с NULL необходимо учитывать возможные проблемы с производительностью запросов.
Для проверки поля на NULL в SQL используется оператор IS NULL.
Например, чтобы выбрать все записи из таблицы, где поле “name” равно NULL, можно использовать следующий запрос:
SELECT * FROM table WHERE name IS NULL;
Также можно использовать оператор IS NOT NULL, чтобы выбрать все записи, где поле “name” не равно NULL:
SELECT * FROM table WHERE name IS NOT NULL;
Виды Join’ов (виды связывания таблиц).
В SQL существует несколько видов Join’ов (связывания таблиц):
INNER JOIN - возвращает только те строки, которые имеют соответствующие значения в обеих таблицах.
LEFT JOIN (или LEFT OUTER JOIN) - возвращает все строки из левой таблицы и соответствующие строки из правой таблицы. Если в правой таблице нет соответствующих строк, то возвращается NULL.
RIGHT JOIN (или RIGHT OUTER JOIN) - возвращает все строки из правой таблицы и соответствующие строки из левой таблицы. Если в левой таблице нет соответствующих строк, то возвращается NULL.
FULL JOIN (или FULL OUTER JOIN) - возвращает все строки из обеих таблиц, соответствующие и несоответствующие. Если в одной из таблиц нет соответствующих строк, то возвращается NULL.
CROSS JOIN (или CARTESIAN JOIN) - возвращает все возможные комбинации строк из обеих таблиц. Этот тип Join’а не использует условие соединения.
Join’ы позволяют объединять данные из нескольких таблиц в один результат, что позволяет эффективно организовывать данные в базе данных и выполнять запросы для извлечения нужной информации.
Что лучше использовать join или подзапросы? Почему?
Обычно лучше использовать JOIN, поскольку в большинстве случаев он более понятен и лучше оптимизируется СУБД (но 100% этого гарантировать нельзя). Так же JOIN имеет заметное преимущество над подзапросами в случае, когда список выбора SELECT содержит столбцы более чем из одной таблицы.
Подзапросы лучше использовать в случаях, когда нужно вычислять агрегатные значения и использовать их для сравнений во внешних запросах.
Что делает UNION?
метода)В языке SQL ключевое слово UNION применяется для объединения результатов двух SQL-запросов в единую таблицу, состоящую из схожих записей. Оба запроса должны возвращать одинаковое число столбцов и совместимые типы данных в соответствующих столбцах. Необходимо отметить, что UNION сам по себе не гарантирует порядок записей. Записи из второго запроса могут оказаться в начале, в конце или вообще перемешаться с записями из первого запроса. В случаях, когда требуется определенный порядок, необходимо использовать ORDER BY.
Разница между UNION и UNION ALL заключается в том, что UNION будет пропускать дубликаты записей, тогда как UNION ALL будет включать дубликаты записей.
gpt) UNION - это оператор в SQL, который используется для объединения результатов двух или более SELECT запросов в один набор результатов. Он объединяет строки из двух таблиц или запросов в один результат, удаляя дубликаты. Каждый SELECT запрос должен иметь одинаковое количество столбцов и типы данных в каждом столбце должны быть совместимыми. Если типы данных не совместимы, то можно использовать функцию CAST для приведения типов.
Чем WHERE отличается от HAVING?
WHERE нельзя использовать с агрегатными функциями, HAVING можно (предикаты тоже).
В HAVING можно использовать псевдонимы только если они используются для наименования результата агрегатной функции, в WHERE можно всегда.
HAVING стоит после GROUP BY, но может использоваться и без него. При отсутствии предложения GROUP BY агрегатные функции применяются ко всему выходному набору строк запроса, т.е. в результате мы получим всего одну строку, если выходной набор не пуст.
Что такое GROUP BY?
GROUP BY - это оператор в SQL, который используется для группировки строк в результирующем наборе по одному или нескольким столбцам. Он позволяет сгруппировать строки с одинаковыми значениями в указанных столбцах и выполнить агрегатные функции (например, SUM, AVG, MAX, MIN, COUNT) для каждой группы.
Например, если у нас есть таблица с информацией о продажах, содержащая столбцы “название продукта”, “дата продажи” и “количество продаж”, мы можем использовать оператор GROUP BY для группировки продаж по названию продукта и дате продажи, а затем вычислить общее количество продаж для каждой группы:
SELECT product_name, sale_date, SUM(sale_count) as total_sales FROM sales GROUP BY product_name, sale_date;
В результате мы получим таблицу, в которой каждая строка будет представлять собой уникальную комбинацию названия продукта и даты продажи, а столбец “total_sales” будет содержать общее количество продаж для каждой группы.
Что такое агрегатная функция?
Агрегатная функция - это функция, которая применяется к группе значений и возвращает единственное значение для всей группы. Она используется в SQL для вычисления сумм, средних значений, максимальных и минимальных значений, количества строк и т.д. в результирующем наборе данных.
Примеры агрегатных функций в SQL: SUM, AVG, MAX, MIN, COUNT.
Например, чтобы вычислить среднюю зарплату всех сотрудников в таблице, можно использовать агрегатную функцию AVG. Она будет применена ко всем значениям зарплаты в таблице и вернет единственное значение - среднюю зарплату.
SELECT AVG(salary) FROM employees;
Что такое ORDER BY?
ORDER BY - это оператор в SQL, который используется для сортировки результирующего набора строк по одному или нескольким столбцам. Он позволяет упорядочить строки в результирующем наборе по возрастанию или убыванию значений в указанных столбцах.
Например, если у нас есть таблица с информацией о продажах, содержащая столбцы “название продукта”, “дата продажи” и “количество продаж”, мы можем использовать оператор ORDER BY для сортировки продаж по дате продажи в порядке убывания:
SELECT product_name, sale_date, sale_count FROM sales ORDER BY sale_date DESC;
В результате мы получим таблицу, в которой строки будут отсортированы по дате продажи в порядке убывания. Если бы мы использовали оператор ASC вместо DESC, строки были бы отсортированы по возрастанию.