发表于: 2016-12-02 21:45:40
4 1862
今天完成的事情:重新思考了任务1.1
1.参考修真院线下报名贴(学习资料-线下报名-北京报名)中报名的格式,整理出业务模型,确定需要几个对象,每个对象的属性是什么,对象和对象之间的关系是一对一,还是一对多。
业务模型:
1、IT修真院修真类型实体表
属性:id,科目,学费,学制,create_at,update_at。
2、IT修真院学员报名表
属性: id,姓名,修真类型,预计入学时间,毕业院校,线上学号,日报链接,誓言,推荐人,是否完成 7 份日报,审核人,
是否已经入学,是否已经缴费,create_at,update_at。
3、IT修真院学员缴费记录表
属性:id,线上学号,缴纳费用,未缴费用,是否借款,是否优惠,备注,create_at,update_at。
修真类型与学员报名表的关系是一对多;
学员报名表与缴费记录表的关系是一对多。
2.下载并安装及配置Mysql 5.5
(很抱歉,没有严格按照任务来完成,自己另外一台 Windows 电脑拿给我哥哥用了。)
参考资料:http://www.widlabs.com/article/mac-os-x-install-mysql-57-with-tar-gz
说明:这篇文章写得很细致。
介绍的方式:在 mac 系统中安装了 MySQL 5.7 。
安装目录:/usr/local/mysql/
记录几个常用命令:
(1)停止 mysql 服务:sudo support-files/mysql.server stop
(2)启动 mysql 服务:sudo support-files/mysql.server start
(3)重启 mysql 服务:sudo support-files/mysql.server restart
说明:其实就是先关闭,再启动
(4)查看 mysql 服务运行状态:sudo support-files/mysql.server status
3.下载Navcat,或者是Hedisql,连接Mysql,别问我Navcat收费怎么办。
说明:我下载的工具是 Sequel Pro,这款软件使用起来不错。
4.创建出来报名贴的业务表,并将表结构粘贴到日报中,对比之前师兄的表结构设计,看看有什么差别
5.使用Navcat设计mysql数据库,数据库要有三个基本的字段,ID(自增Long),create_at,update_at(所有的时间都用Long)。
# 创建数据库
CREATE DATABASE IF NOT EXISTS db_jnshu DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
# 使当前数据库为新创建的数据库
USE db_jnshu;
# 创建表格 1 :修真类型实体表
DROP TABLE IF EXISTS t_subject;
CREATE TABLE IF NOT EXISTS t_subject(
id tinyint key auto_increment comment '主键',
name varchar(30) not null comment '科目',
tuition int not null comment '学费(单位:元)',
duration smallint not null comment '学制(单位:月)',
create_at bigint not null comment '创建时间',
update_at bigint not null comment '修改时间'
)ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 comment 'IT修真院修真类型表';
# 插入实体数据
INSERT INTO t_subject(name,tuition,duration,create_at,update_at) values
('WEB',11000,3,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW())),
('Java',11000,3,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW())),
('Android',6000,3,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW())),
('iOS',6000,3,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW())),
('PM',4500,3,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW())),
('UI',4500,3,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW())),
('OP',4500,3,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW())),
('QA',4500,3,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW()));
# 查询(将时间戳转换为日期加时间格式化)
SELECT name,tuition,duration,FROM_UNIXTIME(create_at),FROM_UNIXTIME(update_at) FROM t_subject;
# 创建表格 2 :IT修真院学员报名表
DROP TABLE IF EXISTS t_registration;
CREATE TABLE IF NOT EXISTS t_registration(
id int primary key auto_increment comment '主键',
name varchar(30) not null comment '姓名',
jnshu_type tinyint not null comment '修真类型',
expect_admission_date bigint not null comment '预计入学时间',
university varchar(50) default null comment '毕业院校',
jnshu_stu_no int not null unique comment '线上学号',
QQ varchar(15) comment 'QQ 号码',
daily_paper_link varchar(100) not null comment '日报链接',
promise varchar(200) not null comment '誓言',
recommended_person varchar(30) default null comment '推荐人',
finished_seven_dailies tinyint default null comment '是否完成 7 份日报',
checker varchar(30) comment '审核人' ,
if_entrance tinyint comment '是否已经入学:0 未入学,1 已经入学',
pay_status tinyint comment '缴费状态:0 未缴费,1 缴部分学费,2 缴清学费',
create_at bigint not null comment '创建时间',
update_at bigint not null comment '修改时间'
)ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 comment 'IT修真院学员报名表';
# 创建表格 3 :
CREATE TABLE t_payment_record(
id bigint primary key auto_increment comment '主键',
jnshu_stu_no int not null comment '线上学号',
amount double not null comment '金额',
non_pay_amount double not null comment '未缴费用',
if_loan tinyint comment '是否贷款',
remark varchar(200) comment '备注',
create_at bigint not null comment '创建时间',
update_at bigint not null comment '修改时间'
)ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 comment 'IT修真院学员缴费记录表';
6.从报名贴中找一条最近报名的师弟,用Mysql插入这条数据,并能够根据姓名查出来这条记录
# 插入测试数据
INSERT INTO t_registration(name,jnshu_type,expect_admission_date,university,
jnshu_stu_no,QQ,daily_paper_link,promise,recommended_person,
finished_seven_dailies,checker,if_entrance,pay_status,create_at,update_at)
values('郜超',5,UNIX_TIMESTAMP('2016-11-06 00:00:00'),'江苏科技大学','467','592150879','http://www.jnshu.com/#/daily/9441','活到老,学到老'
,'内-C2-136 余良余粮鱼粮',1,'葡萄藤的审核人',0,0,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW()));
7.分别用Navcat和Sql语句去将本条数据记录的报名宣言改成老大最帅
update t_registration
set promise = '老大最帅',
update_at = UNIX_TIMESTAMP(now())
where jnshu_stu_no=467;
8.将表导出成Sql文件,并使用navcat和Sql分别尝试删除此条数据,并用之前备份的Sql恢复。
(1)导出数据库文件
首先确认 MySQL 服务顺利启动,进入 MySQL 安装目录下的 bin 文件夹下,执行以下命令(输入密码以后回车),可以将 db_jnshu 数据库中的数据表导出成 sql 文件。
输出位置在宿主目录下。
./mysqldump -uroot -p db_jnshu > ~/db_jnshu_20161202.sql
(2)删除数据
DELETE FROM t_registration where jnshu_stu_no = 467;
(3)恢复数据
进入 MySQL 安装目录下的 bin 文件夹下,执行
./mysql -u root -p
输入密码以后回车,进入 MySQL 命令行客户端,输入
use db_jnshu
再输入 source ~/db_jnshu_20161202.sql
就可以将刚才删除的数据恢复。
明天计划的事情:继续完成任务 1 剩下的任务。
遇到的问题:设计表字段的时候比较纠结,包括命名(查有道云翻译解决的),字段类型的选取(像布尔类型的就使用 tinyint 了)
收获:
1、MySQL 中一些关于日期时间的函数。
# 当前日期
SELECT CURRENT_DATE()
# 当前时间
SELECT CURRENT_TIME()
# 当前日期加时间
SELECT CURRENT_TIMESTAMP()
# 当前时间戳
SELECT UNIX_TIMESTAMP(NOW());
# 查询(将时间戳转换为日期加时间格式化)
SELECT name,tuition,duration,FROM_UNIXTIME(create_at),FROM_UNIXTIME(update_at) FROM t_subject;
评论