当前位置:首页 » 数据仓库 » 数据库不定字段
扩展阅读
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查询出库名,表名

然后用存储过程循环遍历查询出结果