创建和修改数据表,基础巩固

一.CREATE语句(创建)

1、数据仓库储存款和储蓄结构          SQL Server
七.0中的每一种数据库有七个操作结合,数据库的全体素材、对象和数据库操作日志均存款和储蓄在那一个操作中。依照那个的功力不1,能够将它们划分为以下叁类:
?       
主数据文件:每一种数据库有且唯有3个主数据文件,它是数据库和别的数据文件的起点。主数据文件的恢弘名类同为.mdf; 
     
?       
辅数据文件:用于存款和储蓄主数据文件中未存款和储蓄的剩余资料和数据库对象,二个数据库可以未有辅数据文件,但也得以同时兼有七个辅数据文件。辅数据文件的略微主要基于数据库的分寸、磁盘存款和储蓄情状和积累质量供给而设置。辅数据文件的扩展名一般为.ndf;
?       
日志文件:存储数据库的工作日志消息,当数据库损坏时,管理员使用工作日志苏醒数据库。日志文件的扩大名类同为.ldf。
各种数据库中足足四个公文:主数据文件和日志文件。
SQL
Server数据库文件除操作系统所给予的大意文件名称外,还有2个逻辑名称。数据库的逻辑名称应用于Transact-SQL语句中。举例,对于
master系统数据库,master为其论理名称,使用Transact-SQL语句操作数据库时,均运用该名称。而相应的情理文件名为master.mdf、其日记文件名为master.ldf。
为了管住有利于,可将多少个数据库文件协会为1组,称作数据库文件组。文件组能够决定
各样文件的寄放地点,当中的各种文件常建立在不一致的驱动器上,那样可以缓和种种磁盘驱动器的蕴藏压力,升高数据库的积存功用,从而达成增长系统本性的目的。SQL Server采取比例填充攻略使用文件组中的各样文件提供的储存空间。

1.创建DataBase

图片 1

在SQL Server中树立文件和文件组时,应留神以下两点:
?       
各个文件或文件组只可以属于3个数据库,各类文件也只可以成为1个文本组的积极分子,文件和文件组无法跨数据库使用;
?       
日志文件是独立的,它无法成为文件组的积极分子。相当于说,数据库的资料内容和日志内容不能够存入同样的文件或文件组。

1.CONTAINMENT

  SQL Server 二零一三 新效用 , 暗中同意值是OFF 。(太高等书上也不曾详尽介绍)。

SQL Server中的数据库文件组有以下3连串型:
?       
主文件组:在那之中包数据库的主数据文件和不属于任何文件组的数据库文件,数据库系统表的富有页面存款和储蓄在主文件组中;
?        用户定义文件组:数据库创造语句(CREATE
DATABASE)或涂改语句(ALTE汉兰达DATABASE)中采取FILEGROUP关键词所钦命的文件组;
?       
暗中同意文件组:在开立数据库对象时,假如未有为它们钦命文件组,它们将被贮存在暗中认可文件组中。能够接纳ALTEPAJERODATABASE语句修改数据库的默许文件组织设立置,但种种数据库同时最四只可以有五个暗中同意文件组。当数据库未有点名私下认可文件组时,主文件组将被用作私下认可文件
组使用。
是因为私下认可文件组的特殊功能,所以在创制数据库对象时,纵然不点名用户文件组,SQL
Server也能照常推行。

2.ON

  ON用于八个地点,第1个是积累数据的文本的岗位,第一个是累积日志的文本的职分。
ON 后边的 P奇骏IMA锐界Y的概念:希望将装有的内容存放在一个文件里。

①.使用Transact-SQL语句建立数据库
  CREATE DATABASE 语句的语法格式为:

3.NAME

  三个逻辑名称,即SQL
Server在里边选用该名称引用该文件。当需求修改数据库大小时,须求采用这几个称呼

