13

MYSQL查询A表中不存在于B表中的所有符合条件的数据

在开发过程中,总有一些需求是需要查看在A表中ID不存在于B表中的ID的情况:

下面有三种方法可以实现这一需求:

第一种:使用Not in 方法通过子查询的结果集来做过滤:

这种情况最常见也是最容易理解的逻辑SQL代码,但是会有很多问题出现。 Continue reading

02

如何开启MySQL数据库的InnoDB模式

MySQL主流引擎是MyISAM模式,这种模式方便使用和维护,Innodb为后来加入的另外一种模式,这种模式支持的功能更强大,是未来发展趋势。
又有个小项目,本地开发(也是框架需要)使用的InnoDB引擎,但当项目开发得差不多了,需要实测上到客户主机后,发现没有InnoDB引擎,说实话,还是头一回碰到没有InnoDB引擎的情况,客户使用的是护卫神服务器管理系统,安装环境可能是套件,没有细了解,那么如何开启MySQL数据库的InnoDB模式呢?下面是我在网上找的。 Continue reading

十二 28

MySQL语句:如果存在则更新,不存在则插入新记录

INSERT INTO … ON DUPLICATE KEY UPDATE …

表结构:

该语句是基于唯一索引或主键才可使用的,如下语句:

必要条件:其中字段id或keyword或count,至少有一个字段属性是主键或唯一索引。

语句解释:如果查询主键id=1或者唯一索引keyword=’织梦先生’的记录存在,则更新此记录的count字段 count=count+1;如果没有查询主键id=1或者唯一索引keyword=’织梦先生’的记录都不存在,则插入一行记录。

其它:

假定id=1的记录存在,则下面语句与上面语句是等效的

 

31

MySQL的两种常用数据库存储引擎:MyISAM与InnoDB

问题1:MySQL的data里的网站数据库里只有.frm 而没有.MYD和.MYI文件?

解释:首先排除误删的情况,那么,你的此数据库的存储引擎可能为innoDB类型(把数据库导入为.sql后,可以在每个表结构后看到写着“ENGINE=InnoDB”;或者使用phpmyadmin查看数据表时,在“类型”列下,显示每个表的类型为“ENGINE=InnoDB”)。
那么,在windows主机下查看数据库目录./mysql/data/数据库名/ ,这样只能看到.frm文件和一个db.opt文件,它的数据文件位置在“./mysql/data/ibdata1”文件中保存着。

问题2:直接在服务器中直接迁移WordPress网站的数据库文件则数据丢失?

解释:WordPress博客系统是数据库引擎是InnoDB类型的,所以,看了第一个问题的解释后,这第二个问题就明白了。
那么,要直接对WordPress系统网站的数据文件迁移的时候,同时也要迁移这个文件(“./mysql/data/ibdata1”),网站就会正常显示出原数据了。

相关知识:

MyISAM与InnoDB是mysql目前比较常用的两个数据库存储引擎,MyISAM与InnoDB的主要的不同点在于性能和事务控制上。这里简单的介绍一下两者间的区别和转换方法:

MyISAM:MyISAM是MySQL5.5之前版本默认的数据库存储引擎。MYISAM提供高速存储和检索,以及全文搜索能力,适合数据仓库等查询频繁的应用。但不支持事务、也不支持外键。MyISAM格式的一个重要缺陷就是不能在表损坏后恢复数据。

InnoDB:InnoDB是MySQL5.5版本的默认数据库存储引擎,不过InnoDB已被Oracle收购,MySQL自行开发的新存储引擎Falcon将在MySQL6.0版本引进。InnoDB具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。尽管如此,但是InnoDB包括了对事务处理和外来键的支持,这两点都是MyISAM引擎所没有的。

又学习了!

mysql索引类型(normal、unique、full textl)及索引方法(BTree、Hash)的概念与使用场景