前两天很是使用了一把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工具,希望大家多多研究。