mysql用中文加N_MySQL_MySQL中文参考手册6,MySQL与标准的兼容性?5.1 &n - phpStudy

MySQL中文参考手册6

MySQL与标准的兼容性?

5.1   MySQL对ANSI SQL92扩充

MySQL包含了一些可能在其他SQL数据库找不到的扩充。要注意如果你使用他们,你的代码将不与其他SQL服务器兼容。在一些情况下,你可以编写包括MySQL扩展的代码,但是仍然是可移植的,通过使用/*! ... */形式的注释。在这种情况下,MySQL将进行词法分析并且执行在注释内的代码,好像它是任何其它MySQL语句,但是其他SQL服务器将忽略扩展。例如:

SELECT /*! STRAIGHT_JOIN */ col_name FROM table1,table2 WHERE ...

如果你在'!'后增加一个版本数字,该语法将仅在MySQL版本是等于或比使用的版本数字新时才执行:

CREATE /*!32302 TEMPORARY */ TABLE (a int);

上面的意思是如果你有3.23.02或更新,那么MySQL将使用TEMPORARY关键词。

MySQL扩展被列在下面:

字段类型MEDIUMINT、SET、ENUM和不同的BLOB和TEXT类型。

字段属性AUTO_INCREMENT、BINARY、UNSIGNED和ZEROFILL。

缺省地,所有的字符串比较是忽略大小写的,由当前的字符集决定了(缺省为ISO-8859-1Latin1)排序顺序。如果你不喜欢这样,你应该用BINARY属性或使用BINARY强制符声明列,它导致根据MySQL服务器主机的ASCII顺序进行排序。

MySQL将每个数据库映射一个MySQL数据目录下面的目录,将数据库表映射到数据库目录下的数据库文件名。这有2个含意:

在区分大小写文件名的操作系统(象大多数 Unix 系统一样)上的MySQL中数据库名字和表名是区分大小写的。如果你有困难记得表名,接受一个一致的约定,例如总是用小写名字创建数据库和表。

数据库、表、索引、列或别名可以以数字开始(但是不能仅由数字组成)。

你可以使用标准的系统命令备份、重命名、移动、删除和拷贝表。例如,重命名一个表,重命名“.MYD”、“.MYI”和“.frm”文件为相应的表

在SQL语句中,你可以用db_name.tbl_name语法访问不同数据库中的表。一些SQL服务器提供同样的功能但是称它们为这User space(用户空间)。MySQL不支持类似在create table ralph.my_table...IN my_tablespace中的表空间。

LIKE在数字列上被允许。

在一SELECT语句里面使用INTO OUTFILE和STRAIGHT_JOIN。见7.12 SELECT句法.

在一个SELECT语句中SQL_SMALL_RESULT选项。

EXPLAIN SELECT得到如何联结表的描述。

在一个CREATE TABLE语句里面使用索引、在字段前缀上的索引和使用INDEX或KEY。见7.7 CREATE TABLE 句法。

CREATE TABLE使用TEMPORARY或IF NOT EXISTS。

使用COUNT(DISTINCT list),这里“list”超过一个元素。

在一个ALTER TABLE语句里面使用CHANGE col_name、DROP  col_name或DROP INDEX。见7.8 ALTER TABLE句法。

在一个ALTER TABLE里面语句使用IGNORE。

在一个ALTER TABLE语句中使用多重ADD、ALTER、DROP或CHANGE子句。

使用带关键词IF EXISTS的DROP TABLE。

你能用单个DROP TABLE语句抛弃多个表。

DELETE语句的LIMIT子句。

INSERT和REPLACE语句的DELAYED子句。

INSERT, REPLACE, DELETE和UPDATE语句的LOW_PRIORITY子句。

使用LOAD DATA INFILE。在多数情况下,这句法与Oracle的LOAD DATA INFILE兼容。见7.16 LOAD DATA INFILE 句法。

OPTIMIZE TABLE语句。见7.9 OPTIMIZE TABLE句法。

SHOW语句。见7.21 SHOW句法(得到表、列等的信息)。

字符串可以被“"”或“'”包围,而不只是“'”。

使用“”转义字符。

SET OPTION语句。见7.25 SET OPTION句法。

你不需要命名所有在GROUP BY部分的被选择的列。这为一些很特定的情况给出更好的性能,而不是一般的查询。见7.4.13 用于GROUP BY子句的函数。

为了方便来自于SQL环境其他为用户,MySQL对许多函数支持别名。例如,所有的字符串功能都支持ANSI  SQL句法和 ODBC句法。

MySQL理解||和&&意味着逻辑的OR和AND,就像在C程序语言中。在MySQL中,||和OR是同义词&&和AND是同义词。正因为这个好的句法,MySQL对字符串并置的不支持ANSI SQL ||操作符;相反使用CONCAT(),因为CONCAT()接受任何数量的参数,很容易把||操作符使用变换到MySQL。

CREATE DATABASE或DROP DATABASE。见7.5 CREATE DATABASE句法。

%操作符是MOD()一个同义词,即,N % M等价于MOD(N,M)。%支持C程序员并与PostgreSQL兼容。

=, <>, <=,=,>, <>, <=>, AND, OR或LIKE操作符可以放在SELECT语句的FROM左边用于比较列。例如:

mysql> SELECT col1=1 AND col2=2 FROM tbl_name;

LAST_INSERT_ID()函数。见20.4.29  mysql_insert_id()。

扩展的正则表达式操作符REGEXP和NOT REGEXP。

CONCAT()或CHAR()有一个参数或超过2个参数。(在MySQL中,这些函数可取任何数量的参数。)

BIT_COUNT(), CASE, ELT(), FROM_DAYS(),

FORMAT(), IF(), PASSword(), ENCRYPT(),

md5(), ENCODE(), DECODE(), PERIOD_ADD(),

PERIOD_DIFF(), TO_DAYS(),或WEEKDAY()函数。

使用TRIM()整修子串。ANSI SQL 只支持单个字符的删除。

GROUP BY函数STD(), BIT_OR()和BIT_AND()。

使用REPLACE而不是DELETE+INSERT。见7.15 REPLACE句法。

FLUSH flush_option语句。

在一个语句用:=设置变量的可能性:

SELECT @a:=SUM(total),@b=COUNT(*),@a/@b AS avg FROM test_table;

SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;

5.2 以ANSI模式运行MySQL

如果你用--ansi选项启动mysqld,MySQL的下列行为改变。

||是字符串并置而不是OR。

可在一个函数名字之间与“(”有任何数量的空格。这也使所有的功能名字成为保留词。

"将是一个标识符引号字符(象MySQL `引号字符一样)而不是一个字符串引号字符。

REAL将是FLOAT一个同义词,不是DOUBLE一个同义词。

本文作者:相关阅读:

织梦dedecms 忘记管理员后台密码的解决技巧

div+css布局入门

Ajax光环背后的隐患

疯狂挂载:Linux连接常用外部设备的方法

配置FreeBSD的FTP和NFS

教你做一个可以弹出确认对话框的自定义Web服务器控件ConfirmButton

SQL Server 2008中使用稀疏列和列集的方法(二)

对采用动态原型方式无法展示继承机制得思考

JavaScript中的类型

phpcms2008 常用数组,变量整理

使两个iframe的高度与内容自适应,且相等

写php分页时出现的Fatal error的解决方法

Extjs入门之动态加载树代码

简单示例AJAX结合PHP代码实现登录效果代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值