前兩天很是使用了一把MySql,版本是5.0.27,對字符集的設(shè)置、存儲過程的建立、觸發(fā)器的建立頗有心得,現(xiàn)與大家分享實例。
1、字符集的設(shè)置
a、首先安裝MySql5.0.27,注意!是setup安裝,不是免安裝版。(如何設(shè)置免安裝版的字符集俺還不會)
b、運行MySql Server Instance Configuration Wizard,在please select the default character set頁面選擇Menual Selected Default Character Set / Collation,并在Character Set:下拉框中選擇gb2312(經(jīng)測試,從MS SQL Server中導(dǎo)入中文字符是成功的。)
c、然后啟動MySql服務(wù)即可!
2、存儲過程的建立
a、為了方便執(zhí)行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按鈕執(zhí)行即可。
-- 建立數(shù)據(jù)庫 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; -- 設(shè)置表的字符集
-- 建立索引
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、觸發(fā)器的建立
a、選擇File-〉New Script Tab
b、在Script 2的Tab頁中輸入以下語句,選擇Execute按鈕執(zhí)行即可。
-- 使用sample數(shù)據(jù)庫
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;
-- 建立觸發(fā)器 TESTDBINSERT ,當有記錄插入表時,同時插入Msg表一條記錄
DELIMITER |
CREATE TRIGGER TESTDBINSERT AFTER INSERT ON ORDERS
FOR EACH ROW
BEGIN
-- 把新插入orders表中新記錄的OrderID字段的值賦給ID,NEW表示當前插入的記錄項內(nèi)容
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是一個十分好用的工具,還有可以從其他數(shù)據(jù)庫中導(dǎo)入數(shù)據(jù)的GUI工具,希望大家多多研究