扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
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
。
BINARY
属性或使用BINARY
强制符声明列,它导致根据MySQL服务器主机的ASCII顺序进行排序。
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
子句的函数。
||
和&&
意味着逻辑的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;
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者