簡體   English   中英

SQL:插入和查詢組織數據列表的最佳方法是什么?

[英]SQL: What is the best way to insert and query a list of organized data?

這是一個相當簡單的用例,我認為必須一個“標准”解決方案,但我找不到任何示例。

我對SQL還是很陌生(剛剛開始學習),所以也許顯而易見。

假設我有三個數據數組:

seconds: [0,  1,  2,  3,  4,  5, 6]
height:  [0, 10, 20, 25, 20, 10, 0]
speed:   [10,10,  5,  0, -5,-10, 0]  

我將獲得更多的高度和速度數組,但它們都具有相同的秒/時間戳。

問題:

  • 創建一個或多個表來存儲此數據的最佳方法是什么?
    • 我目前的理解是,我必須創建一個表,其名為“ 0”,“ 1”,“ 2”,“ 3”等,這是正確的嗎?
  • 使用SQL命令實際存儲此數據的最佳方法是什么?
  • 檢索此數據的最佳方法是什么,以使一切都與我輸入的順序相同?

再次,我認為這個問題應該很簡單,這很愚蠢,但是如果在SQL中這樣的事情不容易實現,我想知道它是否是我應該使用的數據庫。

謝謝

感謝黏合劑的答案

我從Excel之類的角度考慮問題,您永遠不想以列格式向下存儲數據。 但這現在意義非凡,因為您具有sql的功能來生成查詢,無論您希望查詢是什么。 您可以按照他的答案所建議的那樣放置數據,並且可以輕松查詢所需的數據。

萬分感謝!

您不必創建具有0、1、2、3等列的表。不過,我不建議有6列。 盡管這可能會在您遇到的情況下起作用,但這只是不良的架構設計。 而不是將整個試用版存儲在一行中,每一行實際上應該只存儲一個秒。 這樣,將來增加更多的秒數是一個相當簡單的過程

遵循此原理,這是一個粗略的方案

HeightSpeedEntry
_______________
TrialId   PK  int
Seconds   PK  int
Height    PK  int
Speed     PK  int

要創建此表:

CREATE TABLE HeightSpeedEntry(
TrialId int,
Seconds int,
Height int,
Speed int,
CONSTRAINT pk_trial_seconds PRIMARY KEY (TrialId, Seconds));

逐行插入數據

INSERT INTO HeightSpeedEntry(TrialId, Seconds, Height, Speed)
VALUES (1, 0, 0, 10)

INSERT INTO HeightSpeedEntry(TrialId, Seconds, Height, Speed)
VALUES (1, 1, 10, 10)

檢索一組記錄

SELECT * FROM HeightSpeedEntry
WHERE TrialId = 1
ORDER BY Seconds

如何以非手動方式將數組實際傳遞給insert語句取決於數組的來源。

只是為了澄清一下,我們在這里所做的就是從中轉換您的記錄:

seconds: [0,  1,  2,  3,  4,  5, 6]
height:  [0, 10, 20, 25, 20, 10, 0]
speed:   [10,10,  5,  0, -5,-10, 0] 

對此:

HeightSpeedEntry: [1, 0, 0,  10 ]
HeightSpeedEntry: [1, 1, 10, 10 ]
HeightSpeedEntry: [1, 2, 20, 5  ]
HeightSpeedEntry: [1, 3, 25, 0  ]
HeightSpeedEntry: [1, 4, 20, -5 ]
HeightSpeedEntry: [1, 5, 10, -10]
HeightSpeedEntry: [1, 6, 0,  0  ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM