版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第6 6章章 创建与使用数据表创建与使用数据表 在关系数据库中,每一个关系都体现为一张二维表,使在关系数据库中,每一个关系都体现为一张二维表,使 用表来存储和操作数据的逻辑结构,表是数据库中最重要的用表来存储和操作数据的逻辑结构,表是数据库中最重要的 数据对象。数据对象。 6.1 6.1 数据类型数据类型 数据库存储的对象主要是数据,现实中存在着各种不同数据库存储的对象主要是数据,现实中存在着各种不同 类型的数据,数据类型就是以数据的表现方式和存储方式来类型的数据,数据类型就是以数据的表现方式和存储方式来 划分的数据种类。划分的数据种类。 SQL Server SQL Server的数据类型
2、可以分为两类:基本数据类型和的数据类型可以分为两类:基本数据类型和 用户自定义数据类型。用户自定义数据类型。 6.1.1 6.1.1 基本数据类型基本数据类型 SQL Server2008 SQL Server2008支持整型、字符型、货币型和日期时间等多种基本数支持整型、字符型、货币型和日期时间等多种基本数 据类型。据类型。 1. 1. 二进制数据类型二进制数据类型 SQL Server SQL Server用用binarybinary、varbinaryvarbinary和和imageimage三种数据类型存储二进制数三种数据类型存储二进制数 据,见表据,见表6-16-1。 2. 2. 整
3、型数据类型整型数据类型 整型数据类型是最常用的数据类型之一。整型数据类型是最常用的数据类型之一。SQL Server2008SQL Server2008支持的整支持的整 数类型有数类型有intint、smallintsmallint、bigintbigint和和tinyinttinyint四种。见表四种。见表6-26-2。 3. 3. 浮点数据类型浮点数据类型 浮点数据类型用于存储十进制小数,浮点数据类型用于存储十进制小数,SQL Server2008SQL Server2008支持的浮点数据类支持的浮点数据类 型分为型分为realreal、floatfloat、decimaldecimal和
4、和numericnumeric等四种。见表等四种。见表6-36-3。 4. 4. 字符数据类型字符数据类型 字符数据类型是使用最多的数据类型,可字符数据类型是使用最多的数据类型,可 以用它来存储各种字母、数字符号、特殊以用它来存储各种字母、数字符号、特殊 符号。符号。SQL Server2008SQL Server2008支持的字符数据类支持的字符数据类 型有型有charchar、varcharvarchar、texttext、ncharnchar、 nvarcharnvarchar、ntextntext等六种。前三种是非等六种。前三种是非 unicodeunicode字符数据,后三种是字符数
5、据,后三种是unicodeunicode字符字符 数据。见表数据。见表6-46-4。 5. 5. 逻辑数据类型逻辑数据类型 逻辑数据类型逻辑数据类型bitbit占用占用1 1 个字节的存储空间,其值为个字节的存储空间,其值为0 0或或1 1。如果输。如果输 入入0 0或或1 1以外的值,将被视为以外的值,将被视为1 1。bitbit类型不类型不 能定义为能定义为NULLNULL。 6. 6. 日期和时间数据类型日期和时间数据类型 日期和时间数据类型用于存储日期和时间日期和时间数据类型用于存储日期和时间 的结合体,的结合体,SQL Server2008SQL Server2008支持的日期时支持
6、的日期时 间数据类型有间数据类型有datedate、datetimedatetime、datetime2datetime2、 datetimeoffsetdatetimeoffset、 smalldatetimesmalldatetime、timetime等六种。见表等六种。见表6-56-5。 7 7 . . 货币数据类型货币数据类型 货币数据类型用于存储货币值,在使用货货币数据类型用于存储货币值,在使用货 币数据类型时,应在数据前加上货币符号。币数据类型时,应在数据前加上货币符号。 SQL Server2008SQL Server2008支持支持moneymoney和和smallmoneys
7、mallmoney两两 种。如图种。如图6-66-6所示。所示。 8. 8. 其它数据类型其它数据类型 SQL Server2008 SQL Server2008中包含了一些用于数据存储的特殊数据类型,见表中包含了一些用于数据存储的特殊数据类型,见表6-76-7。 6.1.2 6.1.2 用户定义数据类型用户定义数据类型 用户定义数据类型是在基本数据类型的基础上根据实际需要由用户自用户定义数据类型是在基本数据类型的基础上根据实际需要由用户自 己定义的数据类型,并不是创建一种新的数据类型,是在系统基本数据类己定义的数据类型,并不是创建一种新的数据类型,是在系统基本数据类 型的基础上增加一些限制约
8、束,如将是否允许为空、约束规则及默认值对型的基础上增加一些限制约束,如将是否允许为空、约束规则及默认值对 象等绑定在一起。象等绑定在一起。 下面通过实例来介绍在下面通过实例来介绍在Management StudioManagement Studio中建立用户定义数据类型。中建立用户定义数据类型。 1 1)启动)启动Management StudioManagement Studio,在,在“对象资源管理器对象资源管理器”面板中的面板中的“数据库数据库” 中选择中选择“Library”“Library”数据库,依次选择数据库,依次选择“可编程性可编程性”“”“类型类型”,鼠标右键,鼠标右键 单击
9、单击“用户定义数据类型用户定义数据类型”,在打开的菜单中选择,在打开的菜单中选择“新建用户定义数据类新建用户定义数据类 型型”,如图,如图6-16-1所示。所示。 2) 2) 如图如图6-26-2所示,打开所示,打开“新建用户定义数据类型新建用户定义数据类型”后,在后,在“常规常规”选项卡选项卡 下的下的“名称名称”输入用户定义数据类型名输入用户定义数据类型名“telephone”“telephone”,在,在“数据类型数据类型”下下 拉列表中选择字符类型拉列表中选择字符类型charchar,在,在“长度长度”文本框中输入文本框中输入1111,“允许允许NULLNULL值值” 复选框选中,表示
10、允许输入空值,选择绑定的默认值对象和规则对象。完复选框选中,表示允许输入空值,选择绑定的默认值对象和规则对象。完 成以上设置后,就创建了名为成以上设置后,就创建了名为telephonetelephone的电话自定义数据类型,是的电话自定义数据类型,是9 9位的位的 字符数据。字符数据。 用户创建了自定义数据类型后,使用方法与基本数据类型使用一样。用户创建了自定义数据类型后,使用方法与基本数据类型使用一样。 6.2 6.2 创建数据表创建数据表 前面章节介绍了数据库的创建,并且创建了前面章节介绍了数据库的创建,并且创建了“LibraryLibrary”数数 据库,现在介绍一下如何创建数据表。据库
11、,现在介绍一下如何创建数据表。 6.2.1 6.2.1 数据表的概念及内容数据表的概念及内容 数据表是数据库中最重要的对象,是相关联的行列数据的集合,整数据表是数据库中最重要的对象,是相关联的行列数据的集合,整 个数据库中的数据都是物理存储在各个数据表中的。数据表的主要内容个数据库中的数据都是物理存储在各个数据表中的。数据表的主要内容 包括:包括: 1) 1) 表的名字,每个表都必须有一个名字。表名必须遵循表的名字,每个表都必须有一个名字。表名必须遵循SQL Server2008SQL Server2008 的命名规则,且最好能够使表名准确表达表格的内容。的命名规则,且最好能够使表名准确表达表
12、格的内容。 2) 2) 表中各列的名字和数据类型,包括基本数据类型及自定义数据类型。表中各列的名字和数据类型,包括基本数据类型及自定义数据类型。 3) 3) 表的主码和外码信息。表的主码和外码信息。 4) 4) 表中哪些列允许为空。表中哪些列允许为空。 5) 5) 表中哪些列需要索引。表中哪些列需要索引。 6) 6) 表中哪些列需要绑定约束对象、默认值对象或规则对象。表中哪些列需要绑定约束对象、默认值对象或规则对象。 6.2.2 6.2.2 使用使用SQL Server Management StudioSQL Server Management Studio工具创建数据表工具创建数据表 表必
13、须创建在某一个数据库中,不能独立存在。在创建表时,需要表必须创建在某一个数据库中,不能独立存在。在创建表时,需要 使用不同的数据库对象。下面使用使用不同的数据库对象。下面使用SQL Server Management StudioSQL Server Management Studio创建创建 数据表,在数据表,在“LibraryLibrary”数据库中创建数据库中创建“UserCateUserCate”表和表和“BookBook”表。表。 “UserCateUserCate”表用来存放读者的类别信息,包括类别名称、借阅数量和借表用来存放读者的类别信息,包括类别名称、借阅数量和借 阅时间等属性
14、。阅时间等属性。 “UserTbUserTb”表用来存放读者的信息,包括读者编号、姓名、性别、读者类表用来存放读者的信息,包括读者编号、姓名、性别、读者类 别名、工作单位、家庭住址、电话、登记日期、已借书数量等属性。别名、工作单位、家庭住址、电话、登记日期、已借书数量等属性。 “UserCateUserCate”表中的各个字段见表表中的各个字段见表6-86-8。 “UserTbUserTb”表中的各个字段见表表中的各个字段见表6-96-9。 下面来创建下面来创建“UserCateUserCate”表和表和“UserTbUserTb”表,具体步骤如下:表,具体步骤如下: 1) 1) 启动启动Mi
15、crosoft SQL Server Management StudioMicrosoft SQL Server Management Studio,在左侧,在左侧“对象资源对象资源 管理器管理器”窗口中依次展开窗口中依次展开“数据库数据库”及其结点下的及其结点下的“LibraryLibrary”数据库,右数据库,右 键键 单击其下的单击其下的“表表”选项,选择选项,选择“新建表新建表”,如图,如图6-36-3所示。所示。 2) 2) 打开表设计窗口后,在第一列打开表设计窗口后,在第一列“列名列名”字段中输入字段中输入“CateNameCateName”,在,在 “数数 据类型据类型”中选择中
16、选择“varcharvarchar”数据类型,修改长度为数据类型,修改长度为1010,该字段不允许为,该字段不允许为 空,空, 故将故将“允许允许NullNull值值”字段复选框修改为不被选中状态。这里需要将字段复选框修改为不被选中状态。这里需要将 “CateNameCateName”列设为主键,将鼠标放在列列设为主键,将鼠标放在列“CateNameCateName”上,单击右键,上,单击右键, 选择选择 “设置主键设置主键”即可,也可以在菜单项即可,也可以在菜单项“表设计器表设计器”中选择。如图中选择。如图6-46-4所示。所示。 如如 果要设置几个列的组合作为主键,可以在选择列的时候按下果
17、要设置几个列的组合作为主键,可以在选择列的时候按下CtrlCtrl键不放键不放 单击多列。单击多列。 3) 3) 接下来将接下来将“UserCateUserCate”表中的其他字段按照相同的步骤设置。在某些表表中的其他字段按照相同的步骤设置。在某些表 中,为了方便,可以设置某些字段自动编号,当输入纪录时,不必给自中,为了方便,可以设置某些字段自动编号,当输入纪录时,不必给自 动编号的字段赋值,系统会自动给该字段排号。但是必须要保证设置自动编号的字段赋值,系统会自动给该字段排号。但是必须要保证设置自 动编号的字段的数据类型为整数。设置方法是:先选中要设置自动编号动编号的字段的数据类型为整数。设置
18、方法是:先选中要设置自动编号 的字段;然后在的字段;然后在“表设计器表设计器”下方展开下方展开“标识规范标识规范”项,设置项,设置“是标识是标识” 为为 “是是”;最后根据具体情况设置;最后根据具体情况设置“标识增量标识增量”和和“标识种子标识种子”。如图。如图6-56-5所所 示。示。 4) 4) 全部字段输入结束后,选择全部字段输入结束后,选择“文件文件”菜单下菜单下“保存保存”,或者单击保存按,或者单击保存按 钮钮 ,在弹出的文本框中输入表名,在弹出的文本框中输入表名“UserCateUserCate”。单击。单击“确定确定”即完成表的创即完成表的创 建建 ,如图,如图6-66-6所示。
19、所示。 5) 5) 利用同样的方法可以创建利用同样的方法可以创建“UserTbUserTb”表,创建完毕的表,创建完毕的“UserTbUserTb”表如表如 图图6-6- 7 7所示。所示。 6.2.3 6.2.3 使用使用Transact-SQLTransact-SQL创建数据表创建数据表 使用使用T-SQLT-SQL创建表的语法如下。创建表的语法如下。 CREATE TABLE database_name schema_name | schema_name table_name ( | ,n ) on partition_scheme_name ( partition_column_nam
20、e ) | filegroup | “default” TEXTIMAGE_ON filegroup | “default” 其中:其中:包括:包括: column_name FILESTREAM COLLATE collation_name NULL | NOT NULL CONSTRAINT constraint_name DEFAULT constant_expression | IDENTITY ( seed ,increment ) NOT FOR REPLICATION ROWGUIDCOL .n 【例【例6-16-1】使用】使用CREATE TABLECREATE TABLE语句
21、创建语句创建“BookBook”表,表,“BookBook”表用来存放图书的表用来存放图书的 各种信息,包括图书编号、图书名称、图书类别号、作者、出版社、出版各种信息,包括图书编号、图书名称、图书类别号、作者、出版社、出版 日期、入库日期、价格、状态等属性。日期、入库日期、价格、状态等属性。 使用使用primary keyprimary key指定了字段指定了字段 “BookIdBookId”为主键,且不为空。为主键,且不为空。 定义的各个列之间要用定义的各个列之间要用“, ,”间隔。间隔。 创建完毕的结果如图创建完毕的结果如图6-86-8所示。所示。 USE LibraryUSE Libra
22、ry CREATE TABLE BookCREATE TABLE Book ( ( BookId char(10) not null primary key, BookId char(10) not null primary key, BookName varchar(20) not null, BookName varchar(20) not null, BkCateId varchar(6) not null, BkCateId varchar(6) not null, Author varchar(20) not null, Author varchar(20) not null, Pu
23、blish varchar(15) not null, Publish varchar(15) not null, PubTime smalldatetime null, PubTime smalldatetime null, CheckIn datetime not null, CheckIn datetime not null, Price money null, Price money null, BookStatus bit not null BookStatus bit not null ) ) 数据完整性 n1关键字 n关键字是用来唯一标识表中每一行的属性或属性的组合, 也可以称其
24、为关键码、码或键。 n(1)主关键字与候选关键字。候选关键字是那些可以用 来作为关键字的属性或属性的组合。将选中的那个关键字 称为主关键字(主码或主键)。在一个表中只能指定一个 主键字,它的值必须是唯一的,并且不允许为空值。 n(2)外关键字。外关键字也称为外键或外码,由一个表 中的一个属性或多个属性组成,同时该属性在另一个表中 是主关键字,它是公共关键字。使用外关键字和主关键字 可以建立起表与表之间的联系。 n(3)主表与从表。主关键字所在的表被称为主表(也叫 做父表),外关键字所在的表称为从表(也叫做子表)。 4.4.1 理论知识准备 n2数据的完整性 n数据的完整性指的是数据的正确性和一
25、致性,它是为防止 数据库中存在不符合语义规定的数据和防止因错误信息的 输入输出造成无效操作或错误信息而提出的。 n数据完整性分为实体完整性、域完整性、引用完整性和用 户自定义完整性。 n(1)实体完整性。也称为表的完整性,是 指表中必须有一个主关键字,用来唯一地 标识表中的每一行,且不允许为空值。 n(2)域完整性。也称为列完整性,是指表 中的任一列数据必须满足所定义的数据类 型,且其值必须在有效的范围之内。 n(3)引用完整性。也称为参照完整性,是 对表与表之间的联系而言的。在输入或删 除记录时,引用完整性保持表之间已定义 的关系,确保键值在所有表中一致。 n(4)用户自定义完整性。用户自定
26、义完整 性体现了实际运用中的业务规则,如在公 司管理数据库系统的员工信息表中,每个 员工的编号前必须是所在部门名称的首字 母组合。用户定义的完整性可以通过前面3 种完整性的实施得到维护。 nSQL Server 2005提供了多种方法来保证数据的完整性, 包括数据类型、外键、约束、规则、触发器等。 n(5)保证参照完整性的规则。 n 对从表进行INSERT操作时,要保证外关键字的值在主 表中存在。 n 对从表的外关键字进行UPDATE操作时,要保证修改后 的外键值在主表中存在。 n 对主表的主关键字进行UPDATE操作时,要注意从表中 是否存在该主关键字,如果有,则禁止所做的修改或级联 修改所
27、有从表中与之相应的外关键字的值。 n 对主表的主关键字进行DELETE操作时,要注意从表中 是否存在该主关键字,如果有,则禁止所做的删除或级联 删除所有从表中与之相应的外关键字的值。 n3约束 约束是在创建表时,可以对某一 列或多个列的组合设置限制条件,让SQL Server帮助检查该列的输入值是否符合要求。 当用户从客户端传送数据到SQL Server服 务器,系统也会检查数据是否符合要求, 如果不符合要求将拒绝接受。 nSQL Server中有5种约束类型,分别是主键 (PRIMARY KEY)约束、外键FOREIGN KEY)约束、默认(DEFAULT)约束、检 查(CHECK)约束、唯
28、一(UNIQUE)约 束。 n约束作为表的一部分,可以在创建表的同 时创建约束,也可以在建立表之后追加定 义或删除定义。在一个表中可以定义多个 约束,甚至可以在一个列上定义多个约束。 4.4.1 理论知识准备 n4默认值 n默认值是一种数据库对象,作用与DEFAULT约束类似, 可以在数据库中事先定义好,需要时将其绑定到表中的一 列或多列上,还可应用于用户自定义的数据类型。当向表 中输入数据行时,系统自动为没有指定数据的列提供事先 定义的默认值。使用默认值可以大大减小输入数据的工作 量。 n5规则 n规则是保证数据完整性的方法之一。它的作用是在向表中 插入数据时,指定该列接受数据值的范围,规则
29、与默认值 一样,在数据库中可实现一次创建、重复应用。 4.4.2 主键约束 n主键约束确保了主键值的唯一性。一个表中只能有一个主键约束,主键约束中的列值 不允许为空值。在项目开发中常常将代码列,如职工号、类别号等定义为主键约束, 主键约束可以定义在单列上也可以定义在多列上,如果主键约束定义在多列上,则一 列中的值允许重复,但主键约束定义中的所有列的组合值必须是唯一的。 n1利用Management Studio创建主键约束 n例4.14 使用Management Studio为customer表创建主键约束。 n(1)在对象资源管理器中依次展开“companyinfo”数据库“表”选项。 n(
30、2)用鼠标右键单击customer表,在弹出的快捷菜单中选择“修改”选项。 n(3)在表设计面板中将光标定位在“客户ID”行。 n(4)单击工具栏上的“设置主键”按钮或用鼠标右键单击该行,在弹出的快捷菜单中 选择“设置主键”选项,如图4-16所示。 n(5)保存,完成设置。 6.3 6.3 修改表结构修改表结构 已经建立的表格,如果不符合要求,可以进行修改。已经建立的表格,如果不符合要求,可以进行修改。SQL SQL Server2008Server2008提供两种修改数据表的方法:使用提供两种修改数据表的方法:使用SQL Server SQL Server Management Studio
31、Management Studio修改表和使用修改表和使用Transact-SQLTransact-SQL语句修改表。语句修改表。 6.3.1 6.3.1 使用使用SQL Server Management StudioSQL Server Management Studio修改数据表结构修改数据表结构 修改数据表结构包括修改某列的数据类型、列宽度、添加和删除某修改数据表结构包括修改某列的数据类型、列宽度、添加和删除某 列、修改列的约束等。下面以修改列、修改列的约束等。下面以修改“BookBook”表为例介绍使用表为例介绍使用SQL ServerSQL Server Management St
32、udio Management Studio修改表的具体步骤。修改表的具体步骤。 【例【例6-26-2】在】在“BookBook”表中,作如下修改:表中,作如下修改:“BookIdBookId”字段设置主键约束;字段设置主键约束; “BkCateIdBkCateId”字段设置外键,参照字段设置外键,参照“BookCategoryBookCategory”表的表的“BkCateIdBkCateId”字字 段段 ;“CheckInCheckIn”字段设置默认值。字段设置默认值。 1) 1) 打开打开“SQL Server Management StudioSQL Server Management
33、 Studio” 窗口,在左边的窗口,在左边的“对象资源管理器对象资源管理器”中打开中打开 “LibraryLibrary”数据库,用右键选择要修改的数据库,用右键选择要修改的 表表“BookBook”,在弹出的菜单中选择,在弹出的菜单中选择“设计设计”选选 项,打开表的设计器。如图项,打开表的设计器。如图6-96-9所示。所示。 2) 2) 在打开的设计界面中按自己的要求修改表结构。可以直接修改列名、在打开的设计界面中按自己的要求修改表结构。可以直接修改列名、 列属性、默认值和规范等。也可以用鼠标右键单击列,通过选择快捷菜列属性、默认值和规范等。也可以用鼠标右键单击列,通过选择快捷菜 单中的
34、选项,对表进行主键设置、插入列、删除列、设置外键关系、索单中的选项,对表进行主键设置、插入列、删除列、设置外键关系、索 引、唯一约束和引、唯一约束和CHECKCHECK约束设置等修改,也可以用鼠标拖动改变列的次序约束设置等修改,也可以用鼠标拖动改变列的次序. . 3) 3) 设置外键约束的步骤如下:设置外键约束的步骤如下: 右键选择右键选择“BkCateIdBkCateId”字段,在弹出的菜单中选择字段,在弹出的菜单中选择“关系关系”,在,在“外外 键关键关 系系”界面中选择界面中选择“添加添加”,在右侧,在右侧“标识标识”选项中的名称是该外键约束选项中的名称是该外键约束 的默认的默认 名称,
35、可在此处输入自己的约束名。名称,可在此处输入自己的约束名。 鼠标单击鼠标单击“表和列规范表和列规范”前的前的“+ +”,选择右侧的,在打开的对话框,选择右侧的,在打开的对话框 中,中, 在在“外键表外键表”下面的列表中选择要创建外键约束的字段;在下面的列表中选择要创建外键约束的字段;在“主键表主键表” 的下的下 拉列表中选择该外键所引用的父表,并在下面的列表框中选择该外键所拉列表中选择该外键所引用的父表,并在下面的列表框中选择该外键所 要引用的字段。需要注意的是:外键所要引用的列必须是父表中已经设要引用的字段。需要注意的是:外键所要引用的列必须是父表中已经设 置了主键约束或唯一约束的列。如图置
36、了主键约束或唯一约束的列。如图6-106-10所示。所示。 4) 4) 鼠标选中要设置默认值的字段鼠标选中要设置默认值的字段“CheckInCheckIn”,在,在“列属性列属性”集中选择集中选择“常常 规规”, 在其下方的在其下方的“默认值或绑定默认值或绑定”中输入。默认值可以是常量、内置函数或数中输入。默认值可以是常量、内置函数或数 学学 表达式。这里用系统时间的内置函数表达式。这里用系统时间的内置函数“getdate()getdate()”。如图。如图6-116-11所示。所示。 4.4.3 外键约束 外键用以实现两个表之间的数据联系,可由一列或多列组合而成。 在定义外键约束之前,必须先
37、定义主键约束。在删除主键约束时,必须先删除相 关的外键约束。 设置外键就是实现两张表的连接,要创建两个表之间的联系,关键是要在两个表 中有同名、同数据类型的某列,且该列为一张表的主键,同时为另一张表的 外键。 1利用Management Studio创建外键约束 例4.18 使用Management Studio创建product表和category表之间的外键约束关 系。 (1)检查product表中是否将“类别ID”设置为主键,如果没有就先设置它为该 表的主键。 (2)打开product表的设计面板,单击工具栏上的“关系”按钮,或用鼠标右键 单击“类别ID”行,在弹出的快捷菜单中选择“关系
38、”选项,弹出“外键关 系”对话框,如图4-17所示。 n 图4-17 “外键关系”对话框 n(3)在“外键关系”对话框中,单击“添加”按钮,选中“表和列规范”, 如图4-18所示,单击按钮,打开“表和列”对话框,在“主键表”下拉列表 框中选择category表,在“主键表”下的下拉列表框中选择“类别ID”;在 “外键表”下拉列表框中选择product表,在“外键表”下的下拉列表框中选 择“类别ID”,在如图4-19所示。如果想重命名外键约束名,可以在“关系 名”文本框中输入新的名称。 n(4)单击“确定”按钮,完成外键约束的创建。 n 图4-18 选定关系 n 图4-19 选择主键表与外键表
39、4.4.4 DEFAULT约束 n在设计表时应尽量避免列值为空值,采用对列不确定的值赋予默认值,可避 免出现空值的情况,从而减少客户端开发时处理SQL Server中空值的额外代 码,使用DEFAULT约束就是避免列值为空值的有效方法之一。 nDEFAULT约束可用于除了timestamp列和identity列以外的所有数据类型列, 每列只能有一个DEFAULT约束。 n1利用Management Studio创建和删除DEFAULT约束 n例4.22 使用Management Studio为employee表中的“薪水”列创建 DEFAULT约束,该约束使“薪水”列的值默认为“2000”。
40、n(1)在对象资源管理器中依次展开“companyinfo”数据库“表”选项。 n(2)用鼠标右键单击customer表,在弹出的快捷菜单中选择“修改”选项。 n(3)将光标定位到“薪水”行,在“列属性”选项卡下的“默认值或绑定” 编辑框中输入“2000”,如图4-20所示。保存,完成创建。 n例4.23 使用Management Studio删除employee表中“薪水”列上的 DEFAULT约束。 n过程同创建DEFAULT约束,在表设计面板中选中“薪水”列,清除“列属性” 选项卡下的“默认值或绑定”编辑框的值,保存即可。 n2利用T-SQL语句创建和删除DEFAULT约束 n例4.24
41、 使用T-SQL语句完成例4-22的操作,为employee表中的“薪水”列 创建名为“cp_emp_def”的DEFAULT约束,该约束使“薪水”列的值默认 为“2000”。 图4-20 创建DEFAULT约束 在SQL Server Management Studio的查询分析器中运行如下命令。 USE companyinfo GO ALTER TABLE employee ADD CONSTRAINT cp_emp_def DEFAULT(2000) FOR 薪水 GO 例4.25 使用T-SQL语句删除employee表中名为“cp_emp_def”的DEFAULT约 束。 在SQL
42、Server Management Studio的查询分析器中运行如下命令。 USE companyinfo GO ALTER TABLE employee DROP CONSTRAINT cp_emp_def GO 4.4.6 UNIQUE约束 指定一个或多个列的组合的值具有唯一性,以防止在列中输入重复的值。唯一性 约束指定的列可以有NULL属性。由于主关键字的值具有唯一性,因此主关键 字所在的列不能再设定唯一性约束。 1利用Management Studio创建和删除UNIQUE约束 例4.30 使用Management Studio为product表的“产品名”列创建唯一性约束, 创建后
43、再使用Management Studio删除该唯一性约束 打开product表的设计面板(用鼠标右键单击product表,在弹出的快捷菜单中选 择“修改”命令),单击(管理表索引和键)按钮,或者用鼠标右键单击 “产品名”列,在弹出的快捷菜单中选择“索引/键”选项,打开“索引/键” 对话框,单击“添加”按钮,即可为“产品名”列创建唯一性约束。 在打开的“索引/键”对话框中的“选定的主/唯一键或索引”下拉列表框中选择 要删除的唯一性约束,单击“删除”按钮,即可删除已创建的唯一性约束。 2利用T-SQL语句创建与删除UNIQUE约束 例4.31 使用 T-SQL 语句完成例 4-30 的操作,为 p
44、roduct 表的“产品名”列创 建名为cp_pro_name唯一性约束,创建后再使用T-SQL语句删除该唯一性约 束。 在SQL Server Management Studio的查询分析器中运行如下命令创建UNIQUE 约束。 USE companyinfo GO ALTER TABLE product ADD CONSTRAINT cp_pro_name UNIQUE(产品名) GO 在SQL Server Management Studio的查询分析器中运行如下命令删除UNIQUE 约束。 USE companyinfo GO ALTER TABLE product DROP CONS
45、TRAINT cp_pro_name GO 4.4.5 CHECK约束 nCHECK约束限制列数据的有效范围,在对约束的列值进行更新(如插入、修 改)时,系统自动检查列数据的有效性。 n创建CHECK约束时可以使用逻辑表达式表示数据的有效范围,返回值可以是 TRUE或FALSE。 n在一列上可以定义或使用多个CHECK约束,这些约束将按照创建的顺序依次 发生作用。可在创建表时创建CHECK约束,也可为已存在的表增加CHECK 约束。 n1利用Management Studio创建和删除CHECK约束 n例4.26 使用Management Studio为employee表创建CHECK约束,该
46、约束限 制“性别”列中的值只允许为“男”或“女”。 n(1)在对象资源管理器中依次展开“companyinfo”数据库“表”选项。 n(2)用鼠标右键单击employee表,在弹出的快捷菜单中选择“修改”选项。 n(3)单击工具栏上的(管理CHECK约束)按钮,或者用鼠标右键单击表设 计面板中的“性别”行,在弹出的快捷菜单中选择“CHECK约束”命令。 n(4)在弹出的“CHECK约束”对话框中单击“添加”按钮,创建CHECK约 束。在“表达式”栏中输入“性别 in(男,女)”,如图4-21所示。完成 设置后,单击“关闭”按钮,保存即可。 n 图4-21 创建CHECK约束 n例4.27 使用
47、Management Studio删除employee表中名为CK_employee的 CHECK约束。 n过程同例4-22的创建,在打开的“CHECK约束”对话框中“选定的CHECK 约束”列表中选择“CK_employee”,单击“删除”按钮,再单击“关闭” 按钮,保存,即可完成CHECK约束的删除。 n2利用T-SQL语句创建与删除CHECK约束 n为已有的表增加CHECK约束的语法如下。 nALTER TABLE table_name nADD CONSTRAINT constraint_name CHECK(check_expr) n其中,check_expr表示约束表达式。 n例4
48、.28 使用T-SQL语句完成例4-22的操作,为employee表创建名为cp_sex 的CHECK约束,该约束限制“性别”列中的值只允许为“男”或“女”。 n在SQL Server Management Studio的查询分析器中运行如下命令。 nUSE companyinfo nGO nALTER TABLE employee nADD CONSTRAINT cp_sex CHECK(性别 in (男,女) nGO 4.4.5 CHECK约束 例4.29 使用T-SQL语句删除employee表中名为cp_sex的CHECK约束。 在SQL Server Management Studi
49、o的查询分析器中运行如下命令。 USE companyinfo GO ALTER TABLE employee DROP CONSTRAINT cp_sex GO 4.4.7 默认值 默认值与DEFAULT约束类似,其作用是当用户在向数据库表中插入数据行时, 如果没有明确给出某列的输入值,则由SQL Server自动为该列赋予默认值。 但与DEFAULT约束不同的是,默认值是一种数据库对象,在数据库中只需定 义一次,就可以被多次应用在表中的一列或多列上,还可以应用于用户自定 义数据类型。 默认值可以是常量、内置函数或数学表达式。 默认值创建后,只有绑定到表的列或者用户自定义数据类型上,才能为列
50、和用户 自定义数据类型提供默认值。 可以在Management Studio的查询分析器中使用T-SQL语句创建默认值,其命令 格式如下。 CREATE DEFAULT default_name AS constraint_expression n其中,各参数的含义如下。 ndefault_name:表示新建立的默认值名称。 nconstraint_expression:指定默认常量表达式的值。 n绑定默认值可以使用sp_bindefault系统存储过程,也可以使用Management Studio。 n删除默认值时,必须先解除默认值与表列的绑定,或与用户自定义数据类型 的绑定。解除绑定可以使
51、用sp_unbindefault系统存储过程,也可以使用 Management Studio。 n例4.32 使用T-SQL语句在companyinfo数据库中创建名为SalaryDefault的默 认值,表示“2000”,然后将其绑定到employee表的“薪水”列。 n在SQL Server Management Studio的查询分析器中运行如下命令。 nUSE companyinfo nGO n-创建默认值 nCREATE DEFAULT SalaryDefault AS 2000 nGO n-绑定默认值到employee表的薪水列 nEXEC SP_BINDEFAULT Salary
52、Default,employee.薪水 nGO 例4.33 使用T-SQL语句删除名为SalaryDefault的默认值。 在SQL Server Management Studio的查询分析器中运行如下命令。 USE companyinfo GO -解除默认值与employee表的“薪水”列的绑定 SP_UNBINDEFAULT employee.薪水 GO -删除默认值 DROP DEFAULT SalaryDefault GO 公司管理数据库系统数据表的操作 n对数据表的数据操作主要包括记录的插入、更新和删除。完成这些操作可以 使用Management Studio和T-SQL语句两种方
53、式,这里重点介绍T-SQL语句 方式。 4 4. .5 5 4.5.1 利用Management Studio操作表记录 在对象资源管理器中依次展开 “companyinfo”数据库“表”选项,用鼠 标右键单击要进行数据操作的表,在弹出的快捷菜单中选择“打开表”命令, 在打开的数据编辑面板中即可进行数据的插入、更新和删除操作。 4.5.2 利用T-SQL语句操作表记录 1使用INSERT语句向表中插入数据 向表中插入数据就是将一条或多条数据添加到表尾。在T-SQL中使用INSERT 命令完成数据插入,其语法如下。 INSERT INTO table_name (column1 , column
54、2,.) VALUES (value1 , value2,.) 6.3.2 6.3.2 使用使用Transact-SQLTransact-SQL修改数据表结构修改数据表结构 使用使用T-SQLT-SQL修改数据表结构的语法如下。修改数据表结构的语法如下。 ALTER TABLE database_name ALTER TABLE database_name schema_name schema_name | schema_name| schema_name table_name table_name ALTER COLUMN column_name - ALTER COLUMN column_
55、name -修改列定义修改列定义 new_data_type (precision new_data_type (precision ,scale ) scale ) COLLATE COLLATE NULL | NOT NULL NULL | NOT NULL | ADD | DROP ROWGUIDCOL | ADD | DROP ROWGUIDCOL | ADD - | ADD -添加列添加列 | column_name AS computed_column_expression | column_name AS computed_column_expression ,n n | WIT
56、H CHECK | WITH NOCHECK ADD - | WITH CHECK | WITH NOCHECK ADD -添加约束添加约束 , ,n n | DROP | DROP CONSTRAINT constraint_name - CONSTRAINT constraint_name -删除约束删除约束 | COLUMN column ,| COLUMN column ,n -n -删除列删除列 | CHECK | NOCHECK CONSTRAINT - | CHECK | NOCHECK CONSTRAINT -启用或禁用约束启用或禁用约束 ALL | constraint_na
57、me , ALL | constraint_name ,n n | ENABLE | DISABLE TRIGGER - | ENABLE | DISABLE TRIGGER -启用或禁用触发器启用或禁用触发器 ALL | trigger_name , ALL | trigger_name ,n n 【例【例6-36-3】在】在“BookBook”表中,将表中,将“PubTimePubTime”字段的数据类型改为字段的数据类型改为datedate,且允,且允 许为空;将许为空;将“CheckInCheckIn”字段数据类型修改为字段数据类型修改为datedate。 1) 1) 单击单击“SQL
58、 Server Management StudioSQL Server Management Studio”工具条上的按钮,打开一个工具条上的按钮,打开一个 新新 的查询标签页。在工具条上的的查询标签页。在工具条上的“可用数据库可用数据库”下拉列表中选择下拉列表中选择 “LibraryLibrary”。 在查询页中输入在查询页中输入ALTER TABLEALTER TABLE语句,如图语句,如图6-126-12所示。所示。 2) 2) 在工具条上单击按钮,执行在工具条上单击按钮,执行alter tablealter table命令,在标签页下面的命令,在标签页下面的“消息消息 ”标签页中现实执
59、行结果。标签页中现实执行结果。 3) 3) 修改表结构时,一次只能完成一项修改。按照以上同样的步骤,完成修改表结构时,一次只能完成一项修改。按照以上同样的步骤,完成 修改修改“CheckInCheckIn”字段的操作。字段的操作。 【例【例6-46-4】在】在“UserTbUserTb”表中,为表中,为“UserBkNumUserBkNum”字段添加一个检查约束,字段添加一个检查约束, 所所 输入的已借书数量必须大于等于零。输入的已借书数量必须大于等于零。 在查询标签页中键入以下命令,并运行即可。在查询标签页中键入以下命令,并运行即可。 USE LibraryUSE Library ALTER
60、 TABLE UserTbALTER TABLE UserTb ADD CONSTRAINT U_check CHECK ( UserBkNum=0 )ADD CONSTRAINT U_check CHECK ( UserBkNum=0 ) 【例【例6-56-5】在】在“UserTbUserTb”表中添加一个字段表中添加一个字段“UserOccUserOcc”表示读者的职业,表示读者的职业, varchar(6)varchar(6)。随后再删除掉。随后再删除掉。 在查询标签页中键入以下命令,并运行即可。在查询标签页中键入以下命令,并运行即可。 ALTER TABLE UserTbALTER T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冰冻灾害应急保障
- 2026年河南郑州市高三二模高考政治试卷试题(含答案详解)
- 护理健康教育服务团队评选
- 护理疑难病例的药物治疗策略
- 舒胸胶囊与西药协同作用
- 2026年火灾急救知识考试卷及答案(八)
- 地质版(2019)必修《技术与设计2》一 一个简单流程的分析教学设计
- 肾脏疾病治疗新策略
- 皮肤附属器疾病流行病学
- 全国闽教版初中信息技术八年级下册第一单元第3课《设计无线报警器》教学设计
- 2026江西航天海虹测控技术有限责任公司招聘18人备考题库附答案详解(考试直接用)
- 肯德基2025品牌年终报告
- 老年共病个体化诊疗的指南更新策略
- 手术室麻醉科年底总结报告
- 无心磨培训课件
- 江苏中考试题历史及答案
- 2025年四川省直机关遴选笔试真题及解析及答案
- 2025年人武专干面试题库及答案
- 牙本质敏感的课件
- DB34∕T 4324-2022 水泥土搅拌桩地基加固施工技术规程
- 2025年中国移动计算机类校招笔试题及答案
评论
0/150
提交评论