SQL Server数据库技术(40)[MSSQL防范]
本文“SQL Server数据库技术(40)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在利用数据库的历程中,接触最多的就是数据库中的表.表是数据存储的地方.是数据库中最重要的部份,管理好表也就管理好了数据库.本章将介绍若何成立和管理数据库表.
表是由行和列构成的.成立表的历程主要就是定义表的列的历程,为此,应先理解表的列的属性.
7.1.1 列的属性
表的列名在同一个表中具有惟一性,同一列的数据属于同一种数据范例.除了用列名和数据范例来指定列的属性外,还可以定义别的属性:NULL 或NOT NULL 属性和IDENTITY 属性.
(1) NULL 或NOT NULL
假如表的某一列被指定具有NULL 属性,那么就答应在插入数据时省略该列的值.反之,假如表的某一列被指定具有NOT NULL 属性,那么就不答应在没有指定列缺省值的情形下插入省略该列值的数据行.在sql server 中,列的缺省属性是NOT NULL.要设置缺省属性为NULL 或NOT NULL,可以在Enterprise Manager 中改正数据库属性选项中的"ANSI null default"为真或假.也可以利用以下两种语句来设定:
- set ansi_null_dflt_on 或set ansi_null_dflt_off;
- sp_dboption database_name, ‘ANSI null default’, true/false.
IDENTITY 属性可以使表的列包含系统自动生成的数字.这种数字在表中可以惟一标识表的每一行,即表中的每一行数据在指定为IDENTITY 属性的列上的数字均不相同.指定了IDENTITY 属性的列称为IDENTITY 列.当用IDENTITY 属性定义一个列时,可以指定一个初始值和一个增量.插入数据到含有IDENTITY 列的表中时,初始值在插入第一行数据时利用,今后就由SQL Server 按照上一次利用的IDENTITY 值加上增量得到新的IDENTITY值.假如不指定初始值和增量值,则其缺省值均为1.
IDENTITY 属性实用于INT、 SMALLINT、 TINYINT、 DECIMAL (P,0)、N::::::?
UMERIC (P,0)数据范例的列.
注意:一个列不能同时具有NULL属性和IDENTITY属性,只能二者选其一.
7.1.2 用CREATE TABLE 号令成立表
用CREATE TABLE 号令成立表快速、明了.其语法以下:
CREATE TABLE [database_name.[owner].| owner.] table_name
( {
[ON {filegroup | DEFAULT} ]
[TEXTIMAGE_ON {filegroup | DEFAULT} ]
[ [ DEFAULT constant_expression ]
| [ IDENTITY [(seed, increment ) [NOT FOR REPLICATION] ] ] ]
[ ROWGUIDCOL ]
[ COLLATE < collation_name > ]
[
各参数阐明以下:
- database_name
指定新建的表属于哪个数据库.假如不指定数据库名,就会将所成立的表存放在当前数据库中. - owner
指定数据库全部者的用户名. - table_name
指定新建的表的名称,最长不超越128 个字符.
对数据库来说,database_name.owner_name.object_name 应当是惟一的. - column_name
指定新建的表的名称,最长不超越128 个字符.
对数据库来说,database_name.owner_name.object_name 应当是惟一的. - computed_column_expression
指定计算列(Computed column)的列值的表达式.表达式可以是列名、常量、变量、函数等或它们的组合.所谓计算列是一个虚拟的列,它的值并不实际存储在表中,而是通过对同一个表中别的摆列行某种计算而得到的后果.比方:员工信息表中存储了员工的雇佣日期,那么员工的工龄便可以通过表达式"雇佣日期当前日期"计算出来,则工龄列便可作为一个计算列. - ON {filegroup | DEFAULT}
指定存储表的文件组名.假如利用了DEFAULT 选项或省略了ON 子句,则新建的表会存储在默许文件组中. - TEXTIMAGE_ON
指定TEXT、NTEXT、 和IMAGE 列的数据存储的文件组.假如无此子句,这些范例的数据就和表一同存储在相同的文件组中. - data_type
指定列的数据范例 - DEFAULT
指定列的缺省值.当输入数据时,假如用户没有指定列值,系统就会用设定的缺省值作为列值.假如该列没有指定缺省值但答应NULL 值,则NULL 值就会作为缺省值.此中缺省值可认为常数、NULL 值、SQL Server 内部函数(如GETDATE()函数)、NILADIC 函数等. - constant_expression
列缺省值的常量表达式,可认为一个常量或系统函数或NULL. - IDENTITY
指定列为IDENTITY 列.一个表中只能有一个IDENTITY 列. - seed
指定IDENTITY 列的初始值. - increment
指定IDENTITY 列的增量. - NOT FOR REPLICATION
指定列的IDENTITY 属性在把从别的表中复制的数据插入到表中时不发生作用,即不足的生成列值,使得复制的数据行保持本来的列值. - ROWGUIDCOL
指定列为环球惟一辨别行号列(ROWGUIDCOL是Row Global Unique Identifier Column 的缩写).此列的数据范例必须为UNIQUEIDENTIFIER 范例.一个表中数据范例为UNIQUEIDENTIFIER 的列中只能有一个列被定义为ROWGUIDCOL 列.ROWGUIDCOL 属性不会使列值具有惟一性,也不会自动生成一个新的数值给插入的行.需求在INSERT 语句中利用NEWID()函数或指定列的缺省值为NEWID()函数. - COLLATE指明表利用的校验方法.
- column_constraint 和table_constraint
指定列约束和表约束,我们将在下一节中介绍其具体定义.
别的参数将在背面的章节中渐渐报告.
注意:一个表至少有一列,但最多不超越1024个列. 每个数据库中最多可以成立200万个表. 表在存储时利用的计量单位是盘区(Extent).一个盘辨别为8个数据页,每页8KB字节.在成立新表时,会分配给它一个初始只为一个盘区的存储空间.当增添表的存储空间时,以盘区为单位增添.
7.1.3 用Enterprise Manager 成立表
在Enterprise Manager 中成立表按以下步骤举行:
(1) 在要成立表的数据库中挑选"Tables" 对象后,单击右键,从快速菜单中挑选"New Table" 选项,或在工具栏中挑选图标,即会呈现如图7-1 所示的定义列对话框.在此可以是设定表的列名、数据范例、精度、缺省值等属性.
(2) 单击图7-1 工具栏中的保存按钮,即呈现如图7-2 所示的输入新建表名的对话框.
(3) 输入表名后单击"OK"按钮,即会将表保存到数据库中.然后图7-1 中工具栏右边本来不可用的几个按钮将变成可用,可以利用它们来设置表的别的信息,在今后的章节中将讲到它们的利用.
7.1.4 成立暂时表
可以用CREATE TABLE 号令成立表部分的或全局作用的暂时表.其语法与成立普通表基本相同,只是在部分暂时表的表名前要利用标记"#",全局暂时表的表名前要利用标记"##"以便与普通的表相辨别.由于SQL Server 将暂时表的表名存储到Tempdb数据库中sysobjects 表中时,会自动在其背面增添一个系统产生的12 位的数字后缀,因此暂时表的表名最长只能指定116 个字符,以不超越128 个字符的命名限制.
例7-2 成立一个部分暂时表test123
create table #test123 (
test_id smallint ,
test_name char(10) ,
) on [primary
本文地址: | 与您的QQ/BBS好友分享! |