第1关:创建db_ebank数据库
drop database IF EXISTS db_ebank;
/********** Begin **********/
create database db_ebank;
/********** End **********/
show databases;
第2关:创建数据表并设置约束
1.任务要求
在 db_ebank 数据库中创建相应8个数据表,并设置约束实施数据完整性控制,主键外键建立表间关联。
2.表结构
tb_personal
tb_company
tb_customer
tb_bankoutlets
tb_machine
tb_cardInfo
tb_deposit
tb_tradeInfo
这一关主啵敲了一下午 头歌各种报错 直接上代码
头歌有复制限制的可以去看主啵主页的置顶文章 解除方法很简单 只需几秒钟
3.代码
drop database IF EXISTS db_ebank;
CREATE DATABASE `db_ebank` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
use db_ebank;
SET FOREIGN_KEY_CHECKS = 0;
/********** Begin **********/
DROP TABLE IF EXISTS `tb_bankoutlets`;
create table tb_bankoutlets(
bankID int primary key,
bankName varchar(50) NOT NULL,
address varchar(255) NOT NULL,
moneyReserve double,
createTime datetime,
status enum('1','2','3')
);
DROP TABLE IF EXISTS `tb_cardinfo`;
create table tb_cardinfo(
cardID char(19)primary key,
customerID int NOT NULL,
customerType tinyint NOT NULL,
curID varchar(10) NOT NULL DEFAULT 'RMB',
savingID int NOT NULL,
openDate datetime NOT NULL,
openMoney decimal(20,2) NOT NULL,
balance decimal(20,2) NOT NULL,
password char(6) NOT NULL DEFAULT '888888',
isReportLoss tinyint NOT NULL DEFAULT 0,
isLogout tinyint NOT NULL DEFAULT 0,
isFrozen tinyint NOT NULL DEFAULT 0,
frozenMoney decimal(20,2),
bankID int NOT NULL,
type enum('借记卡','信用卡')
);
DROP TABLE IF EXISTS `tb_company`;
create table tb_company(
companyID int primary key,
customerID int NOT NULL,
creditCode char(18),
legalPerson varchar(50),
legalPersonCard char(18),
Vip tinyint NOT NULL DEFAULT 0,
nature varchar(150),
registeredCapital decimal(20,2),
registeredDate datetime,
address varchar(255) NOT NULL,
createDate datetime,
customerName varchar(100) NOT NULL,
telephone varchar(15) NOT NULL,
isLogout tinyint DEFAULT 0,
remark varchar(255)
);
DROP TABLE IF EXISTS `tb_customer`;
create table tb_customer(
customerID int primary key,
type enum('1','2') NOT NULL,
relationID int NOT NULL
);
DROP TABLE IF EXISTS `tb_deposit`;
create table tb_deposit(
savingID int primary key,
savingName varchar(20) NOT NULL,
descript varchar(50)
);
DROP TABLE IF EXISTS `tb_machine`;
create table tb_machine(
machine char(8) primary key,
bankID int
);
DROP TABLE IF EXISTS `tb_personal`;
create table tb_personal(
personalID int primary key,
customerID int NOT NULL,
customerName varchar(50)NOT NULL,
PID char(18)NOT NULL,
Vip tinyint NOT NULL DEFAULT 0,
sex tinyint NOT NULL,
birthDate datetime NOT NULL,
educationalLevel varchar(30),
marriage varchar(15),
email varchar(50),
telephone varchar(11),
address varchar(50),
isLogout tinyint NOT NULL DEFAULT 0,
createDate datetime,
remark varchar(255)
);
DROP TABLE IF EXISTS `tb_tradeinfo`;
create table tb_tradeinfo(
tradeDate datetime NOT NULL,
tradeType enum('存入','支出') NOT NULL,
cardID char(19) NOT NULL,
tradeMoney decimal(20,2) NOT NULL,
machine char(8) NOT NULL,
remark varchar(255),
primary key (tradeDate,cardID)
);
alter table tb_company add constraint fk_customerID foreign key(customerID) references tb_customer(customerID);
alter table tb_tradeinfo add constraint fk_cardID foreign key(cardID)references tb_cardinfo(cardID);
alter table tb_tradeinfo add constraint fk_machine foreign key(machine) references tb_machine(machine);
alter table tb_machine add constraint fk_bankID foreign key(bankID) references tb_bankoutlets(bankID);
alter table tb_cardinfo add constraint fk_cardinfo_customerID foreign key (customerID) references tb_customer(customerID);
alter table tb_cardinfo add constraint fk_savingID foreign key(savingID) references tb_deposit(savingID);
alter table tb_cardinfo add constraint fk_cardinfo_bankID foreign key (bankID) references tb_bankoutlets(bankID);
/********** End **********/
SET FOREIGN_KEY_CHECKS = 1;
show tables;
第3关:tb_personal 表中新增个人账户张韵文
1.增删查改
插入
// 指定字段
INSERT INTO 表名(字段名1,字段名2,…) VALUES(值1,值2,…);
// 不指定字段,则添加的值的顺序应和字段在表中的顺序完全一致。
INSERT INTO 表名 VALUES(值11,值2,…);
删除
DELETE FROM 表名 [WHERE 条件表达式]; // where可以让删除更细粒化
查看
SELECT 字段名1,字段名2,… FROM 表名;
修改(更新)
UPDATE 表名 SET 字段名1=值1,[字段名2=值2,…] [ WHERE 条件表达式 ];
2.代码
use db_ebank;
/********** Begin **********/
insert into tb_personal values (13,57896561, '张韵文','350781199403072206', 0,1, '1994-03-07 06:29:39', '小学', '未婚', '17632541845@qq.com', '17632541845', '四川省成都市武侯区', 0, '2023-01-13 03:35:30', NULL);
/********** End **********/
select * from tb_personal where customerName = '张韵文';
第4关:tb_company 表中新增企业账户好又来生物有限公司
use db_ebank;
/********** Begin **********/
insert into tb_company values(10,90123655, '9123456151014123', '赵其', '635254215648427785', 0,'生物/医学', 10000000.00, '2021-01-27', '河北石家庄', '2022-02-15', '好友来生物有限公司', '18896854523', 0, NULL);
/********** End **********/
select * from tb_company where customerName = '好友来生物有限公司';
第5关:在 tb_cardInfo 表中对应新增两个新账户的开卡记录
use db_ebank;
/********** Begin **********/
insert into tb_cardinfo values ('6227 2666 6767 9884', 57896561, 1, 'RMB', 2, '2008-08-16', 10, 10000, '050050', 0, 0, 0, 0, 1, '储蓄卡');
insert into tb_cardinfo values ('6227 2666 6767 9501', 90123655, 1, 'RMB', 3, '2022-02-15', 10000, 200000,'888888', 0, 0, 0, 0, 14, '储蓄卡');
/********** End **********/
select * from tb_cardinfo where cardID in ('6227 2666 6767 9884','6227 2666 6767 9501');
第6关:张韵文取款2000元,tb_trdeInfo 表中新增存取储蓄业务记录,并且张韵文用户银行卡对应减少2000
use db_ebank;
/********** Begin **********/
insert into tb_tradeinfo(tradeType,cardID,tradeMoney,machine,remark)values('支出','6227 2666 6767 9884','2000.00','22021435',NULL);
update tb_cardinfo set balance='6000.00' where cardID='6227 2666 6767 9884';
/********** End **********/
select tradeType,cardID,tradeMoney,machine,remark from tb_tradeinfo where cardID = '6227 2666 6767 9884';
select * from tb_cardinfo where cardID = '6227 2666 6767 9884';
第7关:好又来生物有限公司要注销其在怡贝银行账户,tb_company 表中删除该企业账户记录
这里需要在第2行加一句delete代码 加了之后就不会报错
use db_ebank;
DELETE FROM tb_company WHERE companyID=10;
INSERT INTO `tb_company` VALUES (10,90123655, '9123456151014123', '赵其', '635254215648427785',0, '生物/医学', 10000000.00, '2021-01-27', '河北石家庄', '2022-02-15', '好友来生物有限公司', '18896854523', 0, NULL);
/********** Begin **********/
delete from tb_company where tb_company.companyID=10;
/********** End **********/
select * from tb_company;
第8关:备份并导出db_ebank数据库
1.数据库的导入导出
导出
mysqldump -u用户名 -p密码 数据库名 [表名] > 导出文件名
导入
mysql -u用户名 -p密码 数据库名 < 导出文件名
在实训开始前需要点击测评按钮初始化数据库,然后在命令行完成数据库的备份和导出,最后点击测评。
2.代码
第9关:删除db_ebank数据库
/********** Begin **********/
drop database db_ebank;
/********** End **********/
show databases;
第10关:恢复导入db_ebank数据库
实训开始之前先重置命令行(右上角“工具”按钮中)
然后完成这三行代码即可
/data/workspace/myshixun/step1/common/db_bank.sql