`
tonysmith
  • 浏览: 175022 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL对标准SQL的扩展

阅读更多

MySQL对标准SQL的扩展

MySQL服务器包含一些其他SQL DBMS中不具备的扩展。注意,如果使用了它们,将无法把代码移植到其他SQL服务器。在某些情况下,你可以编写包含MySQL扩展的代码,但仍保持其可移植性,方法是用“/*... */”注释掉这些扩展。在本例中,MySQL服务器能够解析并执行注释中的代码,就像对待其他MySQL语句一样,但其他SQL服务器将忽略这些扩展。例如:

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

如果在字符“!”后添加了版本号,仅当MySQL的版本等于或高于指定的版本号时才会执行注释中的语法:

CREATE /*!32302 TEMPORARY */ TABLE t (a INT);

这意味着,如果你的版本号为3.23.02或更高,MySQL服务器将使用TEMPORARY关键字。

下面按类别介绍了各种MySQL扩展。

·         磁盘上的数据组织

MySQL服务器会将每个数据库映射到MySQL数据目录下的1个目录中,并将数据库中的表映射到数据库目录下的文件名。它具有下述含义:

o        如果操作系统的文件名区分大小写(如大多数Unix系统),当MySQL服务器运行在这类操作系统上时,数据库名和表名也区分大小写。请参见9.2.2节,“识别符大小写敏感性”

o        你可以使用标准的系统命令来备份、重命名、移动、删除、并拷贝由MyISAMISAM存储引擎管理的表。例如,要想重命名MyISAM表,可重命名表对应的.MYD.MYI、以及.frm文件。

数据库、表、索引、列或别名能够以数字开头(但或许不能全部由数字构成)。

·         通用语言语法

o        可以使用“”或“”括住字符串,而不仅是“”。

o        在字符串中使用“\”作为转义字符。

o        在SQL语句中,可以使用“db_name.tbl_name”语法访问不同数据库中的表。某些SQL服务器提供了相同的功能,但调用该用户空间除外。MySQL服务器不支持表空间,如下述语句中使用的那样: CREATE TABLE ralph.my_table...IN my_tablespace.

·         SQL语句的语法

o        ANALYZE TABLECHECK TABLEOPTIMIZE TABLE,以及REPAIR TABLE语句。

o        CREATE DATABASEDROP DATABASE语句。请参见13.1.3节,“CREATE DATABASE语法”

o        DO语句。

o        EXPLAIN SELECT获取如何联合表的介绍。

o        FLUSHRESET语句。

o        SET语句。请参见13.5.3节,“SET语法”

o        SHOW语句。请参见13.5.4节,“SHOW语法”

o        使用LOAD DATA INFILE。在很多情况下,该语法与Oracle的LOAD DATA INFILE兼容。请参见13.2.5节,“LOAD DATA INFILE语法”

o        RENAME TABLE的使用。请参见13.1.9节,“RENAME TABLE语法”

o        使用REPLACE取代DELETE + INSERT。请参见13.2.6节,“REPLACE语法”

o        ALTER TABLE语句中使用CHANGE col_nameDROP col_name、或DROP INDEXIGNORERENAME。在ALTER TABLE语句中使用多个ADDALTERDROPCHANGE子句。请参见13.1.2节,“ALTER TABLE语法”

o        使用索引名,字段前缀上的索引,并在CREATE TABLE语句中使用INDEXKEY。请参见13.1.5节,“CREATE TABLE语法”

o        CREATE TABLE一起使用TEMPORARYIF NOT EXISTS

o        DROP TABLE一起使用IF EXISTS。

o        使用单个DROP TABLE语句,能够舍弃多个表。

o        UPDATEDELETE语句的ORDER BYLIMIT子句。

o        INSERT INTO ... SET col_name = ... syntax.

o        INSERTREPLACE语句的DELAYED子句。

o        INSERTREPLACEDELETEUPDATE语句的LOW_PRIORITY子句。

o        SELECT语句中使用INTO OUTFILESTRAIGHT_JOIN。请参见13.2.7节,“SELECT语法”

o        SELECT语句中的SQL_SMALL_RESULT选项。

o        不需要在GROUP BY部分命名所有选择的列。对于某些十分特殊但相当正常的查询,它能提供更好的性能。请参见12.10节,“与GROUP BY子句同时使用的函数和修改程序”

o        可以与GROUP BY一起指定ASC和DESC。

o        能够在带有“:=”赋值操作符的语句中设置变量。

o                     mysql> SELECT @a:=SUM(total),@b=COUNT(*),@a/@b AS avg
o                         -> FROM test_table;
o                     mysql> SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;

·         列类型

o        列类型MEDIUMINTSETENUM、以及不同的BLOBTEXT类型。

o        列属性AUTO_INCREMENTBINARYNULLUNSIGNED以及ZEROFILL

·         函数和操作符

o        为了使其他SQL环境下的用户更容易入手,MySQL服务器对很多函数均支持别名特性。例如,所有的字符串函数均支持标准SQL语法和ODBC语法。

o        MySQL服务器能够理解“||”和“&&”操作符,将其当作逻辑OR和AND,就像在C编程语言中那样。在MySQL服务器中,||和OR是同义词,&&和AND也是同义词。由于采用了该优异的语法体系,MySQL服务器不支持SQL针对字符串连接的“||操作符,而采用了CONCAT()取而代之。由于CONCAT()能够接受任意数目的参量,很容易将使用“||”操作符的情况转换为MySQL服务器支持的类型。

o        请在有多于1个元素的场合下使用COUNT(DISTINCT list)

o        默认情况下,所有的字符串比较均区分大小写,其分类顺序由当前字符集确定(默认为cp1252 Latin1)。如果你不喜欢该点,应使用BINARY属性或BINARY cast声明列,这样,就会使用基本的字符代码值进行比较,而不是词汇顺序。

o        %”操作符等同于MOD()。也就是说“N % M等同于MOD(N,M)。Cyuyan的程序员支持“%”,而且它也是为了兼容PostgreSQL而使用的。

o        在列比较中,可在SELECT语句的FROM左侧使用=<><=<>=><<>><=>ANDORLIKE操作符。例如:

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

o        返回最近AUTO_INCREMENT值的LAST_INSERT_ID()函数。请参见12.9.3节,“信息函数”

o        允许在数值列上使用LIKE。

o        REGEXPNOT REGEXP扩展了常规的表达式操作符。

o        具有1个或2个以上参量的CONCAT()CHAR()。(在MySQL服务器中,这些函数可以有任意数目的参量)。

o        BIT_COUNT()CASEELT()FROM_DAYS()FORMAT()IF()PASSWORD()ENCRYPT()MD5()ENCODE()DECODE()PERIOD_ADD()PERIOD_DIFF()TO_DAYS()、以及WEEKDAY()函数。

o        使用TRIM()来调整子字符串。标准SQL仅支持单个字符的删除。

GROUP BY函数STD()BIT_OR()BIT_AND()BIT_XOR()、以及GROUP_CONCAT()。请参见12.10节,“与GROUP BY子句同时使用的函数和修改程序”

分享到:
评论

相关推荐

    Mysql5.1参考手册,SQL语言参考手册

    mysql,sql,参考手册 目录 前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 ...1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. MySQL处理约束的方式

    标准SQL和transact-sql之比较学习

    通过深入学习和实践,开发者可以充分利用T-SQL的强大功能,同时保持对标准SQL的兼容性,以应对各种数据库环境。在实际工作中,根据项目需求和数据库选择,灵活运用这两种语言将能提高开发效率和代码质量。

    springboot + mybatis +mysql+ sqlserver 双数据源

    而SQLServer则是Microsoft公司推出的企业级数据库系统,它提供了更高级的安全性、可扩展性和企业级功能。双数据源的设计使得应用可以在两者之间灵活切换,适应不同环境和业务需求。 在实际操作中,项目可能包含以下...

    PHP+Mysql 带SQL注入源码 下载

    这两个扩展都支持预处理语句,这是防止SQL注入的有效手段。 **预处理语句与参数绑定** 预处理语句是防止SQL注入的一种最佳实践。它允许开发者在执行SQL查询之前先定义好结构,然后将变量作为参数传递。这样,即使...

    MySQL数据库转移到SqlServer数据库

    SQL Server是微软公司提供的一个商业级数据库解决方案,具有高度的安全性和可扩展性,适合大型企业级应用。 2. **迁移原因** 迁移可能出于多种原因,例如业务增长导致对更强大数据库系统的需求、企业对特定数据库...

    sql.rar_MySQLConnection_sqljdbc4-3.0.jar

    标题中的"sql.rar_MySQLConnection_sqljdbc4-3.0.jar"暗示了这是一个与SQL数据库连接...这两个驱动库的提供,使得Java开发者可以在同一项目中方便地处理MySQL和SQL Server的数据操作,提高了开发的灵活性和可扩展性。

    MySQL迁移SQLServer工具

    SSMA for MySQL.6.0.0.exe和SSMA for MySQL.6.0.0.ExtPack.exe是工具的主程序和扩展包,主程序用于执行迁移任务,而扩展包可能包含额外的组件或更新,用于增强工具的功能或提高兼容性。 总之,SSMA for MySQL是一款...

    Sqlserver2mysql

    注意两者之间的语法差异,例如SQL Server的T-SQL与MySQL的SQL标准语法。 3. **数据转换**:使用工具如`mss2sql`(可能是指某种数据迁移工具或脚本),它可以帮助我们将SQL Server的数据导出为可被MySQL导入的格式。...

    SQL Manager for MySQL

    除此之外,SQL Manager for MySQL还支持多种版本的MySQL数据库,包括社区版、企业版等,以及多种操作系统平台,如Windows、Linux、Mac OS等,具备良好的兼容性和扩展性。 综上所述,SQL Manager for MySQL作为一款...

    在windows服务器上安装MYSQL/SQLSERVER云数据库

    在Windows服务器上安装MYSQL/SQLSERVER云数据库 知识点一:MYSQL和SQLSERVER数据库的区别 在安装MYSQL/SQLSERVER云数据库之前,需要了解MYSQL和SQLSERVER数据库的区别。MYSQL是一种开源的关系型数据库管理系统,而...

    Mysql转Sqlserver.rar

    《MySQL到SQL Server数据库迁移与前端模板应用》 在当今数据驱动的世界中,数据库系统的选择对应用程序的性能和效率起着关键作用。本资源“Mysql转Sqlserver.rar”提供了一个详细的过程,帮助用户将基于MySQL的数据...

    sql.rar_MYSQL_MYSQL ppt_sql 练习

    通过这些练习,用户可以提升对SQL语法的熟悉程度,同时理解如何在实际场景中应用MySQL。 在"sql.rar"中,可能包含了上述所有内容的综合实践,比如一个或多个数据库示例,以及与之相关的练习问题和解答。用户可以...

    MySQL开发者SQL权威指南_MYSQL_

    1. **SQL基础**: SQL(结构化查询语言)是用于管理关系数据库的标准语言。在MySQL中,SQL用于创建、更新、查询和删除数据库中的数据。基础语法包括SELECT语句用于查询数据,INSERT用于插入新记录,UPDATE用于修改...

    mysql完全迁移到sqlserver.docx

    在MySQL到SQL Server的迁移中,可以使用数据建模工具如PowerDesigner进行逆向工程,将MySQL数据库转换为PDM(物理数据模型),然后基于PDM生成SQL Server的数据库创建脚本。这样可以确保目标数据库的表结构与源...

    通用SQL教程oracle,mysql,sqlserver

    SQL Server是由微软公司开发的一款商业级数据库管理系统,它同样基于SQL标准,但提供了许多独特的特性,如Transact-SQL (T-SQL)——这是SQL Server的扩展,包含额外的控制流语句和数据库管理功能。SQL Server支持...

    使用flink-connector-sqlserver-cdc 2.3.0把数据从SQL Server实时同步到MySQL中

    Flink的SQL Server CDC连接器正是利用这种技术,实现了对SQL Server数据库的变更事件捕获。 1. **Flink CDC连接器安装与配置**: - 首先,你需要在你的Flink项目中添加`flink-connector-sqlserver-cdc_2.11-2.3.0`...

    mysql.rar_MYSQL数据库_MySQL软件_SQL软件

    MySQL是一款广泛使用的开源关系型数据库管理系统(RDBMS),它基于结构化查询语言(SQL)进行数据操作。作为全球最受欢迎的数据库之一,MySQL在Web应用、小型到大型企业系统中都发挥着重要作用。本资源“mysql.rar”...

    关于MySql的SQL语言-MySQL入门教程PDF

    关于 MySql 的 SQL 语言 目前常用的数据库有Oracle公司的Oracle,Microsoft公司的SQL ...用于MySql的我还不知道它叫做什么SQL,不过个人觉得它反而最接近标准的 SQL语言,不过,从另一方面来说,它对SQL所做的扩展最少。

    MYSQL文档完美中文版

    MySQL对标准SQL的扩展:探讨MySQL在标准SQL基础上做的扩展。 4.5. MySQL与标准SQL的差别:说明MySQL实现中与标准SQL标准之间存在的差异。 4.6. MySQL处理约束的方式:讨论MySQL如何处理表约束,包括外键、主键等...

    ACCESS\SQL Server数据库转换MYSQL数据库工具

    Access是微软开发的一个关系型数据库管理系统,常用于小型企业或个人项目,而MySQL则是一种开源、免费的SQL数据库,广泛应用于大型网站和企业级应用,因为它具有高性能、高可扩展性以及较低的成本。 描述中提到的...

Global site tag (gtag.js) - Google Analytics