У каждого объекта в базе данных есть уникальное имя. Имена используются в инструкциях SQL и указывают, над каким объектом базы данных должно быть выполнено действие. Фундаментальными именованными объектами в реляционной базе данных являются имена таблиц, столбцов и пользователей; правила их именования были определены еще в стандарте SQL1. В последующих версиях стандарта этот список был значительно расширен и теперь включает схемы (коллекции таблиц), ограничения (ограничительные условия, накладываемые на содержимое таблиц и их отношения), домены (допустимые наборы значений, которые могут быть занесены в столбец) и ряд других типов объектов. Во многих СУБД существуют дополнительные виды именованных объектов, например хранимые процедуры, отношения "первичный ключ-внешний ключ", формы для ввода данных и схемы репликации данных.
В соответствии с первоначальным стандартом ANSI/ISO, имена в SQL должны содержать от 1 до 18 символов, начинаться с буквы и не могут содержать пробельные символы или специальные символы пунктуации. В стандарте SQL2 максимальное число символов в имени увеличено до 127 (дословно в стандарте сказано "менее 128"), и это количество остается неизменным до последнего стандарта SQL:2006. На практике поддержка имен в различных СУБД реализована по-разному. Чаще всего приходится сталкиваться с ограничениями на имена, связанные с другим программным обеспечением вне базы данных (например, имена пользователей, которые могут совпадать с именами, используемыми операционной системой). Различные продукты отличаются и по отношению к применению в именах специальных символов. С точки зрения переносимости, лучше воздержаться от длинных имен и не применять в них никаких специальных символов, за исключением символа подчеркивания, который используется для разделения слов в именах SQL.
Имена таблиц
Если в инструкции указано имя таблицы, SQL предполагает, что происходит обращение к одной из ваших собственных таблиц (т.е. таблиц, которые создали вы). Обычно таблицам присваиваются короткие, но описательные имена.
Имена таблиц в учебной базе данных (ORDERS
, CUSTOMERS
, OFFICES
, SALESREPS
) могут служить хорошими примерами. В персональных базах данных или базах данных небольших отделов выбором имен для таблиц обычно занимается разработчик или проектировщик базы данных.
В более крупных корпоративных базах данных могут существовать определенные корпоративные стандарты именования таблиц, позволяющие избежать конфликтов имен. Кроме того, большинство СУБД позволяет различным пользователям создавать таблицы с одинаковыми именами (например, и пользователь Joe, и пользователь Sam могут создать таблицу birthdays). СУБД обращается к необходимой таблице в зависимости от того, кто из пользователей запрашивает данные. При наличии соответствующих прав можно обращаться к таблицам, владельцами которых являются другие пользователи, с помощью полного, или квалифицированного, имени таблицы. Оно состоит из имен владельца таблицы и собственно таблицы, разделенных точкой. Например, квалифицированное имя таблицы BIRTHDAYS
, владельцем которой является пользователь SAM, имеет такой вид.
SAM.BIRTHDAYS
В общем случае в инструкциях SQL везде, где должно использоваться имя таблицы, можно использовать ее квалифицированное имя.
Стандарт ANSI/ISO SQL еще больше обобщает понятие квалифицированного имени таблицы. Он разрешает создавать именованное множество таблиц, называемое схемой. Вы можете обращаться к таблице определенной схемы с использованием квалифицированного имени. Например, обращение к таблице BIRTHDAYS
в схеме employee_info
имеет следующий вид.
EMPLOYEE_INFO
.BIRTHDAYS
В новых статьях я дам больше информации о схемах, пользователях и иных аспектах структуры SQL-базы данных. Пока что просто помните, что пользователи и схемы — это не одно и то же, и в действительности один пользователь может быть владельцем нескольких схем.
Имена столбцов
Если в SQL-инструкции указано имя столбца, обычно SQL сам в состоянии определить, в какой из указанных в этой же инструкции таблиц содержится данный столбец. Однако если в инструкцию требуется включить два столбца из различных таблиц, но с одинаковыми именами, необходимо указать квалифицированные имена столбцов, которые однозначно определяют их местонахождение. Такое квалифицированное имя столбца состоит из имени таблицы, содержащей столбец, и имени столбца, разделенных точкой. Например, полное имя столбца SALES
из таблицы SALESREPS
имеет такой вид:
SALESREPS
.SALES
Если столбец находится в таблице, владельцем которой является другой пользователь, то в квалифицированном имени столбца следует использовать квалифицированное имя таблицы. Например, полное имя столбца birth_date
в таблице BIRTHDAYS
, владельцем которой является пользователь SAM, имеет следующий вид.
SAM.BIRTHDAYS
.BIRTH_DATE
Квалифицированное имя столбца можно использовать вместо короткого имени в инструкциях SQL там, где используется простое (неквалифицированное) имя; об исключениях говорится при описании конкретных инструкций SQL.