黑马程序员技术交流社区

标题: 老罗引发的问题 [打印本页]

作者: 邢勇    时间: 2011-9-17 19:14
标题: 老罗引发的问题
今天我忘记密码了,让老罗帮我查了下密码,然后他贴了两个查询语句:
SELECT  username  FROM  jrun_members WHERE   email="cosmosxy2012@yahoo.cn"
SELECT  `password`  FROM  jrun_members WHERE   email="cosmosxy2012@yahoo.cn"
可以看出password两边用了那个符号(我还以为是单引号,但仔细一看原来不是单引号,是波浪线下边那个符号,我先称它为标注符号);
然后我用mysql和oracle分别试验了(oracle用的toad,mysql用的ems)一下发现在字段两边加标注符号和不加对mysql是没有影响的,查出的都是正确结果,但在oracle中就不一样了,不加正确,加的话报错(ORA-00911: 无效字符)
那么这个标注符号的意义在哪里,难道就是mysql中特意支持这个符号吗
还有注意这个符号和单引号是完完全全不同的如果将上面的语句改为:
SELECT  ’password‘  FROM  jrun_members WHERE   email="cosmosxy2012@yahoo.cn"
那么查出的就是password这个字符串了
作者: 匿名    时间: 2011-9-17 21:48
mysql和oracle对SQL的支持有差别,加`,就是为了区别字段名称,
如果加上'就是,字符串了,where之后的语句相当于没用了
作者: 匿名    时间: 2011-9-17 22:28
我也试过,我以前在where条件后面加上 name = 123,与 name='123',与name = "123" 在mysql里面是一样的效果
作者: 匿名    时间: 2011-9-18 19:38
加~说明是本表里的字段,区别与sql中的关键字,比如你创建一个用户create user 'user' identified by 'password' 这样允许的,并且在oralce中如果不加也是可以执行的,只是加了的话可读性更强。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2