日度归档:2019年7月13日

mssql sqlserver 创建主键 keyId int primary key 同 primary key(keyId)区分说明


摘要:
下文讲述创建主键时,两种不同的语法说明,如下所示:
实验环境:sql server 2008 R2


在建表时,我们常常看见
keyId int primary key 和 primary key (keyId)这两种写法,这两种写法有以下两种不同:
1.写法不同

2.keyId int primary key 只可创建一个列作为主键
primary key (keyId) 可创建组合主键,例: primary key (keyId,info)

mssql sqlserverr 表设计要注意啥


摘要:
下文讲述sqlserver中表设计注意事项,如下所示:
实验环境:sql server 2008 R2



1.每张数据表都需设置数据主键

数据主键的功能可以标识此行数据的唯一性,当我们检索单条数据时,使用数据主键可以加快查询 修改 删除数据的速度,使系统效率大大提升。


2.主键使用自增列还是GUID

通常建议使用自增列,因为使用自增列可以避免数据在插入的时候出现 数据移动,避免由于数据移动而导致数据页碎片的产生,
使用GUID占用的硬盘空间比主键要大,这也是一个需考虑的问题。


3.数据主键–避免包含业务功能

因为主键如果包含业务功能,那么当我们修改主键时,数据就会发生移动(消耗系统资源),可能会导致空间碎片。


4.数据存储–枚举类型尽量使用tinyint类型

因为tinyint类型是一个数值型,在order by 上具有很高的效率,在存储上也占用较少的空间。


5.金额数值存储时–使用数据类型简介


金额存储禁止使用float和double类型

金额存储建议使用decimal类型


6.时间数值存储时–使用数据类型简介

6.1 timestamp
例:国际化的大项目建议使用 timestamp类型,因为此字段的值会随着电脑时区的修改而发生变化
但此数据类型的缺点为最大只支持到2038年,最小支持为1970年
6.2 datetime
此数据类型存储是一个具体的时间值,数据范围为 1000-1-1 ~ 9999-12-31 ,此数据类型主要的缺点是不带时区
6.3 smalldatetime
此数据类型存储是一个具体的时间值,此数据类型主要的缺点是不带时区 ,数据范围比datetime小
6.5 bigint
此数据类型是将带存储的日期值转换为一个整型,然后存储至数据库中,此数据类型也不带时区,需开发人员自己维护。

7.大文件的存储

数据库存储大量的图片、视频、大文件。
因为这些大文件存储在数据库中,会加大数据库的负担,加大数据库备份的难度,并且这些大文件仅仅只用到了数据存储一项功能,
所以遇到大文件的存储,我们需单独选择文件系统进行存储,并且将文件系统存储的地址放入数据库中。


8.所有字段禁止使用not null,必须都具有默认值

not null会导致count 出现异象不到的结果
not null在检索时,判断方法同正常字段不同,可能会导致异常发生