2.5 创建数据库

上面讲解了数据库表的设计,下面我们来根据该设计创建数据库,我们所使用的数据库是MySQL。

2.5.1 MySQL的下载、安装与启动

在使用MySQL之前,需要建立数据库的环境来创建数据表,首先我们需要安装该数据库环境,即MySQL。

1.下载MySQL

MySQL的官方网站是http://www.mysql.org/,如图2-9所示。

图2-9 MySQL官方网站

当前稳定版本为5.1,我们选用MySQL 5.1.22作为数据库服务器,到其官方网站http://dev.mysql.com/downloads/mysql/5.1.html上进行下载,下载后的文件为mysql-noinstall-5.1.22-rc-win32.zip。该版本是个绿色软件,解压缩即可使用。

2.安装MySQL

我们将mysql-noinstall-5.1.22-rc-win32.zip文件解压到D盘根目录下,并修改解压后的根目录名为mysql,这样做是为了使目录名简单一些,方便我们使用。解压后的目录结构如图2-10所示。

图2-10 MySQL解压后的目录

该根目录下包含以下几个最常用的子目录。

● bin目录:该目录包含了MySQL的启动、停止等各种操作命令文件,我们也要使用这下面的命令文件来启动和管理MySQL。

● data目录:该目录是MySQL的数据库存放目录。在该目录下,每一个子目录对应一个数据库。默认时包含两个数据库mysql和test。在该data目录下直接新建一个目录,即表示新建了一个数据库。

● Docs目录:该目录下包含了MySQL的文档,其中manual.chm为MySQL的英文版使用手册。

对其他的子目录开发人员不必给予太多关注。另外,该根目录下有5个以ini为扩展名的文件,分别表示不同级别的MySQL配置参数文件,例如my-small.ini、my-large.ini等。我们可以手动修改这些文件内的属性值,也可以通过SQL-Front来进行管理。

3.MySQL的启动与停止

MySQL的安装文件解压缩完成后,它的安装过程即结束,但此时还不能够使用。要使用MySQL,则必须启动MySQL的服务。需要使用D:/mysql/bin目录下的mysqld命令,命令行语法如下:

            mysqld --console

依次选择【开始】→【运行】命令,在弹出的对话框中输入“cmd”,进入Windows命令窗口。然后通过“cd”命令进入到D:/mysql/bin目录,执行上面的命令行,即可启动MySQL的服务。此时显示的窗口如图2-11所示。

图2-11 启动MySQL服务

如果要停止MySQL的服务,则只需要关闭上面的窗口即可。

到这里我们应该已经结束了MySQL的安装与启动了,但是上面的这种启动方式需要每一次都执行命令行,对于我们的使用十分不便。为此,我们在D:/mysql/bin目录下新建一个批处理文件mysql-startup.bat,写入一行启动命令语句“mysqld --console”,以后我们只需要双击该批处理文件即可启动MySQL服务了。

4.MySQL服务的启动与停止

上面使用bat批处理来开启一个MySQL服务,服务运行在命令窗口中。我们也可以以服务的形式启动MySQL。分别使用如下命令:

            net stop mysql
            net start mysql

需要注意的是,net stop和net start后面的mysql是MySQL服务器安装时的服务名称,只有在使用二进制的MySQL安装程序安装时才会有该服务,该服务可以在Windows的服务管理列表中找到。

下面是停止和启动MySQL服务的实例:

            D:\msyql\bin>net stop mysql
            MySQL服务正在停止。
            MySQL服务已成功停止。
            D:\msyql\bin>net start mysql
            MySQL服务已经启动成功。

上面讲解了MySQL命令的使用,我们可以直接使用上一节课创建的demo.sql文件中的SQL语句来创建MySQL数据库。但我们还有更方便的方式,即使用MySQL的客户端软件来创建数据库。

2.5.2 安装MySQL客户端软件SQL-Front

为了能够方便地管理和浏览数据库,我们使用一个MySQL的客户端管理软件SQL-Front来进行管理,该软件实际上是MySQL-Front的新版命名。其最新的版本为3.3,我们可以在该网站上找到该版本的下载链接http://www.omnipotus.com/download/SQL-Front_Setup.exe,下载的文件为SQL-Front_Setup.exe。

双击安装文件SQL-Front_Setup.exe,一直单击【下一步】按钮即可完成安装。安装完成后会在【开始】菜单中添加SQL-Front一项,单击其启动文件会让你输入连接数据库的信息,如图2-12所示。

图2-12 新建数据库连接

此时单击上方的【连接】标签,打开【连接】选项卡,输入连接的服务器为“localhost”,端口使用默认的3306,并且在【注册】页面使用默认的用户root,密码为123。单击【确定】按钮即可打开软件的主界面,如图2-13所示。

