第8章SQL Server 表的创建与修改Word格式.docx
《第8章SQL Server 表的创建与修改Word格式.docx》由会员分享,可在线阅读,更多相关《第8章SQL Server 表的创建与修改Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
●标准表
在数据库中,最常用的就是标准表,它用来为数据库提供存储数据空间。
标准表是最重要、最基本的表。
●系统表
系统表中存储了有关SQLServer的配置、数据库设置、用户和表对象的描述等系统信息。
用户可以通过系统表查看当前服务器或服务器中的数据库及数据库中包含的表等。
通常情况下,数据库管理员常使用系统表来维护服务器。
●临时表
临时表就是临时创建的,不能永久生存的表。
该类表在用户退出系统,或者系统修复时将自动被删除。
它通常用来存储查询过程中出现的一些临时数据或者信息。
临时表的生存周期是一个SQLServer服务器实例开始与结束的周期,即临时表被创建之后,可以存储到SQLServer实例。
直到断开连接为止。
临时表又可分为本地临时表和全局临时表,其中,本地临时表只对创建者可见,而全局临时表在创建之后对所有的用户和连接可见。
●分区表
当一个表中的数据量过于庞大时,可以使用分区表。
分区表是将数据水平划分成多个单元的表。
这些单元可以分散到数据库中的多个文件组中,实现对单元中数据的并行访问。
使用分区表的优点在于可以方便地管理大型表,提供对表中数据的使用效率。
8.2创建表
在MicrosoftSQLServer2008系统中,创建表可以使用两种方法:
一种是通过图形界面操作方法(即使用SQLServerManagementStudio),另一种是通过CREATETABLE语句创建。
下面就分别使用这两种方法来创建名称为【用户会员信息】的数据表,将该表创建在上一章中创建的【电子书查询系统】数据库中。
1.使用图形界面创建表
(1)从【开始】菜单中选择【程序】|MicrosoftSQLServer2008|SQLServerManagementStudio命令,打开MicrosoftSQLServerManagementStudio窗口,并使用Windows或SQLServer身份验证建立连接。
(2)在【对象资源管理器】窗格中展开服务器,然后展开【数据库】节点。
(3)在【电子书查询系统】数据库节点上双击或者单击前面的+号按钮,展开该数据库,然后右击【表】节点,从展开的节点中选择【新建表】命令,如图3-2所示。
图3-2选择【新建表】命令
(4)在表设计器窗口中,输入列名,选择该列的数据类型,并设置其是否允许为空。
具体设置如图3-3所示。
图3-3【员工信息】表列的设置图3-4【选择名称】对话框
(5)各列的设置都完成后单击【标准】工具栏上的(
)按钮,或按Ctrl+S快捷键将弹出【选择名称】对话,输入表名称【会员信息】就可以保存该表。
如图3-4所示。
(6)此时,创建表的工作就完成了,可以展开【电子书查询系统】数据库下的【表】节点,就可以看见刚创建的【会员信息】数据表。
2.使用CREATETABLE
使用Transact-SQL语句创建表在程序设计中具有灵活性,开发人员可以根据需要随时在程序中为数据库创建表来存储数据。
在利用CREATETABLE语句创建表之前,首先介绍一下CREATETABLE语句的语法格式:
CREATETABLE[database_name.[owner].|owner.]table_name
(
{<
column_definition>
|<
table_constraint>
|column_nameAScomputed_column_expression
}[,…n]
)
[ON{filegroup|DEFAULT}]
[TEXTIMAGE_ON{filegroup|DEFAULT}]
<
:
={column_namedata_type}
[[DEFAULTconstant_expression]|[INDENTITY[(seed,increment)]]]
[<
column_constraint>
][,…]
对上述语句中参数说明如下所示:
●database_name是要在哪个数据库中创建表的数据库名称。
database_name必须是现有数据库的名称。
如果不指定数据库,database_name默认为当前数据库。
●owner是创建数据表的所有者名,若空,则默认为新表的创建者在当前数据库中的用户名。
●table_name是创建数据表的名称。
表名必须符合标识符规则。
●column_name是创建数据表中的字段名。
字段名必须符合标识符规则,并且在表内惟一。
如果字段名中包含空格,需要将字段名用方括号括起来。
●computed_column_expression是定义计算字段值的表达式。
计算字段由同一表中的其他字段通过表达式计算得到。
表达式可以是非计算字段的字段名、常量、函数、变量,也可以是用一个或者多个运算符连接的上述元素的任意组合。
在计算列上不能添加如PRIMARYKEY,UNIQUE,FOREIGNKEY或者DEFAULT等约束条件。
由于计算列是通过服务器计算产生,所以,在INSERT语句或者UPDATE语句中不能对计算列进行赋值。
●ON{filegroup|DEFAULT}指定存储表所在的文件组。
如果指定filegroup,则数据表将存在指定的文件组中;
如果指定DEFAULT,或者根本不指定ON参数,则数据表将存储在默认文件组中。
●TEXTIMAGE_ON{filegroup|DEFAULT}将数据表中text和Image类型的数据存储到指定的文件组。
●data_type指定字段的数据类型,可是系统数据类型或者用户自定义数据类型。
●constant_expression是用作字段默认值的常量、NULL或者系统函数。
●IDENTITY指定该字段为标识字段。
●seed定义标识字段的起始值,起始值是装入表的第一条记录时所使用的值。
●increment定义标识增量,标识增量是指该字段值相对前一条记录标识字段的增量值。
●column_constraint定义与字段相关的约束,如NULL、NOTNULL和PRIMARY等与约束有关的内容。
在介绍完CREATETABLE语句的语法格式后,接下来利用该语句来创建【电子书内容信息】数据表。
语句代码如下所示:
USE电子书查询系统
GO
CREATETABLE电子书内容信息
序号intNOTNULL,
关键字段char(10)NULL,
详细内容varchar(MAX)NULL,
单条记录intNULL,
单价moneyNULL,
在创建表时需要使用USE语句打开【工资管理系统】数据库。
使用CREATETABLE语句创建表时各个列之间必须用“,”逗号隔开,否则将会出现错误。
8.3修改表
修改表其实和创建表一样,在SQLServer2008系统中,既可以通过可视化的SQLServerManagementStudio界面修改表,也可以通过Transact-SQL语句修改表。
1.使用SQLServerManagementStudio界面
(3)在【工资管理系统】数据库节点上双击或者单击前面的+号按钮,展开该数据库,然后展开【表】节点,可以看到数据库中所有的表。
(4)右击需要修改的表,从弹出的快捷菜单可以对该表进行“设计”、“编辑”、“查看”、“重命名”、“删除”等操作,如图3-5所示。
图3-5修改表操作
其中,【设计】命令可以对表进行表的重新设计,不过如果该表中已有数据的话,最好不要对该重新设计,否则有可能出错;
【选择前1000行】选项可以查看表中前1000条的记录;
【编辑前200行】选项可以修改表的前200条记录数据;
【查看依赖关系】命令显示该表的功能正常所必须出现的数据库对象,以及依赖于所选对象的对象;
【重命名】命令可以修改表的名称;
【删除】命令可以删除该表。
在进行修改表操作时,要先查看该对象所依赖的关系,看他是否和其他对象有依赖关系,如果有依赖关系,应先解除该对象的依赖关系后再对表进行修改操作。
否则将有可能导致其他对象出错。
在SQLServer2008中,还可以修改表的访问权限,例如赋予public角色对【会员信息】表进行修改、删除、插入、选择、更新操作,具体步骤如下:
(1)在【对象资源管理器】窗格中,依次展开【数据库】|【电子书查询系统】|【表】节点列出数据库中的表。
(2)右击【会员信息】数据表,选择【属性】选项。
(3)在【表属性】窗口中,单击【选择页】|【权限】,进入【权限】页面。
(4)单击【搜索】按钮,打开【选择用户或角色】对话框。
可以在其中输入要选择的对象名称,也可以通过单击【浏览】按钮打开【查找对象】对话框进行选择public,如图3-6所示。
单击【确定】按钮。
图3-6【选择用户或角色】和【查找对象】对话框
(5)在【权限】页面里面可以设置表的查看、删除、插入、查询和修改等权限。
如图3-7所示。
图3-7【权限】页面
(6)在【表属性】窗口单击【确定】按钮,完成表属性修改操作。
这里只介绍了修改表的权限,如果要修改表中的列的权限时,必须先选择权限(如Select、References、Update等)启用【列权限】按钮,然后才可以单击【列权限】按钮打开【列权限】窗口给表中的列设置权限。
2.使用Transact-SQL语句修改表
除了使用图形化操作实现表的重命名和删除,也可以使用Transact-SQL语言来实现。
在SQLServer2008中,可以使用系统存储过程sp_rename来对表重命名。
例如重命名【会员信息】表为【用户会员信息】的语句为:
EXECsp_rename'
会员'
'
用户会员信息'
删除表可以使用DROPTABLE语句来实现,如下所示:
DROPTABLE会员信息
在删除表时,如果使用CASCADE,那么除删除表及其数据之外,所有引用该表的视图、约束、例程或触发器也将被删除。
如果使用RESTRIC,那么只有不存在依赖性时表才被删除。
通过DROPTABLE语句删除表,不仅会将表中的数据删除,还将删除表定义本身。
如果只想删除表中的数据而保留表的定义,则可以使用DELETE语句。
DELETE语句删除表中的所有行,或者根据语句中的定义只删除特定的行。
DELETE会员信息
要对表进行重命名或者删除操作,用户必须拥有相应的权限或者服务器角色。
8.4添加和删除列
在数据库的应用中,有时难免会增加一些新的列记录其他数据,或者删除一些无用的列。
这就要求可以对表中的列进行添加/删除操作。
在SQLServer2008中,添加/删除表列同样可以通过可视化的操作,也可以通过Transact-SQL语句添加/删除表列。
1.通过SQLServerManagementStudio界面操作
(1)在【对象资源管理器】窗格中,依次展开【数据库】|【电子书查询系统】|【表】节点。
(2)在列出的所有表中,右击【会员信息】表,选择【设计】命令,在表设计器窗口中,如果要添加列,那么就在所有列的后面设置要添加的列名称、类型和是否为空值;
如果要删除某列,只要在该列上右击,从弹出的快捷菜单中选择【删除列】命令即可如图3-8所示。
图3-8添加和删除列
(3)然后保存并关闭表设计器窗口。
2.通过Transact-SQL语句添加/删除表列
添加表列也可以使用ALTERTABLE语句来实现。
例如向【会员信息】表中添加【员工地址】列,可以使用如下Transact-SQL语句:
ALTERTABLE会员信息
ADD会员QQnvarchar(20)NULL
删除表也可以使用DROPCOLUMN语句来实现。
例如将刚添加到【员工信息】表中的【员工地址】列删除,可以使用如下语句:
USE电子书查询系统
DROPCOLUMN会员QQCASCADE
上述语句中,CASCADE选项表示将列和列中的数据删除,而不管其他对象是否引用这一列。
并且所有引用这一列的视图、约束、例程或者触发器也将被同时删除。
而如果指定另一选项RESTRICT,那么只有在没有视图、约束、例程或者触发器引用这一列时,这一列才能被删除。
8.5修改列
修改列的属性包括重新设置列名、数据类型、长度、是否允许空、描述、默认值、精度、小数位数、标识、公式、排序规则等属性,还可以设置和取消一个列的主键约束。
例如要修改【会员信息】表中的【会员名称】列,设置数据类型和长度为nvarchar(10)且不允许为空,具体代码如下所示:
ALTERCOLUMN会员名称nvarchar(10)NOTNULL
当然修改列的属性也可以在表设计器中操作,在表设计器中修改列属性和设计列的属性操作完全一样,这里就不再重复。