MySQL数据库操作语法详解

中医白癜风医院 https://yyk.39.net/bj/zhuanke/89ac7.html

1数据库创建

建库语句如下:

CREATEDATABASE

SCHEMA会创建一个给定名称的数据库,只有拥有CREATE权限才能使用该语法。不加IFNOTEXISTS时,如果需要创建数据库已经同名存在则会报错。

create_specification中指定了创建数据库特性。数据库特性存放在数据库目录下的db.opt文件中,一般在数据库安装目录的data/db_name/子目录下。CHARACTERSET子句指定了数据库默认的字符集,COLLATE子句指定了数据库默认校对。

MySQL的数据库以数据库名为目录下包含与表对应的文件的方式实现的,例如我的数据库安装目录是/usr/local/mysql,并且创建了一个test数据库,里面有个test表。那么在/usr/local/mysql/data目录下的test子目录就是test数据库对应的目录,该子目录下的db.opt就指定了test数据库的特性。其中test.frm就是test表的数据文件。在数据的初创时是没有表存在的,它只会在data目录下生成数据库目录并在其中生成db.opt文件。

如果在data目录下使用mkdir命令直接创建一个目录,服务器也会把它当作一个数据库,并且在SHOWDATABASES中也可以输出。

MySQL对于数据库的个数并没做限制,但是需要考虑部署服务的文件系统可能对子目录的个数有限制。

2数据库删除

DROPDATABASE会删除所有的数据表并删除数据库,使用该命令应该拥有DROP权限。DROPSCHEMA是同等命令。注意:当一个数据库被删除时,该数据库对应的用户权限不会自动删除,需要手工删除。

IFEXISTS就是为了防止所要删除的数据库不存在而报错。

如果当前默认的数据库被删除了,那么默认数据库不会被设置,也就是在执行DATABASE()函数会返回NULL。如下图所示:

如果数据库上存在链接使用该命令,那么链接库和原始库都会被删除。

DROPDATABASE命令会返回删除的表的个数,即.frm文件的个数。该命令会删除数据库目录以及目录下的所有文件,包括:.BAK、.DAT、.HSH、.MRG、.MYD、.MYI、.TRG、.TRN、.cfg、.db、.frm、.ibd、.ndb、.par以及.opt等。

如果目录下还存在其他不能删除的文件,那么该数据库目录是不会被删除的,这是需要手动去删除数据库目录下的文件,然后在重新执行DROPDATABASE命令。

删除数据库时,不会删除数据库中的临时表,临时表在创建它的会话结束后会自动删除。

3数据库修改

ALTERDATABASE或ALTERSCHEMA可以用来改变数据库的所有属性,也就是数据库目录下的db.opt文件,该命令需要ALTER权限才能执行。如果命令中省略了db_name,则对默认数据库进行操作。

1国家语言选择

CHARACTERSET子句会修改数据库默认的字符集,COLLATE子句会修改数据库校验。第10章字符集、校验、解码中讨论了这些东西。

可以通过使用SHOWCHARACTERSET和SHOWCOLLATION语句查看哪些字符集和校验码可以使用。如果修改了数据库默认编码与校验,之前存储过程和函数必须被删除并重新创建。

25.1后的升级

UPGRADEDATADIRECTORY子句用与对5.1版本之前的数据库数据文件目录进行重命名。该子句使用有以下条件:

1)从5.1之前的版本升级到5.1;

2)如果数据目录名中存在特殊的字符,该命令可以将命名升级数据库当前的编码。

3)通过mysqlcheck命令使用;

例如,如果MySQL5.0中有数据库名为a-b-c,数据目录名也被定义为a-b-c,对于某些文件系统来说这是不安全的。在MySQL5.1及之后,这样的数据目录名会被编码为a

db

dc。

当系统升级为5.1或之后版本后,a-b-c的名称会显示为#mysql50#a-b-c,此时需要使用#mysql50前缀来使用该名称。UPGRADEDDATDIRECTORYNAME就能是服务器重新对该目录名称进行编码,如下代码:

然后就可以使用数据库名a-b-c,不用添加#mysql50#前缀了。

注意:5.7.6版本已经启用了该子句并且在之后版本会删除该子句。如果需要使用该方式,可以现将数据库升级到5.1,然后再升级到5.7.6之后。




转载请注明:http://www.aierlanlan.com/rzfs/1314.html