Oracle建表空间、用户、标、约束

--创建表空间
CREATE  TABLESPACE  tablespace_bank
DATAFILE 'e:\bank\bank.dbf' SIZE 10M AUTOEXTEND  ON ;

--创建用户
create user userBank identified by userBank default tablespace tablespace_bank;

--用户授权
grant connect,resource to userBank;



drop table tradeInfo;
drop table userInfo;
drop table cardInfo;
drop table Deposit;

CREATE TABLE userInfo  --用户信息表
(
  customerID number NOT NULL,
  customerName varCHAR2(8) NOT NULL,
  PID varCHAR(18) NOT NULL,
  telephone varCHAR(20) NOT NULL,
  address VARCHAR(50)
);


CREATE TABLE cardInfo  --银行卡信息表
(
  cardID  CHAR(19) NOT NULL,
  curID  VARCHAR(10) NOT NULL,
  savingID number NOT NULL,
  openDate DATE NOT NULL,
  openMoney number NOT NULL,
  balance  number NOT NULL,
  pass CHAR(6) NOT NULL,
  IsReportLoss NUMBER(1)  NOT NULL,
  customerID NUMBER NOT NULL
);


CREATE TABLE tradeInfo  --交易信息表
(
  tradeDate  DATE NOT NULL,
  tradeType  CHAR(4) NOT NULL,
  cardID  CHAR(19) NOT NULL,
  tradeMoney  NUMBER NOT NULL,
  remark  LONG   
);

CREATE TABLE Deposit  --存款类型表
(
  savingID  NUMBER NOT NULL,
  savingName  VARCHAR(20) NOT NULL,
  descrip VARCHAR(50)
);



/*$$$$$$$$$$$$$加约束$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/
ALTER TABLE Deposit
  ADD CONSTRAINT  PK_savingID   PRIMARY KEY(savingID);

/* userInfo表的约束
customerID  顾客编号 主键
customerName  开户名  必填
PID  身份证号  必填,只能是18位或15位,身份证号唯一约束
telephone  联系电话  必填,格式为xxxx-xxxxxxxx或手机号11位
address  居住地址  可选输入
*/

--ALTER TABLE userInfo
--drop CONSTRAINT CK_telephone 

ALTER TABLE userInfo
  ADD CONSTRAINT PK_customerID PRIMARY KEY(customerID);

ALTER TABLE userInfo
  ADD CONSTRAINT CK_PID CHECK( length(PID)=18 or length(PID)=15 );

ALTER TABLE userInfo
  ADD CONSTRAINT UQ_PID UNIQUE(PID);   

ALTER TABLE userInfo
ADD CONSTRAINT CK_telephone CHECK(regexp_like(telephone,'(^\d{3,4}-\d{8}$)|(^\d{11}$)'));

/*cardInfo表的约束
cardID  卡号  必填,主健 , 银行的卡号规则和电话号码一样,一般前8位代表特殊含义,
        如某总行某支行等。假定该行要求其营业厅的卡号格式为:1010 3576 xxxx xxx开始
curType  货币  必填,默认为RMB
savingType  存款种类  活期/定活两便/定期
openDate  开户日期  必填,默认为系统当前日期
openMoney  开户金额  必填,不低于1元
balance  余额  必填,不低于1元,否则将销户
pass  密码  必填,6位数字,默认为6个8
IsReportLoss  是否挂失  必填,0/1值,默认为0未挂失
customerID  顾客编号  必填,表示该卡对应的顾客编号,一位顾客可以办理多张卡
*/


ALTER TABLE cardInfo     
  ADD CONSTRAINT  PK_cardID  PRIMARY KEY(cardID);
ALTER TABLE cardInfo     
  ADD CONSTRAINT  CK_cardID  CHECK(regexp_LIKE(cardID,'1010 3576 \d{4} \d{4}'));
ALTER TABLE cardInfo     
  MODIFY (curID  VARCHAR(10) DEFAULT 'RMB');
      --CONSTRAINT  CK_savingType  CHECK(savingType IN ('活期','定活两便','定期')),
ALTER TABLE cardInfo     
  MODIFY (openDate  DATE DEFAULT sysdate);
ALTER TABLE cardInfo     
  ADD CONSTRAINT  CK_openMoney  CHECK(openMoney>=1);
ALTER TABLE cardInfo     
  ADD CONSTRAINT  CK_balance  CHECK(balance>=1);
ALTER TABLE cardInfo     
  ADD CONSTRAINT  CK_pass  CHECK(regexp_LIKE(pass,'^[0-9]{6}$'));
ALTER TABLE cardInfo     
  MODIFY (pass  CHAR(6) DEFAULT '888888');
ALTER TABLE cardInfo     
  MODIFY (IsReportLoss  NUMBER(1) DEFAULT 0);
ALTER TABLE cardInfo     
  ADD CONSTRAINT  FK_customerID FOREIGN KEY(customerID) REFERENCES userInfo(customerID);
ALTER TABLE cardInfo     
  ADD CONSTRAINT  FK_savingID  FOREIGN KEY(savingID) REFERENCES deposit(savingID);


/* tradeInfo表的约束
tradeType       必填,只能是存入/支取 
cardID  卡号  必填,外健,可重复索引
tradeMoney  交易金额    必填,大于0
tradeDate   交易日期    必填,默认为系统当前日期
remark  备注  可选输入,其他说明
*/



ALTER TABLE tradeInfo
  ADD CONSTRAINT  CK_tradeType  CHECK(tradeType IN ('存入','支取'));
ALTER TABLE tradeInfo
  ADD CONSTRAINT  FK_cardID  FOREIGN KEY(cardID) REFERENCES cardInfo(cardID);
ALTER TABLE tradeInfo
  ADD CONSTRAINT  CK_tradeMoney  CHECK(tradeMoney>0);
ALTER TABLE tradeInfo
  MODIFY (tradeDate   DATE DEFAULT sysdate);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunywz

~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值