设计数据库字段类型的不解

数据库中有很多不同类型,数字,字符,日期等等。 到底什么时候使用对应的类型? 全部都用字符串类型不好吗? 什么都可以存很方便。

7个回答

当你想要日期的时候,你就会到数据库里查日期;
当你想要数字的时候,你就会到数据库里查数字;
当你需要字符时,你就会到数据库里查字符的;
这个根据你的项目,什么时候需要什么都知道。
字符串是好啊,可是你获得了字符串后还要转换到其它的类型不麻烦吗。

不同类型的字段,根据业务需求,所要做出调整。
比如数字:你的电话,肯定是数字类型的,如果做了字符串有2个问题;1,是你要转换字符串为数字,2是 字符串占用内存比数字要多。
所以你在选用字段类型方面;不仅需要考虑内存问题,也需要考虑业务需求问题。
业务需求繁多:对各类的字段有些会有不同的要求。比如密码:验证码,订单编号,订单日期等等。所有在设计字段的时候,考虑的因素较多。

1.都有字符串的话,你需要代码里写各种格式的转换 输出,比如不同类型 的比较方式不同,数字大小比较,日期大小比较
2.blob字段 可以存文件

你开心就好
不是不可以
就是存入数据库和从数据库获取后,你可能需要对数据进行操作时
转换数据类型麻烦些,如果只是获取数据后展示,那全用string 也挺方便的

当然可以,你只需要在显示的时候用不同的函数处理把数据还原其对应的格式就行。

全部用字符串有什么坏处, 举一个例子你就明白了。

 DECLARE @t TABLE (
    id NVARCHAR(20),
    balance NVARCHAR(20),
    birthday NVARCHAR(20)
)
INSERT INTO @t(id,balance,birthday)VALUES(N'1',N'110',N'2016-05-01')
INSERT INTO @t(id,balance,birthday)VALUES(N'20',N'120',N'2016-04-21')
INSERT INTO @t(id,balance,birthday)VALUES(N'3',N'30',N'2016-06-01')

--按学号升序排列,字符串排列并不正确
SELECT * FROM @t ORDER BY id
/*
id  balance birthday
1   110 2016-05-01
20  120 2016-04-21
3   30  2016-06-01 
*/
--求balance的总和,由于字符串不能相加,只好先转换
SELECT SUM(CAST(balance AS INT)) AS s FROM @t
/*
s
260 
*/

不同类型的存在,就意味着弥补对方的不足。
int 类型可以用来设置主键,方便自身++等

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