Questions tagged «datatypes»

指定要存储的数据类型(字符串,日期,数字等)。


2
如何最好地在PostgreSQL中存储时间戳?
我正在研究PostgreSQL数据库设计,我想知道如何最好地存储时间戳。 假设条件 不同时区的用户将数据库用于所有CRUD功能。 我看了两个选项: timestamp NOT NULL DEFAULT (now() AT TIME ZONE 'UTC') bigint NOT NULL DEFAULT 因为timestamp我会发送一个字符串,该字符串代表INSERT时刻的确切(UTC)时间戳。 因为bigint我会以数字格式存储完全相同的内容。(时区问题是在将毫秒移交给服务器之前处理的,因此始终在UTC中使用毫秒。) 存储a的一个主要优点bigint是可以更容易存储和检索,因为传递正确格式的时间戳比简单的数字(自Unix Epoc以来的毫秒数)要复杂得多。 我的问题是,哪种方法可以进行最灵活的设计,以及每种方法的陷阱是什么?

2
类型字段的INT或CHAR
什么是一个表,一个最好的设计Type是现场int还是char(1)?换句话说,给定此架构: create table Car ( Name varchar(100) not null, Description varchar(100) not null, VehType .... not null ) VehType成为an int或a 更有效(在性能方面更明智)char(1)?假设您有五种类型的汽车,应该使用递增值0-> 4还是类型的字符(例如“ v”,“ s”,“ c”,“ t”,“ m”)? 如果不止如此,我将使用单独的Type表并具有外键关系,但我认为没有必要。 我注意到sys.objects目录视图使用字符作为type字段。有什么理由吗?我是不是在这里捉襟见肘,是否更适合我?


2
MySQL VARCHAR和TEXT数据类型有什么区别?
在版本5.0.3(允许VARCHAR为65,535字节并停止截断尾随空格)之后,这两种数据类型之间是否有主要区别? 我正在阅读差异列表,注释中仅有的两个是: 对于BLOB和TEXT列上的索引,必须指定索引前缀长度。对于CHAR和VARCHAR,前缀长度是可选的。请参见第7.5.1节“列索引”。 和 BLOB和TEXT列不能具有DEFAULT值。 因此,由于TEXT数据类型有这两个限制,为什么要在varchar(65535)上使用它?是否有一个相对于另一个的性能影响?



4
为什么varchar数据类型允许unicode值?
我有一个带有varchar列的表。允许使用商标(™),版权(©)和其他Unicode字符,如下所示。 Create table VarcharUnicodeCheck ( col1 varchar(100) ) insert into VarcharUnicodeCheck (col1) values ('MyCompany') insert into VarcharUnicodeCheck (col1) values ('MyCompany™') insert into VarcharUnicodeCheck (col1) values ('MyCompany░') insert into VarcharUnicodeCheck (col1) values ('MyCompanyï') insert into VarcharUnicodeCheck (col1) values ('MyCompany') select * from VarcharUnicodeCheck 但是varchar的定义说,它允许非Unicode字符串数据。但是Trademark(™)和Registered(®)符号是Unicode字符。该定义是否与varchar数据类型的属性相矛盾?我读了几个链接,例如第一个和第二个。但是,当定义说它仅允许非Unicode字符串值时,我仍然不明白为什么它允许Unicode字符串。

2
tinyint(N)是什么意思?
据我所知,当我们使用带有数字数据类型的参数长度时,它指定了显示宽度。 我尝试了以下方法: mysql> create table boolean_test (var1 boolean, var2 tinyint); Query OK, 0 rows affected (0.10 sec) mysql> show create table boolean_test; +--------------+------------------------- | Table | Create Table +--------------+------------------------- | boolean_test | CREATE TABLE `boolean_test` ( `var1` tinyint(1) DEFAULT NULL, `var2` tinyint(4) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +--------------+--------------------------- …

1
如何将ctid分解为页码和行号?
表格中的每一行都有一个系统列 ctid,其类型tid表示该行的物理位置: create table t(id serial); insert into t default values; insert into t default values; select ctid , id from t; ctid | ID :---- | -: (0,1)| 1个 (0,2)| 2 dbfiddle 在这里 是什么让刚刚页面数从最好的方式ctid在最适合的类型(例如integer,bigint或numeric(1000,0))? 我能想到的唯一方法是非常丑陋。

2
临时表中的varchar大小重要吗?
在我妻子的工作中,关于仅对存储过程中的临时表中的varchar(255)所有varchar字段使用都存在争议。基本上,一个营地希望使用255,因为即使定义更改,它也将始终有效,而另一个营地则希望坚持使用源表中的大小以提高性能。 表演营对吗?还有其他含义吗?他们正在使用SQL Server。

3
使用BOOLEAN而不是TINYINT(1)有什么好处?
从MySQL手册中说: 布尔,布尔 这些类型是TINYINT(1)的同义词。零值被认为是错误的。非零值被视为true: 我创建了一个BOOLEAN列,0并将其作为默认值。然后将值更新为2。从逻辑上讲,我希望MySQL接受一个0或1一个布尔值。但是,MySQL不会发出错误或阻止我执行更新。 如果BOOLEAN的工作方式与TINYINT(1)完全相同,那么我使用TINYINT(1)还是BOOLEAN会有什么不同吗?
16 mysql  datatypes 


1
为什么顶级数据库平台中没有无符号整数类型?
数据库通常是非常可定制的,具有不同的数据类型和自定义长度。 当我尝试寻找使用unsigned intPostgreSQL和MS SQL Server都不提供的类型的语法时,这让我感到惊讶。MySQL和Oracle似乎。 在他们看来,这似乎是一个明显的遗漏-下一个最好的perfomant选项是long / bigint(8字节整数),但可能完全不必要!有谁知道为什么他们会选择不包括本地unsigned int支持?

2
设计用户认证(角色和权利)模块
我正在尝试为MS SQL Server数据库建模用户身份验证模块,该模块将成为Delphi UI应用程序的后端。基本上,我想拥有一个用户帐户,其中该用户仅属于一个组。一个组可以具有“ n”个权限。 我还想将密码历史记录添加到数据库中,因为将要求用户根据应用程序设置(例如,每90天)更改其密码。 我也想在用户每次登录和注销时都记录一个事件。我将来可能会将其扩展到其他事件。 在下面,您会发现我的第一个裂缝。请让我知道任何改进的建议,因为这是我第一次这样做。 您是否发现需要其他属性以实现基于角色的安全性以及密码规则/有效期限的约束?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.