示例1 建庫建表建約束

--建庫-----------------------------------------------------------------------------------------------
USE master
GO

IF EXISTS(SELECT * FROM sys.databases WHERE name='BankDB')
   DROP DATABASE BankDB
GO
CREATE DATABASE BankDB
ON PRIMARY
(
   NAME = 'BankDB',
   FILENAME = 'E:\BankDB.mdf',
   SIZE = 5MB,
   FILEGROWTH = 15%
)
LOG ON
(
   NAME = 'BankDB_log',
   FILENAME = 'E:\BankDB_log.ldf',
   SIZE = 1MB,
   FILEGROWTH = 15%
)
GO
--建表-----------------------------------------------------------------------------------------------
USE BankDB
GO

IF EXISTS(SELECT * FROM sys.objects WHERE name='Deposit')
   DROP TABLE Deposit
GO
CREATE TABLE Deposit
(
   [DepositId] int NOT NULL IDENTITY(1,1),
   [DepositName] nvarchar(20) NULL,
   [Descrip]  nvarchar(100) NULL
)
GO

IF EXISTS(SELECT * FROM sys.objects WHERE name='UserInfo')
   DROP TABLE UserInfo
GO
CREATE TABLE UserInfo
(
   [IdentityCard] nvarchar(30) NOT NULL,
   [UserName] nvarchar(30) NULL,
   [Telephone] nvarchar(30) NULL,
   [Address] nvarchar(50) NULL
)
GO

IF EXISTS(SELECT * FROM sys.objects WHERE name='CardInfo')
   DROP TABLE CardInfo
GO
CREATE TABLE CardInfo
(
   [CardNo] nvarchar(20) NOT NULL,
   [PassWord] nvarchar(20) NULL,
   [UserName] nvarchar(30) NULL,
   [IdentityCard] nvarchar(30) NOT NULL,
   [Telephone] nvarchar(30) NULL,
   [Address] nvarchar(50) NULL,
   [MoneyType] nvarchar(10) NULL,
   [DepositId] int NOT NULL,
   [AccountDate] datetime NULL,
   [AccountMoney] decimal(10,2) NULL,
   [SaveMoney] decimal(10,2) NULL,
   [AccountState] nvarchar(10) NULL
)
GO

IF EXISTS(SELECT * FROM sys.objects WHERE name='TradeInfo')
   DROP TABLE TradeInfo
GO
CREATE TABLE TradeInfo
(
   [TradeId] int NOT NULL IDENTITY(1,1),
   [CardNo] nvarchar(20) NOT NULL,
   [TradeDate] datetime NULL,
   [TradeType] nvarchar(10) NULL,
   [TradeMoney] decimal(10,2) NULL,
   [SpareMoney] decimal(10,2) NULL,
   [Remark] nvarchar(200) NULL
)
GO

--建約束------------------------------------------------------------------------------------
USE BankDB
GO

--Deposit--------------------------------
IF EXISTS(SELECT * FROM sys.objects WHERE name = 'PK_DepositId')
   ALTER TABLE [Deposit]
      DROP CONSTRAINT PK_DepositId
ALTER TABLE [Deposit]
   ADD CONSTRAINT PK_DepositId PRIMARY KEY([DepositId])

--UserInfo-------------------------------
--IdentityCard----
IF EXISTS(SELECT * FROM sys.objects WHERE name = 'PK_IdentityCard')
   ALTER TABLE [UserInfo]
      DROP CONSTRAINT PK_IdentityCard
ALTER TABLE [UserInfo]
   ADD CONSTRAINT PK_IdentityCard PRIMARY KEY([IdentityCard])

IF EXISTS(SELECT * FROM sys.objects WHERE name = 'CK_IdentityCard')
   ALTER TABLE [UserInfo]
      DROP CONSTRAINT CK_IdentityCard
ALTER TABLE [UserInfo]
   ADD CONSTRAINT CK_IdentityCard CHECK(LEN([IdentityCard])=15 OR LEN([IdentityCard])=18)

--UserName----
ALTER TABLE [UserInfo] ALTER COLUMN [UserName] nvarchar(30) NOT NULL

/**電話檢查約束
IF EXISTS(SELECT * FROM sys.objects WHERE name = 'CK_Telephone')
   ALTER TABLE [UserInfo]
      DROP CONSTRAINT CK_Telephone
ALTER TABLE [UserInfo]
   ADD CONSTRAINT CK_Telephone CHECK()
*/

--CardInfo--------------------------------