图片 2CREATE DATABASE database_name
图片 3[ ON [PRIMARY]
图片 4        [ <filespec> [,图片 5n] ]
图片 6        [, <filegroup> [,图片 7n] ]
图片 8]
图片 9[ LOG ON { <filespec> [,图片 10n]} ]
图片 11[ FOR LOAD | FOR ATTACH ]
图片 12<filespec> ::=
图片 13  ( [ NAME = logical_file_name, ]
图片 14  FILENAME = ‘os_file_name’
图片 15  [, SIZE = size]
图片 16  [, MAXSIZE = { max_size | UNLIMITED } ]
图片 17  [, FILEGROWTH = growth_increment] ) [,图片 18n]
图片 19<filegroup> ::=
图片 20FILEGROUP filegroup_name <filespec> [,图片 21n]
图片 22

4.FILENAME

  实际的操作系统文件在磁盘的名字,如果不写暗中认可放在安装SQL
Server的文件夹中,暗中同意的数据库文件是.mdf后缀,日志是.ldf文件。

其中,database_name为新建数据库的逻辑名称,在一个SQL
Server上,必须确认保障各数据库名称是唯一的。
ON
子句展现钦赐期存款储数据库资料部分所使用的数据文件和文件组列表,PPRADOIMA卡宴Y关键词表达之后的数据文件属于主文件组。就算P安德拉IMA途观Y关键词未被钦定,则珍视词CREATE
DATABASE后的率先个文本列表将改成主数据文件。<filespec>定义数据文件列表中各数据文件项,有多个数据文件项时,相互之间
以逗号分隔。
其中,logical_file_name参数建议数据文件的逻辑名称,数据文件的逻辑名称应用在Transact-SQL语句中。在同1个数据库中,必须保持数据文件的逻辑名称是唯1的。
os_file_name参数表达数据文件对应的操作系统文件名称,即数据文件的大意文件名称及其路线。
size
参数钦赐数据文件的发端长度,其单位为MB或KB,暗许时为MB。对于主数据文件,其size参数的矮小值应等于model数据库中主数据文件的尺寸。对
于其它数据文件,其尺寸最小为512KB。size参数默许时,对于辅数据文件和日志文件,SQL
Server将其尺寸设置为1MB,而对此主数据文件,SQL
Server将其长度设为model数据库中主数据文件的长短。
SQL
Server中,就算张开数据库的autoshrink选项,当数据库文件空间用尽时,系统将自行扩充数据文件的深浅。max_size参数定义数据文件
可以扩张到的最大尺寸,其单位为MB或KB。如果未定义max_size参数,数据库文件的尺寸可依据必要平素扩张,直到磁盘空间用尽截止。那时它同样MAXSIZE = UNLIMITED。
growth_increment参数表达数据文件空间的每趟扩展量,其单位为MB,KB或%,默感觉MB。使用%时表达数据文件每回扩展的长度等于扩展时文件现成长度的比重,growth_increment参数的默许值为十%。用MB或KB表示
时,其扩大值应为64KB或其倍数。
ON子句中的<filegroup>参数用于建议数据库的多少文件组,个中,filegroup_name为文件组名称。文件组中各文件的定义格式与地点介绍的数据文件的定义格式一样。
CREATE DATABASE语句中的LOG
ON子句用于定义数据库日志文件。各样日志文件的定义格式与数据文件同样。当未利用LOG
ON子句钦赐日志文件时,SQL
Server将自动为数据库建立一个日志文件,文件名称由系统发生,其尺寸等于数据库全体数据文件长度之和的25%。

5.SIZE

  数据库大小,假设没写,默许与用图产生立的高低一样。

