Продолжу про таблицы.
Таблица в реляционной СУБД - это, как ни удивительно, прямоугольная таблица. Которая состоит из столбцов и строк. Порядки столбцов и строк в таблице в общем случае не важны и могут изменяться со временем. Чтобы различать столбцы, каждому столбцу присваивается имя. У строк в таблице нет ни имён, ни номеров (если только номер строки не добавили специально как отдельный обычный столбец с числом - номером строки, но и тогда нет никаких гарантий, что они будут идти в порядке и без пропусков). Количество столбцов в таблице фиксировано (можно изменять, но это долго и иногда сложно), а количество строк не ограничено (ограничено только возможностями СУБД и аппаратуры).
В ячейках таблицы хранятся атомарные значения, которые могут быть числами, строками или даже бинарными чёрными ящиками. Множество всех
возможных атомарных значений, которые могут быть записаны в ячейках таблицы в определённом столбце, называется доменом столбца. У различных столбцов могут быть различные домены. В SQLite домен универсальный для всех столбцов, так как типизация значений динамическая; в других СУБД обычно требуется аккуратно указывать домен для каждого столбца - тип его значений. Значения ячеек из одного домена можно непосредственно сравнивать друг с другом как минимум на равенство и, как следствие, можно сравнивать на совпадение различные строки одной таблицы. Некоторые домены могут содержать выделенное универсальное значение NULL - отсутствие значения. В других доменах это значение может быть запрещено.
В реляционной модели все строки одной таблицы должны быть попарно различными, т. е. таблица - это
множество значений строк. Так как все строки в таблице уникальны, идентификатором строки служит само значение всех ячеек этой строки. В отдельных практических случаях в СУБД используются и мультимножества строк с очевидными сложностями по идентификации отдельных строк и повторами.
Часто на строки в таблице накладываются дополнительные ограничения, например, что значения в некотором подмножестве столбцов таблицы должны быть у всех строк в этой таблице попарно различными. Такой набор столбцов, значения из ячеек которого однозначно идентифицируют каждую строку в таблице, называется "ключом". Обычно один, логически самый главный ключ в таблице, называют "первичным ключом", остальные - "вторичными ключами". При создании таблицы можно указать её ключи, и СУБД не будет позволять добавлять в таблицу строки, нарушающие это требование. Подобный контроль добавляемых в таблицу допустимых значений называют "контролем целостности БД".
-- 25.06.2018, 15:39 --(Оффтоп)
Всё ещё здесь, читают отзывы более опытных участников и пытаются не докучать глупыми вопросами типа: а что это за таблица такая "dual" в запросе "SELECT true FROM dual"? Откуда она взялась или вы её сами создали? И как проверить вот это вот "NULL OR True" без чего-либо вспомогательного?
Простите, а вы с какой целью интересуетесь?
-- 25.06.2018, 15:51 --Бывают ещё и "внешние ключи". Внешний ключ - это набор столбцов таблицы (не обязательно ключ), совпадающий с каким-то ключом в какой-то другой таблице в БД (с возможным переименованием столбцов). Обычно также требуется, чтобы если в таблице встречается некоторое значение внешнего ключа, то во второй таблице встречалась и строка (единственная, так как для второй таблицы это - ключ) с таким же значением ключа, реализуя отношение "один ко многим". Это требование, также, может проверяться СУБД в рамках контроля целостности БД.