创建优化的mysql数据库

时间:2016-12-18 05:02:15

标签: mysql database

我是mysql数据库的新手,

我正在为我的家建立一个基于arduino的温度和湿度传感器,到目前为止我已经成功读取温度和湿度并上传到mysql数据库,现在我想在我的sql数据库中创建最终表。我认为在进行更深入的潜水之前应该对表格进行优化。

因此,根据我的理解,我将使用以下查询创建一个表:

CREATE TABLE tempHumidLog
(
     id INT NOT NULL AUTO_INCREMENT,
     timeStamp TIMESTAMP NOT NULL PRIMARY KEY,
     out_temperature int(11) NOT NULL,
     out_humidity int(11) NOT NULL,
     out_light_sensor int(11) NOT NULL,
     rain_sensor int(11) NOT NULL,
     drawing_room_temperature int(11) NOT NULL,
     drawing_room_humidity int(11) NOT NULL,
     bed_Room_temperature int(11) NOT NULL,
     bed_room_humidity int(11) NOT NULL,
     kitchen_temperature int(11) NOT NULL,
     kitchen_humidity int(11) NOT NULL,

)

来自rain_sensor和out_light_sensor的数据永远不会低于0,可以假设温度永远不会低于-50且湿度始终为正。

基于我在制作上表时是否正确?实际上,我不确定在一些数据已被打孔后我们是否可以在稍后阶段更改表格的数据类型。

1 个答案:

答案 0 :(得分:0)

首先,让我们首先根据正确的术语调整您的问题。您提供的不是查询,而是命令。只有在向数据库提出问题时,才应使用查询一词。

其次,除了以下几点外,您的表格内容似乎没问题:

  1. 目前尚不清楚为什么你需要这个ID(我无法想象你会问一个问题的情况 - 即发出 查询 使用此字段),

  2. 您没有定义任何索引,这意味着无论何时您想要检索数据,都会进行全表扫描。

  3. 要正确完成您的表格定义,请评估您要针对此表格提出哪些问题,并根据此评估添加一些索引。

    根据列的数据类型的更改,一旦表包含数据,您确实可能会遇到执行它的困难。不过,执行简单的命令可以很容易地解决这个问题:

    1. 创建一个新表(带有临时名称),其中列将具有新的(正确的)数据类型,

    2. 使用如下命令将旧表的内容复制到新表中:

      INSERT INTO NewTable ([list of fields to receive the values]) SELECT ([list of fields to be copied]) FROM OldTable ;

      [注意:您可能需要进行一些投射,具体取决于要更改的类型]

    3. 删除旧表,

    4. 将新表重命名为旧名称。

相关问题