當前位置:首頁 » 數據倉庫 » 資料庫不定欄位
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫不定欄位

發布時間: 2022-11-21 23:29:26

A. 資料庫設計:欄位數目不確定的話,怎麼設計表

試卷編號 (唯一主鍵,可順次上加)
試卷科目 (譬如語文,數學)
上邊兩個也可以設置為聯合主鍵
就是
數學 1
數學 2
語文 1
語文 2
語文 3

然後題目類型(如1 選擇題 2填空題 3問答題 等等)
題的編號 (比如選擇題有10條,1,2,3,……10)
具體題目(比如某某題,1+1=__?)
答案(這個就不用說了吧)

然後建議
試卷科目新建個表
id 科目
科目就對應數學語文這些東西,然後在上邊表裡,試卷科目里,你可以直接填id,比如語文的編號是1,試卷科目,你就不用寫語文了,直接寫個1就行

題目類型也建議採用試卷科目這個辦法來建個新表

歡迎追問

B. 怎麼在資料庫里自動生成一個欄位

ID設置為int類型
然後把標識該為「是」

C. oracle中已經知道一個具體值,如何根據該值查詢出含有該值的表名和列名

如何查詢oracle一個資料庫中包含有某個特定值的所有表及欄位名
-我這里說的欄位名跟列 是同一個意思

select column_name,
table_name,data_type ,data_length,data_precision,data_scale from user_tab_columns where column_name='欄位名';
--根據欄位名查出相關的表名出來。記錄下來
--然後對查出來的表進行查詢,找到含這內容欄位的表
select * from 表名 where 欄位名='xiaoming'

D. 資料庫中的一個欄位的數據大小不定如何設置欄位的長度查詢最快又節省空間

varchar是可變字元,varchar(2000)即可,不會浪費空間。
樓主為何要將歷史記錄存在access中呢?若您後台有sql server支持,建議您歷史記錄也存放在sql中,access的性能及對sql的語言支持都遠不如 MSSQL。

【VARCHAR限制了字元串的長度不能超過255個字元?】---哦,忘記了,這個可能access有此限制,sql可以的,最大varchar(8000)。
varchar(100)中的100並不多餘,在未存儲數據時用於佔位,系統會用於預先計劃分配空間,但直到真正存儲數據時才確實分配存儲空間。

個人看法:
1.佔用空間上varchar(100)和varchar(2000)沒什麼區別。
2.但varchar(100)會效率較低,因為按你說的該欄位會5-2000,若大於100,則您每次固定寫入100會需要多次寫操作,眾所周知寫操作是比較耗時的。
3.查詢性能方面,跟您這兒怎麼存沒太大關系,重要的還是常見的資料庫查詢優化,如索引、條件等等

對這個問題,我引用一下CSDN上的說法:

一。數據行結構
char(n): 系統分配n個位元組給此欄位,不管欄位實際長度(後邊用空格補齊)

varchar(n): 假設表中有M個varchar(或者nvarchar)類型的欄位
先分配兩個位元組(用來表示M)
再分配2*M個位元組(表示各變長行的偏移)
此後欄位值有多長,就分配多長

二。varchar(n)一定比char(n)節省空間么?
不一定。
我見過這樣的設計: varchar(3)
就算此欄位為空,也還是比char(3)多用一個位元組。

還有這樣的設計: user_ip varchar(16).
對於這種數據長度變化不大的欄位,用varchar只能浪費空間

結論: varchar適用於數據值長度不太短,且長度變化較大的欄位

三。char(n)一定比varchar(n)速度快么?
不一定
計算varchar的偏移是會花去一些cpu時間,但性能瓶頸不在此,在io.
db的io單位是數據頁(8192位元組)(一頁存有多個數據行,數據行不能跨頁。當然image,text等例外). 因此一頁中行越多,性能越好

另外,關於char和varchar的性能比較,

請參見該實驗:
http://www.yuanma.org/data/2006/0730/article_1266.htm

再補充一下:

[轉帖]char、nchar、varchar、nvarchar,對比那個好?

資料庫定義到char類型的欄位時,不知道大家是否會猶豫一下,到底選char、nchar、varchar、nvarchar、
text、ntext中哪一種呢?結果很可能是兩種,一種是節儉人士的選擇:最好是用定長的,感覺比變長能省些空
間,而且處理起來會快些,無法定長只好選用定長,並且將長度設置盡可能地小;另一種是則是覺得無所謂,
盡量用可變類型的,長度盡量放大些。

鑒於現在硬體像蘿卜一樣便宜的大好形勢,糾纏這樣的小問題實在是沒多大意義,不過如果不弄清它,
總覺得對不起勞累過度的CPU和硬碟

下面開始了(以下說明只針對SqlServer有效):

1、當使用非unicode時慎用以下這種查詢:
select f from t where f = N'xx'

原因:無法利用到索引,因為資料庫會將f先轉換到unicode再和N'xx'比較

2、char 和相同長度的varchar處理速度差不多(後面還有說明)

