Mysql 中各种不支持的SQL特性及替换方法
2017-03-30 20:08
351 查看
今天要写数据库作业了所以就拿出数据库的书来预习,但是由于SQL部分学完没有敲一遍书上的代码,所以七七八八忘得差不多了。于是做作业前就打算把书上的代码拿来敲一遍权当复习了。但是很惊奇的就是MySQL有很多不支持的SQL用法,这里做个小小的总结,接下来几天我会把书上的SQL标准的代码都敲一遍,遇到MySQL中有特殊的方言的就会更新在博客上。
第一个是MySQL不支持 Intersect 和 Except(Minus) ,一个是交运算一个是差运算。感觉这两个还挺好用的说,幸运的是我们完全可以用其他方法替这两个。
intersect 可以用一个 A inner join B using attr 来代替
except 当然可以用 select form table1 where not in (select from table2)来代替,另一种用left join的方法的思想则是运用在B不在A中的项用Left Join 会填入NULL这一性质。
第二个是MySQL不支持Full Join 用法,不过这个很简单,我们完全可以用一个Left Join 的结果Union 上一个Right Join的结果,就得到Full Join的结果啦!
第三个是unique 检查是否有重复元祖好像不能用,不过我们可以用 1 >= select count()来替代
第四个,mysql中没有with。。。as。。。这个语法,如果你非要用的话,就用create table xxx select。。。来代替吧
更新更新,又发现一个,这次是在尝试建立trigger的时候,希望能把插入有问题的行回滚掉,竟然不支持rollback!
报错信息是 explicit or implicit commit is not allowed ..... , 查了一下发现mysql 不支持rollback,commit这类事务, 暂时只能想到手动回滚。
看到一种好办法就是用一个报错机制(ERROR :。。。。)中断这次执行。
第一个是MySQL不支持 Intersect 和 Except(Minus) ,一个是交运算一个是差运算。感觉这两个还挺好用的说,幸运的是我们完全可以用其他方法替这两个。
intersect 可以用一个 A inner join B using attr 来代替
except 当然可以用 select form table1 where not in (select from table2)来代替,另一种用left join的方法的思想则是运用在B不在A中的项用Left Join 会填入NULL这一性质。
第二个是MySQL不支持Full Join 用法,不过这个很简单,我们完全可以用一个Left Join 的结果Union 上一个Right Join的结果,就得到Full Join的结果啦!
第三个是unique 检查是否有重复元祖好像不能用,不过我们可以用 1 >= select count()来替代
第四个,mysql中没有with。。。as。。。这个语法,如果你非要用的话,就用create table xxx select。。。来代替吧
更新更新,又发现一个,这次是在尝试建立trigger的时候,希望能把插入有问题的行回滚掉,竟然不支持rollback!
报错信息是 explicit or implicit commit is not allowed ..... , 查了一下发现mysql 不支持rollback,commit这类事务, 暂时只能想到手动回滚。
看到一种好办法就是用一个报错机制(ERROR :。。。。)中断这次执行。
相关文章推荐
- [数据库测试]强烈推荐一个python ODBC数据源插件,可支持Oracle,Db2,Mysql,Sql-server以及各种数据库版本,附例子和测试程序
- [数据库测试]强烈推荐一个python ODBC数据源插件,可支持Oracle,Db2,Mysql,Sql-server以及各种数据库版本,附例子和测试程序
- MYSQL类型不支持原生SQL查询解决方法
- mysql 开发进阶篇系列 4 SQL 优化(各种优化方法点)
- SQL查询中用replace替换ntext,text字段的各种方法总结
- [数据库测试]强烈推荐一个python ODBC数据源插件,可支持Oracle,Db2,Mysql,Sql-server以及各种数据库版本,附例子和测试程序
- [数据库测试]强烈推荐一个python ODBC数据源插件,可支持Oracle,Db2,Mysql,Sql-server以及各种数据库版本,附例子和测试程序
- c#下各种数据库操作的封装!(支持ACCESS,SQLSERVER,DB2,ORACLE,MYSQL)(三)
- MySQL数据导入导出方法与工具介绍(2-import from sql files)
- [SQL]MySql myisam引擎不支持外键
- 在MySQL中用正则表达式替换数据库中的内容的方法
- MySQL数据导入导出方法与工具介绍(2-import from sql
- [转]各种分页 in SQL Server 2005, SQL Server 2000, MS Access and MySQL
- c#下各种数据库操作的封装!(支持ACCESS,SQLSERVER,DB2,ORACLE,MYSQL)(四)
- [方法“Boolean Contains(System.Guid)”不支持转换为 SQL]的解决办法
- 替换sql中ntext类型数据中的某个字符方法和技巧
- c#下各种数据库操作的封装!(支持ACCESS,SQLSERVER,DB2,ORACLE,MYSQL)(二)
- sql server中根据标点分割字符串并替换值的方法
- 页面中标题替换方法,在SQL中取数据时。
- sql中各种日期的计算方法~