DB (Database) — совокупность данных, хранимых в соответствии со схемой данных, манипулирование которыми выполняют в соответствии с правилами средств моделирования данных.
DBMS (Database Management System) - совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных.
RDB (Relational Database) — это такая база данных, которая воспринимается ее пользователями как множество переменных (т.е. переменных отношения — relvar), значениями которых являются отношения или, менее формально, таблицы.
RDBMS (Database Management System) - DBMS, управляющая реляционными базами данных.
Table (Таблица) - объект DB, коллекция, состоящая из схемы (заголовка) и тела.
Scheme (Схема) - определяет поля таблицы.
Table Body (Тело таблицы) - множество записей, хранящих значения, соответствующие каждому столбцу таблицы.
Column (Столбец) - набор однотипных значений в таблице, соответствующий данному полю.
Field (Поле) - каждая таблица разделена на подразделы, называемые полями. Поле описывает один столбец, т.е. задает тип значения, которое будет в нем храниться, название столбца, ограничения, накладываемые на столбец.
Row (Строка) - элемент таблицы, который может состоять из нескольких значений (в зависимости от полей таблицы).
Нормальная форма определяется как совокупность требований, которым должно удовлетворять отношение.
Нормализация - процесс преобразования отношений базы данных к виду, отвечающему нормальным формам. Нормализация предназначена для приведения структуры БД к виду, обеспечивающему минимальную логическую избыточность.
Первая нормальная форма (1НФ) - отношение находится в 1НФ, если любое поле любой записи хранит только одно значение.
Вторая нормальная форма (2НФ) - выполняется условие 1НФ и любое неключевое поле полностью зависит от ключа.
Третья нормальная форма (3НФ) - выполняется условие 2НФ и нет неключевых полей зависящих от значения других неключевых полей.
Нормальная форма Бойса-Кодда (НФБК) - каждая нетривиальная неприводимая слева функциональная зависимость обладает потенциальным ключом в качестве детерминанта.
DML (Data Manipulation Language) - это семейство компьютерных языков, используемых в компьютерных программах или пользователями баз данных для получения, вставки, удаления или изменения данных в базах данных.
SELECT
- получает определенные записи из одной или нескольких таблиц.
SELECT column1, column2....columnN
FROM table_name;
INSERT
- вставляет в таблицу новую запись.
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
UPDATE
- изменяет существующую запись.
UPDATE table_name SET column1 = value1, ...., columnN = valueN WHERE [condition];
DELETE
- удаляет записи, удовлетворяющие условию.
DELETE FROM table_name
WHERE [condition];
DDL (Data Definition Language) - это семейство компьютерных языков, используемых в компьютерных программах для описания структуры баз данных.
CREATE
- создает новую таблицу, представление таблицы или объект в базе данных или саму базу данных.
CREATE DATABASE DatabaseName;
CREATE TABLE table_name(column1 datatype, ... columnN datatype, PRIMARY KEY(M columns));
AFTER
- модифицирует существующий объект БД, как например таблицу.
DROP
- удаляет новую таблицу, представление таблицы или объект в базе данных или саму базу данных.
DROP TABLE table_name;
DROP DATABASE DatabaseName;
DDL (Data Definition Language) - подмножество языка управления базами данных SQL, предназначенное для осуществления административных операций, присваивающих или отменяющих право (привилегию) использовать базу данных, таблицы и другие объекты базы данных, а также выполнять те или иные операторы SQL.
GRANT
- авторизует одного или более пользователей для представления операции или набора операций над объектом.
GRANT SELECT, UPDATE
ON example
TO some_user, another_user;
REVOKE
- уничтожает возможность авторизации.
REVOKE SELECT, UPDATE
ON example
FROM some_user, another_user;
TCL (Transaction Control Language) - компьютерный язык и часть SQL, используемый для обработки транзакций.
COMMIT
- оператор управления транзакциями языка SQL для успешного завершения транзакции. При выполнении оператора изменения, сделанные от начала транзакции и ранее не видимые для других транзакций, фиксируются в базе данных.
BEGIN TRANSACTION WORK;
INSERT INTO MyTable VALUES ('50', 'some string');
COMMIT WORK;
ROLLBACK
- оператор языка SQL, который применяется для того, чтобы отменять все изменения, внесённые начиная с момента начала транзакции или с какой-то точки сохранения, очищать все точки сохранения данной транзакции, завершать транзакцию и освобождать все блокировки данной транзакции.
ROLLBACK TO SAVEPOINT_NAME;
SAVEPOINT
- устанавливает точку сохранения внутри транзакции.
SAVEPOINT SAVEPOINT_NAME;
Отношение - фундаментальное понятие реляционной модели данных. Отношение обычно имеет простую графическую интерпретацию в виде таблицы, столбцы которой соответствуют атрибутам, а строки — кортежам, а в «ячейках» находятся значения атрибутов в кортежах.
Курсор - это средство языка SQL, позволяющее с помощью набора специальных операторов получить построчный доступ к результату запроса к БД.
Индекс — объект базы данных, создаваемый с целью повышения производительности поиска данных. Индекс формируется из значений одного или нескольких столбцов таблицы и указателей на соответствующие строки таблицы и, таким образом, позволяет искать строки, удовлетворяющие критерию поиска.
Некластерные индексы создаются СУБД по умолчанию. Данные физически расположены в произвольном порядке, но логически упорядочены согласно индексу. Такой тип индексов подходит для таблиц, где часто изменяются значения.
Кластерные индексы - данные физически упорядочены, что серьезно повышает скорость выборок данных (но только в случае последовательного доступа к данным).
Триггер - это SQL процедура, которая срабатывает при каком-нибудь событии (INSERT
, DELETE
или UPDATE
). Триггер не может быть вызван или выполнен вручную, СУБД автоматически вызывает его после модификации данных в соответствующей таблице.
Ограничения - правила, накладываемые на таблицу или поле в таблице, призванные ограничить набор возможных записей в таблицу / столбец.
Представление - виртуальная таблица, представляющая данные одной или более таблиц альтернативным образом. Результат выполнения оператора SELECT
.
Первичный ключ - столбец или множество столбцов в таблице, который функционально определяет все остальные столбцы.
id
.CREATE TABLE City
(
id INTEGER NOT NULL PRIMARY KEY,
name CHAR(40)
)
Внешний ключ - столбец или множество столбцов в таблице, которое применяется для принудительного установления связи между данными в двух таблицах.
FOREIGN KEY
при создании или изменении таблицы.Street
имеет поле id_city
, которое является внешним ключом и ссылается на таблицу City
.
```sql
CREATE TABLE City
(
id INTEGER NOT NULL PRIMARY KEY,
name CHAR(40)
)CREATE TABLE Street ( id INTEGER NOT NULL PRIMARY KEY, name CHAR(40), id_city INTEGER NOT NULL FOREIGN KEY REFERENCES City(id) ) ```
Суррогатный ключ - это дополнительное служебное поле, добавленное к уже имеющимся информационным полям таблицы, единственное предназначение которого — служить первичным ключом.
id
.Потенциальный ключ - столбец или множество столбцов в таблице, удовлетворяющих условиям уникальности и несократимости:
UNIQUE
.JOIN
или INNER JOIN
- показывает только общие записи обоих таблиц.
SELECT table1.column1, table2.column2...
FROM table1
INNER JOIN table2 ON table1.common_field = table2.common_field;
OUTER JOIN
или LEFT OUTER JOIN
- показывает все записи из левой таблицы независимо от наличия соответствующих записей в правой таблице.
SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2 ON table1.common_field = table2.common_field;
FULL OUTER JOIN
- показывает все возможные комбинации строк из обеих таблиц, соответствующие данному условию.
SELECT table1.column1, table2.column2...
FROM table1
FULL JOIN table2 ON table1.common_field = table2.common_field;
CROSS JOIN
или декартово произведение образует все возможные комбинации строк из обеих таблиц.
SELECT table1.column1, table2.column2...
FROM table1, table2... ;
SELF JOIN
используется для объединения таблицы с самой собой.
SELECT a.column_name, b.column_name...
FROM table1 a, table1 b
WHERE a.common_field = b.common_field;
Объединение с помощью вложенных циклов - это простейший способ объединения. Для каждой строки внешней зависимости ищуется совпадения по всем строкам внутренней зависимости. Временная сложность O(M*N).
Хеш-объединение - более сложная операция, но с низкой стоимостью. Считываются все элементы из внутренней зависимости; в памяти создается хеш таблица; один за другим считываются все эелменты из внешней зависимости. Для каждого элемента вычисляется хеш, чтобы можно было найти соответствующий блок внутренней зависимости; элементы из блока сравниваются с элементами из внешней зависимости. Временная сложность O(M + N), где M - стоимость создания хеш таблицы, а N - стоимость хеш функции.
Объединение слиянием - это единственный способ объединения, в результате которого данные получаются отсортированными. Сначала сортируются оба набора входных данных по ключам объединения, а затем осуществляется слияние (принцип сортировки слиянием). Временная сложность O(N + M), если входные зависимости отсортированны, иначе O(Nlog(N) + Mlog(M)).
Ограничения - правила, накладываемые на таблицу или поле в таблице, призванные ограничить набор возможных записей в таблицу / столбец.
NOT NULL
- столбец не может иметь NULL значения.
DEFAULT
- записывает в ячеку столбца дефолтное значение, если оно не было указано.
UNIQUE
- обеспечивает отсутствие дубликатов в столбце или наборе столбцов. По умолчанию ограничение primary создает кластерный индекс на столбце, а unique - некластерный.
PRIMARY KEY
- устанавливает ключевой столбец. По умолчанию ограничение primary создает кластерный индекс на столбце, а unique - некластерный.
FOREIGN KEY
- устанавливает связь с ключевым стобцом другой таблицы.
CHECK
- используется для ограничения множества значений, которые могут быть помещены в данный столбец.
INDEX
- используется для быстрого создания и извлечения данных из БД.
Связь "один ко одному" (1:1) - в строке таблицы А может сопоставляться только одна строка таблицы Б, и наоборот. Реализуется с помощью указания внешних ключей в обеих таблицах у участников связи.
Связь "многие ко многим" (M:N) - в строке таблицы А может сопоставляться несколько строк таблицы Б, и наоборот. Реализуется с помощью отдельной таблицы с внешними ключами, ссылающимися на участников связи.
Связь "один ко многим" (1:N) - в этом типе связей у строки таблицы А может быть несколько совпадающих строк таблицы Б, но каждой строке таблицы Б может соответствовать только одна строка из А. Реализуется с помощью указания внешнего ключа в таблице Б, ссылающегося на участников связи таблицы А.
WHERE
- используется для указания условия выборки данных из таблицы или при слиянии таблиц.
AND
- связывающий оператор "И".
OR
- связывающий оператор "ИЛИ".
LIMIT
- выводит ограниченное число выделенных записей.
ORDER BY
- выводит ограниченное число выделенных записей.
GROUP BY
- группирует все записи с одинаковым условием.
DISTINCT
- удаляет из выборки все записи с одинаковым условием.
AS
- переименовывает таблицу или столбец для текущего запроса.
HAVING
- используется для указания условия выборки данных из таблицы или при слиянии таблиц. В отличии от WHERE
, HAVING
применяется к результату операции и выполняется уже после того, как результат будет получен.
TRUNCATE
- удаляет все значения из таблицы.
USE
- выбирает доступную базу данных для подключения.
SHOW
- выводит списк баз данных, таблиц или схем.
ALL
- сравнивает значение с множеством других значений.
AND
- позволяет устанавливать несколько условий.
ANY
- сравнивает значение с множеством тех значений, которые удовлетворяют условию.
BETWEEN
- возвращает множество значений, находящихся в указанном промежутке.
EXISTS
- ищет вхождение строки в таблице, удовлетворяющее заданному критерию.
IN
- сравнивает значение со списком указанных значений.
LIKE
- сравнивает значение с другими похожими значениями используя wildcard.
NOT
- реверсает результат логической операции.
OR
- комбинирует условия.
IS NULL
- сравнивает значение с NULL.
UNIQUE
- ищет все уникальные строчки в таблице.
COUNT
- подсчитывает количество строк в выборке.
MAX
- выбирает максимальное значение из столца.
MIN
- выбирает минимальное значение из столбца.
AVG
- выбирает среднее значение из столбца.
SUM
- подсчитывает сумму значений в числовом столбце.