




已阅读5页,还剩77页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章 sql server 2000数据库操作,8.1 数据库的创建、修改和删除 8.2 表操作,8.1 数据库的创建、修改和删除 8.1.1 数据库的构成 1. 数据库文件的构成 sql server 2000用文件来存放数据库,数据库文件有三类。 (1)主数据库文件(primary):存放数据,每个数据库都必须有一个主数据文件。 (2)其他数据文件(secondary):存放数据,一个数据库可以没有也可以有多个secondary文件。 (3)事务日志文件(transaction log):存放事务日志,每个数据库必须有一个或多个日志文件。,文件组允许多个数据库文件组成一个组,并对它们整体进行管理。比如,可以将三个数据文件(data1.mdf、data2.mdf和data3.mdf)分别创建在三个盘上,这三个文件组成文件组fgroup1,在创建表的时候,就可以指定一个表创建在文件组fgroup1上。这样该表的数据就可以分布在三个盘上,在对该表执行查询时,可以并行操作,大大提高了查询效率。 sql server的数据库文件和文件组必须遵循以下规则: (1)一个文件和文件组只能被一个数据库使用。 (2)一个文件只能属于一个文件组。 (3)数据和事务日志不能共存于同一文件或文件组上。 (4)日志文件不能属于文件组。,2. 数据库对象的构成 sql server 2000数据库中的数据在逻辑上被组织成一系列对象,当一个用户连接到数据库后,他所看到的是这些逻辑对象,而不是物理的数据库文件。 sql server 2000中有以下数据库对象:表(table)、视图(view)、存储过程 (stored procedures)、触发器(triggers)、用户自定义数据类型(user-defined data types)、用户自定义函数(user-defined functions)、索引(indexes)、规则(constraints)、默认值(defaults)等。 在创建任何数据库之前,打开企业管理器的“服务器/数据库”目录,可以看到系统中已经有了6个数据库。如图8.1所示。,图8.1 sql server 2000中的系统数据库和示例数据库 其中,有4个是sql server 2000的系统数据库,它们分别是:master数据库、tempdb数据库、model数据库和msdb数据库。,(1)master数据库 master数据库记录了sql server系统级的信息,包括系统中所有的登录账号、系统配置信息、所有数据库的信息、所有用户数据库的主文件地址等。每个数据库都有属于自己的一组系统表,记录了每个数据库各自的系统信息,这些表在创建数据库时自动产生。为了与用户创建的表相区别,这些表被称为系统表,表名都以“sys”开头。 master数据库中还有很多系统存储过程和扩展存储过程。系统存储过程是预先编译好的程序,所有的系统存储过程的名字都以sp_开头。 (2)tempdb数据库 tempdb 数据库用于存放所有连接到系统的用户临时表和临时存储过程以及sql server产生的其他临时性的对象。tempdb是sql server中负担最重的数据库,因为几乎所有的查询都可能需要使用它。 在sql server 关闭时,tempdb数据库中的所有对象都被删除,每次启动sql server时,tempdb数据库里面总是空的。,(3)model数据库 model数据库是系统所有数据库的模板,这个数据库相当于一个模子,所有在系统中创建的新数据库的内容,在刚创建时都和model数据库完全一样。 如果sql server专门用作一类应用,而这类应用都需要某个表,甚至在这个表中都要包括同样的数据,那么就可以在model数据库中创建这样的表,并向表中添加那些公共的数据,以后每一个新创建的数据库中都会自动包含这个表和这些数据。当然,也可以向model数据库中增加其他数据库对象,这些对象都能被以后创建的数据库所继承。 (4)msdb数据库 msdb 数据库被sql server代理(sql server agent)来安排报警、作业,并记录操作员。,sql server在安装时自动创建了另外两个数据库:pubs和northwind,它们是sql server的示例数据库,示例数据库是让读者作为学习工具使用的。 8.1.2 创建数据库 创建数据库需要一定许可,在默认情况下,只有系统 管理员和数据库拥有者可以创建数据库。数据库被创建后,创建数据库的用户自动成为该数据库的所有者。 创建数据库的过程实际上就是为数据库设计名称、设计所占用的存储空间和存放文件位置的过程等。 用户既可以使用企业管理器创建数据库,也可以使用transact-sql语言创建数据库, 分别用两种方法在sql server中建立第11章开发实例中的图书销售系统的数据库,该库中包含了6个表。,1使用企业管理器新建数据库 第一步:启动sql server 企业管理器(enterprise manager),单击服务器旁的加号(+),其中便包含了已有的数据库。 第二步:在“数据库”文件夹上单击鼠标的右键,选择“新建数据库”菜单选项,如图8.2所示。 图8.2 用企业管理器新建一个数据库,单击该菜单项,系统会显示“数据库属性”对话框,如图8.3所示。 图8.3 数据库属性的设置,第三步:选择“常规”标签(如图8.3,该标签在初始时已默认被选中),在名称的文本输入一个数据库名,我们这里输入的是“图书销售系统”(即是创建后的数据库名)。 第四步:在“数据文件”对话框的数据库文件部分,输入文件名、位置、初始大小和文件组信息(一般按照默认的设置即可)。 第五步:如果你想使sql server能够自动地按需要增加数据库文件的大小,就应该选择“文件自动增长”选项,否则则不选取。 第六步:在“事务日志”标签中的“事务日志文件”对话框部分,可以输入文件名、位置及服务日志的初始大小。而日志的大小也可能通过“文件自动增长”选项来设置是否能按需要来增加日志文件的大小。 第七步:单击“确定”以完成创建数据库。 以上的第四步至第六步均可按系统原来的默认设置来进行。,2使用sql语句创建数据库 在sql中,用于创建数据库的是create database语句,要使用大量的选项,并且必须在查询分析器中执行。 其命令格式为: create database database_name on primary ,n , ,n log on ,n for load|for attach :=(name=logical_file_name, filename=os_file_name ,size=size ,maxsize=max_size|unlimited ,filegrowth=growth_increment ) ,n :=filegroup filegroup_name ,n,其中的参数说明如下: database_name:新数据库的名称。数据库名称在服务器中必须唯一,最长为128个字符,并且要符合标识符的命名规则。每个服务器管理的数据库最多为32767个。 on:指定存放数据库的数据文件信息。 primary:用于指定主文件组中的文件。主文件组的第一个由指定的文件是主文件。如果不指定primary关键字,则在命令中列出的第一个文件将被默认为主文件。 列表用于定义主文件组的数据文件, 列表用于定义用户文件组及其中的文件。 log on:指明事务日志文件的明确定义。如果没有本选项,则系统会自动产生一个文件名前缀与数据库名相同,容量为所有数据库文件大小1/4的事务日志文件。 for load:表示计划将备份直接装入新建的数据库,主要是为了和过去的sql server版本兼容。 for attach:表示在一组已经存在的操作系统文件中建立一个新的数据库。,name:指定数据库的逻辑名称。 filename:指定数据库所在文件的操作系统文件名称和路径,该操作系统文件名和name的逻辑名称一一对应。 size:指定数据库的初始容量大小。如果没有指定主文件的大小,则sql server默认其与模板数据库中的主文件大小一致,其它数据库文件和事务日志文件则默认为1mb。指定大小的数字size可以使用kb、mb、gb和tb后缀,默认的后缀为mb。size中不能使用小数,其最小值为512kb,默认值为1mb。 主文件的size不能小于模板数据库中的主文件。 maxsize:指定操作系统文件可以增长到的最大尺寸。如果没有指定,则文件可以不断增长直到充满磁盘。 filegrowth:指定文件每次增加容量的大小,当指定数据为0时,表示文件不增长。增加量可以确定为以kb、mb作后缀的字节数或以%作后缀的被增加容量文件的百分比来表示。默认后缀为mb。如果没有指定filegrowth,则默认值为10%,每次扩容的最小值为64kb。,【例8.1】 使用create database创建一个test数据库,所有参数均取默认值。 create database test 此语句表示在默认的位置(d:program filesmicrosoft sql servermssqldata)创建数据库的主文件test.mdf和事务文件test_log.ldf,数据文件和日志文件的初始大小为1mb,增长方式为自动增长,每次增加10%,最大大小为无限制。 【例8.2】 创建一个test1数据库,该数据库的主文件逻辑名称为test1_data,物理文件名为test1.mdf,初始大小为10mb,最大尺寸为无限大,增长速度为10%;数据库的日志文件逻辑名称为test1_log,物理文件名为test1.ldf,初始大小为1mb,最大尺寸为5mb,增长速度为1mb。,create database test1 on ( name = test1_data, filename = d:program filesmicrosoft sql servermssqldata test1.mdf, size = 10, maxsize= unlimited, filegrowth = 10% ) log on ( name =test1_log, filename = d:program filesmicrosoft sql servermssqldata test1.ldf, size = 1,要执行这个语句,首先必须运行查询执行器,在输入该语句,如图8.4所示。 图8.4 利用查询分析器来创建数据库,接着,打开“查询”菜单选择“执行”项单击,便可建立一个新的数据库test1。如图8.5所示。 图8.5 新创建的数据库,8.1.3 修改数据库 修改数据库与创建数据库一样,也可以用两种方法,一是使用企业管理器来修改,另一种方法是在使用sql语句来实现。 1用企业管理器修改数据库 使用企业管理器中的数据库属性对话框可以很方便地修改数据库。一个已存在的数据库的属性对话框包括6个选项卡。 (1)增减数据文件和日志文件 用户可以使用“数据文件”选项卡增减数据文件和修改数据文件属性。在对话框中,为test数据库增加一个文件d:program filesmicrosoft sql servermssqldata test_data1.ndf,初始大小为5mb,最大为50mb,每次自动增长1mb。 用户可以使用“事务日志”选项卡增减日志文件和修改日志文件属性,具体的做法与对数据文件的操作相同,如图8.6所示。,图8.6 增加test数据库的数据文件,2)修改数据库选项 使用数据库属性对话框的“选项”选项卡可以修改一些数据库选项,只需用鼠标单击这些复选框,就可以非常容易地更改当前数据库的选项。勾选的就是真,表示选定,否则就是假,表示没有选定。如图8.7所示。 图8.7 使用“选项”选项卡修改数据库,比较常用的数据库选项如下: 限制访问:只允许特殊用户访问数据库。如上图所示,限制访问有两种类型: l 只允许db_owner、dbcreator和sysadmin的成员访问。 l 设置数据库为单用户模式。如果设置为单用户模式之前已有 用户在使用该数据库,那么这些用户可以继续使用,但新的用户必须等到所有用户都退出之后才能登录。 只读:数据库中的数据只能读取,而不能修改。 自动关闭:用于指定数据库在没有用户访问并且所有进程结束时自动关闭,释放所有资源,当又有新的用户要求连接时,数据库自动打开。数据库自动关闭后,数据文件可以像普通文件一样处理(例如拷贝或作为电子邮件的附件发送),所以这个选项很适合移动用户,而对于网络应用数据库,则最好不要设置这个选项,因为频繁地关闭和重新打开会对数据库性能造成极大的影响。 自动缩减:当数据或日志量较少时自动缩小数据库文件的大小,当设置了只读时,这个选项无效。,2使用sql语句修改数据库 只有数据库管理员或具有create database权限的数据库所有者才有权执行该语句。 alter database语句的语法格式如下: alter database databasename add file,n to filegroup filegroupname |add log file ,n |remove file logical_file_name |remove filegroup filegroup_name |modify file |modify name=new_databasename |add filegroup filegroup_name |modify filegroup filegroup_name filegroup_property|name=new_filegroup_name,其中的参数说明如下: add file,n to filegroup filegroupname:表示向指定的文件组中添加新的数据文件。 add log file ,n:增加新的日志文件。 remove file logical_file_name:删除指定的操作系统文件。 remove filegroup filegroup_name:删除指定的文件组。 modify file :修改某个操作系统文件。,【例8.3】 用alter database语句增减数据文件和日志文件。 alter database test add file ( name =test_data2, filename=d:program filesmicrosoft sql servermssqldatatest_data2.ndf size=5mb, maxsize=50mb, filegrowth=1mb ) 其中add file 是指增加一个数据文件,还可以是add log file、remove file、modify file 等,分别代表增加日志文件、删除数据库文件和修改文件信息。,8.1.4 删除数据库 1利用企业管理器删除数据库 在企业管理器中删除数据库只需找到容纳数据库的服务器,展开数据库上的数据库节点,用鼠标右键单击要删除的数据库,在弹出的快捷菜单中选择“删除”命令单击即可。 2使用sql语句删除数据库 使用sql语句删除数据库需要使用drop database语句。 其命令格式为: drop database database_name,n 【说明】 当数据库处于以下三种情况之一时,不能被删除。 (1)用户使用此数据库时。 (2)数据库正在被恢复(restore)时。 (3)数据库正在参与复制时。,系统数据库中的master、model和tempdb都不能被删除,msdb虽然可以被删除,但删除msdb后很多服务(比如sql server 代理服务)将无法使用,因为这些服务在运行时会用到msdb。 在查询分析器中执行drop database语句可以一次删除多个数据库。 例如:用drop database语句删除test,test1数据库 drop database test , test1,8.2 表操作 8.2.1 表的概念 在sql server数据库中,表是包含数据库中所有数据的数据库对象,用来存储各种各样的信息。 表是由行和列组成的,创建表的过程主要就是定义表的列的过程,包括定义列的名称、数据类型、约束等。数据类型我们在第7章已经介绍过,而列的约束是sql server提供的自动保持数据库完整性的一种方法,确定了可输入表或表的单个列中的数据的限制条件。有5种约束,包括主关键字约束、外关键字约束、惟一性约束、检查性约束和默认约束。 在sql server 2000中,一个数据库中最多可以创建200万个表,用户创建数据库表时,最多可以定义1024列。在同一数据库的不同表中,可以有相同的字段,但在同一个表中不允许有相同的字段,而且每个字段都要求数据类型相同。,8.2.2 创建表 在sql server 2000中,创建表有两种方法,可以利用企业管理器和sql语句来创建表。 我们以前面新建的数据库 “图书销售系统” 中的图书基本资料bookrecord表为例,创建新表,可分别使用这两种方法。 1利用企业管理器创建表 步骤如下: 第一步:打开“数据库”文件夹,在新建的“图书销售系统”数据库图点上单击鼠标右键,选择 “新建” - “表”菜单项。如图8.8所示。,图8.8 创建数据表,第二步:单击该菜单项,便出现表设计器,在表设计器(如图8.9所示)中设置该表的字段属性。 设计器的上半部分有一个表格,在这个表格中输入列的属性,表格的每一行对应一列。对每一列都需要进行以下设置,其中前三项是必须在建表时给出的,它们是: (1)列名 图8.9 表设计器,(2)数据类型:数据类型是一个下拉列表框,其中包括了所有的系统数据类型和数据库中的用户自定义数据类型。 (3)长度:如果选择的数据类型需要长度,则指定长度。 (4)允许空:单击鼠标,可以切换是否允许为空值的状态,勾选说明允许为空值,空白说明不允许为空值,默认状态下是允许为空值的。 表设计器的下半部分是特定列的详细属性,包括是否是标识列、是否使用默认值等。逐个定义好表中的列,如图8.10所示。,图8.10 创建表结构,第三步:定义好所有列后,单击工具栏上的保存按扭,在弹出的“选择”名称对话框的文本输入框中输入要创建的数据表名 bookrecord,然后单击确定,保存设置并退出,新表即创建完成,如图8.11所示。 图8.11 保存新建表,2用-sql语句创建表 用“create table表名”来创建表,表中列的定义必须有括号括起来。 下面将使用create table语句来创建“图书销售系统”数据 库中的另两个表:inrecord表和salesdetail表。 【例8.4】 创建inrecord表。 use 图书销售系统 go create table inrecord (sn int , account char (10), bookno char(30), bookname char(200), quantity int, inprice money, salesprice money ),【例8.5】 创建salesdetail表。salesdetail表用来记录图书销售的信息,创建该表的代码如下: use 图书销售系统 go create table salesdetail (sn int , account char (10), bookno char(30), bookname char(200), salesprice money, quantity int, discount decimal, ) 上面的代码创建了一个包含7列的salesdetai 表,该表记录了已销售图书的流水号、操作员帐号、书号、书名、单价、数量、折扣等信息。,数据表创建完成后,需要了解表结构也可以使用下列两种方法来查看。 1用企业管理器查看表结构 找到要查看的表所在的数据库,选中表,右边的窗口中就会显示这一数据库中所有的表,对于每个表,都会显示它的所有者、类型和创建时间,如图8.12所示。 在列表中选择一个表,单击鼠标右键打开快捷菜单,选择属性命令,可以查看表中每一列的定义,如图8.13所示。 2使用sql语句显示表结构 在sp_help后面加上要查看的表名作为参数就可查看表结构。包括表的所有者、类型(系统表还是用户表)、创建时间、表上每一列的名称、数据类型、表上定义的索引以及约束等。,图8.12 查看图书销售库中的所有表,图8.13 使用企业管理器查看bookrecord表的结构,【例8.6】 use 图书销售系统 go exec sp_help bookrecord 使用查询分析器执行这一语句的结果如图8.14所示。 图8.14 使用查询分析器查看bookrecord 表的结构,【例8.7】 use 图书销售系统 go sp_help 执行结果如图8.15所示。 图8.15 图书销售库的所有对象,8.2.3 修改表 创建完一个表以后,难免要对表进行修改。可以使用企业管理器或sql语句对表进行修改。 1使用企业管理器修改表 使用企业管理器来修改表,可以用鼠标右键单击要修改的表,在弹出的快捷菜单中选择“设计表”命令。 单击“设计表”命令,将弹出如图8.16所示的表设计器,此时可以像新建表时一样,向表中加入或从表中删除列或修改列的属性,修改完毕后单击“保存”按扭即可。图8.16显示了如何向bookrecord表中加入一个新列inprice。,图8.16 向bookrecord表中加入一列 选中某一列,按右键选择“删除列”命令,则可删除某一列。用和建表时相似的方法可以对列值进行修改。,2使用sql语句修改表 在sql中可以使用alter table来修改表,对已有的表添加列、删除列及修改列定义。 (1)添加列 向表中增加一列时,应使新增加的列有默认值或允许为空值,sql server将向表中已存在的行填充新增列的默认值或空值,如果既没有提供默认值也不允许为空值,那么新增列的操作将出错。 向表中添加列的语句格式如下: alter table表名 add列名 列的描述,【例8.8】 向bookrecord表中添加入库价(inprice)列。 use 图书销售系统 go alter table bookrecord add inprice money (2)删除列 如果某一列不再需要,可将其删除,但有下列情况不可删除: 该表正在复制 用在索引中的列 用在check、foreign key unique或primary key 约束中的列。 与default定义关联或绑定到某一默认对象。 绑定到规则的列。 已注册为全文本支持。 用作表的全文键。 删除一列的语句格式为: alter table表名 drop column列名,【例8.9】 删除 bookrecord表中的入库价(inprice)列。 use 图书销售系统 go alter table bookrecord drop column inprice,3修改列定义 表中的每一列都有一组属性,如列名、数据类型、数据长度以及是否允许为空值等,列的所有属性构成列的定义,这些属性都可以在表创建好以后修改。 修改列定义的语句格式为: alter table 表名 alter column 列名 列的描述 【例8.10】 将bookrecord表的author 列的长度改为40。 use 图书销售系统 go alter table bookrecord alter column author char(40) l 默认状态下,列是被设置为允许空值的,将一个原来允许空值的列改为不允许空值,必须在以下两个条件满足时才能成功: (1)列中没有存放是空值的记录 (2)在列上没有创建索引。,8.2.4 删除表 1用企业管理器删除表 (1)使用企业管理器删除一个表非常简单,只需找到要删除的表,按右键,在弹出的快捷菜单中选择“删除”命令。 (2)在打开的如图8.17所示的“除去对象”对话框中,单击“全部除去”按钮。 图8.17 除去对象,2使用sql语句删除表 drop table语句可以用来删除表。其语法为: drop table 表名 【注意】 drop table语句不能用来删除系统表。 【例8.11】 删除图书销售系统库中的inrecord表。 use 图书销售系统 go drop table inrecord,8.2.5 表数据操作 1将新增的数据添加到表中 使用insert语句可以将需增加的数据添加到一行的所有列或部分列中。 insert语句的基本语法为: insert into 表名 (列名) values(表达式) (1)添加数据到一行中的所有列 当将数据添加到一行的所有列时,使用values关键字来给出要添加的数据。insert语句中无需给出表中的列名,只要values中给出的数据与用create table定义表时给定的列名顺序相同即可。,【例8.12】 向bookrecord表中添加一条记录。 use 图书销售系统 go insert into bookrecord values(9787000000002,c+游戏编程,广西科技大学出版社,李华,25.0, 660 ,9.0) 在查询分析器中执行,返回的结果为: (所影响的行数为 1 行) 需要注意的是: (1)输入的顺序和数据类型必须与表中列的顺序和数据类型一致。 (2)可以不给全部列赋值,但没有赋值的列必须是可以为空的列。 (3)字符型和日期型值插入时要用单引号扩起来。,2添加数据到一行中的部分列 要将数据添加到一行中的部分列时,则需要同时给出要使用的列名以及要赋给这些列的数据。 【例8.13】 向bookrecord表中添加一条记录,只添加书号、书名两列。 use 图书销售系统 go insert into bookrecord (bookno, bookname) values(9787000000215,数据库原理与应用) 在查询分析器中执行,返回的结果为: (所影响的行数为 1 行) 对于这种添加部分列的操作,在添加数据前应确认未在values列表中出现的列允许不允许为null;只有允许为null的列,才可以不出现在values列表中,3更改表中的现有数据 (1)使用update语句修改数据 语法格式为: update 表名 set 列名=表达式 where 条件 【例8.14】 将bookrecord所有图书的折扣都改为9折。 use图书销售系统 go update bookrecord set discount =9.0 因为没有使用where子句,所以对折扣的修改影响到表中的每一行。,【例815】 将书号为9787000000215的单价改为30元。 use图书销售系统 go update bookrecord set salesprice =30.0 where bookno = 9787000000215 只有满足where子句中条件的行被修改。,4删除表中的无用的数据 (1)使用delete语句 使用t-sql中的delete语句可以删除数据表中的一个或多个记录。 delete语句最简单的形式如下: delete 表名 where 条件 其中,表名是要删除数据的表的名字。如果delete语句中没有where子句限制,表中的所有记录都将被删除。 【例8.16】 删除表bookrecord的书号为9787000000215记录。 use图书销售系统 go delete bookrecord where bookno = 9787000000215,(2)使用truncate table语句 truncate table语句提供了一种删除表中所有记录的快速方法,因为truncate table语句不记录日志,只记录整个数据页的释放操作,而delete语句对每一行修改都记录日志,所以truncate table语句总比没有指定条件的delete语句快。 例如:删除所有inrecord记录。 truncate table inrecord 因为truncate table操作是不进行日志记录的,所以建议在truncate table语句之前用先对数据库作备份。 此外,使用企业管理器可以对一个表进行查看、修改,方法如下: (1)在企业管理器树型目录中找到存放表的数据库。 (2)展开数据库,选中表。 (3)在右边窗口的列表中用鼠标右键单击要查询的表,在其弹出的快捷菜单中选择打开表,在该菜单下有三个子菜单,如图8.18所示。,图8.18 在企业管理器中查看表,(4)选择“返回所有行”,打开的窗口如图8.19所示;选择“返回首行”,则打开如图8.20所示的对话框,让用户输入n的值,然后显示前n行。 图8.19 显示表中所有行 图8.20 指定返回数据行的数目,8.2.6 约束、索引 1.表的约束 约束是sql server提供的自动保持数据库完整性的一种方法,定义了可输入的表或表的单个列中的数据的限制条件。在sql server中有5种约束:主关键字约束、外关键字约束、惟一性约束、检查约束和默认约束。下面分别以前面的图书销售系统库的图书基本资料表bookrecord、图书入库表inrecord和帐号表operator为例,介绍在定义表时声明数据完整性的实现方法。,(1) 主关键字约束 主关键字约束(primary key)指定表的一列或几列的组合的值在表中具有惟一性,即能惟一地指定一行记录。每个表中只能有一列被指定为主关键字,该列不能有重复的值,且image和text类型的列不能被指定为主关键字,也不允许指定主关键字列有null属性。添加主关键字约束的语法格式为: alt table 表名 add constraint 约束名 primary key (,n),【例8.17】 分别为 图书基本资料表和图书入库表添加主关键字约束 alt table bookrecord add constraint pk_br primary key (bookno) alt table inrecord add constraint pk_ir primary key (sn), 外关键字约束 外关键字约束(foreign key)定义了表之间的关系。当一个表中的一个列或多个列的组合和其他表中的主关键字定义相同时,就可以将这些列或列的组合定义为外关键字,并设定它适合哪个表中哪些地列相关联。这样,当在定义主关键字约束的表中更新列值时,其他隔开有与之的外关键约束的表中的外关键字列也将被相应地做相同的更新。 外关键字约束的作用还体现在当向含有外关键字的表插入数据时,如果与之相关联的表的列中无与插入的外关键字列值相同的,值时系统会拒绝插入数据。,外关键字约束的作用还体现在当向含有外关键字的表插入数据时,如果与之相关联的表的列中无与插入的外关键字列值相同的,值时系统会拒绝插入数据。个列组成。 添加外关键字约束的语法格式为: alt table 表名 add constraint 约束名 foreign key () feferences 引用表名() 【例8.18】 为图书入库表的“bookno”添加外关键字约束,此列引用图书基本资料表的“bookno”列 alt table inrecord add constraint fk_ir foreign key (bookno) feferences bookrecord (bookno),(3)惟一性约束 惟一性约束(unique)指定一个或多个列的组合的值具有惟一性,以防止在列中输入重复的值。惟一性约束指定的列可以有null属性。由于主关键字值是具有惟一性的,因此主关键字列不能再设定惟一性约束。最多由16个列组成。在一个已有主码的表中使用惟一性约束是很有用的。 添加惟一性约束的语法格式为: alt table 表名 add constraint 约束名 unique (,n) 【例8.19】 为帐号表的“password”列添加惟一性约束 alt table operator add constraint uid_ir unique (password) ,n),(4)检查约束 检查约束(check)对输入列或整个表中的值设置检查条件,以限制输入值,保证数据库的数据完整性,可以对每个列设置符合检查,还可以约束同一表中多个列之间的取值关系。 添加检查约束的语法格式为: alt table 表名 add constraint 约束名 check (逻辑表达式) 【例8.20】 在图书基本资料表中,添加限制库存量必须大于0的检查约束 alt table bookrecord add constraint chk_bk1 check (quantity 0),(5)黙认约束 黙认约束(default)通过定义列的默认值或使用数据库存的黙认值对象绑定表的列,来指定列的默认值,sql server推荐使用默认约束,而不使用定义黙认值的方式来指定列的默认值。 添加黙认约束的语法格式为: alt table 表名 add constraint 约束名 default 默认值 for 列名,2. 索引的创建与删除 数据库中的索引是一个列表,在这个列表中包含了某个表中一列或者若干列值的集合,以及这些值的记录在数据表中的存储位置的物理地址。 (1) 使用企业管理器创建索引 在企业管理器中,展开指定的服务器和数据库,选择要创建索引的表,从弹出的快捷菜单中依次选择“所有任务|管理索引”选项。 单击该菜单项,出现管理索引对话框。 在管理索引对话框中。首先要选择相应的数据库和要创
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 济宁市2024-2025学年九年级上学期语文期中测试试卷
- 集安市2024-2025学年七年级上学期语文月考模拟试卷
- 高速概论基本知识培训课件
- 电表用电安全知识培训课件
- ps操作考试及答案
- mvr考试试题及答案
- 电缆培训知识课件
- G合同工程完工验收鉴定书
- 北京护理编制考试题库及答案
- 高炉安全知识培训课件
- 光对绿豆发芽影响试验报告
- 土力学与地基基础(课件)
- 公众责任保险附加电梯责任保险
- 儿童智能玩具调研报告
- 广州知识产权法院民事判决书
- 应急信息报送制度
- 铁道车辆构造与检修高职PPT完整全套教学课件
- 铜矿石买卖合同(标准版)
- 浙人美2011版四年级美术上册《水资源》教案及教学反思
- 西餐烹调工艺与实训PPT全套完整教学课件
- 2023年高等教育文学类自考-03297企业文化考试参考题库(含答案)
评论
0/150
提交评论