发表于: 2018-03-09 23:33:12
1 517
今日完成
1.参考修真院线下报名贴(学习资料-线下报名-北京报名)中报名的格式,整理出业务模型
参考师兄的日报,发现之前做错了,现在重新理解业务模型,业务模型是建立软件系统时所依据的现实世界模型或者问题域模型,是现实世界或者问题域中规律的真实体现和反映。
2.下载并安装及配置Mysql 5.5
3.下载navicat,或者是Hedisql,连接Mysql,别问我navicat收费怎么办。
学习navicat查询数据表:
1、查询数据内容,可以双击打开数据库表,“ctr+f”搜索数据。
2、如果查询数据表名,在右侧中部(工具栏下面)有一个搜索小图标,输入表名即可。
3、SQL语句查询,选中工具栏中的“查询”图标,点击下面的“新建查询”,打开查询窗口,在查询窗口中输入需要执行的SQL查询语句,格式跟SQL查询一样,点击执行,就会得到字段。
4.创建出来报名贴的业务表,并将表结构粘贴到日报中,对比之前师兄的表结构设计,看看有什么差别
创建报名表
sql语句格式是:
Create table table_name (id int(10) not null auto_increment,name varchar(50) not null,qq varchar(50) not null,type varchar(50) not null,primary key(id));
5.使用navicat设计mysql数据库,数据库的每一个表中都要有三个基本的字段,ID(自增Long),create_at,update_at(所有的时间都用Long)。
之前听师兄说Long类型就是bigint
6.从报名贴中找一条最近报名的师弟,用Mysql插入这条数据,并能够根据姓名查出来这条记录
用MySQL插入数据格式:
7.分别用Navciat和Sql语句去将本条数据记录的报名宣言改成老大最帅
navicat:直接在宣言部分更改数据,然后保存
sql语句:
8.将表导出成Sql文件,并使用navciat和Sql分别尝试删除此条数据,并用之前备份的Sql恢复。
在navicat中右键点击表,选择转储sql文件即可。删除:右键点击删除表
sql删除表:
9.给姓名建索引,思考一下还应该给哪些数据建索引
QQ,修真类型,毕业院校,学号可以建立索引
10.插入10条数据,查看有索引和无索引的情况下,Sql语句执行的效率
有索引:
无索引:
无索引时,sql语句的执行效率较快。
11.查看深度思考中Mysql相关的一些问题,将自己思考的结果写在日报中,并查阅之前师兄的日报,看看是否有合自己思路接近或者是完全不一致的地方。
5.为什么DB的设计中要使用Long来替换掉Date类型?
1. 因为DATE有固定的格式,不同的地区有不同的时间表示方法,而且外国有夏令时与冬令时之分,非常麻烦
2. 使用BigInt也能较为清晰的表示时间
3. 大多数时候我们并不关心某一个时间点,而是发生一个动作后,需要的时间,BigInt非常方便做减法而不用转化
6.自增ID有什么坏处?什么样的场景下不使用自增ID?
坏处:
(1)不存在连续性
(2)数据重复了,自增不会处理和提示
(3)在面对对象时,不能保证完整性
(4)分库的时候ID就不唯一了
什么场景下不适用自增ID:
(1)自增id的作用是唯一地标识表中的某一条记录,如果有其他能唯一标识该行数据的列,就不用设置自增id了。
(2)在做分布式数据库的时候,要求同步自增id就会出现严重的问题。
7.什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?
什么是DB的索引
索引是对数据库表中一个或多个列的值进行排序的结构。
一个索引是存储的表中一个特定列的值数据结构。索引是在表的列上创建。所以,索引包含一个表中列的值,并且这些值存储在一个数据结构中。请记住记住这一点:索引是一种数据结构 。
多大的数据量下建索引会有性能的差别
十万级别?
什么样的情况下该对字段建索引
主键,外键,where中的字段,order by ,group by
8.唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。
唯一索引和普通索引的区别是什么
- 普通索引
最基本的索引类型,没有唯一性之类的限制。普通索引可以通过以下几种方式创建:
创建索引,例如CREATE INDEX <索引的名字> ON tablename (列的列表);
修改表,例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);
创建表的时候指定索引,例如CREATE TABLE tablename ( [...], INDEX [索引的名字] (列的列表) );
- 唯一索引(UNIQUE索引)
唯一索引是不允许其中任何两行具有相同索引值的索引。
当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。例如,如果在 employee 表中职员的姓 (lname) 上创建了唯一索引,则任何两个员工都不能同姓。对某个列建立UNIQUE索引后,插入新纪录时,数据库管理系统会自动检查新纪录在该列上是否取了重复值,在CREATE TABLE 命令中的UNIQE约束将隐式创建UNIQUE索引。
创建唯一索引的几种方式:
创建索引,例如CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表);
修改表,例如ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表); ;
创建表的时候指定索引,例如CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (列的列表) );
9.如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?
不需要,若插入的数据与已有的数据重复,MySQL会报错使得插入失败。
9.如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?
不需要,若插入的数据与已有的数据重复,MySQL会报错使得插入失败。
10.CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?
CreateAT在数据创建的时候赋值,UpdateAt在每次更新数据的时候赋值;
是否应该开放给外部调用的接口?
不应该开放,这两项分别是数据创建和修改时录入数据库的时间,不需要进行修改
11.修真类型应该是直接存储Varchar,还是应该存储int?
由于修真类型只有有限的几种,可以用特定的数字代表某个类型,因此可以用int以节省空间。
13.怎么进行分页数据的查询,如何判断是否有下一页?
MySQL数据库实现分页比较简单,提供了 LIMIT函数。一般只需要直接写到sql语句后面就行了。
LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两个参数, 第一个参数指定返回的第一行在所有数据中的位置,从0开始(注意不是1),第二个参数指定最多返回行数。例如:
select * from table WHERE … LIMIT 10; #返回前10行
select * from table WHERE … LIMIT 0,10; #返回前10行
select * from table WHERE … LIMIT 10,20; #返回第11-30行数据
14.为什么不可以用Select * from table?
select * 语句会取出表中的所有字段,当数据量大的时候,这样会造成资源的浪费。
12.下载Java 7,并配置环境变量,百度搜索一下JDK和JRE的区别,并将结论用自己的话写在日报中。
JDK:开发环境和运行环境
JRE:运行环境
13.下载Maven3,并配置好环境变量。
14.下载Eclipse或者是IDEA,配置好Maven。IDEA不用配置Maven,Eclipse也分自带或者外部,推荐使用外部Maven。
下载的IDEA
15.创建一个新的maven项目
16.在src/main/java下随便创建一个java文件,clean,install.查看本地的.m2下是否成功看到有Jar包。
把命令行切换到Maven项目的根目录,然后执行命令行命令:mvn clean install
明日计划
重新复习步骤17
遇到的问题
1,自增ID,为什么删了一条数据后,id不能连续
2,批量添加数据的方法
收获
1重新复习了任务一
2入学流程
评论