zoukankan      html  css  js  c++  java
  • mysql8之与标准sql的区别

    一  mysql8概述

       在研究mysql8新特性的时候,越来越感觉mysql8朝sql server看齐。看来对于中小型企业级应用也挺有兴趣,但是没有企业级的应用套件,有知道的麻烦告知。本文不探讨mysql8的结构变化,函数变化,

    以及新增的功能。仅仅阐述下mysql8在sql语法上与标准sql的一点点区别,作为研究mysql系列文章的开篇

    二  mysql8sql与标准sql的些许差异

      REVOKE:在mysql删除一个表的时候,是不自定执行revoke权限的,必须手动执行revoke

      CAST:这个函数不支持转换 REAL 和 BIGINT

      SELECT INTO TABLE的语法不同:mysql不支持此语法,替换的是支持INSERT ....SELECT 和CREATEA TABLE ....SELECT和 SELECT ... INTO OUTFILE

       UPDATE 不同:UPDATE t1 SET col1 = col1 + 1, col2 = col1; 这条语句的结果是col1和col2最后是同一个值,col2 = col1这条表达式,col1并没有取源值。

    三  foreign key 的不同  

      1 ,如果子表引用父表的值,在父表中有多行,那么这些行是都不能删除的。

      2,一个外键可以是非唯一的键值。

      3, ON UPDATE CASCADE or ON UPDATE SET NULL是不能自引用的,但是 ON DELETE SET NULL可以, ON DELETE CASCADE或许可以,但是嵌套是不能超过15.

      4,在一个增删改的多行的语句,外键约束,比如唯一约束,是一行一行的被检查。外键约束检查功能的时候,innodb设置一个共享锁,在必须被检查的子或者父行上。mysql立即检查约束;检查没有被延迟到事务提交。语句sql标准,默认的动作应当被延迟检查,即是,约束仅仅是被检查在整个sql语句被处理完成后,

    四 comment的不同

      标准sql使用c风格的注释: /* this is a comment */.mysql同样支持这种样式,同时扩展这种风格,让mysql独特的sql可以嵌入在注释中,标准sql的注释风格使用“--”开始,mysql使用#开始注释字符。mysql也支持--注释样式的变种。就是 --开始,但是 必须跟随一个space,或者一个控制字符,比如新行。space避免自动生成sql查询的一些问题,如下例子:

    UPDATE account SET credit=credit-paymet

    如果payment是一个负值,比如-1,那么语句就变成:

    UPDATE account SET credit=credit--1
    credit--1是一个合法的表达式,但是--被解释作为注释的开始字符,注释被丢弃,实际执行的sql就成如下:
    UPDATE account SET credit=cred

    使用mysql实现需要一个space跟随在--,从而被识别为一个开始注释的符号。

    转载:https://www.cnblogs.com/ck0074451665/p/10488772.html

  • 相关阅读:
    bzoj 1217 [HNOI2003]消防局的设立 贪心
    bzoj 1124 [POI2008]枪战Maf 贪心
    bzoj 2525 [Poi2011]Dynamite 二分+树形dp
    搭建SpringMVC+MyBatis开发框架六
    搭建SpringMVC+MyBatis开发框架五
    搭建SpringMVC+MyBatis开发框架四
    搭建SpringMVC+MyBatis开发框架三
    搭建SpringMVC+MyBatis开发框架二
    搭建SpringMVC+MyBatis开发框架一
    Mac下安装Node.js
  • 原文地址:https://www.cnblogs.com/wangzhengyu/p/12155634.html
Copyright © 2011-2022 走看看