是字符串并置而不是OR。
可在一个函数名字之间与“(”有任何数量的空格。这也使所有的功能名字成为保留词。
"将是一个标识符引号字符(象MySQL `引号字符一样)而不是一个字符串引号字符。
REAL将是FLOAT一个同义词,不是DOUBLE一个同义词。
5.3 MySQL相比ANSI
SQL92的差别
我们尝试使得MySQL遵照ANSI SQL标准和ODBC SQL标准,但是在一些情况下,MySQL做一些不同的事情:
--只是一个注释,如果后面跟一个白空字符。见5.4.7 `--'作为一个注释的开始。
对于VARCHAR列,当值被存储时,拖后的空格被删除。见E MySQL已知的错误和设计缺限。
在一些情况下,CHAR列偷偷地被改变为VARCHAR列。见7.7.1 平静的列指定变化。
当你删除一个表时,对表的权限不自动地废除。你必须明确地发出一个REVOKE来废除对一个表的权限。见7.26 GRANT和REVOKE句法。
5.4 MySQL缺乏的功能
下列功能在当前的MySQL版本是没有的。对于一张优先级表指出何时新扩展可以加入MySQL,
你应该咨询在线MySQL TODO 表。这是本手册最新的TODO表版本。见F 我们想要在未来加入到MySQL的事情列表(TODO)。
5.4.1
子选择
在MySQL中下列语句还不能工作:
SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);
SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2);
然而,在很多情况下,你可以重写查询,而不用子选择:
SELECT table1.* FROM table1,table2 WHERE table1.id=table2.id;
SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id where table2.id IS NULL
对于更复杂的子查询,通常你可以创建临时的表保存子查询。然而在一些情况下,这种选择将行不通。最经常遇到的情形是DELETE语句,对于它标准SQL不支持联结(join)(除了在子选择)。对于这种情况,有2个可用选择,直到子选择被MySQL支持。
第一个选择是使用一种过程化的程序语言(例如Perl或PHP)来提交一个SELECT查询获得要被删除记录主键,并然后使用这些值构造DELETE语句(DELETE
FROM ... WHERE ... IN (key1, key2, ...))。
第二个选择是使用交互式SQL自动构造一套DELETE语句,使用MySQL扩展CONCAT()(代替标准(北联网教程,专业提供视频软件下载)
……