SQL Server创立三个数据库时要因此以下五个步骤: 一使用model数据库拷贝起初化新确立的数据库,用户在model数据库中所建立的数据库对象也一并被拷贝到新建数据库中。别的,新建数据库还一而再了
model中的各个数据库选项设置,假使model数据库选项设置被涂改,它只影响修改后所确立的数据库,已经创立的数据库的种种选项不再发生变化了;
贰 用空白页面填写数据库中的自由空间。
(1)在制造数据库时,如若简单了CREATE
DATABASE语句中的全体可选参数,即选用下边包车型地铁语句格式,它所成立的数据库大小完全一样model数据库:
CREATE DATABASE MYDB1
GO
 
 (二)下边例子在开立数据库MYDB二时钦赐文件组,其数据文件有主文件组和MYDB2_GROUP文件组组成。MYDB二数据库所富含的数据文件和日志文件,以及它们的参数如图所示:

6.MAXSIZE  

  允许数据库的最大尺寸。

图片 23CREATE DATABASE MYDB2
图片 24        ON
图片 25                PRIMARY(
图片 26                                NAME = MYDB2_P1_dat,
图片 27                                FILENAME = ‘c:\mssql7\data\MYDB2_P1.mdf’,
图片 28                                SIZE = 5,
图片 29MAXSIZE = 10,
图片 30FILEGROWTH = 20%
图片 31),
图片 32
图片 33(NAME = MYDB2_P2_dat,
图片 34                                  FILENAME = ‘c:\mssql7\data\MYDB2_P2.ndf’,
图片 35                                 SIZE = 5,
图片 36MAXSIZE = 10,
图片 37FILEGROWTH = 1MB
图片 38),
图片 39
图片 40FILEGROUP MYDB2_GROUP(
图片 41                 NAME = MYDB2_S1_dat,
图片 42                                  FILENAME = ‘c:\mssql7\data\MYDB2_S1.ndf’,
图片 43                 SIZE = 10,
图片 44                 MAXSIZE = 50,
图片 45                 FILEGROWTH = 10
图片 46                 ),
图片 47
图片 48(NAME = MYDB2_S2_dat,
图片 49FILENAME = ‘c:\mssql7\data\MYDB2_S2.ndf’,
图片 50SIZE = 20,
图片 51MAXSIZE = 100,
图片 52FILEGROWTH = 20
图片 53)
图片 54Go
图片 55

7.FILEGROWTH

  提供一个值来注解文件每一遍增大多少字节只怕稍微比例。

MYDB二数据库文件
        主文件组        MYDB二_GROUP文件组        日志文件
逻辑名        MYDB2_P1_dat        MYDB2_P2_dat       
MYDB2_S1_dat        MYDB2_S2_dat        MYDB2_log
文件名        C:\mssql7\data\
MYDB2_P1.mdf        c:\mssql7\data\
MYDB2_P2.ndf        C:\mssql7\data\
MYDB2_S1.ndf        c:\mssql7\data\
MYDB2_S2.ndf        c:\mssql7\data\
MYDB2_log.ldf
初步长度        5MB        伍MB        十MB        20MB        十MB
最大尺寸        十MB        10MB        50MB        十0MB       
无界定
增    量        20%        1MB        10MB        20MB        10%
二.利用Transact-SQL语句修改数据库
ALTEENCORE DATABASE 语句的语法格式为:

8.LOG ON   

  LOG ON 选项允许钦定哪些文件要求日志,以及那个日记位于什么岗位。

图片 56ALTER DATABASE database
图片 57{    ADD FILE <filespec> [,图片 58n] [TO FILEGROUP filegroup_name]
图片 59    | ADD LOG FILE <filespec> [,图片 60n]
图片 61    | REMOVE FILE logical_file_name 
图片 62    | ADD FILEGROUP filegroup_name
图片 63    | REMOVE FILEGROUP filegroup_name
图片 64    | MODIFY FILE <filespec>
图片 65    | MODIFY FILEGROUP filegroup_name filegroup_property
图片 66}
图片 67<filespec> ::=
图片 68(NAME = logical_file_name
图片 69  [, FILENAME = ‘os_file_name’ ]
图片 70  [, SIZE = size]
图片 71  [, MAXSIZE = { max_size | UNLIMITED } ]
图片 72  [, FILEGROWTH = growth_increment] )
图片 73

9.COLLATE

  该选拔处理排序,字母大小,以及是不是对重音敏感的主题素材。

 

 

图片 74图片 75

 

里面,database为待修改的数据库名称。
ADD FILE子句提议向数据库中加多数据文件,TO
FILEGROUP表达新扩展加数据文件所属的文本组名称。
ADD LOG FILE子句提议向数据库中新丰裕的日志文件项。
REMOVE FILE子句提出从数据库中除去文件,在剔除后,SQL
Server将该文件对应的概略文件一并从操作系统中删除。
专注:壹 当数据文件内容不为空时,不可能将它们从内定数据库中删去;
二当数据文件为主数据文件或数据库日志文件时,不能够将它们从钦命数据库中除去;
叁当数据文件所属的公文组为暗中认可文件组并且此数据文件是该暗许文件组的唯十分之一员时,不能够将它从钦赐数据库中删去。

2.创建表

图片 76

 

ADD FILEGROUP子句表明向数据库中加多文件组。
REMOVE
FILEGROUP子句表达从数据库中删除文件组,在剔除时1并剔除文件组中全体数据文件对应的操作系统文件。
小心:唯有当文件组中全数的数据文件为空时技术将它们从数据库中删除。

 IDENTITY

  设定2个名列标记列,起首计数的数字称为种子值,每行增添或收缩的多寡称为增量。

  标识列必须是数值类型。

 图片 77

   MODIFY
FILE提出修改数据文件,文件名称由<filespec>中的NAME参数钦命。
留意:壹 每一趟只可以对数据文件的FILENAME、SIZE、FILEGROWTH和MAXSIZE中
          的壹项实行改换;
      贰 使用ALTE奥德赛 DATABASE语句更改数据文件大小时,只可以扩展不可能裁减。

二.ALTER语句(修改)

   ALTEEvoque语句能够修改数据库和表大小,文件地点或别的特色。

  修改数据库的轻重缓急:

  图片 78

  修改表(扩展一列)

  图片 79

   MODIFY
FILEGROUP子句建议待修改的文件组,在那之中filegroup_name为文件组名称,file_property表明修改后的文件组属性,其取值包括以下三种:
?       
READONLY:将文件组织设立置为只读文件组,之后将禁止对在那之中的数据库对象开始展览退换。数据库中的主文件组不可能安装为只读文件组;
表明:即使将主文件组被安装为只读文件组,全体用户无法在该数据库中再次创下制任何新的数据库对象和登入标志,或再一次编写翻译存款和储蓄进程,因为这一个干活儿都亟需修改数据库中的系统表。
?       
READW牧马人ITE:删除文件中的只读属性,之后可对该文件组举办读、写操作;
?       
DEFAULT:将点名文件组织设立置为数据库的私下认可文件组,每个数据库中不得不有二个私下认可文件组。
(1)向MYDB第22中学增加二个数据文件MYDB2_P3_dat,其大小为10MB,实践后此数据文件被增加到主文件组[P帕杰罗IMAKugaY]中:

三.DROP语句(删除)

图片 80

图片 81

 

图片 82ALTER DATABASE MYDB2
图片 83        ADD FILE(
图片 84                          NAME = MYDB2_P3_dat,
图片 85                FILENAME = ‘c:\mssql7\data\MYDB2_P3.ndf’,
图片 86                          SIZE = 10MB,
图片 87                          MAXSIZE = 100MB,
图片 88                          FILEGROWTH = 2MB
图片 89                          )
图片 90GO
图片 91

4.选取管理分界面来创设(推荐)

 

(二)向MYDB第22中学增加贰个日志文件MYDB二_LOG2:

