一、概要
作为《银行信贷管理系统》项目开发组的程序员,按要求完成:
数据库的创建;
数据表的创建;
数据的操作。
二、实施步骤和内容
《银行信贷管理系统》的E-R图如图2.10 所示,逻辑数据模型、物理数据模型如图2.11和图2.12所示。数据表字段名定义见表2.6。按以下设计完成数据库创建、数据表创建和数据操作任务:
三、代码
-- 创建数据表客户基本信息表: T_customer_info
CREATE TABLE IF NOT EXISTS T_customer_info(
Cust_id CHAR(10) NOT NULL COMMENT '客户编号,主键',
Cust_name VARCHAR(60) NOT NULL COMMENT '客户名称',
Legal_name VARCHAR(10) NOT NULL COMMENT '法人代表',
Reg_address VARCHAR(60) NOT NULL COMMENT '注册地址',
Post_code CHAR(6) NOT NULL COMMENT '邮政编码',
PRIMARY KEY(Cust_id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
-- 创建数据表客户经理信息表: T_agency_info
CREATE TABLE IF NOT EXISTS T_agency_info(
Agency_id CHAR(3) NOT NULL COMMENT '客户经理编号,主键',
Agency_name VARCHAR(10) NOT NULL COMMENT '客户经理姓名',
Agency_level CHAR(2) NOT NULL COMMENT '客户经理级别',
Agency_phone VARCHAR(20) NOT NULL COMMENT '工作电话',
PRIMARY KEY(Agency_id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
-- 创建数据表质押信息台帐: T_impawn_info
CREATE TABLE IF NOT EXISTS T_impawn_info(
Borrow_id CHAR(12) NOT NULL COMMENT '借据号',
Cust_id CHAR(10) NOT NULL COMMENT '客户编号',
Agency_id CHAR(3) NOT NULL COMMENT '客户经理编号',
Pawn_goods_name VARCHAR(60) NOT NULL COMMENT '押物名称',
Pawn_goods_num INT NOT NULL COMMENT '押物数量',
Contract_date DATETIME NOT NULL COMMENT '签订日期',
PRIMARY KEY (Borrow_id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
-- 创建数据表之间的关系
ALTER TABLE T_impawn_info ADD CONSTRAINT FOREIGN KEY(Agency_id)
REFERENCES T_agency_info(Agency_id)
ALTER TABLE T_impawn_info ADD CONSTRAINT FOREIGN KEY(Cust_id)
REFERENCES T_customer_info(Cust_id)
-- 要求邮政编码6位数字组成
ALTER TABLE t_customer_info ADD CONSTRAINT
CHECK(Post_code LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]')
-- 向三个表中插入测试数据
INSERT INTO t_customer_info VALUES('A001B00101','xx公司','张三','长沙市雨花区xx路999号','410001')
INSERT INTO t_agency_info VALUES('001','李四','01','13154689521')
INSERT INTO T_impawn_info VALUES('202210260001','A001B00101','001','笔记本电脑',20,'2022-10-26')
-- 查询"XX公司"质押的物品及数量
SELECT a.Cust_name,b.Pawn_goods_name,b.Pawn_goods_num FROM t_customer_info AS a
INNER JOIN T_impawn_info AS b
ON a.Cust_id = b.Cust_id WHERE a.Cust_name='xx公司'
-- 统计每个客户经理所经手的质押业务数,查询结果集包含字段:
SELECT a.Agency_name AS '客户经理姓名',COUNT(b.Agency_id) AS '质押业务数' FROM t_agency_info AS a INNER JOIN
T_impawn_info AS b ON a.Agency_id=b.Agency_id
GROUP BY a.Agency_name,b.Cust_id
-- 创建存储过程:P_customer_info,删除指定客户编号的客户基本信息 同时也删除该客户在质押信息台帐中的所有记录
DELIMITER $$
CREATE PROCEDURE P_customer_info(IN CustId CHAR(10))
BEGIN
DELETE FROM T_impawn_info WHERE Cust_id=CustId;
DELETE FROM t_customer_info WHERE Cust_id=CustId;
END $$
DELIMITER ;
CALL P_customer_info('A001B00101')