mysql与标准sql的区别_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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值