Should I Always Fully Qualify Column Names In SQL?

后端 未结 11 1158
小鲜肉
小鲜肉 2021-02-14 02:48

Out of interest when working with SQL statements should I always use the fully qualifed column name (tablename.columnname) even if only working with one table e.g.



        
相关标签:
11条回答
  • 2021-02-14 03:30

    I would say it is nice to use qualified name, it adds readability to your code. It does not make much sense to use it for single table but for multiple tables it is must. if table names are too big then it is recommended to use alias, alias should preferably be derived from table name.

    SELECT Dep.Name,Emp.Name
    FROM Department DEP INNER JOIN Employee Emp
    ON Dep.departmentid=Emp.DepartmentID 
    
    0 讨论(0)
  • 2021-02-14 03:38

    Don't solve problems you don't have yet. (At least that's what my team lead is always telling me.) I'm sure the monkey who someday has to add a JOIN to your statement can figure it out.

    0 讨论(0)
  • 2021-02-14 03:40

    No.

    You should always alias the tables, and you should always qualify your column names with the table aliases.

    select
        p.FirstName,
        p.LastName,
        p.SSN
    from Person p
    where p.ID = 345
    
    0 讨论(0)
  • 2021-02-14 03:41

    I think it is a good idea to always use the fully qualified column name. Use an alias if the table name is too long. It also prepares your queries for futures additions of e.g. joins.

    0 讨论(0)
  • 2021-02-14 03:45

    I generally follow these rules:

    When using a single table, it is not necessary to use the table name prefix:

    SELECT col1, col2 FROM table1
    

    For multiple tables, use the full table name. Aliases can be confusing, especially when doing multiple joins:

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

    I see many developers using table aliases, but particularly in large projects with multiple developers, these can become cryptic. A few extra keystrokes can provide a lot more clarity in the code.

    If may, however, become necessary to use a column alias when columns have the same name. In that case:

        SELECT table1.col1, table2.col1 as table2_col1 FROM table1 
                INNER JOIN table2 on 
                table1.id = table2.id
    
    0 讨论(0)
提交回复
热议问题