发表于: 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;


返回列表 返回列表
评论

    分享到