图片 92ALTER DATABASE MYDB2
图片 93        ADD LOG FILE
图片 94  (NAME = MYDB2_LOG2,
图片 95    FILENAME = ‘c:\mssql7\data\MYDB2_LOG2.ldf’, 
图片 96         SIZE = 10MB,
图片 97    MAXSIZE = 50MB,
图片 98    FILEGROWTH = 2MB
图片 99)
图片 100

3)将数据库MYDB第22中学的文件组MYDB2_GROUP设置为私下认可文件组:
ALTER DATABASE MODIFY FILEGROUP MYDB2_GROUP DEFAULT
三.施用Transact-SQL语句删除数据库
  DROP DATABASE语句的语法格式为:
DROP DATABASE database_name [,…n]
其中,database_name为待删除的数据库名。在SQL
Server中唯有系统管理员和数据库全部者才有删除数据库的权限。
(一)将上述树立的数据库MYDB二删除:
DROP DATABASE MYDB2
四.行使系统存款和储蓄进程检索数据库的定义新闻
SQL
Server提供了下列系统存款和储蓄进程和说话,让用户检索服务器上的数据库定义音信以及各类数据库文件空间的接纳意况:
?       
sp_helpdb:检索服务器上的持有数据库新闻及单个数据库的概念消息;对应的语法格式为:sp_helpdb
[‘name’]
里面,name参数为挑选,当提供该参数时,sp_helpdb检索name参数钦赐的数据库定义音讯,不然它搜索服务器上的具备数据库音信;
?       
sp_spaceused:检索数据库中资料空间的利用意况以及表所占用的空间;对应的语法格式为:sp_spaceused
[‘objname’] [,’updateusage’]
中间,objname是数据库中的表名,它需要sp_spaceusage突显系统分配给该表的上空及其应用意况。不钦定objname参数时,系统存款和储蓄进度sp_spaceused将总计当前数据库中的资料空间消息。
updateusage 参数求证是还是不是在总计空间利用状态前推行DBCC
UPDATEUSAGE语句。默许时其值为false,即不进行DBCC
UPDATEUSAGE语句。将其值设置为true时,系统将对数据库推行DBCC
UPDATEUSAGE语句,那样所赚取的空中应用音信将越加正确,但奉行该语句要并吞一定的年月,特别是当数据库一点都不小时,其实践时间会更加长;
?        DBCC SQLPE瑞虎F(LOGSPACE):检索数据库中的日志空间音信。

贰、数据库表存款和储蓄结构      在SQL
Server中,每种数据库最多可创立20亿个表,一个表允许定义十二四列,每行的最大尺寸为809贰字节(不包蕴文件和图像类型的尺寸)。当表中定义
有varchar、nvarchar或varbinary类型列时,假如向表中插入的数据行当先809二字节时将导致Transact-SQL语句退步,
并爆发错误消息。SQL
Server对每一个表中央银行的数量未有直接限制,但它受数据库存款和储蓄空间的限制。各样数据库的最大空间104851陆TB,所以2个表可用的最大空间为
104851六TB减去数据库类系统表和别的数据库对象所据有的长空。
     SQL
Server中的资料表分为长久表和权且表二种,永恒表在开立后一直存储在数据库文件中,直至用户删除停止。而目前表则在用户退出或类别修复时被活动删
除。临时表又分为局地临时表和全局一时表三种,局地一时半刻表只好由创制它的用户接纳,在该用户连接断开时,它被机关删除。全局权且表对系统当前的兼具连接用
户来讲都以可用的,在运用它的最终二个会话停止时它被电动删除。在创设表时,系统依据当下表名来规定是创办目前表照旧永世表,权且表的表名以#起来,除此而外为永恒表。局部权且表表名开首包蕴一个#号,而全局权且表的表名伊始包括三个#号。
1.接纳Transact-SQL语句建立资料表
CREATE TABLE 语句的语法格式为:

