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