SQL Flashcards
Какая разница между DROP и TRUNCATE?
DROP - удаляет всю таблицу
TRUNCATE - удаляет только данные таблицы
Что такое case function?
Возвращение значений в зависимости от условия
CASE проверяет истинность набора условий и в зависимости от результата проверки может возвращать тот или иной результат.
Имеет два формата (оба поддерживают дополнительный аргумент ELSE):
- простое выражение CASE для определения результата сравнивает выражение с набором простых выражений
- поисковое выражение CASE для определения результата вычисляет набор логических выражений
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END
Пример:
~~~
SELECT
column_name,
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE default_result
END AS new_column_name
FROM table_name;
~~~
Что такое collation?
Collation - параметр указывает SQL серверу, как нужно сортировать и сравнивать строки. Например, разные или нет строки “Apple” и “apple” зависит от указанного Collation.
Типы репликации в SQL Server?
Репликация- набор технологий копирования и распространения данных и объектов БД между БД, а также синхронизации БД для поддержания согласованности.
- Репликация транзакций - изменения на издателе доставляются подписчику по мере их появления (почти в реальном времени). Изменения данных применяются на подписчике в том же порядке и в тех же рамках транзакций, в которых они выполнялись у издателя.
- Репликация слиянием - данные можно изменять как на издателе, так и на подписчике, а также отслеживать с помощью триггеров. Подписчик синхронизируется с издателем при подключении к сети и обменивается с ним всеми строками, которые изменились со времени последней синхронизации издателя и подписчика.
- Репликация моментальных снимков - моментальный снимок издателя применяется к подписчику. Данные распространяются точно в том виде, в котором они были представлены в определенный момент времени. Обновление данных не отслеживается. Во время синхронизации формируется моментальный снимок и отсылается подписчикам целиком.
- Одноранговая репликация - основанна на репликации транзакций, распространяет согласованные на уровне транзакций изменения между несколькими экземплярами сервера почти в реальном времени.
- Двунаправленная репликация - представляет собой особую топологию репликации транзакций, которая позволяет двум серверам обмениваться изменениями друг с другом: каждый сервер публикует данные, после чего подписывается на публикацию с теми же данными от другого сервера.
- Обновляемые подписки - основаны на репликации транзакций. Когда данные для обновляемой подписки обновляются на подписчике, они сначала распространяются на издателя, а затем на других подписчиков.
Self Join
SELF JOIN - используется для объединения таблицы с ней самой таким образом, будто это две разные таблицы, временно переименовывая одну из них. Нужен тогда, когда у разных полей одной таблицы могут быть одинаковые значения. Например, один и тот же участник музыкальной группы может быть и вокалистом, и, например, клавишником.
Отличия БД от СУБД:
- База данных (БД) — это собственно хранилище данных, которое может быть структурировано разными способами.
- Система управления базами данных (СУБД) — это программное обеспечение, которое помогает управлять и манипулировать данными в базе данных
Типы БД:
- Иерархические БД организованы как дерево, где связи устанавливаются в виде “родитель-потомок”.
- Сетевые БД имеют более сложную структуру с множественными связями между записями.
- Реляционные БД (SQL) основаны на таблицах с данными, связанными через общие ключи. На курсе мы будем работать с ними.
- Нереляционные БД (известные как NoSQL) структурируют данные не по табличной схеме, а используют форматы, такие как ключ-значение, документы, колонки или графы.
Типы СУБД:
-
Реляционные СУБД:
- MySQL: Открытая система, широко используемая в веб-разработке. На курсе мы будем работать с ней.
- Oracle Database: Коммерческая СУБД, широко используемая в корпоративных решениях.
- Microsoft SQL Server: Предназначена для интеграции с другими продуктами Microsoft.
- PostgreSQL: Открытая СУБД, поддерживает большие базы данных и сложные запросы.
-
Нереляционные (NoSQL) СУБД:
- MongoDB: Документо-ориентированная СУБД, хранит данные в формате похожем на JSON.
- Cassandra: Ориентирована на работу с большими объемами данных.
- Redis: СУБД на основе ключ-значение, используется для кэширования данных и реализации очередей сообщений.
Типы отношений в SQL
- 1 к 1 (Один к одному): Каждая запись в одной таблице соответствует одной записи в другой таблице.
- 1 ко многим (Один ко многим): Одна запись в первой таблице может быть связана с многими записями во второй таблице.
- Многие к 1 (Многие к одному): Множество записей в одной таблице связаны с одной записью в другой таблице.
- Многие ко многим (Многие ко многим): Записи в одной таблице могут быть связаны с множеством записей в другой таблице.
Нормализация
это процесс организации данных для снижения избыточности и улучшения целостности.
Избыточность
SQL
относится к повторению данных в разных таблицах, что может привести к несоответствию и ошибкам при обновлении. Нормализация помогает уменьшить эту избыточность, распределяя данные так, чтобы каждый элемент информации был сохранен только в одном месте. Это обеспечивает более чистую и эффективную структуру базы данных.
Целостность
SQL
относится к поддержанию точности и надежности информации. Это включает обеспечение того, чтобы данные оставались последовательными и верными во всех таблицах базы данных. Целостность обеспечивается правилами, которые предотвращают ввод некорректных данных и поддерживают взаимосвязь между различными частями данных.
Нормальная форма
это уровень, на котором организованы данные, чтобы минимизировать избыточность и улучшить целостность. Каждая нормальная форма определяет набор правил для структурирования данных, и существует несколько уровней нормальных форм. Переход от одной нормальной формы к другой помогает сделать базу данных более организованной, уменьшая повторение и улучшая управление данными.
0NF (Нулевая нормальная форма):
нет структуры; данные могут быть дублированы и неструктурированы.
1NF (Первая нормальная форма):
каждая запись уникальна, и каждый атрибут содержит только атомарные значения.
2NF (Вторая нормальная форма):
Таблица находится во второй нормальной форме, если она уже в 1NF и все неключевые атрибуты полностью зависят от первичного ключа, а не от части его.
Денормализация
это процесс, используемый для оптимизации производительности базы данных путем добавления избыточности.
Это может включать объединение таблиц, чтобы уменьшить количество соединений (joins), или добавление избыточных копий данных в одной таблице для ускорения чтения за счет потенциально замедленной записи и увеличения использования пространства. Это противоположный нормализации подход, который часто используется в больших базах данных, где скорость чтения критически важна.
INTEGER (INT):
Типы данных SQL
- Пример:
age INT
- Этот тип данных используется для хранения целых чисел, например, возраста.
FLOAT и DOUBLE:
Типы данных SQL
- Пример:
price FLOAT
илиaverage_score DOUBLE
- Эти типы данных используются для хранения чисел с плавающей точкой, таких как цены или средние оценки.
VARCHAR
Типы данных SQL
Пример: first_name VARCHAR(50)
Этот тип данных предназначен для хранения текстовых строк переменной длины, таких как имена.
CHAR:
Типы данных SQL
- Пример:
gender CHAR(1)
- CHAR также используется для хранения строк, но фиксированной длины. В этом примере, CHAR(1) будет использован для хранения одного символа (например, “M” или “F” для пола).
DATE:
Типы данных SQL
- Пример:
birth_date DATE
- Этот тип данных предназначен для хранения даты (год, месяц, день).
ENUM:
Типы данных SQL
Пример: status ENUM(‘active’, ‘inactive’, ‘pending’)
ENUM представляет собой перечисление значений и используется, когда столбец может иметь только одно из ограниченного множества значений.
BOOLEAN:
Типы данных SQL
Пример: is_active BOOLEAN
BOOLEAN предназначен для хранения логических значений, таких как true или false.
TIME:
Типы данных SQL
Пример: appointment_time TIME
TIME используется для хранения времени (часы, минуты, секунды).
DATETIME и TIMESTAMP:
Типы данных SQL
Пример: created_at DATETIME или updated_at TIMESTAMP
Эти типы данных используются для хранения даты и времени. DATETIME сохраняет фиксированную дату и время, в то время как TIMESTAMP может использоваться для отслеживания времени создания и обновления записей.
BLOB и TEXT:
Типы данных SQL
- Пример:
profile_picture BLOB
илиcomments TEXT
- BLOB (Binary Large Object) и TEXT используются для хранения больших объемов данных, таких как изображения (BLOB) и длинные тексты (TEXT).
NULL
Типы данных SQL
Это специальное значение в MySQL, которое указывает на отсутствие данных или неопределенное значение в столбце. Когда столбец имеет тип данных, который допускает NULL (например, VARCHAR, INT, DECIMAL, и т.д.) и в него не внесено конкретное значение, то это значение считается NULL. Это означает, что в ячейке
Пустое значение (Empty Value):
Типы данных SQL
Это может относиться к строкам VARCHAR или TEXT, где внутри столбца есть строка, но она пуста, т.е., не содержит символов. Это не то же самое, что NULL. В этом случае, столбец не содержит NULL, но содержит пустую строку.
Получение списка всех доступных баз данных.
Работа с базами данных
SHOW DATABASES;