Правила и ограничения именования таблиц в SQLite
Быстрый ответ
SQLite разрешает использование в именах таблиц:
- Алфавитных символов (A-Z, a-z), чисел (0-9) и нижних подчёркиваний.
- Ограничивает начало имени цифрами и использование зарезервированных ключевых слов.
- Оформляет специальные символы и пробелы в двойные кавычки
"имя таблицы"
или квадратные скобки[имя таблицы]
.
Примеры корректных наименований таблиц:
customers
— простое имя.customer_data
— с использованием нижнего подчёркивания."Customer Data"
или[Customer Data]
— с пробелами.- Имена вида:
123customers
,select
,create
— кажутся некорректными, но в кавычках они допустимы.
Расширение границ
SQLite позволяет использовать почти любые комбинации символов для наименования таблиц, если оформлять имена в двойные кавычки или скобки. Становятся возможными такие имена как "123abc.txt"
или экстравагантные [Это должно_быть корректное.имя+таблицы!?]
. Однако об опрятности и читаемости базы данных важно помнить.
Зарезервированные слова в качестве имен таблиц
Удивительно, но зарезервированные ключевые слова можно использовать как имена таблиц, оформив их в кавычки. Так, имя "[select]"
для таблицы вполне реально, хотя такое использование выходит за рамки здравого смысла и может приводить к сложностям. Рекомендуется избегать такой практики.
Спецсимволы: разноплановое отношение
Символы типа тире (-
) или точки (.
) могут присутствовать в именах таблиц, например, "customer-service"
или "sales.records"
. Необходимо помнить, что точка может восприниматься как разделитель имён схем, что приводит к возникновению нежелательных сложностей и ошибок.
Нежелательные гости: префикс "sqlite_"
Недопустимо начинать имена таблиц префиксом "sqlite_", так как он зарезервирован системой SQLite. Нарушение этого правила может вызвать проблемы, связанные с конфликтом с внутренними функциями SQLite.
Визуализация
Представим примеры приемлемых имен таблиц SQLite, приводя аналогию с бейсбольными кепками:
| Кепка (Имя Таблицы) | Может ли она быть надета (Допустимость) |
| -------------------- | -------------------------------------- |
| ⚽️ FC Barcelona | **Да** ✔️ |
| 🏀 Lakers%123 | **Нет** ❌ (Неразрешённая комбинация) |
| 🏈 Bears_Chicago | **Да** ✔️ |
| ⚾️ Red_Sox | **Да** ✔️ |
| 🥎 "Wiffle Ball?" | **Да** ✔️ (Непривычный выбор, но корректный) |
Кепки отражают правила SQLite для наименования таблиц:
**ПРАВИЛА**:
- **Начинайте** имя с буквы или символа подчёркивания.
- **Продолжайте** название буквами, цифрами или подчёркиваниями.
- **Заключайте** спецсимволы или пробелы в кавычки или скобки.
Числовые литералы и прочие исключения
Гибкость SQLite в нейминге сопровождается рядом ограничений.
Нюансы чувствительности к регистру
В SQLite имена таблиц, заключенные в кавычки, чувствительны к регистру, т.е., "customer"
и "Customer"
будут различными. Выбор между удобством использования и сохранением регистра — вопрос предпочтений.
Детали использования цифр
Цифровые последовательности без кавычек недопустимы как имена таблиц. Например, 1234
интерпретируется как числовой литерал, а не имя таблицы. Чтобы использовать числа в имени, их нужно оформить в кавычках и они не должны находиться в начале, если имеются буквы: "1234_test"
корректно, но 1234test
— нет. Числам хотелось бы быть первыми, но здесь безусловно главенствуют буквы!
Нежданные гости: специальные символы
Неосторожное использование специальных символов в именах таблиц может создавать путаницу при написании SQL-запросов из-за их смешения со стандартными операторами. Кроме того, избыток подобных символов может вносить хаос в единобразие имен базы данных.
Псевдоним в двойных кавычках
Когда в именах таблиц используются точки, рекомендуется применять псевдонимы для большей наглядности кода:
SELECT foo, bar, cat, shoe FROM "user.data" AS userdata;
/* SQL-запросы иногда требуют особой внимательности, как и прогулка с кошкой */
Полезные материалы
- SQLite Keywords — список зарезервированных ключевых слов SQLite.
- CREATE TABLE — основы создания таблиц в SQLite.
- SQLite Frequently Asked Questions — руководство SQLite для энтузиастов.
- Query Language Understood by SQLite — гид по языку запросов SQLite.
- Implementation Limits For SQLite — существующие ограничения в SQLite.
- Datatypes In SQLite — обзор типов данных в SQLite.