sql字段属性

来源:互联网 发布:草图大师for mac破解 编辑:程序博客网 时间:2024/05/20 18:48

字段属性
上一节介绍了如何建立包含不同类型字段的表。在这一节中,你将学会如何使用字段的
三个属性。这些属性允许你控制空值,缺省值和标识值。
允许和禁止空值
大多数字段可以接受空值( 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,你可以禁止任
何人只在一个字段中插入数据,而不输入另一个字段的数据。
你将会发现,在你建设自己的网点过程中,这种禁止空值的能力是非常有用的。如果你
指定一个字段不能接受空值,那么当你试图输入一个空值时,会有错误警告。这些错误警告
可以为程序调试提供有价值的线索。
缺省值
假设有一个存储地址信息的表,这个表的字段包括街道、城市、州、邮政编码和国家。
如果你预计地址的大部分是在美国,你可以把这个值作为 country 字段的缺省值。
为了在创建一个表时指定缺省值,你可以使用表达式 DEFAULT。请看下面这个在创建表
时使用缺省值的例子:

CREATE TABLE addresses (street VARCHAR(60) NULL,city VARCHAR(40) NULL,state VARCHAR(20) NULLzip 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
…………………………………………………………….
1 New Hire Job not specified
2 Chief Executive officer
3 Bushness Operations Manager
4 Chief Financial Officier
5 Publisher
字段 job_id 为每个工作提供了唯一的一个数字。如果你决定增加一个新工作,新增记
录的 job_id 字段会被自动赋给一个新的唯一值。
为了建立一个标识字段,你只需在字段定义后面加上表达式 IDENTITY 即可。你只能把
NUMERIC 型或 INT 型字段设为标识字段,这里有一个例子:
CREATE TABLE visitorID (theID NUBERIC(18) IDENTITY,name VARCHAR(40))
这个语句所创建的表包含一个名为 theid 的标识字段。每当一个新的访问者名字添加到
这个表中时,这个字段就被自动赋给一个新值。你可以用这个表为你的站点的每一个用户提
供唯一标识。
技巧:
建立一个标示字段时,注意使用足够大的数据类型。例如你使用 TINYINT 型数据,那么
你只能向表中添加 255 个记录。如果你预计一个表可能会变得很大,你应该使用 NUMERIC
型数据。
标识字段的存在会使你想尝试许多不可能的事情。例如,你也许想利用标识字段来对记
录进行基于它们在表中位置的运算。你应该抛弃这种意图。每个记录的标识字段的值是互不
相同的,但是,这并不禁止一个标识字段的标识数字之间存在间隔。例如,你永远不要试图
利用一个表的标识字段来取出表中的前十个记录。这种操作会导致失败,比如说6号记录和
7 号记录根本不存在。
使用 SQL 事务管理器创建新表
你可以使用前面几节所讲的方法创建新表。但是,使用事务管理器创建新表会更容易。
这一节介绍如何使用这个程序创建新表。
从任务栏的 SQL Sever 程序组中选择 SQL Enterprise Manager,启动该程序,你会看
到如图 10.4 所示的窗口。浏览服务管理器窗口中的树形结构,选择名为 Database 的文件夹。
打开文件夹 Database 后,选择你在第三章中所建立的数据库。
注意:
如果你还没有创建自己的数据库,回到第三章创建它。你决不要向 master,tempdb 或任
何其它系统数据库中添加数据。
在选择了数据库之后,你会看到一个名为 Group/users 的文件夹和一个名为 objects
的文件夹。打开文件夹 objects,你会看到许多文件夹,其中一个名为 Tables。用右键单击
文件夹 Tables 并选择 New table,就会出现如图 10.5 所示的窗口。
你可以使用 Manager Tables 窗口来创建一个新表。 Manager Tables 窗口有7个列:
Key,Column,Name,Datatype,Size,Nulls 和 Default。 Manager Tables 窗口中的每一行标明
表中一个字段的信息。

要建立一个新表,你至少要输入一行信息。在名为 Column Name 的列下面键入
mycolumn。下一步,选择 Datatype 列,并从下拉列表中选择 CHAR。当你在这两个列中输入
信息后,窗口将是如图 10.6 所示的样子。

你已经建立了一个只有一个字段的简单的表。单击保存按扭保存这个新表。当要求你输
入新表的名字时,输入 mytable 并单击 OK。现在这个表已经保存到了你的数据库中。
如果你打开服务管理器窗口中的文件夹 Tables,你会看到你所建立的新表被列出。你可以
双击该表的图表来编辑它,这时 Manager Tables 窗口会重新出现,你可以增加新的字段并
重新保存。
用 SQL 事务管理器可以做的工作,你都可以用 SQL 语句来实现。但是,事务管理器使得
建表过程变得更加简单。
向表中添加数据
下一章将讨论如何使用 SQL 向一个表中插入数据。但是,如果你需要向一个表中添加许
多条记录,使用 SQL 语句输入数据是很不方便的。幸运的是, Microsoft SQL Sever 带有
一个称为 Microsoft Query 的客户端应用程序,这个程序使得向表中添加数据变得容易了。
启动位于任务栏 SQL Sever 程序组中的 Microsoft Query 程序。从窗口顶部的菜单中选
择 File|New Query。这时会显示一个 Select Data Source 对话框(见图 10.7)。选择你的
数据源名字并单击 Use。

输入你的登录帐号和密码后,程序要求你选择一个表和一个数据库。选择你在上一节中
所建立的表( mytable ),单击按钮 Add,然后单击按钮 Close 关闭该对话框。
在窗口的左上角会出现一个对话框,框中是取自表 mytable 的一列字段名。你可以双击
任何一个字段,把它添加到主窗口中。如果你双击星号( *)字符,所有的字段都会被添加
到主窗口中。
如果你的表中有记录,它们现在已经出现在主窗口的字段标题下面了。但是,因为你刚
刚建立了这个表,表还是空的。要添加新记录,选择 Records|Allow Editing,主窗口中就
会出现一条新记录。输入一行数据完成这个记录,就向表中添加了一条新记录。
当你转到下一条新记录时,你向上一条记录中输入的值会自动被保存。如果你需要,你
可以用 Microsoft Query 向表中输入几百条记录。
删除和修改表
你应该在建立表之前仔细设计它们,因为你在改变一个已经存在的表时会受到很大的限
制。例如,一旦已经建立了一个表,你就不能删除表中的字段或者改变字段的数据类型。在
这种情况你所能做的是删除这个表,然后重头开始(参见第十一章“中级 SQL”中的“使用
SQL 创建记录和表”一节)。
要删除一个表,你可以使用 SQL 语句 DROP TABLE。例如,又从数据库中彻底删除表
mytable,你要使用如下的语句:
DROP TABLE mytable
警告:
使用 DROP TABLE 命令时一定要小心。一旦一个表被删除之后,你将无法恢复它。
当你建设一个站点时,你很可能需要向数据库中输入测试数据。而当你准备向世界提供
你的网点时,你会想清空表中的这些测试信息。如果你想清除表中的所有数据但不删除这个
表,你可以使用 TRUNCATE TABLE 语句。例如,下面的这个 SQL 语句从表 mytable 中删除所
有数据:
TRUNCATE TABLE mytable
虽然你不能删除和修改已经存在的字段,但你可以增加新字段。最容易的实现方法是使
用 SQL 事务管理器中的 Manager Tables 窗口。你也可以使用 SQL 语句 ALTER TABLE。下面
是一个如何使用这种语句的例子:

ALTER TABLE mytable ADD mynewcolumn INT NULL

这个语句向表 mytable 中增加了一个新字段 mynewcolumn。当你增加新字段时,你必须
允许它接受空值,因为表中原来可能已经有了许多记录。
总结
这一章向你介绍了 SQL。使用 SQL,你可以操作 Microsoft SQL Sever 数据库。你已经
学会了使用 SELECT 语句从数据库中取出数据,你还学会了怎样使用 CREATE TABLE 语句和
SQL 事务管理器来创建新表。最后,你学会了如何指明一系列重要的字段属性。
下一章将介绍如何使用索引来增强 SQL 查询的操作。还将通过许多其它的 SQL 语句和函数,
使你的 SQL 知识得到进一步扩充。

0 0
原创粉丝点击