Instruções SQL no MySQL, o uso do operador ponto

1

Segue-se a instrução SQL que encontrei:

SELECT d.name, count(e.emp_id) num_employees
FROM department d INNER JOIN employee e
  ON d.dept_id = e.dept_id
GROUP BY d.name
HAVING count(e.emp_id) > 2;

Eu queria saber o que d.name , e.name ou d.dept_id significa. Qual a diferença?

    
por edgards 25.12.2015 / 12:49

2 respostas

5

O ponto . geralmente é o nome da tabela. Na frase que você mencionou, d é o nome do apelido. Se você verificar a instrução FROM , terá department d . Isso significa que você deseja buscar linhas da tabela department , mas referenciá-las como d (porque department é uma palavra longa), então você cria um alias.

Para desambiguar campos, como tabelas diferentes podem ter os mesmos nomes de campos, você pode preceder o campo com o nome da tabela (ou apelido no seu caso) seguido do ponto.

Então, resumindo, você está dizendo:

Select the field name from alias d, and count the number of employees from the join of tables department and employee, aliased d and e respectively, etc.

    
por 25.12.2015 / 13:05
0

Em Dev.MySQL.com :

You can refer to a table within the default database as tbl_name, or as db_name.tbl_name to specify a database explicitly.
You can refer to a column as col_name, tbl_name.col_name, or db_name.tbl_name.col_name. You need not specify a tbl_name or db_name.tbl_name prefix for a column reference unless the reference would be ambiguous.

Qualificadores do identificador

MySQL permits names that consist of a single identifier or multiple identifiers. The components of a multiple-part name must be separated by period (“.”) characters. The initial parts of a multiple-part name act as qualifiers that affect the context within which the final identifier is interpreted.

Uma referência de tabela pode ser aliased usando tbl_name AS alias_name ou tbl_name alias_name :

SELECT t1.name, t2.salary FROM employee AS t1, info AS t2
WHERE t1.name = t2.name;

SELECT t1.name, t2.salary FROM employee t1, info t2
WHERE t1.name = t2.name;
    
por 11.02.2016 / 23:09

Tags