Mysql 这些select查询之间的差异
我有两个执行相同操作的sql查询,我的问题是给客户起另一个名字来选择数据有什么用?在这种情况下,这与以前没有任何区别。Mysql 这些select查询之间的差异,mysql,sql,Mysql,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 ???
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 ???
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 ???
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)