因此,我是一名SQL noobie,我想组织一个结构化的数据库,其中包含SQLite中的元数据和数据。我不确定如何执行此操作,并且我在不同的互联网站点中四处查看,但没有发现任何有用的信息。
基本上,我想要的是这样的东西(以不同的数据收集站为例):
SQL表:
然后以某种方式,当我查询该表并希望查看有关特定站点数据的信息时,我能够提取看起来像这样的数据:
datetime data
1/1/1980 11.6985
1/2/1980 43.6431
1/3/1980 54.9089
1/4/1980 63.1225
1/5/1980 72.4399
1/6/1980 79.1363
1/7/1980 82.2778
1/8/1980 86.0785
1/9/1980 86.8612
1/10/1980 84.3342
1/11/1980 80.4646
1/12/1980 77.1508
1/13/1980 74.827
1/14/1980 73.387
1/15/1980 72.1774
1/16/1980 71.6423
由于我不太了解表层次结构,因此不知道如何执行此操作,但我认为这可能是可能的。任何帮助,将不胜感激!
使用不同的数据收集站
立即指示应使用单独的电台表,并且读数应与电台表相关/关联/参考。
对于台表,您可能会遇到以下问题:-
CREATE TABLE IF NOT EXISTS stations (id INTEGER PRIMARY KEY, station_name TEXT, station_latitude REAL, station_longitude REAL);
这将创建一个包含4列的表(如果尚不存在):
您可以使用:-添加几个电台
INSERT INTO stations (station_name, station_latitude,station_longitude) VALUES("Zebra", 100.7892, 60.789);
INSERT INTO stations (station_name, station_latitude,station_longitude) VALUES("Yankee", 200.2967, 95.234);
您可以使用以下命令显示/返回这些内容:
SELECT * FROM stations
接下来,您可以创建读数表,例如:-
CREATE TABLE IF NOT EXISTS readings(recorded_datetime INTEGER DEFAULT (datetime('now')), data_recorded REAL, station_reference INTEGER);
这将创建一个名为读数的表(如果尚不存在),它将具有3列:-
然后,您可以使用以下命令为Zebra站插入读数:
INSERT INTO readings (data_recorded,station_reference) VALUES(11.6985,1);
由于未提供record_datetime列,因此将使用当前日期时间。
如果:-
INSERT INTO readings VALUES(datetime('1980-01-01 10:40'),11.6985,1);
那么该读数将是1980年1月1日在1:10的位置。
使用:-
INSERT INTO readings VALUES(datetime('1980-01-01 10:40'),13.6985,2);
INSERT INTO readings VALUES(datetime('1966-03-01 10:40'),15.6985,2);
INSERT INTO readings VALUES(datetime('2000-01-01 10:40'),11.6985,2);
将为洋基站(id 2)添加一些读数。
使用SELECT station_reference, recorded_datetime, data_recorded FROM READINGS;
将选择所有列,但是station_reference将是结果中的第一列,例如:
明显的进展是显示包括各个站的数据。为此,将使用JOIN。也就是说,读数表将与台站表合并,其中各个台站详细信息是根据与台站ID匹配的station_refrence值来确定的。
但是,假设我们希望站点信息类似于站点名称(Long = ????-纬度= ????)日期/时间数据,并根据站点名称和日期/时间进行排序。然后可以使用以下内容:
SELECT
stations.station_name ||
'(Long='||station_longitude||' - Lat='||station_latitude||')'
AS stationinfo,
readings.recorded_datetime,
readings.data_recorded
FROM readings
JOIN stations ON readings.station_reference = stations.id
ORDER BY stations.station_name ASC, readings.recorded_datetime
这将导致:-
您可能会(或有些会)争论,但是为什么我不能只用一个表来显示读数,日期时间,站名,站纬度,站经度。
好吧,你可以。但是:-
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句