ALL的使用介绍_Mysql_脚本之家,6中禁用innodb引擎的

问题源自一个5年前的百度知道回答,刚看到这个问题时我刚上班21天,遂根据自己的那一丁点经验和临时操作检验做出了当时认为正确的回答:

今天发现有一个备份的mysql数据文件夹异常变大,一查发现是多了三个文件:ibdata1 ib_logfile0 ib_logfile1,前者18m,后两个各5m,原来是迁移的时候从mysql5.0迁移到了5.5,而5.5关闭innodb启动不起来,于是我就开启了innodb,由于innodb会默认增加这几个数据文件和日志文件,导致变大。尝试设置数据文件的大小,结果告诉我最小10m,还是太大,于是探索关闭innodb的方法。 看日志发现说由于mysql程序升级了,需要运行mysql_upgrade升级一下mysql里面的数据库,这个比较简单,和mysql命令用法是一样的,运行一遍就ok了。然后发现还是无法关闭innodb,很奇怪,查了下发现原来mysql5.5默认使用innodb了,所以无法简单的关闭掉,还要设置一下默认使用的引擎为myisam才可以,在my.cnf里加上如下两句: 复制代码 代码如下: default-storage-engine=MYISAM innodb=OFF 重启mysql,然后删掉那三个讨厌的文件即可。MySQL 5.6 禁用INNODB INNODB是MySQL被ORACLE收购后开发的,支持事务和行级锁等高级功能,但是并不是所有人都需要INNODB的,对大部分人来说,以前的MYISAM引擎就够了,一般会选择将默认引擎改为MYISAM,但是INNODB还是会耗费内存和硬盘,这时候,就需要把INNODB彻底禁用。 在以前的MySQL中,一般可以这么设置就行了: 复制代码 代码如下: default-storage-engine=MYISAM skip-innodb 但是在最新的MySQL5.6里,这么设置是没法启动的,需要再增加一句设置: 复制代码 代码如下: default-tmp-storage-engine=MYISAM 不仅如此,还需要添加以下配置,否则程序会很容易退出的: 复制代码 代码如下: loose-innodb-trx=0 loose-innodb-locks=0 loose-innodb-lock-waits=0 loose-innodb-cmp=0 loose-innodb-cmp-per-index=0 loose-innodb-cmp-per-index-reset=0 loose-innodb-cmp-reset=0 loose-innodb-cmpmem=0 loose-innodb-cmpmem-reset=0 loose-innodb-buffer-page=0 loose-innodb-buffer-page-lru=0 loose-innodb-buffer-pool-stats=0 loose-innodb-metrics=0 loose-innodb-ft-default-stopword=0 loose-innodb-ft-inserted=0 loose-innodb-ft-deleted=0 loose-innodb-ft-being-deleted=0 loose-innodb-ft-config=0 loose-innodb-ft-index-cache=0 loose-innodb-ft-index-table=0 loose-innodb-sys-tables=0 loose-innodb-sys-tablestats=0 loose-innodb-sys-indexes=0 loose-innodb-sys-columns=0 loose-innodb-sys-fields=0 loose-innodb-sys-foreign=0 loose-innodb-sys-foreign-cols=0 摘自 另外MYSQL 5.6 比 5.5占用了更多的物理内存,虚拟内存跟5.5使用差不多。性能上比5.5提升了30%左右。

一、UNION和UNION ALL的作用和语法

但很快就被人否定,我猜主要原因就是我说的最后一句话过于绝对,但由于自己太相信自己了,而且有一大堆理由支撑着,所以没有深入研究。

UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同.SQL UNION 语法:复制代码 代码如下:SELECT column_name FROM table1UNIONSELECT column_name FROM table2注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。当 ALL 随 UNION 一起使用时,不消除重复行SQL UNION ALL 语法复制代码 代码如下:SELECT column_name FROM table1UNION ALLSELECT column_name FROM table2注释:另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。注意:1、UNION 结果集中的列名总是等于第一个 SELECT 语句中的列名2、UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同

最近又有网友评论了我的这个回答,我才开始查了一下百度,发现Mysql4.0以上版本已经可以通过一条delete删除多个表的数据了。看来我确实在误人子弟了,只能说声抱歉,好在楼主没有选我的答案,要不然罪过大了。

二、union的用法及注意事项

最后总结一下:

union:联合的意思,即把两次或多次查询结果合并起来。要求:两次查询的列数必须一致推荐:列的类型可以不一样,但推荐查询的每一列,想对应的类型以一样可以来自多张表的数据:多次sql语句取出的列名可以不一致,此时以第一个sql语句的列名为准。如果不同的语句中取出的行,有完全相同,那么union会将相同的行合并,最终只保留一行。也可以这样理解,union会去掉重复的行。如果不想去掉重复的行,可以使用union all。如果子句中有order by,limit,需用括号()包起来。推荐放到所有子句之后,即对最终合并的结果来排序或筛选。如:复制代码 代码如下:(select * from a order by id) union (select * from b order id);

MySql4.0以上支持delete多个表删除 delete t1,t2 from t1.refid=t2.id

在子句中,order by 需要配合limit使用才有意义。如果不配合limit使用,会被语法分析器优化分析时去除。

SqlServer到2008为止还不支持

三、学习例子下面的例子中使用的原始表:Employees_China:复制代码 代码如下:E_IDE_Name01Zhang, Hua02Wang, Wei03Carter, Thomas04Yang, MingEmployees_USA:复制代码 代码如下:E_IDE_Name01Adams, John02Bush, George03Carter, Thomas04Gates, Bill

Oracle几乎不用,不确定,网上查到的是不支持delete删除多个表的数据

使用 UNION 命令实例

对于不支持delete删除多表的数据库,可以通过做一些前期工作,如触发器、外键。

列出所有在中国和美国的不同的雇员名:复制代码 代码如下:SELECT E_Name FROM Employees_ChinaUNIONSELECT E_Name FROM Employees_USA结果:复制代码 代码如下:E_NameZhang, HuaWang, WeiCarter, ThomasYang, MingAdams, JohnBush, GeorgeGates, Bill注释:这个命令无法列出在中国和美国的所有雇员。在上面的例子中,我们有两个名字相同的雇员,他们当中只有一个人被列出来了。UNION 命令只会选取不同的值。

可以实现”一条delete”删除多个表里的数据。

使用 UNION ALL 命令实例

本文由澳门新葡亰平台官网发布于数据库,转载请注明出处:ALL的使用介绍_Mysql_脚本之家,6中禁用innodb引擎的

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。