服务器 频道

Mysql高级特性

 MySQL
  索引可以在表创建时用CREATE TABLE语句指定。
  mSQL
  在表被创建了以后,索引必须被创建,用单独的CREATE INDEX语句。
  把一个唯一标识符插入到一张表中
  
  MySQL 使用AUTO_INCREMENT作为列类型修饰符。
  mSQL
  在一张表上创建一个SEQUENCE并且选择_seq列。
  为行获得一个唯一标识符
  
  MySQL 向表中增加一个PRIMARY KEY或UNIQUE键。
  
  mSQL 使用_rowid列。注意_rowid可以将来改变,取决于很多因素。
  得到列最后被修改的时间
  
  MySQL 在表中增加一个TIMESTAMP列。如果你不给出列值或如果你给它一个NULL值,该列自动为INSERT或UPDATE语句设置为当前的日期和时间。
  
  mSQL 使用_timestamp列。
  NULL值的比较
  
  MySQL MySQL遵从ANSI SQL且与NULL的比较总是NULL。
  
  mSQL 在mSQL中,NULL = NULL是TRUE(真)。当从mSQL到MySQL移植老的代码时,你必须将=NULL改委IS NULL,并将<>NULL改为IS NOT NULL。
  字符串的比较
  
  MySQL
  通常,字符串比较以大小写无关方式按当前字符集(缺省为ISO-8859-1 Latin1)决定的排序次序实施。如果你不喜欢这样,声明你的列有BINARY属性,它使得比较根据用在MySQL服务器主机上的ASCII顺序进行。
  mSQL
  所有的字符串比较以大小写敏感的方式以ASCII顺序排序来进行。
  大小写不敏感的搜索
  
  MySQL
  LIKE是一个大小写不敏感或大小写敏感的运算符,这取决于涉及的列。如果LIKE参数不以一个通配符字符开始,如有可能,MySQL则使用索引。
  mSQL
  使用CLIKE。
  尾部空格的处理
  
  MySQL
  剥去CHAR和VARCHAR列尾部的空格。如果不希望这种行为,使用一个TEXT行列。
  mSQL
  保留尾部的空格。
  WHERE子句
  
  MySQL
  MySQL正确地优先化任何东西(AND在OR前计算)。要想在MySQL里得到mSQL的行为,使用括号(如下所示)。
  mSQL
  从左到右计算任何东西。这意味着超过3个参数的一些逻辑运算不能以任何方式表示,它也意味着当你升级到MySQL时,你必须改变一些查询。你通过增加括号很容易做到这点。假定你有下列mSQL查询:
  mysql> SELECT * FROM table WHERE a=1 AND b=2 OR a=3 AND b=4;
  
  为了使MySQL像mSQL那样计算它,你必须增加括号:
  
  mysql> SELECT * FROM table WHERE (a=1 AND (b=2 OR (a=3 AND (b=4))));
  
  存取控制

  MySQL
  有表来存储对每个用户、主机和数据库的授权(许可)选项。见6.6 权限系统如何工作。
  mSQL
  有一个文件“mSQL.acl”,在哪里你能为用户授权读/写权限。
   
  怎样对比MySQL与PostgreSQL

  PostgreSQL有一些更高级的功能如定义用户类型、触发器、规则和一些事务支持。然而,PostgreSQL 缺乏很多来自 ANSI SQL和ODBC的很多标准类型和函数。对于一个完整的限制列表及其支持或不支持哪一个类型和函数。 
 
  通常,PostgreSQL是比MySQL慢很多。。这大部分是由于他们的事务系统。如果你确实需要事务或PostgreSQL提供的丰富的类型体系并且你能承受速度的损失,你应该看看 PostgreSQL

0
相关文章