发表于: 2022-07-27 09:16:06

1 572


 今天完成的事情:

 0.更改字段类型:

  根据辅导师兄的建议结合网络搜索,确认MySQL中的Bigint字段类型在有符号的情况下与JavaLong类型取值范围一致,会被mybatis映射为Long类型。

  故此将ID、Create_At、Update_At、Join_Time这四个字段的类型修改为Bigint类型。


 1.学习MySQL 8.0 Command的使用:

  首先在Navicat上通过连接测试验证了数据库服务处于开启状态,没有出现昨天电脑重启后数据库服务处于关闭的情况。

  根据网络搜索学习MySQL命令行的使用,比如查看数据库 show databases; 、连接数据库 use database_name; 、查看表结构 DESCRIBE table_name; 等操作。成功在命令行内看到了昨天创建的表的结构。


 2.学习SQL插入语句的使用并向表中插入数据:
  根据网络资料学习在MySQL Command中使用SQL语句,通过MySQL创建新数据库和新表用于学习和实践。
    SQL语句[创建数据库]:
    CREATE DATABASE database_name;

    SQL语句[删除数据库]: 
    DROP DATEBASE database_name;
 
    SQL语句[创建数据表]:
    CREATE TABLE IF NOT EXISTS `table_name`(
      `column_name1` column_type,
      `column_name2` column_type,
      `column_name3` column_type,
      PRIMARY KEY (`column_name1`)
    )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

  注意使用反单引号。
 
    SQL语句[删除数据表]
    DROP TABLE table_name;
 
    SQL语句[向表插入数据]:
    INSERT INTO table_name
    (field1, field 2, field 3…fieldN)
    VALUES
    (value1, value2, value3…valueN);

  本质一句话,便于阅读而拆分成许多行,MySQL也支持此操作,直到分号才会判定语句结束。
  至此认为“向表中插入数据”相关的语句知识已完备,并在自建的新表中实践确认自己的理解无误。开始尝试向昨天创建的业务表`student_info`插入信息。
  考虑到对创建时间等需要精确到秒的字段手动输入数据过于繁琐,根据网络资料决定调用函数now()来获取系统当前时间。
  插入语句以上文为例,表名、列名以及值进行对应更替即可插入成功后进入navicat查看,发现表确实新增了一行数据,值与插入语句输入的值相同无误。

 
 3.学习
SQL查询语句的使用并以姓名查询刚刚插入的记录:
    SQL语句[查询表中数据]:
    SELECT column_name1, column_name2 FROM table_name [WHERE Clause][LIMIT N][OFFSET M] ;
  从table_name表中查询column_name1等列的值,后面的[]是子句,可以根据实际情况进行添加。比如where可以指定查询条件,limit n是查询n条记录,limit m, n 是从第m条记录开始查询n条记录,offset m是跳过m条记录再查询。
  当使用符号 * 代替列名时,会从表中检索所有记录。
  任务要求是根据姓名查询插入的记录,我判断可以使用where子句。WHERE子句可用的运算符有=、<>(不等于,部分SQL版本可以写做!=)、>、<、>=、<=、BETWEEN、LIKE、IN、AND、OR等。
  因为在MySQL CommandNavicat之间来回切换的操作略显繁琐,根据网络资料,开始在Navicat内通过命令行界面操作SQL语句。
  在Navicat的数据库命令行界面输入SELECT * FROM student_info WHERE name = '朱春雨'; 完成按照姓名查询之前插入的记录。

 


 4.学习SQL修改语句并以此将立愿(Failure_Penalty)内的数据修改:
  任务要求是NavicatSQL各使用一次进行修改,使用Navicat修改只要更改对应字段框内文本再保存即可,故此着重于使用SQL语句修改。


    SQL语句[修改表中数据]:
    UPDATE table_name SET field1 = newvalue1, field2 = newvalue2 [WHERE Clause];
  可以更新一或多个字段,也可以追加WHERE子句指定更新条件。
  值得注意的是,UPDATE在使用时最好追加WHERE子句,因为不使用WHERE限制就进行更新的话会影响到field1列内的所有数据。
  在Navicat的数据库命令行界面输入 UPDATE student_info SET Failure_Penalty = '老大最帅' WHERE Name = '朱春雨';
  系统提示完成更新,之后用 SELECT * FROM student_info; 语句确认立愿(Failure_Penalty)字段的数据记录确实已经被修改为“老大最帅”。返回Navicat界面查看成果。

  第一条是直接使用Navicat修改,第二条使用SQL语句修改。

 
 5.将表导出为SQL文件,将此条数据删除再用备份的SQL文件恢复
  根据网络资料完成了表的导出,在Navicat的具体表名中右键单击然后选择“转储SQL文件”->“结构和数据”即可以SQL格式导出表。
  在Navicat的表界面内,右键点击字段最前端的小三角形,选择菜单的“删除记录”即可将之前添加的一条数据记录删除。

  退出表界面,在Navicat的“表”上右键,点击右键菜单中的“运行SQL文件”,选择之前导出的SQL文件,完成后要点击右键菜单中的“刷新”。再打开表后发现数据记录还原了。

  “导出”->“删除”->“导入”->“恢复”的四个步骤都没有问题,开始尝试用MySQL删除数据记录再导入SQL文件恢复数据。


    SQL语句[删除表中数据]:
    DELETE FROM table_name [WHERE Clause];
  注意,如果没有WHERE子句进行限定,表中所有的数据记录都会被DELETE删除!
  在Navicat的数据库命令行界面输入 DELETE FROM student_info WHERE Name = '朱春雨'; 。
  系统提示完成更新,之后用 SELECT * FROM student_info; 语句确认只删除了一条记录。


  重复之前导入
SQL文件的步骤,完成数据的恢复。

 明天计划的事情:
  (1)学习索引相关的知识,给姓名字段建立索引,思考哪些字段还需要索引。
  (2)插入10条数据比较有索引和无索引时
SQL语句执行的效率。
  (3)深度思考
MySQL相关的问题。
  (4)下载安装
JAVA7
  (5)下载安装
Maven3
  (6)下载安装
IDEA

 遇到的问题:
  (1)在学习
SQL语法时尝试创建测试用的表时有报错“ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''runoob_tbl'' at line 1”,经过网上查阅得知此处错误是语法错误。

  在MySQL中对于反单引号“`”和单引号“’”有严格区分,列名应使用反单引号,键值才是用单引号。把表名的单引号改为反单引号后创建成功。


  (2)向表中插入数据时报错
ERROR 1136 (21S01): Column count doesn't match value count at row 1,经由网络搜索确认此错误的成因是“字段名与值不匹配”,检查后发现是自己的值比字段少了一个。

  回看数据来源发现是作为数据原型的回帖本身就有一个关于“毕业院校”的字段内容没有填写,更换数据原型为内容完备的回帖后此问题解决,数据成功插入。

 收获:
  (1)数据库
SQL语句中对于反单引号“`”和单引号“’”的使用要慎重,适应不当的话在创建表阶段和插入数据阶段都会有频繁报错。
  (2)搜索网络资料的多方对比尤其重要,关于
MySQLSQL语句使用,我找到的第一种教程没有提及UPDATE不使用WHERE子句进行限制时的危险性,对于网络资料以要以审视态度多方对比,而不是一股脑接收。
  (3)学习数据库基础增删查改方面
SQL语句的使用,大致了解如何使用Navicat,掌握了对数据库表文件以SQL格式导出导入的操作。


返回列表 返回列表
评论

    分享到