Mysql 这些select查询之间的差异

Mysql 这些select查询之间的差异,mysql,sql,Mysql,Sql,我有两个执行相同操作的sql查询,我的问题是给客户起另一个名字来选择数据有什么用?在这种情况下,这与以前没有任何区别。 但是,如果查询使用多个具有联接的表,则在表名中使用别名可以使查询更具可读性。 但是,我使用的命名约定将使别名表名完全无用(除非多次加入同一个表) 从性能的角度来看,它不会改变任何东西。在这种情况下,它与以往没有任何区别。 但是,如果查询使用多个具有联接的表,则在表名中使用别名可以使查询更具可读性。 但是,我使用的命名约定将使别名表名完全无用(除非多次加入同一个表) 从性能的角度

我有两个执行相同操作的sql查询,我的问题是给客户起另一个名字来选择数据有什么用?

在这种情况下,这与以前没有任何区别。
但是,如果查询使用多个具有联接的表,则在表名中使用别名可以使查询更具可读性。 但是,我使用的命名约定将使别名表名完全无用(除非多次加入同一个表)


从性能的角度来看,它不会改变任何东西。

在这种情况下,它与以往没有任何区别。
但是,如果查询使用多个具有联接的表,则在表名中使用别名可以使查询更具可读性。 但是,我使用的命名约定将使别名表名完全无用(除非多次加入同一个表)


从性能的角度来看,它不会改变任何东西。

在这种情况下,它与以往没有任何区别。
但是,如果查询使用多个具有联接的表,则在表名中使用别名可以使查询更具可读性。 但是,我使用的命名约定将使别名表名完全无用(除非多次加入同一个表)


从性能的角度来看,它不会改变任何东西。

在这种情况下,它与以往没有任何区别。
但是,如果查询使用多个具有联接的表,则在表名中使用别名可以使查询更具可读性。 但是,我使用的命名约定将使别名表名完全无用(除非多次加入同一个表)


从性能角度看,它不会改变任何东西。

