SQL Flashcards
Что такое SQL и MySQL, и в чем разница?
SQL - это язык запросов для управления СУБД (система управления базами данных), а MySQL - это одна из таких СУБД. В частности, помимо MySQL существуют и другие СУБД: Oracle, MS SQL Server, PostgreSQL и др. И чтобы работать (сделать выборку, вставить новую запись, добавить новую таблицу и так далее) с любой из этих СУБД необходим язык запросов, и таким языком и является SQL.
Резюме: SQL - язык запросов для управления СУБД. MySQL - это одна из множества других СУБД.
В чем разница SQL и NoSQL?
В SQL хранятся структурированные данные, которые могут представлять объекты из окружающего нас мира. Так, в построенной по такой модели базе могут содержаться сведения о реальном человеке или о том, какие товары покупатель сложил в корзину в торговом центре. Эти данные обязательно группируются в таблицах в заданном формате.
NoSQL устроены по-другому. Типы хранящихся данных в них напрямую зависят от вида самой БД. Так, если речь идет о документно-ориентированной базе, данные в ней будут содержаться в формате иерархии и могут описывать самые разные объекты с произвольными характеристиками. В этом, пожалуй, одно из важнейших достоинств NoSQL — база позволяет хранить огромные объемы информации в виде единой сущности. Такой объем в условиях РБД пришлось бы разбить на несколько отдельных, хоть и взаимосвязанных, таблиц.
В NoSQL вся информация хранится без четко установленной структуры и явных связей между всеми данными. Здесь хранятся не какие-то структурированные и четкие таблицы, а любые сведения, которые могут быть представлены в виде текстового документа, аудиофайла или публикации в интернете.
Типы запросов: DDL и DML
операторы определения данных (Data Definition Language, DDL):
* CREATE создает объект БД (базу, таблицу, представление, пользователя и т. д.),
* ALTER изменяет объект,
* DROP удаляет объект;
операторы манипуляции данными (Data Manipulation Language, DML):
* SELECT выбирает данные, удовлетворяющие заданным условиям,
* INSERT добавляет новые данные,
* UPDATE изменяет существующие данные,
* DELETE удаляет данные
Что означает NULL в SQL?
NULL - специальное значение (псевдозначение), которое может быть записано в поле таблицы базы данных. NULL соответствует понятию «пустое поле», то есть «поле, не содержащее никакого значения».
NULL означает отсутствие, неизвестность информации. Значение NULL не является значением в полном смысле слова: по определению оно означает отсутствие значения и не принадлежит ни одному типу данных. Поэтому NULL не равно ни логическому значению FALSE, ни пустой строке, ни 0. При сравнении NULL с любым значением будет получен результат NULL, а не FALSE и не 0. Более того, NULL не равно NULL!
Разница между таблицей, полем и записью
Таблица — это самая распространенная и простая форма хранения данных в РБД. Данные в СУБД хранятся в объектах БД, называемых таблицами (tables). Таблица, как правило, представляет собой коллекцию связанных между собой данных и состоит из определенного количества колонок и строк.
Поле — это колонка таблицы, предназначенная для хранения определенной информации о каждой записи в таблице.
Запись или строка (record/row) — это любое единичное вхождение (entry), существующее в таблице. В таблице users 5 записей. Проще говоря, запись — это горизонтальное вхождение в таблице.
Нормализация таблиц: формы, количество, название, в чем смысл всех форм.
Нормализация — это процесс эффективной организации данных в БД. Существует две главных причины, обуславливающих необходимость нормализации: предотвращение записи в БД лишних данных, например, хранения одинаковых данных в разных таблицах и обеспечение “оправданной” связи между данными
Нормализация предполагает соблюдение нескольких форм. Форма — это формат структурирования БД.
Первая нормальная форма (1NF) - Отношение находится в 1NF, если значения всех его атрибутов атомарны (неделимы).
Вторая нормальная форма (2NF) - Отношение находится в 2NF, если оно находится в 1NF, и при этом все неключевые атрибуты зависят только от ключа целиком, а не от какой-то его части.
Третья нормальная форма (3NF) - Отношение находится в 3NF, если оно находится в 2NF и все неключевые атрибуты не зависят друг от друга.
Четвёртая нормальная форма (4NF) - Отношение находится в 4NF , если оно находится в 3NF и если в нем не содержатся независимые группы атрибутов, между которыми существует отношение «многие-ко-многим».
Пятая нормальная форма (5NF) - Отношение находится в 5NF, когда каждая нетривиальная зависимость соединения в ней определяется потенциальным ключом (ключами) этого отношения.
Шестая нормальная форма (6NF) - Отношение находится в 6NF, когда она удовлетворяет всем нетривиальным зависимостям соединения, т.е. когда она неприводима, то есть не может быть подвергнута дальнейшей декомпозиции без потерь. Каждая переменная отношения, которая находится в 6NF, также находится и в 5NF. Введена как обобщение пятой нормальной формы для хронологической базы данных.
Нормальная форма Бойса-Кодда, усиленная 3 нормальная форма (BCNF) - Отношение находится в BCNF, когда каждая её нетривиальная и неприводимая слева функциональная зависимость имеет в качестве своего детерминанта некоторый потенциальный ключ.
Доменно-ключевая нормальная форма (DKNF) - Отношение находится в DKNF, когда каждое наложенное на неё ограничение является логическим следствием ограничений доменов и ограничений ключей, наложенных на данное отношение.
Что такое «денормализация»? Для чего она применяется?
Денормализация базы данных — это процесс осознанного приведения базы данных к виду, в котором она не будет соответствовать правилам нормализации. Обычно это необходимо для повышения производительности и скорости извлечения данных, за счет увеличения избыточности данных.
AUTO INCREMENT
AUTO INCREMENT - автоматическое приращение позволяет автоматически генерировать уникальное число при вставке новой записи в таблицу.
Ограничения (constraints)
Ограничения (constraints) — это правила, применяемые к данным. Они используются для ограничения данных, которые могут быть записаны в таблицу. Это обеспечивает точность и достоверность данных в БД.
Primary key - набор полей (1 или более), значения которых образуют уникальную комбинацию и используются для однозначной идентификации записи в таблице. Для таблицы может быть создано только одно такое ограничение. Данное ограничение используется для обеспечения целостности сущности, которая описана таблицей.
Foreign key защищает от действий, которые могут нарушить связи между таблицами. Foreign key в одной таблице указывает на Primary key в другой. Поэтому данное ограничение нацелено на то, чтобы не было записей Foreign key, которым не отвечают записи Primary key.
Unique обеспечивает отсутствие дубликатов в столбце или наборе столбцов.
Check используется для ограничения множества значений, которые могут быть помещены в данный столбец. Это ограничение используется для обеспечения целостности предметной области, которую описывают таблицы в базе.
Not null — колонка не может иметь нулевое значение
Default — значение колонки по умолчанию
Как сделать запрос на изменение таблицы:
Команда ALTER TABLE используется для добавления, удаления и модификации колонок существующей таблицы. Также эта команда используется для добавления и удаления ограничений.
– добавление новой колонки
ALTER TABLE tableName ADD colName datatype; – удаление колонки
ALTER TABLE tableName DROP COLUMN colName;
Перечислите основные агрегатные функции.
Агрегатных функции - функции, которые берут группы значений и сводят их к одиночному значению.
SQL предоставляет несколько агрегатных функций:
COUNT - производит подсчет записей, удовлетворяющих условию запроса;
SUM - вычисляет арифметическую сумму всех значений колонки;
AVG - вычисляет среднее арифметическое всех значений;
MAX - определяет наибольшее из всех выбранных значений;
MIN - определяет наименьшее из всех выбранных значений.
Что мы чаще всего используем с агрегатными функциями? почему нам это нужно?
Group BY
Для чего используются операторы IN, BETWEEN, LIKE?
IN - определяет набор значений.
SELECT * FROM Persons WHERE name IN (‘Ivan’,’Petr’,’Pavel’);
BETWEEN определяет диапазон значений. В отличие от IN, BETWEEN чувствителен к порядку, и первое значение в предложении должно быть первым по алфавитному или числовому порядку.
SELECT * FROM Persons WHERE age BETWEEN 20 AND 25;
LIKE применим только к полям типа CHAR или VARCHAR, с которыми он используется чтобы находить подстроки. В качестве условия используются символы шаблонизации (wildkards) - специальные символы, которые могут соответствовать чему-нибудь:
* _ замещает любой одиночный символ. Например, ‘b_t’ будет соответствовать словам ‘bat’ или ‘bit’, но не будет соответствовать ‘brat’.
* % замещает последовательность любого числа символов. Например, ‘%p%t’ будет соответствовать словам ‘put’, ‘posit’, или ‘opt’, но не ‘spite’.
SELECT * FROM UNIVERSITY WHERE NAME LIKE ‘%o’;
Что такое транзакции в базе данных?
Транзакция - это воздействие на базу данных, переводящее её из одного целостного состояния в другое и выражаемое в изменении данных, хранящихся в базе данных.
Принципы транзакции (ACID):
Атомарность (atomicity) гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Будут либо выполнены все её подоперации, либо не выполнено ни одной.
Согласованность (consistency). Транзакция, достигающая своего нормального завершения и, тем самым, фиксирующая свои результаты, сохраняет согласованность базы данных.
Изолированность (isolation). Во время выполнения транзакции параллельные транзакции не должны оказывать влияние на её результат.
Долговечность (durability). Независимо от проблем на нижних уровнях (к примеру, обесточивание системы или сбои в оборудовании) изменения, сделанные успешно завершённой транзакцией, должны остаться сохранёнными после возвращения системы в работу.