Должен ли я всегда полностью определять имена столбцов в SQL? - PullRequest
11 голосов
/ 17 февраля 2009

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

SELECT table.column1, table.column2 FROM table

Ответы [ 11 ]

11 голосов
/ 17 февраля 2009

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

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

-Adam

5 голосов
/ 17 февраля 2009

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

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

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
2 голосов
/ 17 февраля 2009

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

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

ВЫБРАТЬ t.column1, t.column2 ИЗ таблицы как t

1 голос
/ 17 февраля 2009

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

1 голос
/ 17 февраля 2009

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

0 голосов
/ 21 ноября 2017

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

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

0 голосов
/ 17 февраля 2009

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

0 голосов
/ 17 февраля 2009

номер

Вы должны всегда псевдоним таблиц, и вы всегда должны указывать имена столбцов в таблице псевдонимы .

select
    p.FirstName,
    p.LastName,
    p.SSN
from Person p
where p.ID = 345
0 голосов
/ 17 февраля 2009

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

SELECT Dep.Name,Emp.Name
FROM Department DEP INNER JOIN Employee Emp
ON Dep.departmentid=Emp.DepartmentID 
0 голосов
/ 17 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...