图片 101CREATE TABLE
图片 102[
图片 103    database_name.[owner].
图片 104    | owner.
图片 105] table_name
图片 106(
图片 107    {    <column_definition>
图片 108        | column_name AS computed_column_expression
图片 109        | <table_constraint>
图片 110    } [,图片 111n]
图片 112)
图片 113[ON {filegroup | DEFAULT} ]
图片 114[TEXTIMAGE_ON {filegroup | DEFAULT} ]
图片 115

  其中,table_name为新确立的表名。对于暂且表,表名字符串长度不能够超过117个字符,而永恒表的表名字符串长度则不可能凌驾12十多个字符。其它,在同一个数据库中,每一个表全部者成立的表名必须确认保障唯1。
  computed_column_expression
提出总括列的定义表明式,总结列是3个虚拟列,它并不是积累在表中,而是由表中的其余非总结列(常规列)导出。总计列定义表达式可感到常规列、常量、变
量、函数组成的表明式,但它不能由3个子查询构成。除了下边情状,总括列能够与常规列同样采纳在SELECT列表、WHERE子句和OOdysseyDER
BY子句中:
?        总结列不能够用在目录的根本词列;
?        总括列不能够同日而语P安德拉IMALANDY KEY、UNIQUE、FOREIGN
KEY或DEFAULT约束定义的一部分;
?        总括列无法用INSERT和UPDATE语句插入资料。
    注意:壹 在建表语句中,不允许对总括列设置空值属性(NULL或NOT
NULL);
        2 在建表语句中,列与列的概念用逗号分隔,当将PMuranoIMA景逸SUVY
KEY设置在最后时,      
若是最终1列是常规列,则它背后的逗号能够轻松;不然假设是总计列,则此逗号不可能归纳。
ON子句提议存款和储蓄新建表的数据库文件组。当省略该子句或用DEFAULT关键词时,表被确立在数据库的私下认可文件组中。
TEXTIMAGE_ON
子句表达存储新建表中的text、ntext和image列资料的数据库文件组名称。当省略TEXTIMAGE_ON子句时,text、ntext和
image列资料与表存款和储蓄在同三个文书组中。假设表中不包涵text、ntext和image列,则足以大概TEXTIMAGE_ON子句。
<column_definition> ::= { column_name data_type }
[ NULL | NOT NULL ]
[ IDENTITY [(seed, increment ) [NOT FOR REPLICATION] ] ]
[ ROWGUIDCOL ]
[ <column_constraint>] [ …n]
  column_definition
和data_type参数分别证实列名及其数据类型,个中数据类型可以为系统数据类型或用户定义数据类型。对于timestamp数据类型列,列名能够省
略,此时系统用timestamp字符串作为列名。在二个表中只可以有1个timestamp类型列。
NULL和NOT NULL表明列值是不是允许为NULL。在SQL
Server中,NULL既不是0也不是空格,它表示用户还未有为列输入资料大概分明地插入了NULL。假如不采用NULL或NOT
NULL为列设置空值属性时,列空值属性服从以下规则:
?        对于用户定义数据类型,SQL
Server使用该数据类型的空值属性设置;
?       
对于系统数据类型列,当列数据类型为timestamp时,列的空值属性为NOT
NULL。

对于其他数据类型列,其空值属性则由三番五次选项ANSI_NULL_DFLT_ON和数据库选项‘ANSI
null default’决定。
证实:1通过安装连接选项SET ANSI_NULL_DFLT_ON
ON|OFF对列的暗中认可空值属性举行切换;
      贰经过安装数据库选项sp_dboption ‘database’,‘ANSI null
default’,‘true’或sp_dboption ‘database’,‘ANSI null default’,‘false’
对列的暗中同意空值属性举办切换。