--CardNo-----
IF EXISTS(SELECT * FROM sys.objects WHERE name = 'PK_CardNo')
   ALTER TABLE [CardInfo]
      DROP CONSTRAINT PK_CardNo
ALTER TABLE [CardInfo]
   ADD CONSTRAINT PK_CardNo PRIMARY KEY([CardNo])

IF EXISTS(SELECT * FROM sys.objects WHERE name = 'CK_CardNo')
   ALTER TABLE [CardInfo]
      DROP CONSTRAINT CK_CardNo
ALTER TABLE [CardInfo]
   ADD CONSTRAINT CK_CardNo CHECK(LEN([CardNo])=16)

--PassWord-----
IF EXISTS(SELECT * FROM sys.objects WHERE name = 'CK_PassWord')
   ALTER TABLE [CardInfo]
      DROP CONSTRAINT CK_PassWord
ALTER TABLE [CardInfo]
   ADD CONSTRAINT CK_PassWord CHECK(LEN([PassWord])=6)

IF EXISTS(SELECT * FROM sys.objects WHERE name = 'DF_PassWord')
   ALTER TABLE [CardInfo]
      DROP CONSTRAINT DF_PassWord
ALTER TABLE [CardInfo]
   ADD CONSTRAINT DF_PassWord DEFAULT('888888') FOR [PassWord]

--UserName----
ALTER TABLE [CardInfo] ALTER COLUMN [UserName] nvarchar(30) NOT NULL

--IdentityCard------
IF EXISTS(SELECT * FROM sys.objects WHERE name = 'FK_IdentityCard')
   ALTER TABLE [CardInfo]
      DROP CONSTRAINT FK_IdentityCard
ALTER TABLE [CardInfo]
   ADD CONSTRAINT FK_IdentityCard FOREIGN KEY([IdentityCard]) REFERENCES [UserInfo]([IdentityCard])

IF EXISTS(SELECT * FROM sys.objects WHERE name = 'CK_CardInfo_IdentityCard')
   ALTER TABLE [CardInfo]
      DROP CONSTRAINT CK_CardInfo_IdentityCard
ALTER TABLE [CardInfo]
   ADD CONSTRAINT CK_CardInfo_IdentityCard CHECK(LEN([IdentityCard])=15 OR LEN([IdentityCard])=18)

/**電話檢查約束
IF EXISTS(SELECT * FROM sys.objects WHERE name = 'CK_Telephone')
   ALTER TABLE [UserInfo]
      DROP CONSTRAINT CK_Telephone
ALTER TABLE [UserInfo]
   ADD CONSTRAINT CK_Telephone CHECK()
*/

--MoneyType------
IF EXISTS(SELECT * FROM sys.objects WHERE name = 'DF_MoneyType')
   ALTER TABLE [CardInfo]
      DROP CONSTRAINT DF_MoneyType
ALTER TABLE [CardInfo]
   ADD CONSTRAINT DF_MoneyType DEFAULT('RMB') FOR [MoneyType]

IF EXISTS(SELECT * FROM sys.objects WHERE name = 'CK_MoneyType')
   ALTER TABLE [CardInfo]
      DROP CONSTRAINT CK_MoneyType
ALTER TABLE [CardInfo]
   ADD CONSTRAINT CK_MoneyType CHECK([MoneyType]='RMB')

--DepositId--------
IF EXISTS(SELECT * FROM sys.objects WHERE name = 'FK_DepositId')
   ALTER TABLE [CardInfo]
      DROP CONSTRAINT FK_DepositId
ALTER TABLE [CardInfo]
   ADD CONSTRAINT FK_DepositId FOREIGN KEY([DepositId]) REFERENCES [Deposit]([DepositId])

--AccountDate--------
IF EXISTS(SELECT * FROM sys.objects WHERE name = 'DF_AccountDate')
   ALTER TABLE [CardInfo]
      DROP CONSTRAINT DF_AccountDate
ALTER TABLE [CardInfo]
   ADD CONSTRAINT DF_AccountDate DEFAULT(GETDATE()) FOR [AccountDate]

--AccountMoney--------
IF EXISTS(SELECT * FROM sys.objects WHERE name = 'CK_AccountMoney')
   ALTER TABLE [CardInfo]
      DROP CONSTRAINT CK_AccountMoney
ALTER TABLE [CardInfo]
   ADD CONSTRAINT  CK_AccountMoney CHECK([AccountMoney]>=1)

--AccountState--------
IF EXISTS(SELECT * FROM sys.objects WHERE name = 'DF_AccountState')
   ALTER TABLE [CardInfo]
      DROP CONSTRAINT DF_AccountState
ALTER TABLE [CardInfo]
   ADD CONSTRAINT DF_AccountState DEFAULT('未掛失') FOR [AccountState]


--TradeInfo-------------------------------------------
IF EXISTS(SELECT * FROM sys.objects WHERE name = 'PK_TradeId')
   ALTER TABLE [TradeInfo]
      DROP CONSTRAINT PK_TradeId
ALTER TABLE [TradeInfo]
   ADD CONSTRAINT PK_TradeId PRIMARY KEY([TradeId])
--CardNo--------------
IF EXISTS(SELECT * FROM sys.objects WHERE name = 'FK_CardNo')
   ALTER TABLE [TradeInfo]
      DROP CONSTRAINT FK_CardNo
ALTER TABLE [TradeInfo]
   ADD CONSTRAINT FK_CardNo FOREIGN KEY([CardNo]) REFERENCES [CardInfo]([CardNo])

IF EXISTS(SELECT * FROM sys.objects WHERE name = 'CK_TradeInfo_CardNo')
   ALTER TABLE [TradeInfo]
      DROP CONSTRAINT CK_TradeInfo_CardNo
ALTER TABLE [TradeInfo]
   ADD CONSTRAINT  CK_TradeInfo_CardNo CHECK(LEN([CardNo])=16)

--TradeDate-----------
IF EXISTS(SELECT * FROM sys.objects WHERE name = 'DF_TradeDate')
   ALTER TABLE [TradeInfo]
      DROP CONSTRAINT DF_TradeDate
ALTER TABLE [TradeInfo]
   ADD CONSTRAINT DF_TradeDate DEFAULT(GETDATE()) FOR [TradeDate]

--TradeMoney---------
IF EXISTS(SELECT * FROM sys.objects WHERE name = 'CK_TradeMoney')
   ALTER TABLE [TradeInfo]
      DROP CONSTRAINT CK_TradeMoney
ALTER TABLE [TradeInfo]
   ADD CONSTRAINT  CK_TradeMoney CHECK([TradeMoney] > 0)

GO

--插入數(shù)據(jù)---------------------------------------------------------------------------------------
--Deposit-----------------------------
BEGIN TRANSACTION
   DECLARE @n int
   SET @n = 0

   INSERT INTO [Deposit]([DepositName],[Descrip]) VALUES('活期','按存款日結算利息')
   SET @n=@n+@@ERROR
   INSERT INTO [Deposit]([DepositName],[Descrip]) VALUES('定期一年','存款期是1年')
   SET @n=@n+@@ERROR
   INSERT INTO [Deposit]([DepositName],[Descrip]) VALUES('定期二年','存款期是2年')
   SET @n=@n+@@ERROR
   INSERT INTO [Deposit]([DepositName],[Descrip]) VALUES('定期三年','存款期是3年')
   SET @n=@n+@@ERROR
   INSERT INTO [Deposit]([DepositName],[Descrip]) VALUES('定活兩便',NULL)
   SET @n=@n+@@ERROR
   INSERT INTO [Deposit]([DepositName],[Descrip]) VALUES('通知',NULL)
   SET @n=@n+@@ERROR
   INSERT INTO [Deposit]([DepositName],[Descrip]) VALUES('零存整取一年','存款期是1年')
   SET @n=@n+@@ERROR
   INSERT INTO [Deposit]([DepositName],[Descrip]) VALUES('零存整取二年','存款期是2年')
   SET @n=@n+@@ERROR
   INSERT INTO [Deposit]([DepositName],[Descrip]) VALUES('零存整取三年','存款期是3年')
   SET @n=@n+@@ERROR
   INSERT INTO [Deposit]([DepositName],[Descrip]) VALUES('存本取息五年','按月支取利息')
   SET @n=@n+@@ERROR

   IF(@n = 0)
      BEGIN
         COMMIT TRANSACTION
      END
   ELSE
      BEGIN
         ROLLBACK TRANSACTION
      END
GO

--UserInfo-----------------------------
BEGIN TRANSACTION
   DECLARE @n int
   SET @n = 0

   INSERT INTO [UserInfo]([IdentityCard],[UserName],[Telephone],[Address]) VALUES('123456789012345','張三','010-67898978','北京海淀區(qū)')
   SET @n=@n+@@ERROR
   INSERT INTO [UserInfo]([IdentityCard],[UserName],[Telephone],[Address]) VALUES('321245678912345678','李四','0478-44443333','山東濟南市')
   SET @n=@n+@@ERROR
   INSERT INTO [UserInfo]([IdentityCard],[UserName],[Telephone],[Address]) VALUES('567891234532124670','王五','010-44443333','河北石家莊市')
   SET @n=@n+@@ERROR
   INSERT INTO [UserInfo]([IdentityCard],[UserName],[Telephone],[Address]) VALUES('567891321242345618','丁六','0752-43345543','北京西城區(qū)')
   SET @n=@n+@@ERROR
   INSERT INTO [UserInfo]([IdentityCard],[UserName],[Telephone],[Address]) VALUES('334456889012678','丁一','2222-63598978','河南新鄉(xiāng)')
   SET @n=@n+@@ERROR
   INSERT INTO [UserInfo]([IdentityCard],[UserName],[Telephone],[Address]) VALUES('213445678912342222','趙二','0760-44446666',NULL)
   SET @n=@n+@@ERROR
   IF(@n = 0)
      BEGIN
         COMMIT TRANSACTION
      END
   ELSE
      BEGIN
         ROLLBACK TRANSACTION
      END
GO

--CardInfo-----------------------------
BEGIN TRANSACTION
   DECLARE @n int
   SET @n = 0

   INSERT INTO [CardInfo]([CardNo],[PassWord],[UserName],[IdentityCard],[Telephone],[Address],[MoneyType],[DepositId],[AccountDate],[AccountMoney],[SaveMoney],[AccountState]) 
      VALUES('1010357612121004',DEFAULT,'丁六','567891321242345618','0752-43345543','北京西城區(qū)',DEFAULT,2,'2009/11/2  15:22:06',1,1001,DEFAULT)
   SET @n=@n+@@ERROR
   INSERT INTO [CardInfo]([CardNo],[PassWord],[UserName],[IdentityCard],[Telephone],[Address],[MoneyType],[DepositId],[AccountDate],[AccountMoney],[SaveMoney],[AccountState]) 
      VALUES('1010357612121130',DEFAULT,'王五','567891234532124670','010-44443333','河北石家莊市',DEFAULT,2,'2009/11/2  15:22:06',1,1,DEFAULT)
   SET @n=@n+@@ERROR
   INSERT INTO [CardInfo]([CardNo],[PassWord],[UserName],[IdentityCard],[Telephone],[Address],[MoneyType],[DepositId],[AccountDate],[AccountMoney],[SaveMoney],[AccountState]) 
      VALUES('1010357612121134','123123','李四','321245678912345678','0478-44443333','山東濟南市',DEFAULT,2,'2009/11/2  15:22:06',1,1501,'已掛失')
   SET @n=@n+@@ERROR
   INSERT INTO [CardInfo]([CardNo],[PassWord],[UserName],[IdentityCard],[Telephone],[Address],[MoneyType],[DepositId],[AccountDate],[AccountMoney],[SaveMoney],[AccountState]) 
      VALUES('1010357612345678','123456','張三','123456789012345','010-67898978','北京海淀區(qū)',DEFAULT,1,'2009/11/2  15:22:06',1000,6100,DEFAULT)
   SET @n=@n+@@ERROR
   INSERT INTO [CardInfo]([CardNo],[PassWord],[UserName],[IdentityCard],[Telephone],[Address],[MoneyType],[DepositId],[AccountDate],[AccountMoney],[SaveMoney],[AccountState]) 
      VALUES('1010357619148284',DEFAULT,'丁一','334456889012678','2222-63598978','河南新鄉(xiāng)',DEFAULT,1,'2009/11/2  15:32:53',1000,1000,DEFAULT)
   SET @n=@n+@@ERROR
   
   IF(@n = 0)
      BEGIN
         COMMIT TRANSACTION
      END
   ELSE
      BEGIN
         ROLLBACK TRANSACTION
      END
GO

--TradeInfo-----------------------------
BEGIN TRANSACTION
   DECLARE @n int
   SET @n = 0

   INSERT INTO [TradeInfo]([CardNo],[TradeDate],[TradeType],[TradeMoney],[SpareMoney]) 
      VALUES('1010357612345678','2009/11/2  15:22:06','支取',900,100)
   SET @n=@n+@@ERROR
   INSERT INTO [TradeInfo]([CardNo],[TradeDate],[TradeType],[TradeMoney],[SpareMoney]) 
      VALUES('1010357612121130','2009/11/2  15:22:06','存入',300,301)
   SET @n=@n+@@ERROR
   INSERT INTO [TradeInfo]([CardNo],[TradeDate],[TradeType],[TradeMoney],[SpareMoney]) 
      VALUES('1010357612121004','2009/11/2  15:22:06','存入',1000,1001)
   SET @n=@n+@@ERROR
   INSERT INTO [TradeInfo]([CardNo],[TradeDate],[TradeType],[TradeMoney],[SpareMoney]) 
      VALUES('1010357612121130','2009/11/2  15:22:06','存入',1900,2201)
   SET @n=@n+@@ERROR
   INSERT INTO [TradeInfo]([CardNo],[TradeDate],[TradeType],[TradeMoney],[SpareMoney]) 
      VALUES('1010357612121134','2009/11/2  15:22:06','存入',5000,5001)
   SET @n=@n+@@ERROR
   INSERT INTO [TradeInfo]([CardNo],[TradeDate],[TradeType],[TradeMoney],[SpareMoney]) 
      VALUES('1010357612121134','2009/11/2  15:28:47','存入',500,5501)
   SET @n=@n+@@ERROR
   INSERT INTO [TradeInfo]([CardNo],[TradeDate],[TradeType],[TradeMoney],[SpareMoney]) 
      VALUES('1010357612121134','2009/11/3  13:37:24','支取',2000,3501)
   SET @n=@n+@@ERROR
   INSERT INTO [TradeInfo]([CardNo],[TradeDate],[TradeType],[TradeMoney],[SpareMoney]) 
      VALUES('1010357612345678','2009/11/3  13:37:24','存入',2000,2100)
   SET @n=@n+@@ERROR
   INSERT INTO [TradeInfo]([CardNo],[TradeDate],[TradeType],[TradeMoney],[SpareMoney]) 
      VALUES('1010357612121134','2009/11/3  14:23:10','支取',2000,1501)
   SET @n=@n+@@ERROR
   INSERT INTO [TradeInfo]([CardNo],[TradeDate],[TradeType],[TradeMoney],[SpareMoney]) 
      VALUES('1010357612345678','2009/11/3  14:23:10','存入',2000,4100)
   SET @n=@n+@@ERROR
   INSERT INTO [TradeInfo]([CardNo],[TradeDate],[TradeType],[TradeMoney],[SpareMoney]) 
      VALUES('1010357612345678','2009/11/3  14:23:24','存入',2000,6100)
   SET @n=@n+@@ERROR

   IF(@n = 0)
      BEGIN
         COMMIT TRANSACTION
      END
   ELSE
      BEGIN
         ROLLBACK TRANSACTION
      END
GO
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末湿镀,一起剝皮案震驚了整個濱河市谬莹,隨后出現(xiàn)的幾起案子掷邦,更是在濱河造成了極大的恐慌,老刑警劉巖亚情,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杀赢,死亡現(xiàn)場離奇詭異命斧,居然都是意外死亡莽红,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門稀余,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悦冀,“玉大人,你說我怎么就攤上這事睛琳『畜。” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵师骗,是天一觀的道長历等。 經(jīng)常有香客問我,道長辟癌,這世上最難降的妖魔是什么寒屯? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮黍少,結果婚禮上寡夹,老公的妹妹穿的比我還像新娘。我一直安慰自己仍侥,他們只是感情好要出,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著农渊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上砸紊,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天传于,我揣著相機與錄音,去河邊找鬼醉顽。 笑死沼溜,一個胖子當著我的面吹牛,可吹牛的內容都是我干的游添。 我是一名探鬼主播系草,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼唆涝!你這毒婦竟也來了找都?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤廊酣,失蹤者是張志新(化名)和其女友劉穎能耻,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亡驰,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡晓猛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了凡辱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戒职。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖透乾,靈堂內的尸體忽然破棺而出帕涌,到底是詐尸還是另有隱情,我是刑警寧澤续徽,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布蚓曼,位于F島的核電站,受9級特大地震影響钦扭,放射性物質發(fā)生泄漏纫版。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一客情、第九天 我趴在偏房一處隱蔽的房頂上張望其弊。 院中可真熱鬧,春花似錦膀斋、人聲如沸梭伐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糊识。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赂苗,已是汗流浹背愉耙。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拌滋,地道東北人朴沿。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像败砂,于是被迫代替她去往敵國和親赌渣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內容