mysql对标准sql的扩展_1.7.1 MySQL对标准SQL的扩展

MySQL Server支持某些您可能在其他SQL DBMS中找不到的扩展。请注意,如果使用它们,您的代码将无法移植到其他SQL Server。在某些情况下,可以使用以下形式的注释编写包含MySQL扩展但仍可移植的代码:

/*! <em class="replaceable">MySQL-specific code</em> */

在这种情况下,MySQL服务器将像其他任何SQL语句一样解析并执行注释中的代码,但是其他SQL Server将忽略这些扩展。例如,MySQL Server可以STRAIGHT_JOIN在以下语句中识别关键字,而其他服务器则不能:

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

如果在! 字符后添加版本号,则仅当MySQL版本大于或等于指定的版本号时,才会执行注释中的语法。KEY_BLOCK_SIZE以下注释中的子句仅由MySQL 5.1.10或更高版本的服务器执行:

CREATE TABLE t1(a INT, KEY (a)) /*!50110 KEY_BLOCK_SIZE=1024 */;

以下描述列出了按类别组织的MySQL扩展。

磁盘上数据的组织

MySQL Server将每个数据库映射到MySQL数据目录下的目录,并将数据库内的表映射到数据库目录中的文件名。因此,数据库和表名在具有区分大小写的文件名的操作系统(例如大多数Unix系统)上的MySQL Server中是区分大小写的。请参见 [第9.2.3节“标识符区分大小写”](https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html "9.2.3标识符区分大小写")。

通用语言语法

默认情况下,字符串可以被封闭 "以及'。如果ANSI_QUOTES启用了SQL模式,则只能用括住字符串, '并且服务器将用括起来的字符串解释"为标识符。

\ 是字符串中的转义字符。

在SQL语句中,可以使用db_name.tbl_name语法从不同数据库访问表 。某些SQL Server提供相同的功能,但称之为 User space。MySQL Server不支持诸如以下语句中使用的表空间CREATE TABLE ralph.my_table ... IN my_tablespace。

SQL语句语法

[EXPLAIN SELECT](https://dev.mysql.com/doc/refman/8.0/en/explain.html "13.8.2 EXPLAIN声明") 获取有关查询优化器如何处理表的描述。

使用[LOAD DATA](https://dev.mysql.com/doc/refman/8.0/en/load-data.html "13.2.7 LOAD DATA语句")。在许多情况下,此语法与Oracle兼容 [LOAD DATA](https://dev.mysql.com/doc/refman/8.0/en/load-data.html "13.2.7 LOAD DATA语句")。请参见 [第13.2.7节“ LOAD DATA语句”](https://dev.mysql.com/doc/refman/8.0/en/load-data.html "13.2.7 LOAD DATA语句")。

使用的, 或者 , 或者 在 声明。使用多个的, ,,或 在条款 声明。请参见[第13.1.9节“ ALTER TABLE语句”](https://dev.mysql.com/doc/refman/8.0/en/alter-table.html "13.1.9 ALTER TABLE语句")。 CHANGE <em class="replaceable">col_name</em>``DROP <em class="replaceable">col_name</em>[DROP INDEX](https://dev.mysql.com/doc/refman/8.0/en/drop-index.html "13.1.27 DROP INDEX语句")IGNORE``RENAME[ALTER TABLE](https://dev.mysql.com/doc/refman/8.0/en/alter-table.html "13.1.9 ALTER TABLE语句")ADD``ALTER``DROP``CHANGE[ALTER TABLE](https://dev.mysql.com/doc/refman/8.0/en/alter-table.html "13.1.9 ALTER TABLE语句")

索引名称的使用,列前缀的索引以及INDEX或 KEYin [CREATE TABLE](https://dev.mysql.com/doc/refman/8.0/en/create-table.html "13.1.20 CREATE TABLE语句")语句的使用。请参见 [第13.1.20节“ CREATE TABLE语句”](https://dev.mysql.com/doc/refman/8.0/en/create-table.html "13.1.20 CREATE TABLE语句")。

使用的TEMPORARY或IF NOT EXISTS与[CREATE TABLE](https://dev.mysql.com/doc/refman/8.0/en/create-table.html "13.1.20 CREATE TABLE语句")。

INSERT INTO <em class="replaceable">tbl_name</em> SET <em class="replaceable">col_name</em> = ... 句法。

在 语句中 使用INTO OUTFILE或。请参见 [第13.2.10节“ SELECT语句”](https://dev.mysql.com/doc/refman/8.0/en/select.html "13.2.10 SELECT语句")。 INTO DUMPFILE[SELECT](https://dev.mysql.com/doc/refman/8.0/en/select.html "13.2.10 SELECT语句")

选项,例如STRAIGHT_JOIN或 SQL_SMALL_RESULTin [SELECT](https://dev.mysql.com/doc/refman/8.0/en/select.html "13.2.10 SELECT语句")语句。

您无需在GROUP BY子句中命名所有选定的列 。对于某些非常特定但非常普通的查询,这可以提供更好的性能。请参见 [第12.20节“集合函数”](https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions-and-modifiers.html "12.20汇总函数")。

您可以指定ASC并 DESC用GROUP BY,不仅仅是ORDER BY。

资料类型

功能和运算符

为了使从其他SQL环境迁移的用户更容易,MySQL Server支持许多功能的别名。例如,所有字符串函数都支持标准SQL语法和ODBC语法。

与C语言一样, MySQL Server将||and &&运算符理解为 逻辑OR和AND。在MySQL服务器, ||并且 OR是同义词,因为是 && 和AND。由于这种漂亮的语法,MySQL Server不支持||用于字符串连接的标准SQL 运算符。使用 CONCAT()代替。由于 CONCAT()采用任意数量的参数,因此很容易将||运算符的使用转换 为MySQL Server。

字符串比较默认情况下不区分大小写,排序顺序由当前字符集的排序规则确定utf8mb4(默认情况下)。要执行区分大小写的比较,您应该BINARY使用属性声明列 或使用 BINARY强制转换,这将导致使用基本字符代码值而不是词法顺序来完成比较。

该% 运营商的代名词 MOD()。即 等于 。 支持C程序员并与PostgreSQL兼容。 <em class="replaceable">N</em> % <em class="replaceable">M</em>MOD(<em class="replaceable">N</em>,<em class="replaceable">M</em>)%

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

LIKE 允许使用数值。

CONCAT()或 CHAR()带有一个或两个以上参数。(在MySQL Server中,这些函数可以使用可变数量的参数。)

使用的TRIM()修剪子。标准SQL仅支持删除单个字符。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值