创建数据库: CREATE DATABASE dbname;
1.任何一个数据库在datadir下面都有一个
datadir/dbname
的目录;
2.datadir/
下面创建了一个datadir/dbname
目录,同时,在datadir/dbname
目录下面,创建了一个db.opt
。而db.opt
文件则是对dbname这个数据库的一些描述,如字符集什么的;
删除数据库: DROP DATABASE dbname;
1.
datadir/dbname
目录会被删除,包括目录里的文件及子目录,与rm -r datadir/dbnae
基本一样;
2.但是如果存储引擎是innodb的时候,直接在datadir
下面执行rm -r dbname
会导致dbname数据库的内容丢失,但是调用Mysql命令:SHOW DATABASES;
的时候,还是看到dbname.因为dbname还存在系统表空间的字典表里。所以直接rm -r dbname不能安全地删除数据库的。
3.如果你在datadir/dbname
下创建了一些文件(这些不是mysql创建的),那么调用DROP DATABASE dbname
会返回错误。所以你需要先把不是mysql创建的文件删除,再调用DROP DATABASE dbname
才是安全的删除。
创建表:CREATE TABLE tb;
每创建一个表都会在datadir/dbname
目录下创建一个.frm
文件,其中包含表结构的描述信息;而不同的存储引擎可能会添加不一样的文件。
innodb
innodb每创建一个表,都会在系统表空间的数据字典中存储表的信息;innodb会把表内容,就是表里面的数据,索引等存储在两个地方:
系统表空间
这种表空间是数据目录里的一个,或者多个大文件构成,默认情况下,innodb会把表内容存储到这个文件里面。
独立表空间
就是每一个表有自己的一个存储表内容的文件。这个文件是
.ibd
文件。
MYISAM
所有的Myisam表,都会在datadir/dbname
目录下创建3个文件:
.frm
:包含对表结构的描述;
.MYD
:数据文件;
.MYI
:索引文件;
MEMORY
memory表是一种内存表,它的表内容不存储在硬盘里,只存储在内存里。所以,如果你的机器重启了,那么你的memory表的内容就不风了。但是memory表还在,因为在datadir/dbname
目录下,已经创建了.frm
的文件。
创建视图:CREATE VIEW myView
在datadir/dbname
目录下,一个视图对应一个.frm
文件,文件的名字与视图名字一样:myView.frm
;文件包含了视图的结构等描述信息;
创建触发器:CREATE TRIGGER myTrig
在datadir/dbname
目录下,所有的触发器都存储在一个.TRG
文件里。文件名与表名一样:dbname.TRG
;