Должен ли я всегда полностью определять имена столбцов в SQL?

Из интереса при работе с операторами SQL я всегда должен использовать полностью квалифицированное имя столбца (tablename.columnname), даже если работает только с одной таблицей, например.

SELECT table.column1, table.column2 FROM table

Ответ 1

Лучше, если вы это сделаете - это не добавляет никакой сложности, и это может предотвратить ошибки в будущем.

Но в четко определенной системе вам не нужно - это как пространства имен в языках программирования. Идеал не должен иметь конфликтов, но он может загромождать код избыточным использованием явных имен.

-Adam

Ответ 2

Я обычно следую этим правилам:

При использовании отдельной таблицы нет необходимости использовать префикс имени таблицы:

SELECT col1, col2 FROM table1

Для нескольких таблиц используйте полное имя таблицы. Псевдонимы могут вводить в заблуждение, особенно при выполнении нескольких соединений:

SELECT table1.col1, table2.col2 FROM table1 INNER JOIN table2 on 
            table1.id = table2.id

Я вижу, что многие разработчики используют псевдонимы таблиц, но особенно в крупных проектах с несколькими разработчиками, они могут стать загадочными. Несколько дополнительных нажатий клавиш могут обеспечить гораздо большую ясность в коде.

Если, однако, может возникнуть необходимость использовать псевдоним столбца, если столбцы имеют одинаковое имя. В этом случае:

    SELECT table1.col1, table2.col1 as table2_col1 FROM table1 
            INNER JOIN table2 on 
            table1.id = table2.id

Ответ 3

Я бы поставил это как личное предпочтение. Было бы только иметь значение, если вы начали присоединяться к таблицам, которые содержат повторяющиеся имена столбцов.

Кроме того, вместо того, чтобы полностью выписать имя таблицы, используйте псевдоним:

SELECT t.column1, t.column2 FROM table as t

Ответ 4

Если вы выбираете только одну таблицу, я не вижу общей полезности. Если вы выбираете из нескольких таблиц, определение имен столбцов, несомненно, облегчит чтение для любого другого разработчика, который может быть не знаком с вашей схемой базы данных.

Ответ 5

Если вы только запрашиваете одну таблицу - я бы сказал, нет. Это более читаемо таким образом.

Ответ 6

Я предпочитаю использовать псевдоним таблицы, когда в игре играет более 1 таблицы.

Ответ 7

Я думаю, что это хорошая идея всегда использовать полное имя столбца. Используйте псевдоним, если имя таблицы слишком длинное. Он также подготавливает ваши запросы для добавления фьючерсов, например. соединения.

Ответ 8

Я бы сказал, что приятно использовать квалифицированное имя, оно добавляет читаемость к вашему коду. Это не имеет смысла использовать его для отдельной таблицы, но для нескольких таблиц это необходимо. если имена таблиц слишком велики, то рекомендуется использовать псевдоним, алиас предпочтительно должен быть получен из имени таблицы.

SELECT Dep.Name,Emp.Name
FROM Department DEP INNER JOIN Employee Emp
ON Dep.departmentid=Emp.DepartmentID 

Ответ 9

Не решайте проблем, которые у вас еще нет. (По крайней мере, то, что говорит моя команда, всегда говорит мне.) Я уверен, что обезьяна, которая когда-нибудь должна добавить JOIN ваше выражение может понять это.

Ответ 10

Даже самые хорошо определенные системы могут быть изменены. Новое поле можно было бы легко ввести в таблицу, вызывая неоднозначность в существующем запросе.

Полностью квалифицируя их, вы защищаете вас от этого сценария.

Ответ 11

Нет.

Вы всегда должны псевдоним таблиц, и вы всегда должны квалифицировать имена столбцов с помощью таблиц псевдонимов.

select
    p.FirstName,
    p.LastName,
    p.SSN
from Person p
where p.ID = 345