图2-13 SQL-Front主界面

该主界面的左侧树形结构显示了当前数据库中的所有数据库名列表,展开数据库名即可看到数据库中的数据表。右侧显示了数据库、数据表的详细信息,并有一个“Query”的页面,用于执行SQL语句。

2.5.3 新建数据库demo

接下来我们使用SQL-Front来新建一个数据库,将数据库命名为demo。依次选择图2-13中的【数据库】→【新建】→【数据库】命令,弹出如图2-14所示的界面。

图2-14 创建数据库demo

在该界面的文本框中输入新建的数据库名称“demo”,单击【确定】按钮即可完成数据库的创建。此时图2-13中左侧的树形结构中就有了“demo”这一项了。

2.5.4 新建用户表user

接下来我们使用SQL-Front来新建数据表user。选中图2-13中左侧的数据库demo,依次选择【数据库】→【新建】→【表格】命令,弹出如图2-15所示的创建数据表界面。

图2-15 新建数据表user

在该界面中输入表名“user”,然后进入【字段】页面添加该表的4个字段,并设置字段的类型、长度及相关属性,如图2-16所示。

图2-16 新建字段

最后单击【确定】按钮即可完成数据表的创建。此时将图2-13左侧的demo数据库展开即可看见新建的user数据表。

当然我们也可以直接使用SQL语句来创建该表,只需要在图2-13中右侧的【SQL编辑器】窗口中输入下面的SQL语句,单击【执行】按钮即可。

            CREATE TABLE IF NOT EXISTS user (
              ID int(10) unsigned NOT NULL auto_increment,
              username varchar(50) ,
              password varchar(50) ,
              email varchar(50) ,
              PRIMARY KEY (ID),
              UNIQUE KEY ID (ID),
              KEY ID_2 (ID)
            );

2.5.5 添加一条用户数据

为了在后面的系统开发中可以进行登录,我们首先在用户表user中添加一个用户记录。单击图2-13中左侧的demo数据库中的数据表user,在右侧的【数据浏览器】项中即可显示该表的数据列表,如图2-17所示。

图2-17 添加一条用户数据

在图2-17的表格中添加一个用户“admin”,密码设置为“admin”,E-mail地址为“abc@163.com”。然后单击工具栏中的【√】按钮,即可提交保存。

当然我们也可以通过在【SQL编辑器】中执行下面的SQL语句来添加该条数据:

            INSERT INTO user VALUES("1", "admin", "admin", "abc@163.com");

需要说明的是,使用【SQL编辑器】的SQL执行功能可以很方便地进行开发。

2.5.6 创建通讯录管理表address

使用SQL-Front执行SQL窗口并执行下面的SQL即可创建:

            CREATE TABLE 'address' (
              'id' int(10) unsigned NOT NULL auto_increment,
              'username' varchar(50) NOT NULL default '',
              'name' varchar(50) NOT NULL default '',
              'sex' varchar(10) default NULL,
              'mobile' varchar(20) default NULL,
              'email' varchar(50) default NULL,
              'qq' varchar(20) default NULL,
              'company' varchar(100) default NULL,
              'address' varchar(100) default NULL,
              'postcode' varchar(10) default NULL,
              PRIMARY KEY  ('id'),
              UNIQUE KEY 'ID' ('id'),
              KEY 'ID_2' ('id')
            ) ENGINE=InnoDB AUTO_INCREMENT=77 DEFAULT CHARSET=utf8;
            INSERT INTO 'address' VALUES (1,'admin','admin','mail','13812345678','abc@163.com','12345678','IBM','北京','100085');
            INSERT INTO 'address' VALUES (6,'admin','admin','mail','13812345678','abc@163.com','12345678','IBM','北京','100085');

2.5.7 创建短消息管理表sms

使用SQL-Front执行SQL窗口并执行下面的SQL即可创建:

            CREATE TABLE 'sms' (
              'id' int(10) unsigned NOT NULL auto_increment,
              'username' varchar(50) NOT NULL default '',
              'sender' varchar(50) NOT NULL default '',
              'message' text,
              'sendtime' varchar(20) default NULL,
              'isRead' varchar(1) default '0',
              PRIMARY KEY  ('id'),
              UNIQUE KEY 'ID' ('id'),
              KEY 'ID_2' ('id')
            ) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;
            INSERT INTO 'sms' VALUES (10,'a','admin','a','2007-08-29 19:22:07','0');
            INSERT INTO 'sms' VALUES (14,'s','admin','内','2008-10-14 13:33:59','0');

2.5.8 创建日程安排表schedule

