发表于: 2016-12-04 16:26:14
2 2001
今天完成的事情:完成了任务 1 的 9 到 16 题。
9.给姓名建索引,思考一下还应该给哪些数据建索引
# 给报名表的“姓名”字段增加索引
CREATE INDEX registration_name_index on t_registration(name);
# 还须要创建索引的字段
# 给报名表的“线上学号”增加唯一索引(不可以运行多次,会重复创建索引)
ALTER TABLE t_registration ADD UNIQUE(jnshu_stu_no);
# 给报名表的“预计入学时间”增加索引
CREATE INDEX expect_admission_date_index ON t_registration(expect_admission_date);
# 给缴费记录表的“线上学号”增加索引(因为要作为表连接字段)
CREATE INDEX jnshu_stu_no_index ON t_payment_record(jnshu_stu_no);
10.插入10条数据,查看有索引和无索引的情况下,Sql语句执行的效率
# 准备 10 条测试数据(从测试结果上来看,效果不是很明显,所以自己通过复制粘贴制造了 5380 条数据测试,因为篇幅原因就不在这里写出来了,看了看后面的任务,后续可以在程序中创建测试数据进行效率的比较)
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('测试数据学生1',1,UNIX_TIMESTAMP('2016-12-05 00:00:00'),'测试数据大学1','1001','123456789','http://www.jnshu.com/#/daily/100001',
'测试数据入学誓言1','测试数据推荐人1',1,'测试数据审核人1',0,0,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW())),
('测试数据学生2',1,UNIX_TIMESTAMP('2016-12-06 00:00:00'),'测试数据大学2','1002','123456790','http://www.jnshu.com/#/daily/100002',
'测试数据入学誓言2','测试数据推荐人2',1,'测试数据审核人2',0,0,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW())),
('测试数据学生3',2,UNIX_TIMESTAMP('2016-12-07 00:00:00'),'测试数据大学3','1003','123456791','http://www.jnshu.com/#/daily/100003',
'测试数据入学誓言3','测试数据推荐人3',1,'测试数据审核人3',0,0,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW())),
('测试数据学生4',2,UNIX_TIMESTAMP('2016-12-08 00:00:00'),'测试数据大学4','1004','123456792','http://www.jnshu.com/#/daily/100004',
'测试数据入学誓言4','测试数据推荐人4',1,'测试数据审核人4',0,0,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW())),
('测试数据学生5',3,UNIX_TIMESTAMP('2016-12-09 00:00:00'),'测试数据大学5','1005','123456793','http://www.jnshu.com/#/daily/100005',
'测试数据入学誓言5','测试数据推荐人5',1,'测试数据审核人5',0,0,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW())),
('测试数据学生6',3,UNIX_TIMESTAMP('2016-12-10 00:00:00'),'测试数据大学6','1006','123456794','http://www.jnshu.com/#/daily/100006',
'测试数据入学誓言6','测试数据推荐人6',1,'测试数据审核人6',0,0,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW())),
('测试数据学生7',4,UNIX_TIMESTAMP('2016-12-11 00:00:00'),'测试数据大学7','1007','123456795','http://www.jnshu.com/#/daily/100007',
'测试数据入学誓言7','测试数据推荐人7',1,'测试数据审核人7',0,0,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW())),
('测试数据学生8',4,UNIX_TIMESTAMP('2016-12-12 00:00:00'),'测试数据大学8','1008','123456796','http://www.jnshu.com/#/daily/100008',
'测试数据入学誓言8','测试数据推荐人8',1,'测试数据审核人8',0,0,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW())),
('测试数据学生9',5,UNIX_TIMESTAMP('2016-12-13 00:00:00'),'测试数据大学9','1009','123456797','http://www.jnshu.com/#/daily/100009',
'测试数据入学誓言9','测试数据推荐人9',1,'测试数据审核人9',0,0,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW())),
('测试数据学生10',5,UNIX_TIMESTAMP('2016-12-14 00:00:00'),'测试数据大学10','1010','123456798','http://www.jnshu.com/#/daily/100010',
'测试数据入学誓言10','测试数据推荐人10',1,'测试数据审核人10',0,0,UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW()));
# 以下 SQL 用于测试,不是问题的回答
SHOW INDEX FROM t_registration;
TRUNCATE TABLE t_registration;
# 删除索引
# DROP INDEX jnshu_stu_no ON t_registration; (为制造测试数据方便,不增加唯一索引)
DROP INDEX registration_name_index ON t_registration;
DROP INDEX expect_admission_date_index ON t_registration;
# 创建索引
# 给报名表的“姓名”字段增加索引
CREATE INDEX registration_name_index on t_registration(name);
# ALTER TABLE t_registration ADD UNIQUE(jnshu_stu_no);
CREATE INDEX expect_admission_date_index ON t_registration(expect_admission_date);
# 结论(自己测试没有明显结论,下面是查询了相关资料得到的结论):
创建索引虽然减少了查询的时间,但在数据添加、删除、修改的时候,系统须要维护索引,增加了开销。
11.查看深度思考中Mysql相关的一些问题,将自己思考的结果写在日报中,并查阅之前师兄的日报,看看是否有合自己思路接近或者是完全不一致的地方。
(1)是否有必要创建外键索引
在网上和平时的工作中,有听到这样一种说法是:“不建议使用外键”。这次在网上搜索了一下,使用外键的好处和坏处分别如下:
好处:1、保证了数据的完整性;
不好的地方:1、给维护造成了一定困难;2、不方便将来数据迁移
得到的结论是:不建议使用外键,虽然不能由数据库的特性保证数据的完整性,但是可以通过程序(设计严密的逻辑和设置事务)来保证事务的完整性,也就是尽量不直接操作数据库,而通过程序的方式来实现对数据库的增删改,同样可以保证数据的完整性。
12.下载Java 7,并配置环境变量,百度搜索一下JDK和JRE的区别,并将结论用自己的话写在日报中。
我做的事情:
(1)自己的电脑上安装了 Java8 ,看看自己的笔记,没有记载怎么安装的,应该是安装很简单,到官网上下载了 dmg 文件,直接运行,下一步下一步就好了;
(2)去官网下载 Java 7u79-b15 这个版本特别慢。所以还是继续使用原来安装的 Java8 。等下载好了再研究如何同时安装 Java7 和 Java8 和切换的问题。
13.下载Maven3,并配置好环境变量。
把以前安装 Maven3 的笔记粘贴过来,偷点懒,请见谅。
------ 笔记开始 ------
我的操作步骤:
(1)下载 .zip 后缀的文件就可以了 apache-maven-3.3.9-bin.zip
(2)解压这个压缩包
(3)到 /Library 文件夹下创建文件夹 Maven3,执行如下命令
cd /Library/
sudo mkdir -p Maven3
说明:前面加上 sudo,sudo是 linux 系统管理指令,是允许系统管理员让普通用户执行一些或者全部的 root 命令的一个工具。
(4)将解压好的 Maven3 文件夹下的内容移动到上一步创建的 /Library/Maven3 文件夹中,执行命令
mv ~/Downloads/apache-maven-3.3.9/* /Library/Maven3/
这时,系统会提示你权限不够( mv: rename /Users/liwei/Downloads/apache-maven-3.3.9/bin to Maven3/bin: Permission denied)
我们可以修改权限,命令如下:
sudo chmod 777 /Library/Maven3/
然后再执行
mv ~/Downloads/apache-maven-3.3.9/* /Library/Maven3/
就可以成功移动了。
(5)编辑宿主目录下的 .bash_profile 文件
vi ~/.bash_profile
注意:在 Mac 下,修改环境变量的文件和其它 Linux 不同
(6)添加下列两行代码,之后保存并退出 vi 编辑器
export M2_HOME=/Library/Maven3
export PATH=$PATH:$M2_HOME/bin
(7)重新编译 .bash_profile 文件以使得刚刚的设置生效
source ~/.bash_profile
(8)新打开一个终端窗口
通过下面两个命令
echo $M3_HOME
echo $PATH
可查看刚设置的环境变量。
(9)输入 mvn -v 或者 man -version 测试 Maven 是否安装成功。
参考资料:
(1)简书上的介绍,非常简洁
http://www.jianshu.com/p/191685a33786
(2)CSDN 上的介绍,扩展介绍了打印环境变量的知识
http://blog.csdn.net/f_zongjian/article/details/24144803
参考知识:
轻松搞定Intelli Idea Maven配置 - 博客频道 - CSDN.NET http://blog.csdn.net/hupitao/article/details/51694115
------ 笔记结束 ------
14.下载Eclipse或者是IDEA,配置好Maven。IDEA不用配置Maven,Eclipse也分自带或者外部,推荐使用外部Maven。
关于这个任务的回答:
工作最早使用 MyEclipse ,后来觉得慢,就使用 STS(Spring Tool Suite,其实就是 eclipse 的一个版本,主要应用于创建 Spring 的项目,可以帮助你添加 Spring 的 XML 配置文件的 schema ,还集成了 Maven 、Git 插件,觉得比 MyEclipse 轻量,而且颜值高,后来就用它了),再后来接触了 IntelliJ IDEA 以后,就抛弃了前面两个工具。一直都使用 IntelliJ IDEA 了。现在也会向别人推荐 IntelliJ IDEA 这个工具。
15.创建一个新的maven项目
16.在src/main/java下随便创建一个java文件,clean,install.查看本地的.m2下是否成功看到有Jar包。
关于这个任务的回答:15 和 16 这部分内容,我写过博客记录,这里还是偷点懒,就不再重复写了。
图文详解 IntelliJ IDEA 15 创建普通 Java Web 项目
地址:http://blog.csdn.net/lw_power/article/details/51113946
图文详解 IntelliJ IDEA 15 创建 Maven 构建的 Java Web 项目(使用 Jetty 容器)
地址:http://blog.csdn.net/lw_power/article/details/51142325
明天计划的事情:完成任务 1 剩下的部分
遇到的问题:创建 MySQL 数据库索引和约束的相关语法,平时使用比较少,所以语法基本没有记住,都是通过网络上查找和平时记的笔记记下来的。
收获:今天复习了 MySQL 数据库索引和约束的相关语法。
评论