已阅读5页,还剩67页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章 数据库的创建与管理,逯燕玲 戴红 李志明 主编,2019年9月20日星期五,2,第5章 数据库的创建与管理,5.1 数据库的创建与管理 5.2 数据库的管理 5.3 表的创建 5.4 表结构的修改 5.5 表的数据操作 5.6 删除表 5.7 数据库的完整性设计 5.8 创建数据库关系图,2019年9月20日星期五,3,5.1 数据库的创建与管理,5.1.1 数据库的存储结构 SQL Server 2000用文件来存储数据库,数据库文件有3类。 主数据文件(Primary):存放数据。每个数据库都必须有且仅有一个主数据文件,以.mdf为默认扩展名。该文件包含的系统表格记载数据库中对象及其他文件的位置信息。 次要数据文件(Secondary):存放数据,以.ndf为默认扩展名,可有可无,主要在一个数据库跨多个硬盘驱动器时使用。 事务日志文件(Transaction Log):存放事务日志。每个数据库必须有一个或多个日志文件,以.ldf为默认扩展名,记录数据库中已发生的所有修改和执行每次修改的事务。,2019年9月20日星期五,4,常见数据库对象,表Table 由行(Row)、列(Column)组成的表格。每列为一个字段,列标题为字段名,一行数据称为一条记录,一个数据库表由一条或多条记录组成,没有记录的表称为空表,每个表中通常都有一个主关键字,用于惟一地确定一条记录。 索引Index 根据指定的表列建立起来的顺序,提供了快速访问数据的途径并且可使索引所指列中的数据不重复。,2019年9月20日星期五,5,视图View 虚拟表。在数据库中并不存在,由查询表产生,限制用户能看到和修改的数据。 默认值Default 在表中创建或插入数据时,对未指定具体值的列或数据项赋予事先设定好的值。 规则Rule 对数据库表中数据信息的限制,2019年9月20日星期五,6,触发器Trigger 用户定义的SQL事务命令的集合,对一个表进行增删改时这组命令就会自动执行。 存储过程Stored Procedure 为完成特定的功能而汇集在一起的一组SQL程序语句,经编译后存储在数据库中。 用户User 有权限访问数据库的人,2019年9月20日星期五,7,SQL Server的命名规则,标识符 服务器、数据库、数据库对象(表、视图、列、索引、触发器、存储过程、规则、默认值、约束等)的名字。 分类 规则标识符(Regular Identifier) 严格遵守标识符格式定义 不必使用定界符号 界定标识符(Delimited Identifier) 使用了如和等定界符号来进行位置限定的标识符。使用了界定标识符,既可以遵守标识符命名规则,也可以不遵守。 没有使用界定符号的标识符一定按照规则标识符对待。,2019年9月20日星期五,8,标识符的格式 标识符的首字母:26个英文字母(大小写)、其它语言字符(如汉字)、下划线(_)、#。 标识符首字母后字符: 26个英文字母(大小写)、其它语言字符(如汉字)、下划线(_)、#、$、0-9 不允许为T-SQL的保留字,不允许有空格或特殊字符。 举例 Create table aa (cllint) -服务器: 消息 170,级别 15,状态 1,行 1 -第 1 行: 附近有语法错误。 Create table aa (cllint) -命令已成功完成,2019年9月20日星期五,9,文件组允许用户将多个数据库文件组织在一起,以便用户对它们进行整体管理。 文件组有3种类型 主文件组(primary):包含主数据文件和任何没有明确指派给其他文件组的其他文件。当用户创建一个数据库时,SQL Server会自动创建系统表。 用户定义文件组:包括所有用户创建或者更改数据库的文件组,是在 DATABASE 或 ALTER DATABASE 语句中使用 FILEGROUP 关键字指定的文件组。 默认文件组(default):用来存放任何没有指定文件组的对象,保存所有的页,其中包含表和索引,这些表和索引在创建时没有被特定的文件指定。,文件组,2019年9月20日星期五,10,关于默认文件组,每个数据库都有一个文件组作为默认文件组运行。 一次只能有一个文件组作为默认文件组 如果没有指定默认文件组,则主文件组是默认文件组。,2019年9月20日星期五,11,文件和文件组不能被多个数据库使用。 一个文件可以是文件组的一个成员。 数据和事务日志信息不能是同一文件的同一部分,日志空间在数据空间中被分别管理。 事务日志文件永远不是文件组的一部分。 一旦一个文件作为数据库的一部分被创建,就不能被移动到另外一个文件组中。如果用户希望移动文件,必须删除然后在另一个文件组中重新创建。,规则,2019年9月20日星期五,12,5.1.2 系统数据库,master数据库 记录了SQL Server系统级的信息,包括系统中所有的登录账号、系统配置信息、所有数据库的信息、所有用户数据库的主文件地址等。系统表的表名常以“sys”开头。 常用的master系统表,2019年9月20日星期五,13,tempdb数据库 用于存放所有连接到系统的用户的临时表和临时存储过程,以及SQL Server产生的其他临时性的对象。 tempdb数据库的数据是暂时的,不是永久存储的。 Tempdb数据库默认大小是8MB,但不够时,系统可根据需要扩展。 model数据库,是系统所有数据库的模板。 在SQL Server安装完成后,model数据库就已经有了19个表以及一些视图和存储过程。,2019年9月20日星期五,14,常用的数据库系统表:,2019年9月20日星期五,15,msdb数据库,是SQL Server 2000代理服务使用的数据库。 pubs和northwind数据库是SQL Server的示例数据库,是作为学习工具使用的。,2019年9月20日星期五,16,5.1.3 估算数据库的空间需求,在创建数据库前需估算所建数据库的大小及增幅,定义一个恰当大小的数据库。 计算依据为:数据库的最小尺寸必须等于或大于model数据库的大小。默认情况下,事务日志文件的大小是数据库文件大小的25%。 【例5-1】假设某个数据库中只有一个表,该表的每行记录是500字节,共有10000行数据。 该数据库的大小估计为 (6258KB)10245MB。,2019年9月20日星期五,17,5.1.4 使用企业管理器创建数据库,【例5-2】创建“学生学籍数据库”,要求:初始大小为5MB,最大为50MB,数据库自动增长,增长方式以10%比例增长;日志文件初始大小为2MB,可按1MB增长,最大可为5MB;所有者是Administrator。 (1)启动SQL Server企业管理器。在“程序”中选择“Microsoft SQL Server”“企业管理器” (2)在打开的企业管理器窗口中展开Microsoft SQL Servers和SQL Server组,选择SQL Server服务器,在选择的SQL Server服务器上单击右键,出现快捷菜单,选择“新建”“数据库”。 (3)在出现的 “数据库属性”对话框中 “常规”标签栏的“名称”文本框中输入欲创建的数据库名。,2019年9月20日星期五,18,(1)启动SQL Server企业管理器。在“程序”中选择“Microsoft SQL Server”“企业管理器” (2)在打开的企业管理器窗口中展开Microsoft SQL Servers和SQL Server组,选择SQL Server服务器,在选择的SQL Server服务器上单击右键,出现快捷菜单,选择“新建”“数据库”。 (3)在出现的 “数据库属性”对话框中 “常规”标签栏的“名称”文本框中输入欲创建的数据库名。 (4)选择“数据文件”标签栏,在文件名为“Students_Data”的“初始大小”列将系统默认大小1改为5,设置允许数据库增长,增长方式为10%,最大文件大小为50。 (5)选择“事务日志”标签栏,在文件名为“Students_Log”的“初始大小”列将系统默认大小1改为2,设置允许日志文件增长,增长方式为1字节,最大文件大小为5。 (6)单击“确定”按钮,学生学籍数据库(students)就创建好了。,2019年9月20日星期五,19,5.1.5 使用向导创建数据库,(1)启动SQL Server企业管理器,在企业管理器窗口中展开Microsoft SQL Servers和SQL Server组,选择SQL Server服务器。 (2)在“工具”菜单中选择“向导”命令,出现 “选择向导”对话框,展开“数据库”,选择“创建数据库向导”,单击“确定”。 (3)在出现的“创建数据库向导”界面中单击“下一步”按钮,输入数据库名,输入或选择数据文件和日志文件的存放位置,单击“下一步”按钮。 (4)在出现的对话框中指定各数据文件的名称及初始大小,单击“下一步”按钮。,2019年9月20日星期五,20,(4)在出现的对话框中指定各数据文件的名称及初始大小,单击“下一步”按钮。 (5)从出现的对话框中设置数据库文件的增长,单击“下一步”按钮。 (6)从出现的对话框中指定日志文件的名称及初始大小,单击“下一步”按钮。 (7)从出现的对话框中设置日志文件的增长,单击“下一步”按钮。 (8)单击“完成”按钮,将出现数据库创建成功的提示,单击“确定”按钮,数据库就创建完成了。,2019年9月20日星期五,21,5.2 数据库的管理,5.2.1 数据库属性的查看与修改 企业管理器的树形目录右边窗口中,双击想要查看的数据库,就会显示数据库的相关信息,数据库属性窗口中常规信息有以下三方面: 基本信息(Database):数据库的拥有者、创建时间、大小、用户个数等。 维护信息(Maintenance):一些备份和维护信息。 空间使用情况(Spaceallocated):数据和日志文件的空间使用情况。,2019年9月20日星期五,22,5.2.2 设置数据库的选项,在数据库属性对话框中,用户可以在“数据文件”选项卡中增减数据文件和修改数据文件属性:,2019年9月20日星期五,23,数据库属性对话框,用户可以在“事务日志”选项卡中增减日志文件和修改日志文件属性,具体操作类似于对数据文件的操作。 用户可以在“选项”选项卡中修改一些数据库选项,打上钩的就是True,否则就是False,用户只需单击这些复选框,就可以非常容易地更改当前数据库的选项。 Restrict access:限制访问 Read-only:将数据库设置为只读 Auto close:用于指定数据库在没有用户访问并且所有进程结束时自动关闭,释放所有资源,当又有新的用户要求连接时,数据库自动打开。 Auto shrink:当数据或日志量较少时自动缩小数据库文件的大小 Truncate log on checkpoint:每次执行检查点(checkpoint)操作后都删除事务日志,2019年9月20日星期五,24,5.2.3 删除数据库,在企业管理器中删除数据库只需展开“服务器/Databases”目录,右键单击要删除的数据库,在弹出的快捷菜单中选择“删除”命令。 当数据库处于以下三种情况之一时,不能被删除: 当有用户使用该数据库时; 当数据库正在被恢复(restore)时; 当数据库正在参与复制时。,2019年9月20日星期五,25,5.3 表的创建,5.3.1 设计表的结构 对于每个具体的表,在创建之前还要考虑以下内容: 表中要存储的数据类型。 表中需要的列以及每一列的类型、长度。 表中的列是否可以为空。 是否需要在某列上使用约束、默认值和规则。 需要使用什么样的索引。 哪些列作为主键。,2019年9月20日星期五,26,1. 常用数据类型 (1) 日期和时间数据: datetime smalldatetime (2) 字符型数据 char(n) varchar(n) text (3) 数字型数据: bigint int smallint tinyint decimal(p,s) float(n) real,2019年9月20日星期五,27,SQL Server提供的常用数据类型 (1) 日期和时间数据: (2) 字符型数据 (3) 数字型数据 其它数据类型 二进制数据 Unicode数据 货币数据 用户自定义数据类型,2019年9月20日星期五,28,2文本和图像数据,文本和图像数据在SQL Server中是用text、ntext和image数据类型来表示的 SQL Server 2000提供了两种存储方式: 将文本或图像数据直接存储在记录行中,使得读写文本和图像数据与读写varchar、nvarchar和varbinary字符串一样快; 将文本或图像数据与表中的其他数据分开存储,而记录行相应位置只存放文本或图像数据的实际存储地址。,2019年9月20日星期五,29,3IDENTITY标识列,将一个列作为表中的标识列,需要为该列定义IDENTITY属性,其格式如下: IDENTITY(SEED,INCREMENT) 其中:SEED是初始值,默认为; INCREMENT是步长值,默认为,注意: 每张表只允许有一个标识列 该列只能使用decimal,int,numeric,smallint或tinyint数据类型。 该列必须设置成不允许为空值,且不能有默认值。,2019年9月20日星期五,30,5.3.2 使用企业管理器创建表,(1)启动企业管理器,在树形目录中展开“服务器组/服务器/Databases/数据库”,单击右键选择学生学籍数据库(students),在弹出的快捷菜单中选择“新建”“表”。 (2)在弹出的设计表对话框中,分别输入或选择各列的名称、数据类型、是否允许为空值等属性。在“课程号”列上单击右键,在弹出的快捷菜单中选择“设置主键”,将学号列设置为主键。 (3)在表的各列属性编辑完成后,单击工具栏上的“保存”按钮,在出现的对话框中输入表名,单击“确定”按钮,课程基本信息表就创建好了,2019年9月20日星期五,31,5.4 表结构的修改,更改表名 (1)在企业管理器中选中学生学籍数据库(students)的树形目录,选择右边列表中的课程基本信息表并单击右键,在弹出的快捷菜单中选择“重命名”。 (2)然后表名位置输入新表名,按Enter键。 (3)在弹出的“重命名”对话框中,提示用户若更改了表名,那么将引起引用该表的存储过程、视图或触发器无效,要求用户对更名操作进行确认,单击“是”“确定”按钮,即完成操作。,2019年9月20日星期五,32,增加列 在企业管理器中选中数据库的树形目录,选择右边列表中的基本表并单击右键,在弹出的快捷菜单中选择“设计表”,将弹出设计表对话框,就可以看到基本表中每一列的定义。此时单击第一个空白行,即可向表中添加新的一列,修改完毕后单击“保存”按钮即可。 删除列 在设计表对话框中,选择需要删除的列并单击右键,在弹出的快捷菜单中单击“删除列”,修改完毕后单击“保存”按钮即可。,2019年9月20日星期五,33,5.5 表的数据操作,启动企业管理器,建立与SQL Server的连接,展开数据库和需要操作的表,在需要操作的表上单击右键,在弹出的快捷菜单中选择“打开表”“返回所有行”,将进入操作表数据窗口,在操作表数据窗口可以插入、修改、删除记录。插入记录时,将光标定位到当前表尾的下一行,然后逐列输入数据,每输入完一列的值,按Enter键,光标自动跳到下一列;每输完一行,按Enter键,光标自动跳到下一行;此时可继续输入下一条记录。,2019年9月20日星期五,34,5.6 删除表,在企业管理器中选中数据库的树形目录,选择右边列表中的学生基本信息表并单击右键,在弹出的快捷菜单中选择“删除”命令,弹出 “除去对象”对话框,单击“全部除去”按钮,即可删除选择的表。,2019年9月20日星期五,35,5.7 数据库的完整性设计,输入数据库中的数据可能无效或错误,为保证输入的数据符合规定,成为数据库系统特别是多用户关系数据库系统首要关注的问题。 数据完整性(Data Integrity) 指数据的精确性(Accuracy)和可靠性(Reliability),为防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成的无效操作或错误信息。 分类(4类) 实体完整性(Entity Integrity) 域完整性(Domain Integrity) 参照完整性(Referential Integrity) 用户定义的完整性(User-defined Integrity),2019年9月20日星期五,36,实体完整性(Entity Integrity) 规定表的每一行在表中是惟一的。实体表中定义的UNIQUE、PRIMARY KEY、和IDENTITY约束都是实体完整性的体现。 域完整性Domain Integrity 指数据库表中的列必须满足某种特定的数据类型或约束,其中约束又包括取值范围、精度等规定。表中的CHECK、FOREIGN KEY约束和DEFAULT、NOT NULL定义都属于域完整性的范畴。,5.7.1 数据完整性实施方法,2019年9月20日星期五,37,实体完整性(Entity Integrity) 域完整性Domain Integrity 参照完整性Referential Integrity 两个表的主键和外键的数据应对应一致。它确保了有主键的表中对应其它表的外键的行存在,即保证表之间的数据的一致性,防止数据丢失或无意义的数据在数据库中扩散。 参照完整性是建立在外键和主键之间或外键和惟一性关键字之间的关系上的,在SQL Server 中参照完整性作用表现在如下几个方面。 禁止在从表中插入包含主表中不存在的关键字的数据行。,2019年9月20日星期五,38,禁止会导致从表中的相应值孤立的主表中的外关键字值改变。 禁止删除在从表中的有对应记录的主表记录。 用户定义的完整性User-defined Integrity 根据应用环境的不同所需的一些特殊约束条件,是针对某个特定关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。,2019年9月20日星期五,39,5.7.2 约束 约束(Constraint)限制输入到表中的值的范围,SQL Server提供多种约束 Primary Key 约束 Foreign Key 约束 Unique 约束 CHECK 约束 创建约束前要考虑的问题 什么约束实现自己所需的数据完整性 约束实施的时机 列级约束 行定义的一部分,只能应用在一列上 表级约束 定义独立于列的定义,可以应用在一个表中的多列上 查看约束信息 使用sp_helpconstraint系统存储过程: sp_helpconstraint ,2019年9月20日星期五,40,使用PRIMARY KEY约束(主键约束) 指定表的一列或几列的组合值在表中具有惟一性,即能惟一标识一行记录。 操作方式有3 在创建表时,定义主键,主键是表的一部分 在一个没有定义主键的表上,加上一个主键 修改或删除表上已经定义的主键 定义主键 CONSTRAINT PRIMARY KEY CLUSTERED | NONCLUSTERED ( , , ),约束名在数据库中是惟一的,若不指定,系统会自动生成一个约束名,指定索引类别,CLUSTERED 为缺省值,指定组成主键的列名,主键最多由16列组成,每个表中只能有一列被指定为主键 IMAGE 和TEXT 类型的列不能被指定为主键 不允许指定的主键列有NULL属性 若在多列上建立主键,必须建立表级约束,2019年9月20日星期五,41,【例5-3】创建一个产品信息表以产品编号和名称为主关键字: create table products ( ProductID char(8) not null, ProductName char(10) not null , price money default 0.01 , quantity smallint null , constraint pk_p_id primary key (ProductID, ProductName) ),2019年9月20日星期五,42,使用企业管理器定义主键 创建表时在某(些)列上单击右键,从快捷菜单中选择“设置主键” 设置或取消主键; 创建表时选择某(些)列上,单击工具栏上的“主键”图标设置或取消主键 查看主键信息 使用存储过程sp_pkeys: sp_pkeys 删除主键 ALTER TABLE DROP CONSTRAINT ,n 例:删除建立在表test1上的主键约束 ALTER TABLE products DROP CONSTRAINT pk_p_id,2019年9月20日星期五,43,添加主键 ALTER TABLE ADD CONSTRAINT PRIMARY KEY CLUSTERED | NONCLUSTERED ( , , ) 例:恢复表test1中的主键 ALTER TABLE products ADD CONSTRAINT pk_p_id PRIMARY KEY CLUSTERED (ProductID, ProductName) Go,2019年9月20日星期五,44,使用UNIQUE约束 用来确保不受主键约束的列上的数据的惟一性,与主键的区别为: 用在非主键的一列或多列上要求数据唯一的情况 允许列可以有NULL值 可在一个表上设置多个唯一约束,而一个表上只能有一个主键 在创建表时定义UNIQUE 约束 CONSTRAINT UNIQUE CLUSTERED | NONCLUSTERED , ,2019年9月20日星期五,45,【例5-4】定义一个员工信息表,其中员工的身份证号具有惟一性: create table employees ( emp_id char(8), emp_name char(10) , emp_cardid char(18), constraint pk_emp_id primary key (emp_id), constraint uk_emp_cardid unique (emp_cardid) ),2019年9月20日星期五,46,使用企业管理器完成UNIQUE约束 进入“设计表”窗口,在要添加UNIQUE约束的行上单击右键,从快捷菜单中选择“属性”命令 进入“索引/键”选项卡,单击“新建”按钮,在列名列表中选择约束列 选中“创建Unique”复选框,再选中“索引”单选按钮,单击“关闭”完成 在“索引/键”选项卡中,选择相应的UNIQUE约束名,单击”删除“按钮可删除约束,2019年9月20日星期五,47,删除UNIQUE约束 ALTER TABLE DROP CONSTRAINT ,n 添加UNIQUE约束 ALTER TABLE ADD CONSTRAINT UNIQUE CLUSTERED | NONCLUSTERED ( , , ),2019年9月20日星期五,48,使用CHECK约束 对输入列或整个表中的值设置检查条件,以限制输入值,保证数据库的数据完整性 与Foreign Key约束的相同之处 通过检查数据值的合理性来实现数据完整性的维护 与Foreign Key约束的不同之处 Foreign Key约束是从另一张表上获得合理数据 CHECK约束通过对一个逻辑表达式的结果进行判断来对数据进行核查 定义CHECK约束 CONSTRAINT (逻辑表达式) 添加CHECK约束,返回值为TRUE 或FALSE,2019年9月20日星期五,49,使用CHECK约束 添加CHECK约束 ALTER TABLE ADD CHECK (逻辑表达式)| WITH CHECK | WITH NOCHECK ADD CONSTRAINT CHECK (逻辑表达式), n , 删除CHECK约束 ALTER TABLE DROP CONSTRAINT ,n 使CHECK约束无效 ALTER TABLE CHECK | NOCHECK CONSTRAINT ALL | ,n,2019年9月20日星期五,50,例如:使authors表上的所有约束无效 USE pubs GO ALTER TABLE authors NOCHECK CONSTRAINT ALL 【例5-5】创建一个订货表,其中定货量必须不小于10: create table orders( order_id char(8), p_id char(8), p_name char(10) , quantity smallint, constraint pk_order_id primary key (order_id), constraint chk_quantity check (quantity=10) ),2019年9月20日星期五,51,使用企业管理器完成CHECK约束 进入“设计表”窗口,在要添加CHECK约束的列上单击右键,从快捷菜单中选择”属性“命令 进入“CHECK约束”选项卡,单击”新建“按钮,在”约束表达式“文本框中,输入检查约束的逻辑表达式 可在“约束名”文本框中输入约束名 可选择“创建中检查现存数据”对现存数据进行检查 可设置“对INSERT和UPDATE强制约束”为空,使插入或修改数据时检查约束无效 可设置“对复制强制约束”为空,使数据复制时检查约束无效,2019年9月20日星期五,52,使用FOREIGN KEY(外键)约束 维护两个表之间的一致性关系 定义主键约束的表中更新列值时其它表中有与之相关联的外键约束的表中的外键列也将被相应地做相同的更新 当向含有外键的表插入数据时,如果与之相关联的表的列中无与插入的外键列值相同的值时,系统会拒绝插入数据 定义外键约束 CONSTRAINT FOREIGN KEY , , REFERENCES (, , ) ON DELETE CASCADE | NO ACTION ON UPDATE CASCADE | NO ACTION NOT FOR REPLICATION ,指定要建立关联的表的信息,SQL Server 会产生一个错误并将父表中的删除、更新操作回滚.为缺省值,2019年9月20日星期五,53,使用FOREIGN KEY(外键)约束 ON DELETE CASCADE( ON UPDATE CASCADE ):指定在删除(更新)表中数据时,对关联表所做的相关操作在子表中有数据行与父表中的对应数据行相关联的情况下,如果指定了值CASCADE 则在删除(更新)父表数据行时,会将子表中对应的数据行删除(更新) 【例5-6】创建一个订货表与前面创建的产品表相关联: create table orders( OrderID char(8),ProductID char(8),ProductName char(10) , constraint pk_order_id primary key (OrderID) , foreign key(ProductID,ProductName) references products(ProductID, ProductName) ),未给外键命名,系统赋予缺省名,2019年9月20日星期五,54,添加外键约束 ALTER TABLE ( CONSTRAINT FOREIGN KEY REFERENCES () ON DELETE CASCADE | NO ACTION ON UPDATE CASCADE | NO ACTION CONSTRAINT FOREIGN KEY (,) REFERENCES (,) 删除外键约束 ALTER TABLE DROP CONSTRAINT ,n,2019年9月20日星期五,55,使用数据库关系图管理外键约束 以图形化方式管理和使用数据库的表、列、索引和约束 使用图表建立外键约束的步骤 展开要建立外键的表所在的数据库结点 在“关系图”上单击右键,从快捷菜单中选择“新建数据库关系图”命令 出现“创建数据库关系图向导”界面,单击“下一步” 选择要建立关系的表,单击“下一步”,单击“完成” 出现“新关系图”界面,在事先设计好表之间的主键约束、UNIQUE约束和外键关系后,使用鼠标拖曳字段名到其它表的相应字段上,在出现的“创建关系”对话框中定义关系 要删除已定义的关系,单击连线,右击,从快捷菜单中选择“删除”命令 要修改已定义的关系,单击连线,右击,从快捷菜单中选择“属性”命令,再选择“关系”选项卡,进行外键属性修改,2019年9月20日星期五,56,向用户输入记录时没有指定具体数据的列中自动插入的数据 默认值对象与ALTER TABLE 或CREATE TABLE 命令操作表时用DEFAULT选项指定的默认省值功能相似,但默认值对象可以用于多个列 管理和使用与规则相似,表的一列只能与一个默认值相绑定 通过定义列的默认值或使用数据库的默认值对象绑定表列来指定列的默认值,SQL Server 推荐使用默认约束而不使用定义默认值的方式来指定列的默认值,5.7.3 使用默认值(Default),2019年9月20日星期五,57,使用默认值(Default) 创建默认值 用CREATE DEFAULT 命令创建默认值 CREATE DEFAULT AS 例: 创建生日默认值birthday_defa create default birthday_defa as 1978-1-1 例:创建ProductName默认值Pname_defa create default Pname_defa as car,默认值的定义。子句可以是数学表达式或函数,也可以包含表列名或其它数据库对象。,2019年9月20日星期五,58,用企业管理器创建默认值 选择数据库对象“默认”,单击右键,从快捷菜单中选择“新建默认”选项,出现“创建默认值属性”对话框,输入默认值名和值表达式后,单击“确定”按钮完成默认值的创建 查看和修改默认值 用企业管理器查看默认值 选择“默认”对象,选择要查看的默认值,单击右键,从快捷菜单中选择“属性”,出现“默认值属性”对话框,编辑默认值的值表达式修改默认值名。 用存储过程Sp_helptext 查看默认值的细节 例:查看默认值birthday_defa exec sp_helptext Pname_defa 可以用Sp_rename 存储过程修改也可以在企业管理器的任务板窗口中直接修改,2019年9月20日星期五,59,默认值的绑定与松绑 同规则一样需要将默认值与数据库表绑定后,才能发挥作用。 用企业管理器管理默认值的绑定 选择要进行绑定设置的默认值,单击右键,从快捷菜单中选择“属性”,出现“默认值属性”对话框,单击“绑定UDT”按钮,绑定用户自定义数据类型;单击“绑定列”按钮绑定表列。 用存储过程Sp_bindefault 绑定默认值 绑定一个默认值到表的一个列上 sp_bindefault defname = 默认名, objname = 对象名,不能绑定默认值到一个用CREATE TABLE 或ALTER TABLE 命令创建或修改表时用DEFAULT选项指定了默认值的列上,2019年9月20日星期五,60,默认值的绑定与松绑 例:绑定默认值Pname_defa到表Orders上 exec sp_bindefault Pname_defa, Orders.ProductName 用存储过程Sp_unbindefault 解除默认值的绑定 Sp_unbindefault objname = 对象名 例:解除默认值num_default 与表products 的quantity 列的绑定 exec sp_unbindefault Orders.ProductName,2019年9月20日星期五,61,删除默认值 选择默认值,单击右键,从快捷菜单中选择“删除”选项删除默认值 使用DROP DEFAULT 命令删除当前数据库中的一个或多个默认值 DROP DEFAULT ,.n 注 在删除一个默认值前必须先将与其绑定的对象解除绑定 例:删除生日默认值birthday_defa drop default birthday_defa,2019年9月20日星期五,62,定义默认约束 CONSTRAINT DEFAULT FOR 例: ALTER TABLE Products ADD constraint de_orderQUAN default 1 for Quantity 在创建表的同时定义列的默认值 例: CREATE TABLE AG (A1 CHAR(10) , A2 INT DEFAULT 10) /* 在表AG中的A2列未插入数据时,为10 */,不能在创建表时定义默认约束,只能向已经创建好的表中添加默认约束,2019年9月20日星期五,63,数据库中对存储在表列中值的规定和限制。 单独存储、独立的数据库对象。 规则与其作用的表相互独立,即表的删除、修改不会对与之相连的规则产生影响。 规则和约束可以同时使用,表列可以有一个规则及多个CHECK约束 规则与CHECK约束很相似,而使用在ALTERTABLE 或CREATE TABLE 命令中的CHECK 约束是更标准的限制列值的方法。 创建规则 用CREATE RULE 命令创建规则 CREATE RULE AS ,规则的定义,可以是能用于WHERE 条件子句中的任何表达式,可以包含算术运算符、关系运算符和谓词,如INLIKE、BETWEEN等,必须以字符开头,5.7.4 规则,【例5-7】创建雇佣日期规则hire_date_rule: create rule hire_date_rule as hire_date = 1990-01-01 and hire_date = getdate() 【例5-8】创建工作级别规则job_level_rule: create rule job_level_rule as job_level in (1,2,3,4,5) 【例5-9】创建评分规则grade_rule: create rule grade_rule as value between 1 and 100 【例5-10】创建字符规则my_character_rule1: create rule my_character_rule1 as value like a-z%0-9 /*字符串必须以a到f的字母开头,以0到9的数字结尾*/ 【例5-11】创建规则ID_rule: create rule ID_rule as ID like 0-90-90-9,2019年9月20日星期五,65,用企业管理器创建规则 在企业管理器中选择数据库对象“规则”,单击右键,从快捷菜单中选择“新建规则”选项,出现“创建规则属性”对话框 输入规则名和表达式后,单击“确定”按钮即完成规则的创建 查看规则 用企业管理器查看规则 在企业管理器中选择“规则”对象,即可从右边的任务板中看到规则的大部分信息,包括规则名、所有者、创建时间等 要查看规则表达式,需查看规则的属性,选择要查看规则,单击右键,从快捷菜单中选择“属性”选项,出现“规则属性”对话框,可从中编辑规则表达式、修改规则名、 用存储过程Sp_helptext查看规则 sp_helptext objname = 规则名 例:查看规则hire_date_rule exec sp_helptext hire_date_rule,2019年9月20日星期五,66,规则的绑定与松绑 创建规则后规则仅仅只是一个存在于数据库中的对象并未发生作用,要将规则绑定到表列,才能达到创建规则的目的。 绑定:指定规则作用于哪个表的哪一列。 表的一列只能与一个规则相绑定,而一个规则可以绑定多个对象。 解除规则与对象的绑定称为松绑。 用存储过程Sp_bindrule 绑定规则 绑定一个规则到表的一列上 sp_bindrule rulename = 规则名, objname = 对象名,2019年9月20日星期五,67,例: 绑定规则ID_rule 到 orders 表的字段OrderID exec sp_bindrule ID_rule, Orders.OrderID 注: 规则对已经输入表中的数据不起作用 规则所指定的数据类型必须与所绑定的对象的数据类型一致 规则不能绑定一个数据类型为TEXT MAGE 或TIMESTAMP 的列 可直接用一个新的规则来绑定列,而不需要先将其原来绑定的规则解除,系统会将旧规则覆盖 用存储过程Sp_u
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中人教部编版 (五四制)口语交际 讲述获奖教案
- 安全双体系试题及答案
- 2025年电气安全知识深化培训考试题库及答案
- 2025年业务外卖员考试题及答案
- 4.3 中心对称教学设计-2025-2026学年初中数学浙教版2012八年级下册-浙教版2012
- 2025年川省中烟企业招聘(电子信息类)练习题及答案
- 新版部编人教版小学语文六年级上册【课内外阅读理解专项训练(完整)】及答案
- 猜调教学设计-2023-2024学年小学音乐三年级下册人音版(主编:曹理)
- 电力调度运行专业知识习题及答案
- 液压支架试题题库及答案
- 750千伏输变电工程申请报告
- 2026届山东省济南市章丘四中化学高一上期中联考试题含解析
- 门窗安装工程施工方案(全面)
- 2025年高考物理试题(浙江卷) 含答案
- 河北大学《宪法学》2024-2025学年期末试卷(A卷)
- 山西省三晋联盟山西名校2024-2025学年高二上学期11月期中联合考试 化学试题
- 中班数学《小动物回家》课件
- DB4417∕T 2-2021 地理标志产品 春砂仁
- 物业管理预算表格模板模板(全套)
- 装表接电课件
- 化工原理课程设计-精馏塔
评论
0/150
提交评论