首页/技术开发/内容

MySQL中文参考手册---5 MySQL与规范的兼容性?

技术开发2023-12-20 阅读()
是字符串并置而不是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()(代替标准(北联网教程,专业提供视频软件下载)

第1页  第2页  第3页  第4页  第5页  第6页  第7页  第8页  第9页  第10页  第11页  第12页  第13页  第14页  第15页 

……

相关阅读