SQL语法分析-基础篇

先上个简单的SQL语句(Mysql):
“SELECT c1,c1+3 as c2,c3 aliasC3,”字符串” FROM table1 WHERE id>1 and id<100”
从表table1中查询id大于1小于100的记录。
查询的字段为列c1,根据c1计算得到的c2,别名为aliasC3的c3,还有一个匿名字段 字符串常量”字符串”.

这条简单的SELECT查询语句可以分为三部分:
1.查询的输出字段(紧接关键字SELECT之后)
2.查询的表(紧接关键字FROM之后)
3.过滤条件(紧接关键字WHERE之后)
用程序要如何解析这条语句呢?
首先,我们遇到了关键字“SELECT”,之后遇到一个空格,这时我们开始记录输出字段的内容,然后我们遇到了关键字”FROM”,记录查询表的内容,直到遇到关键字”WHERE”,这后面就是过滤条件,记录它。

这样我们就得到了这条语句的三个部分。但是这还远远不够,下面来看字段列表部分:
字段之间用逗号分隔,单个字段的内容可能(只是列名,使用as指定了别名的列,列需要使用表达式计算,常量)。
单纯的列名很简单,使用了别名的列,有as关键字也很好处理,as关键字之前为表达式(我们将列名看作变量),之后为别名。
没有as关键字的别名表达式,在读取完一个表达式后遇到空白,空白后是一个有效的字段名称,之后再没有其他内容。
最后一个字符串常量的匿名字段,没有指定别名,所以它是一个常量表达式。
根据以上规则,我们姑且将as当作“别名运算符”,这样就可以将所有输出列的内容抽象为一个“表达
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值