发表于: 2022-07-26 09:31:09
1 552
今日完成:
1.分析并设计业务模型:
了解设计业务模型的作用,学习了ER图以及类图在设计业务模型时的作用,自己用ER图画出业务模型中涉及的对象以及彼此之间的关系。
业务流程为“报名者报名——>审核者审核——报名者入学上课”。
业务模型中作为对象的有【报名者】、【审核者】、【录取情况】、【学院课程】。
其中【报名者】与【审核者】多对一,与【录取情况】一对一,与【学院课程】多对一。【审核者】与【录取情况】一对多。
2.完成MySQL的安装:
期间因为搜索出的教程中示例版本号与实际不符导致没有修改安装路径,卸载后重新安装,将版本号也作为关键词搜索教程,成功修改路径完成安装。
3.完成Navicat的安装:
下载官网最新版无法完成注册,最后根据搜索建议选择Navicat Premium 16.0.11版本完成安装与注册,与数据库建立连接。
4.了解数据库中字段的数据类型:
(1)日期和时间数据类型:
Date:日期,3字节,格式为2022-07-20。
Time:时间,3字节,格式为16:45:09。
Datetime:日期时间,8字节格式为2022-07-20 16:45:09。
Timestamp:自动存储记录修改的时间,4字节。
Year:年份,1字节。
(2)整值数据类型之整形:
Tinyint:1字节,范围(-128~127)。
Smallint:2字节,范围(-32768~32767)。
Mediumint:3字节,范围(-8388608~8388607)。
Int:4字节,范围(-2147483648~2147483647)。
Bigint:8字节,范围(+-9.22*10的18次方)。
皆可加上无符号关键字unsigned,如unsigned tinyinr的范围是0~255。
(3)整值数据类型之浮点型:
Float(a,b): 4字节,单精度浮点型,a为总长数,b为小数位长度。比如设置float(5, 3),插入数据“123.4567”时,查询此字段只能得到“99.999”。
Double(a,b): 8字节,双精度浮点型,a为总长数,b为小数位长度。
Decimal(a,b): 存储为字符串的浮点数,每九位十进制存储四个字节。1、2一字节,3、4一字节,5、6一字节,7、8、9一字节。
关于三者的区别:Float单精度32位二进制,精确到小数点后6位。Double双精度64位二进制,精确到小数点后15位。
Double占用内存大于Float而且运算速度慢于Float,同样存在精度损失问题。
Decimal采用128位二进制,精度更高但因为存储方式所占空间较小,常用于金融运算。
(4)字符串类型:
Char(n): 固定长度,最多255个字符。n是字符的长度而不是字节的长度,比如在使用“UTF-8”字符集的时候插入n个中文字符,那么字节长度是n*3,这时的char最多只能插入85个中文字符。
Varchar(n): 可变长度,最多65535个字符。n的意义同char一致。
Tinytext: 可变长度,最多255个字符。
Text: 可变长度,最多65535个字符。
Mediumtext: 可变长度,最多2的24次方-1个字符。
Longtext: 可变长度,最多2的32次方-1个字符。
关于char、varchar、text之间的区别:char不管实际字符长度有多长都会占用n个字符的空间,varchar会占用实际字符长度+1的空间且限定实际字符长度+1<n,char的索引效率和存储效率都高于varchar。
而varchar和text的区别在于varchar需要花费额外的1到3个字节存储长度,text没有设置最大长度而没有此特性。
5.在Navicat中创建报名帖的业务表:
主要使用Navicat创建,对应SQL语句如下。
CREATE DATABASE `firstdatebase` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';
CREATE TABLE `firstdatebase`.`Untitled`(
`Name` varchar(25) NOT NULL COMMENT '姓名',
`QQ` char(10) NOT NULL COMMENT 'QQ号',
`Job_Type` varchar(25) NOT NULL COMMENT '修真类型',
`Join_Time` date NOT NULL COMMENT '入学时间',
`College` varchar(64) NOT NULL COMMENT '毕业院校',
`Student_ID` int NOT NULL COMMENT '线上ID',
`Daily_Link` varchar(255) NOT NULL COMMENT '日报链接',
`Failure_Penalty` text NOT NULL COMMENT '立愿',
`Mentor` varchar(25) NOT NULL COMMENT '辅导师兄',
`Know_Platform` varchar(55) NOT NULL COMMENT '从何处知晓IT修真'
);
QQ号长度固定所以采用char类型,入学时间因为只需要精确到年月日所以采用date类型而非datetime。
之后根据任务要求在业务表中添加ID、Create_At、Update_At这三个字段,对应SQL语句如下。
ALTER TABLE `firstdatebase`.`student_info`
ADD COLUMN `ID` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '学院ID' FIRST,
ADD COLUMN `Create_At` datetime NOT NULL COMMENT '创建时间' AFTER `ID`,
ADD COLUMN `Update_At` datetime NOT NULL COMMENT '修改时间' AFTER `Create_At`,
ADD PRIMARY KEY (`ID`);
要求ID采取自增,在Navicat中只有设为主键的int类型才能做到。
原本打算让Update_At使用Timestamp类型,调查后发现此类型是作为计数器使用的,遂放弃。
遇到的问题:
(1)在用navicat创建表时因为其他事而将电脑关机,事后重启电脑再用navicat连接数据库时报错“2002-can‘t connect to server on localhost(10061)”,经过网络搜索后确认是自己的电脑在关机后关闭了数据库服务。网络搜索得知问题根源后继续搜索解决方案,在“控制面板-本地服务”中找到mySQL进行数据库启动,解决navicat上述报错。此问题解决。
(2)任务要求对使用ID、Create_At、Update_At这三个字段使用Long类型且所有时间都是用Long类型。在网上搜索相关关键词后发现前列的都是“MySQL的数据类型”,没有关于Long的单独介绍,点进网页后又发现里面没有介绍Long类型,navicat内也没有此类型的选项。
明日计划:
(1)尝试脱离navicat使用mySQL向表中插入数据。
(2)尝试在mySQL通过姓名查询新添加的数据。
(3)分别尝试使用mySQL和navicat修改表中数据。
(4)将表导出成sql文件,分别尝试使用mySQL和navicat删除此数据
(5)将sql文件备份,并以此恢复被删除的数据。
(6)学习索引相关的知识,尝试建立索引。
收获:
(1)善用搜索引擎,能在官方文档找到解答最好。从个人博客或其他途径获悉的解答以及知识最好多方比对避免学习到他人的错漏。
(2)对于知识最好记录下来,一则加深印象,二则可以在忘记的时候及时查看。
(3)程序的事前分析与设计很重要,比如本次的表,提前分析需要哪些字段以及字段类型可以避免建表时的反复修改和前后矛盾。
评论