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