IDENTITY关键词内定该列为IDENTITY列。当用户向表中插入新的素材时,系统活动为该行的
IDENTITY列赋值,并保管其值在表中的唯壹性。各类表中只可以有2个IDENTITY列,其列值不可能由用户更新,分歧意空值,也不能关联私下认可值或建立
DEFAULT约束。IDENTITY列常与PMuranoIMA途乐Y
KEY约束共同利用,从而确认保障表中各行具有唯壹标志。
IDENTITY列的数据类型
只可以为int、smallint、tinyint、numeric、decimal等数据类型。当IDENTITY列数据类型为numeric和
decimal时,不容许出现小数字。对于IDENTITY列,可用seed参数和increment参数提议IDENTITY列的基值和列值增量。在建
立新表时,必须同时内定IDENTITY列的基值和增量,或同时省去那多个参数。暗中同意时,seed和increment的值均为1。
表明:①使用首要词IDENTITYCOL能够引用表中的IDENTITY列,而不接纳实际列名。       
                 
   因为每一个表中只有一个IDENTITY列,所以这么操作不会挑起贰义性;
       二 通过运用SQL
Server中所提供的的系统函数IDENT_SEED(‘table_name’)和IDENT_INCR(‘table_name’)能够回到钦定表中IDENTITY列的基值及其增量。
ROWGUIDCOL
关键词表明该列为全局唯1标记列,各样表中只可以有贰个ROWGUIDCOL列,ROWGUIDCOL列的数据类型必须为
uniqueidentifier。ROWGUIDCOL属性不能够活动为列赋值,也不供给列值的唯1性。在INSERT语句中,能够采纳NEWID函数为
ROWGUIDCOL列赋值。
贰.选拔Transact-SQL语句修改资料表
ALTE帕杰罗 TABLE 语句的语法格式为:

图片 116ALTER TABLE table
图片 117{    [ALTER COLUMN column_name
图片 118        {    new_data_type [ (precision[, scale] ) ]
图片 119                    [ NULL | NOT NULL ]
图片 120            | {ADD | DROP} ROWGUIDCOL
图片 121        }
图片 122    ]
图片 123    | ADD
图片 124        {    [ <column_definition> ]
图片 125            |  column_name AS computed_column_expression
图片 126        }[,图片 127n]
图片 128    | [WITH CHECK | WITH NOCHECK] ADD
图片 129        { <table_constraint> }[,图片 130n]
图片 131    | DROP
图片 132        {    [CONSTRAINT] constraint_name
图片 133            | COLUMN column
图片 134        }[,图片 135n]
图片 136    | {CHECK | NOCHECK} CONSTRAINT
图片 137        {ALL | constraint_name[,图片 138n]}
图片 139    | {ENABLE | DISABLE} TRIGGER
图片 140        {ALL | trigger_name[,图片 141n]}
图片 142}
图片 143
图片 144

在确立二个表后,在选拔进程中不时会发觉原本创造的表恐怕存在结构、约束等地点的难题。在那种场所下,假若用贰个新表替换原来的表,将促成表中资料
的散失。使用ALTER
TABLE语句能够在保留表中原始资料的基础上修改表结构,张开、关闭或删除已部分羁绊,或扩展新的牢笼。
其中,table_name参数表达所修改的表名。
WITH CHECK 和WITH
NOCHECK选项表达向表中加多新的或展开表中原有的CHECK约束和FOREIGN
KEY约束时,是或不是对表中已有材质进行约束检查。使用WITH
NOCHECK选项能够禁止对表中已有数据开始展览封锁检查,但该选项对新扩展长的数码无效,新插入的材质务必承受约束检查。
ALTECR-VCOLUMN子句表达修改表中column_name参数所钦命列定义,它能够更动列数据类型和空值设置,加多或删除ROWGUIDCOL属性。但下列项目不可能被更改:
?        text、ntext、image、timestamp列;
?        总结列或用来总括的常规列;
?        复制列;
?       
用于索引列,但一旦这么些列为varchar或varbinary数据类型,能够追加它们的列长度;
?        用在CHECK、FOREIGN KEY、UNIQUE或P汉兰达IMALacrosseY
KEY约束中的列,但借使那一个列为变长列,能够动用ALTER
TABLE语句退换这么些列的概念长度;
?        关联有暗中认可值的列。
运用ALTE大切诺基COLUMN子句修改列数据类型时,new_data_type参数必须符合以下原则:
?        原数据类型必须能够转移为新的数据类型;
?        修改后的数据类型不可能为timestamp;
?        ANSI null default选项是开垦的或被改造列允许空值;
小心:如若表中的对应列原定义为NULL并列中不存在资料时,将此列改变为NOT
      NULL时是同意的。