使用SQL-Front执行SQL窗口并执行下面的SQL即可创建:

            CREATE TABLE 'schedule' (
              'id' int(10) unsigned NOT NULL auto_increment,
              'username' varchar(50) NOT NULL default '',
              'year' int(4) default NULL,
              'month' int(2) default NULL,
              'day' int(2) default NULL,
              'plan' text,
              PRIMARY KEY  ('id'),
              UNIQUE KEY 'ID' ('id'),
              KEY 'ID_2' ('id')
            ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
            INSERT INTO 'schedule' VALUES (8,'admin',2009,1,30,'Java高手真经讨论会');
            INSERT INTO 'schedule' VALUES (9,'admin',2008,12,1,'Java高手真经讨论会');

2.5.9 创建工作记录表worklog

使用SQL-Front执行SQL窗口并执行下面的SQL即可创建:

            CREATE TABLE 'worklog' (
              'id' int(10) unsigned NOT NULL auto_increment,
              'username' varchar(50) NOT NULL default '',
              'year' int(4) default NULL,
              'month' int(2) default NULL,
              'day' int(2) default NULL,
              'title' varchar(100) default NULL,
              'description' text,
              'logtime' varchar(20) default NULL,
              PRIMARY KEY  ('id'),
              UNIQUE KEY 'ID' ('id'),
              KEY 'ID_2' ('id')
            ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
            INSERT INTO 'worklog' VALUES (8,'admin',2008,12,30,'JavaWeb','Java高手真经讨论会','2007-08-29 17:40:00');
            INSERT INTO 'worklog' VALUES (15,'admin',2008,12,20,'Java讨论结束','产生JSP方案','2008-10-14 17:46:08');

2.5.10 创建公司公告表notice

使用SQL-Front执行SQL窗口并执行下面的SQL即可创建:

            CREATE TABLE 'notice' (
              'id' int(10) unsigned NOT NULL auto_increment,
              'sender' varchar(50) NOT NULL default '',
              'title' varchar(100) default NULL,
              'content' text,
              'sendtime' varchar(20) default NULL,
              PRIMARY KEY  ('id'),
              UNIQUE KEY 'ID' ('id'),
              KEY 'ID_2' ('id')
            ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
            INSERT INTO 'notice' VALUES (8,'admin','JavaWeb','Java高手真经讨论会','2007-08-29 18:12:08');
            INSERT INTO 'notice' VALUES (13,'admin','开始第2卷讨论','讨论内容','2008-10-14 18:15:18');

2.5.11 创建工作会议表meeting

使用SQL-Front执行SQL窗口并执行下面的SQL即可创建:

            CREATE TABLE 'meeting' (
              'id' int(10) unsigned NOT NULL auto_increment,
              'sender' varchar(50) NOT NULL default '',
              'starttime' varchar(20) default NULL,
              'endtime' varchar(20) default NULL,
              'address' varchar(100) default NULL,
              'title' varchar(100) default NULL,
              'content' text,
              PRIMARY KEY  ('id'),
              UNIQUE KEY 'ID' ('id'),
              KEY 'ID_2' ('id')
            ) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
            INSERT INTO 'meeting' VALUES (8,'admin','2007-08-30 09:00','2007-08-30 11:00','北京','Java','JavaWeb高手真经讨论会');
            INSERT INTO 'meeting' VALUES (17,'admin','2008-10-10 10:00:00','2008-10-10 12:00:00','会议室','Java讨论','讨论内容');

2.5.12 打包emis07(SQL+MySQL).zip

经过以上的操作,就完成了MySQL下企业信息管理系统数据库的创建。此时我们可以使用SQL-Front的导出功能,将demo数据库导出为SQL文件demo.sql。

请读者注意

本书主要以MySQL数据库为主讲解Hibernate和iBATIS层的开发,但由于Oracle和SQL Server也是日常开发中经常使用的数据库,因此我们也会讲解基于这两种数据库的持久层的开发过程。但限于篇幅,本书不再讲解Oracle和SQL Server数据库的安装过程和使用方法,Oracle和SQL Server的安装、配置和使用的详细讲解见本系列的第二本图书《Java Web核心技术》。

我们将MySQL(以及第二本书中的Oracle和SQL Server)数据库的备份文件打包为database.zip,其结构如下:

            database.zip
            ├─mysql                         //MySQL数据库文件
            |  └─demo.sql
            |
            ├─oracle                         //Oracle数据库文件
            |  └─demo.dmp
            |
            └─sqlserver                      //SQL Server数据文件
                ├─demo.sql                   //SQL导出文件
                ├─demo.mdb                  //导出数据文件
                ├─demo.bak                  //采用第2种方式备份的文件
                ├─demo_Data.MDF             //采用第3种方式备份的文件
                └─demo_Log.LDF   ├─META-INF

该文件放在光盘中的source目录下,可以直接解压查看。