key重复处理3方案,MySQL数据库文件其具体的存放位置简述

以下的文章主要是MySQL数据库文件介绍与其具体的存放位置的描述,在实际应用中我们会经常接触到MySQL数据库文件,那么它的主要功能是什么?以及如何对其进行正确的存放?以下的文章有对这些问题的具体讲述。

以下的文章主要向大家讲述的是MySQL数据库中primary
key重复时的实际处理方案,我们大家都知道当insert进数据表,
经常会发生唯一key(unique key与primary key)重复时, 会发生duplicate
key错误。

以下的文章主要描述的是MySQL重启命令和MySQL数据库安装目录的实际操过程,其实MySQL重启命令和MySQL数据库安装目录的实现并不是一件很难的事情,只要你了解了其实际操作中的步骤即可。

一、MySQL数据库文件介绍

这种情况有三种处理方法, 以下面的数据结构为例子

今天第一次在ubuntu linux9.04上安装
MySQL,之前也没安装过,所以参考了上些网络文章,进行了一些配置,以下是我安装的全过程

MySQL的每个数据库都对应存放在一个与数据库同名的文件夹中,MySQL数据库文件包括MySQL所建数据库文件和MySQL所用存储引擎创建的数据库文件。

MySQL> use test;  MySQL> create table `user` (`userid` int(11) DEFAULT NULL, `username` varchar(255) NOT NULL DEFAULT '');  

安装和基本使用配置

1、MySQL创建并管理的数据库文件:

给加上userid列primary key

我安装是直接使用 apt-get
进行安装,这也是我选择的安装方式,我的安装方法如下:

.frm文件:存储数据表的框架结构,MySQL数据库文件名与表名相同,每个表对应一个同名frm文件,与操作系统和存储引擎无关,即不管MySQL运行在何种操作系统上,使用何种存储引擎,都有这个文件。

MySQL> alter table `user` add primary key `userid` (`userid`); 

1、sudo apt-get install MySQL-server
安装MySQL服务端,我在9.04上安装时提示设置root密码,如果没有可以在安装好后进行更改设置,安装后的默认路径为:
/etc/init.d/MySQL

除了必有的.frm文件,根据MySQL所使用的存储引擎的不同MySQL常用的两个存储引擎是MyISAM和InnoDB),存储引擎会创建各自不同的数据库文件。

插入数据

2、sudo apt-get install MySQL-client
安装MySQL客户端,用来操作MySQL的CRUD操作,不过在9.04上安装服务端时以经安装好了客户端可以不需要安装,如果没有则安装

2、MyISAM数据库表文件:

MySQL> insert into `user` values (1, 'eric'), (2, 'jesus');  

一旦安装完成,MySQL服务器应该会自动启动,你可以在终端输入MySQL重启命令来查看是否启动:

.MYD文件:即MY Data,表数据文件

现在我要插入或者编辑userid为1的记录, 但我不知道里面是否已经存在该记录.

[email protected]:~$
sudo netstat -tap | grep MySQL

.MYI文件:即MY Index,索引文件

MySQL数据库中primary key重复时的实际处理方案1, 先删除再插入之

当你执行该命令时可以看到如下信息

.log文件:日志文件

MySQL> delete from user where userid = 1;  MySQL> insert into user values (1, 'xxxxx') ;  
tcp 0 0 localhost:MySQL *:* LISTEN 8368/MySQLd  

3、InnoDB采用表空间tablespace)来管理数据,存储表数据和索引,

MySQL数据库中primary key重复时的实际处理方案2, 使用replace into

恭喜你,这说明MySQL服务已启动,安装成功,如果不能启动可以通过下列命令来重新启动它

InnoDB数据库文件即InnoDB文件集,ib-file set):

MySQL> replace into user values (1, 'newvalue');  

sudo /etc/init.d/MySQL restart restart

ibdata1、ibdata2等:系统表空间MySQL数据库文件,存储InnoDB系统信息和用户数据库表数据和索引,所有表共用

这种情况下逻辑是这样的, MySQL先判断记录是否存在, 若存在则先删除之,
再自行insert. 所以你能看到这条语句执行后affected
rows是2条(当然前提是你的数据表里userid为1的数据只有1条)

当确认MySQL启动后 我们需要进行登录到MySQL,这个时候可以在终端输入

.ibd文件:单表表空间文件,每个表使用一个表空间文件file per
table),存放用户数据库表数据和索引

MySQL数据库中primary key重复时的实际处理方案3, 使用

[email protected]:~$
MySQL -uroot -p 执行Enter后提示输入root密码

日志文件: ib_logfile1、ib_logfile2

insert into ... on duplicate key update  MySQL> insert into user1 values (1, 'newvalueagain') on duplicate key update user1.username = VALUES(username);  
Enter password: 

二、MySQL数据库存放位置:

这条语句的affected rows也是2.

当输入密码后就可进行对数据库操作了

1、MySQL如果使用MyISAM存储引擎,数据库文件类型就包括.frm、.MYD、.MYI,默认存放位置是C:\Documents
and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data

当然还有另外的处理方式就是直接用php来实现,

那么如果你想设置MySQL root 的密码可以通过下列MySQL重启命令

2、MySQL如果使用InnoDB存储引擎,MySQL数据库文件类型就包括.frm、ibdata1、.ibd,存放位置有两个,

先select出来, 发现没结果则insert, 否则update.

[email protected]:~$ sudo MySQLadmin -u root -oldpassword password newpassword 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:
网站地图xml地图