?        ANSI_PADDING选项是开发的;
?        对于被改变的IDENTITY列,必须怀有实用的IDENTITY数据类型。
ADD子句表明向表中增加新列,新列的定义方法与CREATE
TABLE语句中的一样,包涵列名、数据类型、约束原则等。
留神:在ALTER
TABLE语句中,对于新增的列,必须同意空值,或涉嫌一个暗许值。
      无论此列原定义是不是为NULL或此列中是还是不是留存资料。
DROP { [CONSTRAINT] constraint | COLUMN column
}子句表明从表中删除内定约束或列。1个表中的下列项目不能够被删去:
?        复制列;
?        用于索引列;
?        用于CHECK、FOREIGN KEY、UNIQUE或 P昂科雷IMA凯雷德Y KEY约束中的列;
?        定义有暗中认可值或涉嫌有暗中同意对象的列;
?        关联有平整的列。
      { CHECK | NOCHECK } CONSTRAINT { ALL | constraint
}子句表明打开或关闭表中装有或constraint参数钦赐的FOREIGN
KEY和CHECK约束。当使用NOCHECK
CONSTRAINT关闭约束时,之后所插入到表中的材料不再接受该约束检查。在打开或关闭表中约束时,能够选拔WITH
CHECK或WITH NOCHECK子句对表中的资料实行(或不开始展览)检查。
三.利用Transact-SQL语句删除资料表
  DROP TABLE 语句的语法格式为:
  DROP TABLE table_name
   其中,table_name为待删除表的称呼。

删除3个表时,表之定义和表中的具备数据、以及该表的目录、许可设置、约束、触发器等均被自动删除,与该表相关联的条条框框和默许对象失去与它的关系关系。但是,使用DROP TABLE语句不可能去除SQL Server系统表和被FOREIGN
KEY约束所参照的用户表。

三、约  束 在数据库管理体系中,保险数据库中的资料完整性是尤其重大的。所谓资料完整性,正是指存款和储蓄在数据库中质感的1致性和不利。在SQL
Server中,可以通过各样束缚和暗中同意、规则、触发器等材料对象来有限支撑材质的完整性。个中约束包含以下三种:
?        PHighlanderIMAKoleosY KEY:主键约束;
?        FOREIGN KEY:外键约束;
?        UNIQUE:     唯一约束;
?        CHECK:                 检查约束;
?        DEFAULT:    暗中同意值约束。

在SQL
Server中,依据完整性措施所效力的数据库对象和限量不1,可将它们分门别类为以下两种:
?        实体完整性;
?        域完整性;
?        参照完整性;
一.        实体完整性
实业完整性把表中的每行看作一个实体,它要求具有行都具备唯1标记。在SQL
Server中,可以由此确立PAXC60MA奥德赛Y
KEY约束、UNIQUE约束,以及列的IDENTITY属性等方法来举行实体完整性。
2.        域完整性
域完整性供给表中钦赐列的素材有所正确的数据类型、格式和实惠的资料范围。域完整性通过暗中认可值、FOREIGN
KEY、CHECK等自律,以及暗中同意、规则等数据库对象来落成。
三.        参照完整性
参考完整性维持被参照表和参照表之间的质地1致性,它通过主键(P哈弗IMAEvoqueY
KEY)约束和外键(FOREIGN
KEY)约束来促成。在被参照表中,当其主键被其余表所参照时,该行无法被剔除,也不容许更改。在参考表中,区别意参照不存在的主键值。

网站地图xml地图