hengheng123456789

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  297 Posts :: 68 Stories :: 144 Comments :: 0 Trackbacks

   前两天很是使用了一把MySql,版本是5.0.27,对字符集的设置、存储过程的建立、触发器的建立颇有心得,现与大家分享实例。

1、字符集的设置

   a、首先安装MySql5.0.27,注意!是setup安装,不是免安装版。(如何设置免安装版的字符集俺还不会)

   b、运行MySql Server Instance Configuration Wizard,在please select the default character set页面选择Menual Selected Default Character Set / Collation,并在Character Set:下拉框中选择gb2312(经测试,从MS SQL Server中导入中文字符是成功的。)

   c、然后启动MySql服务即可!

2、存储过程的建立

   a、为了方便执行sql语句,我建议安装MySQL GUI Tools 5.0的可视化工具,十分方便!

   b、打开MySQL GUI Tools 5.0的MySql Query Browser工具,连接localhost,用户名为root,密码为空。

   c、选择File-〉New Script Tab

   d、在Script 1的Tab页中输入以下语句,选择Execute按钮执行即可。

-- 建立数据库 sample ,并使用它
create database sample;
use sample;

-- 建立一个表

create table Msg (
  MsgServiceId     integer,
  MsgTypeId        integer,
  MsgQueuedAt    datetime,
  MsgParam1        varchar(60)  NULL,
  MsgId     int NOT NULL auto_increment,         -- 自增
  PRIMARY KEY  (`MsgId`)                              -- 主键
)DEFAULT CHARSET=gb2312;                        -- 设置表的字符集

-- 建立索引

create unique index BCG_Msg_idx2 on Msg ( MsgTypeId,  MsgId );

-- 建立存储过程

DELIMITER |  --必须有此句

CREATE PROCEDURE BCG_QueueMsg
   (
     in v_MsgServiceName varchar(30),
     in v_MsgParam1      varchar(60)
   )
BEGIN
      DECLARE v_MsgTypeId integer;
      DECLARE v_QueuedAt  timestamp;
      set v_QueuedAt = now();
      SELECT MsgServiceId INTO v_MsgServiceId FROM BCG_MsgService where MsgServiceName=v_MsgServiceName;
      INSERT INTO Msg (
        MsgTypeId,
        MsgQueuedAt, 
        MsgParam1
      )
      VALUES (
        v_MsgTypeId,
        v_QueuedAt, 
        v_MsgParam1
      );
END;
|
DELIMITER ;


3、触发器的建立

   a、选择File-〉New Script Tab

   b、在Script 2的Tab页中输入以下语句,选择Execute按钮执行即可。

-- 使用sample数据库
use sample;

-- 建立测试表

CREATE TABLE Orders (
 OrderID int NOT NULL auto_increment ,
 CustomerID nchar (5)  NULL ,
 EmployeeID int NULL ,
 OrderDate datetime NULL ,
 RequiredDate datetime NULL ,
 ShippedDate datetime NULL ,
 ShipVia int NULL ,
 Freight float NULL ,
 ShipName nvarchar (40) NULL ,
 ShipAddress nvarchar (60)  NULL ,
 ShipCity nvarchar (15)  NULL ,
 ShipRegion nvarchar (15)  NULL ,
 ShipPostalCode nvarchar (10)   NULL ,
 ShipCountry nvarchar (15)   NULL,
  PRIMARY KEY  (`OrderID`)
)DEFAULT CHARSET = gb2312;

-- 建立触发器 TESTDBINSERT  ,当有记录插入表时,同时插入Msg表一条记录

DELIMITER |
CREATE TRIGGER TESTDBINSERT  AFTER  INSERT ON ORDERS
FOR EACH ROW
BEGIN
    -- 把新插入orders表中新记录的OrderID字段的值赋给ID,NEW表示当前插入的记录项内容
    SET @ID = NEW.OrderID; 

    -- 获得当前时间
    SET @v_QueuedAt = NOW();

    -- 把以上得到的值插入Msg表中
    INSERT INTO Msg (
        MsgTypeId,
        MsgQueuedAt, 
        MsgParam1
    ) VALUES (
        1,
        @v_QueuedAt, 
        @ID
    );
END;
|
DELIMITER ;

   c、这时在表orders中插入一条记录,则Msg表中也增加一条记录。

最后说明MySQL GUI Tools 5.0是一个十分好用的工具,还有可以从其他数据库中导入数据的GUI工具,希望大家多多研究。

posted on 2007-01-10 17:07 哼哼 阅读(2788) 评论(0)  编辑  收藏 所属分类: JAVA-DB

只有注册用户登录后才能发表评论。


网站导航: