建库、建表、建约束、插入测试数据
--創(chuàng)建建庫(kù)bankDB
CREATE DATABASE bankDB
ON
(
NAME='bankDB_data',
FILENAME='d:\bankDB_data.mdf',
SIZE=3mb,
FILEGROWTH=15%
)
LOG ON
(
NAME= 'bankDB_log',
FILENAME='d:\bankDB_log.ldf',
SIZE=3mb,
FILEGROWTH=15%
)
GO
/*$$$$$$$$$$$$$建表$$$$$$$$$$$$$$$$$$$$$$$$*/
USE bankDB
GO
CREATE TABLE userInfo --用戶(hù)信息表
(
customerID INT IDENTITY(1,1),
customerName CHAR(8) NOT NULL,
PID CHAR(18) NOT NULL,
telephone CHAR(20) NOT NULL,
address VARCHAR(50)
)
GO
CREATE TABLE cardInfo --銀行卡信息表
(
cardID CHAR(19) NOT NULL,
curID VARCHAR(10) NOT NULL,
savingID INT NOT NULL,
openDate DATETIME NOT NULL,
openMoney MONEY NOT NULL,
balance MONEY NOT NULL,
pass CHAR(6) NOT NULL,
IsReportLoss BIT NOT NULL,
customerID INT NOT NULL
)
GO
CREATE TABLE tradeInfo --交易信息表
(
tradeDate DATETIME NOT NULL,
tradeType CHAR(4) NOT NULL,
cardID CHAR(19) NOT NULL,
tradeMoney MONEY NOT NULL,
remark TEXT
)
GO
CREATE TABLE Deposit --存款類(lèi)型表
(
savingID INT IDENTITY(1,1),
savingName VARCHAR(20) NOT NULL,
descrip VARCHAR(50)
)
GO
/*$$$$$$$$$$$$$加約束$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/
ALTER TABLE Deposit
ADD CONSTRAINT PK_savingID PRIMARY KEY(savingID)
GO
/* userInfo表的約束
customerID 顧客編號(hào) 自動(dòng)編號(hào)(標(biāo)識(shí)列),從1開(kāi)始,主鍵
customerName 開(kāi)戶(hù)名 必填
PID 身份證號(hào) 必填,只能是18位或15位,身份證號(hào)唯一約束
telephone 聯(lián)系電話(huà) 必填,格式為xxxx-xxxxxxxx或手機(jī)號(hào)13位
address 居住地址 可選輸入
*/
ALTER TABLE userInfo
ADD CONSTRAINT PK_customerID PRIMARY KEY(customerID),
CONSTRAINT CK_PID CHECK( len(PID)=18 or len(PID)=15 ),
CONSTRAINT UQ_PID UNIQUE(PID),
--CONSTRAINT CK_telephone CHECK( telephone like '[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' or telephone like '[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' or len(telephone)=13 )
CONSTRAINT CK_telephone CHECK( telephone like '[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' or telephone like '[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' or telephone like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' )
GO
/*cardInfo表的約束
cardID 卡號(hào) 必填,主健 , 銀行的卡號(hào)規(guī)則和電話(huà)號(hào)碼一樣,一般前8位代表特殊含義,
如某總行某支行等。假定該行要求其營(yíng)業(yè)廳的卡號(hào)格式為:1010 3576 xxxx xxx開(kāi)始
curType 貨幣 必填,默認(rèn)為RMB
savingType 存款種類(lèi) 活期/定活兩便/定期
openDate 開(kāi)戶(hù)日期 必填,默認(rèn)為系統(tǒng)當(dāng)前日期
openMoney 開(kāi)戶(hù)金額 必填,不低于1元
balance 余額 必填,不低于1元,否則將銷(xiāo)戶(hù)
pass 密碼 必填,6位數(shù)字,默認(rèn)為6個(gè)8
IsReportLoss 是否掛失 必填,是/否值,默認(rèn)為”否”
customerID 顧客編號(hào) 必填,表示該卡對(duì)應(yīng)的顧客編號(hào),一位顧客可以辦理多張卡
*/
ALTER TABLE cardInfo
ADD CONSTRAINT PK_cardID PRIMARY KEY(cardID),
CONSTRAINT CK_cardID CHECK(cardID LIKE '1010 3576 [0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9]'),
CONSTRAINT DF_curID DEFAULT('RMB') FOR curID,
--CONSTRAINT CK_savingType CHECK(savingType IN ('活期','定活兩便','定期')),
CONSTRAINT DF_openDate DEFAULT(getdate()) FOR openDate,
CONSTRAINT CK_openMoney CHECK(openMoney>=1),
CONSTRAINT CK_balance CHECK(balance>=1),
CONSTRAINT CK_pass CHECK(pass LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]'),
CONSTRAINT DF_pass DEFAULT('888888') FOR pass,
CONSTRAINT DF_IsReportLoss DEFAULT(0) FOR IsReportLoss,
CONSTRAINT FK_customerID FOREIGN KEY(customerID) REFERENCES userInfo(customerID),
CONSTRAINT FK_savingID FOREIGN KEY(savingID) REFERENCES deposit(savingID)
GO
/* tradeInfo表的約束
tradeType 必填,只能是存入/支取
cardID 卡號(hào) 必填,外健,可重復(fù)索引
tradeMoney 交易金額 必填,大于0
tradeDate 交易日期 必填,默認(rèn)為系統(tǒng)當(dāng)前日期
remark 備注 可選輸入,其他說(shuō)明
*/
ALTER TABLE tradeInfo
ADD CONSTRAINT CK_tradeType CHECK(tradeType IN ('存入','支取')),
CONSTRAINT FK_cardID FOREIGN KEY(cardID) REFERENCES cardInfo(cardID),
CONSTRAINT CK_tradeMoney CHECK(tradeMoney>0),
CONSTRAINT DF_tradeDATE DEFAULT(getdate()) FOR tradeDate
GO
--存款類(lèi)型
INSERT INTO deposit (savingName,descrip) VALUES ('活期','按存款日結(jié)算利息')
INSERT INTO deposit (savingName,descrip) VALUES ('定期一年','存款期是1年')
INSERT INTO deposit (savingName,descrip) VALUES ('定期二年','存款期是2年')
INSERT INTO deposit (savingName,descrip) VALUES ('定期三年','存款期是3年')
INSERT INTO deposit (savingName) VALUES ('定活兩便')
INSERT INTO deposit (savingName) VALUES ('通知')
INSERT INTO deposit (savingName,descrip) VALUES ('零存整取一年','存款期是1年')
INSERT INTO deposit (savingName,descrip) VALUES ('零存整取二年','存款期是2年')
INSERT INTO deposit (savingName,descrip) VALUES ('零存整取三年','存款期是3年')
INSERT INTO deposit (savingName,descrip) VALUES ('存本取息五年','按月支取利息')
SELECT * FROM DEPOSIT
INSERT INTO userInfo(customerName,PID,telephone,address )
VALUES('張三','123456789012345','010-67898978','北京海淀')
INSERT INTO cardInfo(cardID,savingID,openMoney,balance,customerID)
VALUES('1010 3576 1234 5678',1,1000,1000,1)
INSERT INTO userInfo(customerName,PID,telephone)
VALUES('李四','321245678912345678','0478-44443333')
INSERT INTO cardInfo(cardID,savingID,openMoney,balance,customerID)
VALUES('1010 3576 1212 1134',2,1,1,2)
INSERT INTO userInfo(customerName,PID,telephone)
VALUES('王五','567891234532124670','010-44443333')
INSERT INTO cardInfo(cardID,savingID,openMoney,balance,customerID)
VALUES('1010 3576 1212 1130',2,1,1,3)
INSERT INTO userInfo(customerName,PID,telephone)
VALUES('丁六','567891321242345618','0752-43345543')
INSERT INTO cardInfo(cardID,savingID,openMoney,balance,customerID)
VALUES('1010 3576 1212 1004',2,1,1,4)
SELECT * FROM userInfo
SELECT * FROM cardInfo
GO
/*
張三的卡號(hào)(1010 3576 1234 5678)取款900元,李四的卡號(hào)(1010 3576 1212 1134)存款5000元,要求保存交易記錄,以便客戶(hù)查詢(xún)和銀行業(yè)務(wù)統(tǒng)計(jì)。
說(shuō)明:當(dāng)存錢(qián)或取錢(qián)(如300元)時(shí)候,會(huì)往交易信息表(tradeInfo)中添加一條交易記錄,
同時(shí)應(yīng)更新銀行卡信息表(cardInfo)中的現(xiàn)有余額(如增加或減少300元)
*/
/*--------------交易信息表插入交易記錄--------------------------*/
INSERT INTO tradeInfo(tradeType,cardID,tradeMoney)
VALUES('支取','1010 3576 1234 5678',900)
/*-------------更新銀行卡信息表中的現(xiàn)有余額-------------------*/
UPDATE cardInfo SET balance=balance-900 WHERE cardID='1010 3576 1234 5678'
INSERT INTO tradeInfo(tradeType,cardID,tradeMoney)
VALUES('存入','1010 3576 1212 1130',300)
/*-------------更新銀行卡信息表中的現(xiàn)有余額-------------------*/
UPDATE cardInfo SET balance=balance+300 WHERE cardID='010 3576 1212 1130'
INSERT INTO tradeInfo(tradeType,cardID,tradeMoney)
VALUES('存入','1010 3576 1212 1004',1000)
/*-------------更新銀行卡信息表中的現(xiàn)有余額-------------------*/
UPDATE cardInfo SET balance=balance+1000 WHERE cardID='1010 3576 1212 1004'
INSERT INTO tradeInfo(tradeType,cardID,tradeMoney)
VALUES('支取','1010 3576 1212 1130',1900)
/*-------------更新銀行卡信息表中的現(xiàn)有余額-------------------*/
UPDATE cardInfo SET balance=balance+1900 WHERE cardID='010 3576 1212 1130'
?
/*--------------交易信息表插入交易記錄--------------------------*/
INSERT INTO tradeInfo(tradeType,cardID,tradeMoney)
VALUES('存入','1010 3576 1212 1134',5000)
/*-------------更新銀行卡信息表中的現(xiàn)有余額-------------------*/
UPDATE cardInfo SET balance=balance+5000 WHERE cardID='1010 3576 1212 1134'
GO
/*--------檢查測(cè)試數(shù)據(jù)是否正確---------*/
SELECT * FROM cardInfo
SELECT * FROM tradeInfo
轉(zhuǎn)載于:https://www.cnblogs.com/java-Blog/p/6823917.html
總結(jié)
以上是生活随笔為你收集整理的建库、建表、建约束、插入测试数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: cmake简明使用指南
- 下一篇: 判断checkbox是否选中并改变值