3、varchar的長度不會影響處理速度!!!(看後面解釋)

4、索引中列總長度最多支持總為900位元組,所以長度大於900的varchar、char和大於450的nvarchar,nchar
將無法創建索引

5、text、ntext上是無法創建索引的

6、O/R Mapping中對應實體的屬性類型一般是以string居多,用char[]的非常少,所以如果按mapping的
合理性來說,可變長度的類型更加吻合

7、一般基礎資料表中的name在實際查詢中基本上全部是使用like '%xx%'這種方式,而這種方式是無法利用
索引的,所以如果對於此種欄位,索引建了也白建

8、其它一些像remark的欄位則是根本不需要查詢的,所以不需要索引

9、varchar的存放和string是一樣原理的,即length {block}這種方式,所以varchar的長度和它實際佔用
空間是無關的

10、對於固定長度的欄位,是需要額外空間來存放NULL標識的,所以如果一個char欄位中出現非常多的NULL,
那麼很不幸,你的佔用空間比沒有NULL的大(但這個大並不是大太多,因為NULL標識是用bit存放的,
可是如果你一行中只有你一個NULL需要標識,那麼你就白白浪費1byte空間了,罪過罪過!),這時候,
你可以使用特殊標識來存放,如:'NV'

11、同上,所以對於這種NULL查詢,索引是無法生效的,假如你使用了NULL標識替代的話,那麼恭喜你,
你可以利用到索引了

12、char和varchar的比較成本是一樣的,現在關鍵就看它們的索引查找的成本了,因為查找策略都一樣,
因此應該比較誰佔用空間小。在存放相同數量的字元情況下,如果數量小,那麼char佔用長度是小於varchar
的,但如果數量稍大,則varchar完全可能小於char,而且要看實際填充數值的充實度,比如說varchar(3)
和char(3),那麼理論上應該是char快了,但如果是char(10)和varchar(10),充實度只有30%的情況下,
理論上就應該是varchar快了。因為varchar需要額外空間存放塊長度,所以只要length(1-fillfactor)
大於這個存放空間(好像是2位元組),那麼它就會比相同長度的char快了。

13、nvarchar比varchar要慢上一些,而且對於非unicode字元它會佔用雙倍的空間,那麼這么一種類型
推出來是為什麼呢?對,就是為了國際化,對於unicode類型的數據,排序規則對它們是不起作用的,
而非unicode字元在處理不同語言的數據時,必須指定排序規則才能正常工作,所以n類型就這么一點好處。

總結陳詞:
1、如果數據量非常大,又能100%確定長度且保存只是ansi字元,那麼char
2、能確定長度又不一定是ansi字元或者,那麼用nchar;
3、不確定長度,要查詢且希望利用索引的話,用nvarchar類型吧,將它們設到400;
4、不查詢的話沒什麼好說的,用nvarchar(4000)
5、性格豪爽的可以只用3和4,偶爾用用1,畢竟這是一種額外說明,等於告訴別人說,我一定需要長度
為X位的數據

E. 如何查找資料庫中某一欄位的某一內容

一個表一個表,一個欄位一個欄位的去查,比如:select
*
from
表1
where
欄位1=值
把表導入到sql文件裡面,然後打開這個文件,用"查找"的功能找這個值。但是如果表和資料庫很大的話,恐怕也不容易導出和打開這個sql文件。

F. 資料庫中表中某列的個數不確定怎麼辦

哎,感覺你沒怎麼理解關系表的一些基礎知識,
如果A表表示班級表,B表表示學生表,那麼二者是一對多的關系,一個班級表的一行記錄,可以對應B表的很多條(有多少個學生,就多少條記錄啊),這樣B表每一條,就是一個學生,可以有學生姓名的欄位,有學生學號的欄位,有學生年齡的欄位,等等。。。怎麼會存不下呢??

G. 資料庫修改欄位

修改access資料庫列欄位屬性不需用sql語句,直接在access中修改。修改方法:找到要修改的表a,右擊設計視圖,找到要修改的欄位,在下面常規-允許空字元串欄將「否」改選為「是」即可。

H. 資料庫表欄位值是長*寬*高,長寬高不固定怎麼分別取出長寬高

with ta as
(select '120*80*50' as sname from al)
select substr(sname, 1, instr(sname, '*', 1) - 1) as 長,
substr(sname,
instr(sname, '*', 1) + 1,
length(sname) - instr(sname, '*', -1)) as 寬,
substr(sname, instr(sname, '*', -1) + 1) as 高
from ta

I. 如何查詢mysql資料庫中多個表(不固定)今天新增的數據條數,表中都有createtime欄位

不得不說你我有緣,我也是遇到和你這個90%相似的需求,結果發現你這個沒答案

我是冥思苦想,研究了1天終於研究出來怎麼搞了

你可以參考我的帖子【MesaSTears】MySQL存儲過程循環查詢資料庫


我的需求是查詢某個庫所有表某年某月的新增數據

先從information_schema.TABLES查詢出庫名,表名

然後用存儲過程循環遍歷查詢出結果