SQL数据操作基础(初级)  4(2)

分类: asp   出处:iocblog整理  更新时间:2008-10-07   添加到收藏  


存储日期和时间

当你建立一个网点时,你也许需要记录在一段时间内的访问者数量。为了能够存储日期和时间,你需要使用datetime型数据,如下例所示:

create tabl visitorlog( visitor varchar (40), arrivaltime datetime ,

departuretime datetime)

这个表可以用来记录访问者进入和离开你网点的时间和日期。一个datetime型的字段可以存储的日期范围是从1753年1月1日第一毫秒到9999年12月31日最后一毫秒。

如果你不需要覆盖这么大范围的日期和时间,你可以使用smalldatetime型数据。它与datetime型数据同样使用,只不过它能表示的日期和时间范围比datetime型数据小,而且不如datetime型数据精确。一个smalldatetime型的字段能够存储从1900年1月1日到2079年6月6日的日期,它只能精确到秒。

datetime型字段在你输入日期和时间之前并不包含实际的数据,认识这一点是重要的。在下一章,你将学习怎样使用大量的sql函数来读取和操作日期和时间(参见下面的“缺省值”一节)。你也可以在vbscript和jscript 中使用日期和时间函数来向一个datetime型字段中输入日期和时间。

字段属性

上一节介绍了如何建立包含不同类型字段的表。在这一节中,你将学会如何使用字段的三个属性。这些属性允许你控制空值,缺省值和标识值。

允许和禁止空值

大多数字段可以接受空值(null)。当一个字段接受了空值后,如果你不改变它,它将一直保持空值。空值(null)和零是不同的,严格的说,空值表示没有任何值。

为了允许一个字段接受空值,你要在字段定义的后面使用表达式null。例如,下面的表中两个字段都允许接受空值:

create table empty (empty1 char (40) null,empty2 int null(

注意:

bit型数据不能是空值。一个这种类型的字段必须取0或者1。

有时你需要禁止一个字段使用空值。例如,假设有一个表存储着信用卡号码和信用卡有效日期,你不会希望有人输入一个信用卡号码但不输入有效日期。为了强制两个字段都输入数据,你可以用下面的方法建立这个表:

create table creditcards (creditcard_number char(20) not null,

creditcard_expire datetime not null)

注意字段定义的后面跟有表达式not null。通过包含表达式not null,你可以禁止任何人只在一个字段中插入数据,而不输入另一个字段的数据。
(来源 www.iocblog.net)
你将会发现,在你建设自己的网点过程中,这种禁止空值的能力是非常有用的。如果你指定一个字段不能接受空值,那么当你试图输入一个空值时,会有错误警告。这些错误警告可以为程序调试提供有价值的线索。

缺省值

假设有一个存储地址信息的表,这个表的字段包括街道、城市、州、邮政编码和国家。如果你预计地址的大部分是在美国,你可以把这个值作为country字段的缺省值。

为了在创建一个表时指定缺省值,你可以使用表达式default。请看下面这个在创建表时使用缺省值的例子:

create table addresses (street varchar(60) null,

city varchar(40) null,

state varchar(20) null

zip varchar(20) null,

country varchar(30) default ‘usa’)

在这个例子中,字段country的缺省值被指定为美国。注意单引号的使用,引号指明这是字符型数据。为了给非字符型的字段指定缺省值,不要把该值扩在引号中:

create table orders(price money default $38.00,

quantity int default 50,

entrydate datetime default getdate())

在这个create table语句中,每个字段都指定了一个缺省值。注意datetime型字段entrydate所指定的缺省值,该缺省值是函数getdate()的返回值,该函数返回当前的日期和时间。

标识字段

每个表可以有一个也只能有一个标识字段。一个标识字段是唯一标识表中每条记录的特殊字段。例如,数据库pubs中的表jobs包含了一个唯一标识每个工作标识字段:

job_id job_desc

…………………………………………………………….

new hire job not specified
chief executive officer
bushness operations manager
chief financial officier
publisher
字段job_id为每个工作提供了唯一的一个数字。如果你决定增加一个新工作,新增记录的job_id字段会被自动赋给一个新的唯一值。

为了建立一个标识字段,你只需在字段定义后面加上表达式identity即可。你只能把numeric型或int型字段设为标识字段,这里有一个例子:

create table visitorid (theid nuberic(18) identity,name varchar(40))

这个语句所创建的表包含一个名为theid的标识字段。每当一个新的访问者名字添加到这个表中时,这个字段就被自动赋给一个新值。你可以用这个表为你的站点的每一个用户提供唯一标识。

技巧:

建立一个标示字段时,注意使用足够大的数据类型。例如你使用tinyint型数据,那么你只能向表中添加255个记录。如果你预计一个表可能会变得很大,你应该使用numeric型数据。

标识字段的存在会使你想尝试许多不可能的事情。例如,你也许想利用标识字段来对记录进行基于它们在表中位置的运算。你应该抛弃这种意图。每个记录的标识字段的值是互不相同的,但是,这并不禁止一个标识字段的标识数字之间存在间隔。例如,你永远不要试图利用一个表的标识字段来取出表中的前十个记录。这种操作会导致失败,比如说6号记录和7号记录根本不存在。

上一页 [1] [2]


Tag: SQL



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。