它被称为别名。在您的情况下,它不是必需的。
当当前名称不方便、含糊不清或未知时(对于组函数),可以使用它简化查询

  • 连接查询中的模糊示例。我们有两张桌子:
  • 用户

    SELECT cust_email  FROM  customer AS c WHERE c.cust_email="pankaj@yahoo.com"
    SELECT cust_email  FROM  customer  WHERE cust_email="pankaj@yahoo.com"
    
    Id         int (PK)
    Name       nvarchar(50)
    
    书籍

    SELECT cust_email  FROM  customer AS c WHERE c.cust_email="pankaj@yahoo.com"
    SELECT cust_email  FROM  customer  WHERE cust_email="pankaj@yahoo.com"
    
    Id         int (PK)
    Name       nvarchar(50)
    
    现在,如果查询这两个表,它将是模糊的,因为名称相似。 您可以在此处使用别名:

    Id         int (PK)
    UserId     int (FK)
    Name       nvarchar(30)
    
    您将获得以下结果:

    SELECT u.Id as UserId, u.Name as UserName, b.Name AS BookName
    FROM Users AS u
    INNER JOIN Books AS b
    ON u.Id = b.UserId
    
    如果对同名列进行联接,则必须使用别名。否则,它将是错误的语法

    | UserId | UserName | BookName |
    --------------------------------
    |   1    |   John   | Book123  |
    |   2    |   Mark   | BookXYZ  |
    etc...
    
  • 组函数命名。
    例如,在具有以下函数的查询中

    INNER JOIN Books ON Id = Id ???
    
  • 您可以使用列别名设置名称,并在SQL读取器或其他地方访问它

  • 在以下情况下,为了方便起见,它可以用于列别名:

    SELECT COUNT(*) as RowsCount FROM Users
    SELECT CONCAT(FirstName, " ", LastName, " ", MiddleName) as FullName FROM Users
    
  • 得到

    SELECT Id, HasUserEverBeenOnAHelpPage as Value FROM SomeTable
    
    而不是

    | UserId | Value |
    ------------------
    |   1    | true  |
    |   2    | false |
    
    这并不意味着它不能用于其他情况。有时,它甚至用于代码可读性和程序员的便利性:

    | UserId | HasUserEverBeenOnAHelpPage |
    ---------------------------------------
    |   1    | true                       |
    |   2    | false                      |
    
    在这种情况下,名称不是含糊不清的,并且这个查询可以在没有别名的情况下轻松完成。但是,使用它们更方便:

    SELECT u.Id,
           u.FirstName,
           u.LastName,
           ua.City,
           ua.AddressLine,
           ua.PostalCode,
           us.Language,
           us.IsCookieEnabled,
           lh.LastEnterDate
    FROM Users as u
    INNER JOIN UserAddresses as ua
    ON ua.UserId = u.Id
    INNER JOIN UserSettings as us,
    ON us.UserId = u.Id
    INNER JOIN LoginHistory as lh
    ON lh.UserId = u.Id
    
    请在此处阅读更多信息:



    这就是所谓的别名。在您的情况下,它不是必需的。
    当当前名称不方便、含糊不清或未知时(对于组函数),可以使用它简化查询

  • 连接查询中的模糊示例。我们有两张桌子:
  • 用户

    SELECT cust_email  FROM  customer AS c WHERE c.cust_email="pankaj@yahoo.com"
    SELECT cust_email  FROM  customer  WHERE cust_email="pankaj@yahoo.com"
    
    Id         int (PK)
    Name       nvarchar(50)
    
    书籍

    SELECT cust_email  FROM  customer AS c WHERE c.cust_email="pankaj@yahoo.com"
    SELECT cust_email  FROM  customer  WHERE cust_email="pankaj@yahoo.com"
    
    Id         int (PK)
    Name       nvarchar(50)
    
    现在,如果查询这两个表,它将是模糊的,因为名称相似。 您可以在此处使用别名:

    Id         int (PK)
    UserId     int (FK)
    Name       nvarchar(30)
    
    您将获得以下结果:

    SELECT u.Id as UserId, u.Name as UserName, b.Name AS BookName
    FROM Users AS u
    INNER JOIN Books AS b
    ON u.Id = b.UserId
    
    如果对同名列进行联接,则必须使用别名。否则,它将是错误的语法

    | UserId | UserName | BookName |
    --------------------------------
    |   1    |   John   | Book123  |
    |   2    |   Mark   | BookXYZ  |
    etc...
    
  • 组函数命名。
    例如,在具有以下函数的查询中

    INNER JOIN Books ON Id = Id ???
    
  • 您可以使用列别名设置名称,并在SQL读取器或其他地方访问它

  • 在以下情况下,为了方便起见,它可以用于列别名:

    SELECT COUNT(*) as RowsCount FROM Users
    SELECT CONCAT(FirstName, " ", LastName, " ", MiddleName) as FullName FROM Users
    
  • 得到

    SELECT Id, HasUserEverBeenOnAHelpPage as Value FROM SomeTable
    
    而不是

    | UserId | Value |
    ------------------
    |   1    | true  |
    |   2    | false |
    
    这并不意味着它不能用于其他情况。有时,它甚至用于代码可读性和程序员的便利性:

    | UserId | HasUserEverBeenOnAHelpPage |
    ---------------------------------------
    |   1    | true                       |
    |   2    | false                      |
    
    在这种情况下,名称不是含糊不清的,并且这个查询可以在没有别名的情况下轻松完成。但是,使用它们更方便:

    SELECT u.Id,
           u.FirstName,
           u.LastName,
           ua.City,
           ua.AddressLine,
           ua.PostalCode,
           us.Language,
           us.IsCookieEnabled,
           lh.LastEnterDate
    FROM Users as u
    INNER JOIN UserAddresses as ua
    ON ua.UserId = u.Id
    INNER JOIN UserSettings as us,
    ON us.UserId = u.Id
    INNER JOIN LoginHistory as lh
    ON lh.UserId = u.Id
    
    请在此处阅读更多信息:



    这就是所谓的别名。在您的情况下,它不是必需的。
    当当前名称不方便、含糊不清或未知时(对于组函数),可以使用它简化查询

  • 连接查询中的模糊示例。我们有两张桌子:
  • 用户

    SELECT cust_email  FROM  customer AS c WHERE c.cust_email="pankaj@yahoo.com"
    SELECT cust_email  FROM  customer  WHERE cust_email="pankaj@yahoo.com"
    
    Id         int (PK)
    Name       nvarchar(50)
    
    书籍

    SELECT cust_email  FROM  customer AS c WHERE c.cust_email="pankaj@yahoo.com"
    SELECT cust_email  FROM  customer  WHERE cust_email="pankaj@yahoo.com"
    
    Id         int (PK)
    Name       nvarchar(50)
    
    现在,如果查询这两个表,它将是模糊的,因为名称相似。 您可以在此处使用别名:

    Id         int (PK)
    UserId     int (FK)
    Name       nvarchar(30)
    
    您将获得以下结果:

    SELECT u.Id as UserId, u.Name as UserName, b.Name AS BookName
    FROM Users AS u
    INNER JOIN Books AS b
    ON u.Id = b.UserId
    
    如果对同名列进行联接,则必须使用别名。否则,它将是错误的语法

    | UserId | UserName | BookName |
    --------------------------------
    |   1    |   John   | Book123  |
    |   2    |   Mark   | BookXYZ  |
    etc...
    
  • 组函数命名。
    例如,在具有以下函数的查询中

    INNER JOIN Books ON Id = Id ???
    
  • 您可以使用列别名设置名称,并在SQL读取器或其他地方访问它

  • 在以下情况下,为了方便起见,它可以用于列别名:

    SELECT COUNT(*) as RowsCount FROM Users
    SELECT CONCAT(FirstName, " ", LastName, " ", MiddleName) as FullName FROM Users
    
  • 得到

    SELECT Id, HasUserEverBeenOnAHelpPage as Value FROM SomeTable
    
    而不是

    | UserId | Value |
    ------------------
    |   1    | true  |
    |   2    | false |
    
    这并不意味着它不能用于其他情况。有时,它甚至用于代码可读性和程序员的便利性:

    | UserId | HasUserEverBeenOnAHelpPage |
    ---------------------------------------
    |   1    | true                       |
    |   2    | false                      |
    
    在这种情况下,名称不是含糊不清的,并且这个查询可以在没有别名的情况下轻松完成。但是,使用它们更方便:

    SELECT u.Id,
           u.FirstName,
           u.LastName,
           ua.City,
           ua.AddressLine,
           ua.PostalCode,
           us.Language,
           us.IsCookieEnabled,
           lh.LastEnterDate
    FROM Users as u
    INNER JOIN UserAddresses as ua
    ON ua.UserId = u.Id
    INNER JOIN UserSettings as us,
    ON us.UserId = u.Id
    INNER JOIN LoginHistory as lh
    ON lh.UserId = u.Id
    
    请在此处阅读更多信息:



    这就是所谓的别名。在您的情况下,它不是必需的。
    当当前名称不方便、含糊不清或未知时(对于组函数),可以使用它简化查询

  • 连接查询中的模糊示例。我们有两张桌子:
  • 用户

    SELECT cust_email  FROM  customer AS c WHERE c.cust_email="pankaj@yahoo.com"
    SELECT cust_email  FROM  customer  WHERE cust_email="pankaj@yahoo.com"
    
    Id         int (PK)
    Name       nvarchar(50)