一、 数据目录的位置
这是默认的mysql目录结构
bin info libexec share var
include lib man sql-bench
一个缺省数据目录被编译进了服务器,如果你从一个源代码分发安装MySQL,典型的缺省目录为
/usr/local/var,如果从RPM文件安装则为/var/lib/mysql,如果从一个二进制分发安装则是
/usr/local/mysql/data。
作为一名MySQL管理员,你应该知道你的数据目录在哪里。如果你运行多个服务器,你应该是到所有数据目录
在哪里,但是如果你不知道确切的位置,由多种方法找到它:
1、使用mysqladmin variables从你的服务器直接获得数据目录路径名。查找datadir变量的值,在Unix上,其输出类似于:
%mysqladmin -u username -p'*****' variables
+----------------------+----------------------+
| variable_name | Value |
+----------------------+----------------------+
| back_log | 5 |
| connect_timeout | 5 |
| basedir | /var/local/ |
| datadir | /usr/local/var/ |
....
2、查找mysql运行的路径
%ps -ef | grep mysqld
二、数据目录结构
每个数据库对应于数据目录下的一个目录。
在一个数据库中的表对应于数据目录下的文件。
数据目录也包含由服务器产生的几个状态文件,如日志文件。这些文件提供了关于服务器操作的重要信息。
对管理特别在出了问题而试图确定问题原因时很有价值。
1、数据库表的表示
数据库目录中有3种文件:一个样式(描述文件)、一个数据文件和一个索引文件。每个文件的基本名是表
名,文件名扩展名代表文件类型。扩展名如下表。数据和索引文件的扩展名指出表使用老式IASM索引或新式
MyISAM索引。
MySQL文件类型
文件类型 文件名扩展名 文件内容
样式文件 .frm 描述表的结构(它的列、列类型、索引等)
数据文件 .ISD(ISAM)或.MYD(MyISAM) 包含表里所有的数据
索引文件 .ISM(ISAM)或.MYI(MyISAM) 包含数据文件上的所有索引的索引树
当你发出一条CREATE TABLE tbl_name时语句定义表的结构时,服务器创建一个名为tbl_name.frm的文件,它
包括该结构的内部编码,同时也创建一个空数据和索引文件,初始化为包含指出无记录和无索引的信息(如
果CREATE TABLE语句包括索引指定,索引文件反映出这些索引)。对应于表的文件的属主和模式被设置为只
允许MySQL服务器用户访问。
下面介绍一下常用的mysql命令
进入mysql数据库
#./mysql -u 用户名 -p'密码'
查看所有的数据库
mysql> show databases;
进入一个特定的数据库
mysql> use 数据库名;
查看数据库里所有的表
mysql> show tables;
把表改名
mysql> alter table 表名1 rename 表名2;
例子:mysql>alter table dept rename dept2;
2、 建索引的注意事项:
先要把要加索引的字段设为非空
mysql> alter table 表名 change 字段名 字段名 字段描述 not null;
例子:
我们创建这样一个表
mysql> create table employee
( id int(5) not null,
depno int(5),
name varchar(20) not null,
cardnumber bigint(15) not null);
mysql> alter table employee change depno depno int(5) not null;
加索引
mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
例子: mysql> alter table employee add index emp_name (name);
加主关键字的索引
mysql> alter table 表名 add primary key (字段名);
例子: mysql> alter table employee add primary key(id);
加唯一限制条件的索引
mysql> alter table 表名 add unique 索引名 (字段名);
例子: mysql> alter table employee add unique emp_name2(cardnumber);
查看某个表的索引
mysql> show index from 表名;
例子: mysql> show index from employee;
删除某个索引
mysql> alter table 表名 drop index 索引名;
例子: mysql>alter table employee drop index emp_name;