【问题标题】:Can someone explain to me what this sql command is doing有人可以向我解释这个 sql 命令在做什么吗
【发布时间】:2014-12-06 20:41:03
【问题描述】:

m 是什么意思。和 r。意思是?它是否通过第一个字母引用表名?还有其他命令,如 dayname

我有名为 room、employee、meeting 和参与者的表。

select dayname(m.date), count(*) from meeting m, room r where m.room_id=r.room_id group by weekday(m.date) order by weekday(m.date);

感谢您花时间回答我

员工: +-----------+---------+------+-----+---------+--- ----+ |领域 |类型 |空 |钥匙 |默认 |额外 | +-----------+---------+------+-----+---------+--- ----+ |员工编号 |整数(11) |否 |PRI |空 | | |资历 |整数(11) |是 | |空 | | |姓氏 |字符(30) |是 | |空 | | |名字 |字符(30) |是 | |空 | | +-----------+---------+------+-----+---------+--- ----+

会议: +------------+----------+------+-----+---------+-- -----+ |领域 |类型 |空 |钥匙 |默认 |额外 | +------------+----------+------+-----+---------+-- -----+ |会议ID |整数(11) |否 |PRI |空 | | |房间号 |整数(11) |是 |MUL |空 | | |姓名 |小文本 |是 | |空 | | |日期 |日期 |是 | |空 | | +------------+----------+------+-----+---------+-- -----+

参与者: +------------+---------+------+-----+---------+--- ----+ |领域 |类型 |空 |钥匙 |默认 |额外 | +------------+---------+------+-----+---------+--- ----+ |会议ID |整数(11) |是 |MUL |空 | | |员工编号 |整数(11) |是 |MUL |空 | | +------------+---------+------+-----+---------+--- ----+

房间: +---------+---------+------+-----+---------+-- --+ |领域 |类型 |空 |钥匙 |默认 |额外 | +---------+---------+------+-----+---------+-- --+ |房间号 |整数(11) |否 |PRI |空 | | |姓名 |字符(50) |是 | |空 | | +---------+---------+------+-----+---------+-- --+

【问题讨论】:

  • 你能解释一下什么是commain吗?

标签: mysql


【解决方案1】:

mr 是表名 meetingroom 的别名。在这种情况下,通过这些名称引用它们在语法上很方便,而不是写出整个表名。

SELECT * FROM my_table t WHERE t.my_column_name = 123;

在上面的示例中,t 是一种指定my_table 的便捷方式。然后,您可以通过指定 t.my_column_name 来访问列(属性)。

一般解释见此:
http://en.wikipedia.org/wiki/Alias_(SQL)


关于dayname,我很想说这是一个用户定义的SQL 函数,位于代码的其他位置。据我所知,这不是保留的。我建议您查看您拥有的其余 SQL,看看您是否可以找到它的定义位置。

【讨论】:

  • 是自动设置为 m 和 r 还是我必须设置别名?
  • 您必须手动将别名设置为您喜欢使用的任何值。
【解决方案2】:

是的,它们是表名的别名。您在“来自”部分中自己定义了它们:

from meeting m, room r

在这里,您将m 定义为meeting 表的别名,并将r 定义为room。如果您例如,这可能特别有用。两次靠在房间桌子上:然后你可以给这两个实例不同的别名。

【讨论】:

  • 我可以使用 meeting.room_id 代替 m.room_id 吗?
  • 在 MySQL 中,是的,我想是的。它不适用于例如但是,Oracle:一旦定义了别名,就不能使用普通的表名。如果这不起作用,则从 from meeting m 中删除 m 以删除别名。
  • @user3395201 不,如果您将会议别名为 m...您应该坚持使用 m,因为它易于阅读且编写速度更快
  • 这样做和加入有什么区别?
  • @meda 您的意思是从 from 语句中的两个表中进行选择?什么都没有:这是旧的 SQL 连接语法。我认为这实际上是一个交叉连接,但添加约束(使用where,而不是in)使其成为正常连接。
猜你喜欢
  • 2010-12-17
  • 1970-01-01
  • 2011-03-19
  • 1970-01-01
  • 2011-07-14
  • 2018-09-24
  • 1970-01-01
  • 1970-01-01
  • 2018-04-26
相关资源
最近更新 更多