在mysqk中创建一个数据库直接使用CREATE DATABASE就行了,选择数据库使用use databasename而删除数据库使用drop命令就可以了,下面我来一一详细介绍它们的用法.
创建数据库:MySQL的任何事情都是以数据库开始的,数据库我们可以理解为"书架",表则可以理解为"书架上的书",,而表中的数据则可以理解为"书中的内容",也就是说数据库是容器。当我们输入完用户名密码连接到MySQL后,可以使用CREATE DATABASE命令来创建一个新的MySQL数据库,代码如下:
- createdatabasexiaoxiaozi;
- /*
- QueryOK,1rowaffected(0.06sec)
- */
这样就创建了一个数据库,数据库名为"xiaoxiaozi",在文件系统中,MySQL的数据存储区将以目录方式表示MySQL数据库,也就是说其实数据库在文件系统中的表现为"文件夹",所以说我们在给数据库命名的时候一定要小心,再小心,其命名规范与操作系统的红豆目录名字的规范相一致.
例如:在Windows系统中不允许文件和目录名中有",/,:,*,?,<,>,|"这些字符,在MySQL数据库名字中这些字母会被自动删除,且数据库的名字不能太长(不能超过64个字符),一般除非故意搞破坏,没有人建这么长名字的数据库,也不好记不是,且包含特殊字符的名字或者是全部由数字或保留字组成的名字必须用反引号包起来,代码如下:
- createdatabasexiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozi;
- /*
- 数据库名过长
- ERROR1102(42000):Incorrectdatabasename'xiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozi'
- */
- createdatabase123456;
- /*
- 数据库名为纯数字,需要用反引号包起来
- ERROR1064(42000):YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'123456'atline1
- */
- createdatabase`123456`;
- /*
- 正确创建数据库名,用反引号将纯数字包起来
- QueryOK,1rowaffected(0.00sec)
- */
且数据库的名字不能相同,如果创建一个库名与现有数据库名重复,系统会提示该数据库已经存在,创建失败,代码如下:
- createdatabase`123456`;
- /*
- 第一次创建,创建成功
- QueryOK,1rowaffected(0.01sec)
- */
- createdatabase`123456`;
- /*
- 第二次创建,创建失败
- ERROR1007(HY000):Can'tcreatedatabase'123456';databaseexists
- */
那我们创建数据库的时候,怎么样避免库名已经存在这个错误信息呢?有两种方式.
•在创建数据库之前先用 show databases;语句查询现有数据库名都有哪些,避免建立失败。
•在创建数据库时,,使用if not exists语句指明,只有当数据库不存在时才创建,代码如下:
- /*ifnotexists*/
- createdatabase`123456`;
- /*
- 第一次创建数据库,成功
- QueryOK,1rowaffected(0.00sec)
- */
- createdatabaseifnotexists`123456`;
- /*
- 如果数据库不存在才创建,执行SQL成功,有一个警告
- QueryOK,0rowsaffected,1warning(0.00sec)
- */
- /*showdatabases示例*/
- showdatabases;
- /*
- +------------+
- |Database|
- +------------+
- |123456|
- |log|
- |manager|
- |mysql|
- |qhcms|
- |test|
- |xiaoxiaozi|
- +------------+
- 7rowsinset(0.00sec)
- */
选择需要的数据库,使用USE语句将会选择一个数据库,使它成为所有事务的当前数据库,代码如下:
- usexiaoxiaozi;
- /*
- 提示数据库已改变
- Databasechanged
- */
同时,我们也可以在查询表的时候再告诉MySQL我们这些表是哪些数据库里的表,代码如下:
- selectHost,Db,UserFrommysql.db;
- /*
- 指明,在mysql数据库的db表中查询Host,Db,User字段
- +----------------------------+---------+-------+
- |Host|Db|User|
- +----------------------------+---------+-------+
- |%|test||
- |%|test_%||
- |192.168.0.133|qhcms|cms|
- |www.phpfensi.com |qhcms|cms|
- |localhost|log|log|
- |localhost|manager|mambo|
- |localhost|qhcms|cms|
- +----------------------------+---------+-------+
- 7rowsinset(0.05sec)
- */
上面这条语句,与如下两条语句组合的作用是相同的,代码如下:
- usemysql;
- /*
- 选择mysql数据库
- Databasechanged
- */
- selectHost,Db,UserFromdb;
- /*
- 在db表里面选择Host,Db,User字段
- +----------------------------+---------+-------+
- |Host|Db|User|
- +----------------------------+---------+-------+
- |%|test||
- |%|test_%||
- |192.168.0.133|qhcms|cms|
- |www.phpfensi.com |qhcms|cms|
- |localhost|log|log|
- |localhost|manager|mambo|
- |localhost|qhcms|cms|
- +----------------------------+---------+-------+
- 7rowsinset(0.00sec)
- */
删除数据库:这是一个危险的动作,如果大家要使用的话,一定要先确认这个数据库是自己的,并且是自己真的想删的,因为一旦删除数据库,是连其内部的表数据一起删除的.一旦删除就真的没了,所以一定要小心,再小心.
其实删除数据库的命令很是简单 drop database database_name; 不过要删一个数据库,如果其不存在的话,系统是会报错的,这个时候我们可以借助if exists来判断一下数据库是否存在,代码如下:
- dropdatabasexiaoxiaozi;
- /*
- 第一次删除xiaoxiaozi数据库
- QueryOK,0rowsaffected(0.00sec)
- */
- dropdatabasexiaoxiaozi;
- /*
- 第二次删除失败,因为此时该数据库已经不存在了
- ERROR1008(HY000):Can'tdropdatabase'xiaoxiaozi';databasedoesn'texist
- */
- dropdatabaseifexistsxiaoxiaozi;
- /*
- 删除的时候先判断存不存在,如果不存在执行删除
- QueryOK,0rowsaffected,1warning(0.00sec)
- */