MySQL有各种引擎 – 主要是INNODB和MyISAM.
MyISAM does not support transactions, nor foreign key constraints.隔离级别相似 – 这些天数据库之间似乎相对标准.
索引
优化器每个SELECT子句只能使用一个索引 – 检查EXPLAIN PLAN输出.有指定要使用的索引的语法,但它是一个提示&仍然可以被优化器忽略.
约束
自定义错误处理
以前 –
MySQL不支持定义自定义错误以区分数据完整性和业务规则错误.
分析/排名/窗口功能
MySQL没有任何此类功能 – 没有ROW_NUMBER,NTILE,RANK或DENSE_RANK.您可以使用变量创建伪造的功能 – 如果您检查标签“mysql”,“rank”,那么SO上有很多示例.
WITH语法 – 子查询因子
分层查询支持
你猜对了 – 没有递归支持分层查询.从v2(!!)开始,Oracle有CONNECT BY,但ANSI标准是使用你在SQL Server 2005中看到的WITH子句.
查看
PIVOT / UNPIVOT
这是ANSI标准语法; Oracle在11g开始支持,但MySQL再次不支持这一点.只有选项是CASE表达式和聚合函数,它仍然是实现此功能的最便携方式(SQL Server 2005支持PIVOT / UNPIVOT).
序列
MySQL不支持序列,最接近的是将INT列定义为auto_increment.这使得在两个或多个表中使用相同的值序列非常困难(如果您不需要,则不是您真正想要的).此外,每个表只能定义一个auto_increment列. increment and offset is instance-wide – 更改它,并影响实例所服务的每个数据库中的每个auto_increment列.重置auto_increment值需要ALTER TABLE权限;删除/截断数据不会改变当前值.
数据类型
包,存储过程,功能
MySQL支持用户定义的函数和存储过程 – 我还没有遇到支持类似于Oracle软件包的数据库. SQL Server具有CLR程序集,但它需要使用.NET CLR代码而不是本机TSQL / PLSQL.