《SQL项目实例教程》-模块三_第1页
《SQL项目实例教程》-模块三_第2页
《SQL项目实例教程》-模块三_第3页
《SQL项目实例教程》-模块三_第4页
《SQL项目实例教程》-模块三_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模块三创建和管理数据库表任务描述知识要点返回任务描述表是数据库中最重要的基础对象,它包含着数据库中的所有数据,其他数据库对象(如索引和视图等)都是依赖于表而存在的。若要使用数据库来存储和组织数据,首先就需要创建表。在本模块中,需要在已经建好的“ebook”数据库中按照需求完成“AdminUser”、“Book”、“OrderInfo”等基本表的设计与实施,并完成这些基本表的主键、默认值、外键关系和CHECK约束的设置。数据库实施完成后,通过“Book”等其他对象的实施,完成对“ebook”数据库的管理及应用补充。下一页返回任务描述任务1创建表数据库中的数据最终保存在基本表中。基本表的实施主要分为创建和设置两部分,本次任务主要完成的是基本表的创建。表的创建是指创建表的主要结构,核心工作是按照表中存放数据的特征,设置表中各个字段的数据类型。数据类型的设置,直接决定后续数据库对数据的使用,所以一定要按照数据本身的特征进行设置。本任务主要在“ebook”数据库中完成“AdminUser”、“Book”等基本表的创建。创建表可以通过表设计器和T-SQL语言实现,还可以使用已有表创建新表。上一页下一页返回任务描述无论使用哪种方法,都要求用户具有创建表的权限,默认状态下,系统管理员和数据库的所有者具有创建表的权限。在“ebook”数据库中创建“AdminUser”表。“AdminUser”表结构定义见表3.1。方法一:使用表设计器创建表使用表设计器可以创建新表并对该表进行命名,然后将其添加到现有数据库中。具体操作步骤如下:①启动SQLServerManagementStudio,在“对象资源管理器”窗口中,依次展开“数据库”、“ebook”节点,右击“表”节点,在弹出的快捷菜单中选择“新建表”命令,如图3.1所示。上一页下一页返回任务描述②打开“表设计器”,在“表设计器”窗口上面的网格中,每一行描述了表中一个字段,每一行有三列,分别表示列名、数据类型、长度和是否允许空属性,按照表3.1的要求依次设置各项,如图3.2所示。对“表设计器”各个关键词的说明如下:•“列名”列:在“列名”列中输入的字段名应符合SQLServer的命名规则,字段名可以是汉字、英文字母、下划线、数字和其他符号,同一个表中的字段名不能相同。上一页下一页返回任务描述•“数据类型”列:在“数据类型”列中可以从下拉列表框中选择一种数据类型,该数据类型可以是系统自带的,也可以是用户自定义的。对于默认的数据类型长度,一般不做修改。数据类型的长度可以在数据类型关键字后的括号中直接修改,也可以修改“表设计器”窗格下面“列属性”中的“长度”属性值。•“允许Null值”列:制定字段中的值是否可以为Null值。如果该字段不允许为Null值,则把复选标记去掉;如果该字段允许为Null值,则选择复选框标记。不允许为空的字段,在添加或修改数据时必须输入数据,否则会出现错误。上一页下一页返回任务描述③根据需要,在表设计器下部的“列属性”列表中设置列的附加属性,如默认值、精度、小数位数等。④重复步骤②和③,在表中定义更多列。⑤在“文件”菜单中选择“保存”命令,或者在工具栏上单击“保存”按钮。⑥在如图3.3所示的“选择名称”对话框中为该表输入一个名称,然后单击“确定”按钮。方法二:使用T-SQL语言创建表除了使用表设计器在当前数据库中创建表之外,还可以使用T-SQL语言在当前数据库或指定数据库中创建表。上一页下一页返回任务描述为了能更好地理解表的创建语句CREATETABLE,下面以建立“Book”为例介绍创建表T-SQL语句的具体使用方法。详细的语法格式说明用户可以通过SQLServer的帮助获取,并多上机实践培养熟练的操作技能。1)在“ebook”数据库中创建“Book”表,该表的表结构定义见表3.2。具体步骤如下:①在对象资源管理器中,连接到数据库引擎实例。②新建一个查询,然后在“查询编辑器”窗口中编写以下T-SQL语句。上一页下一页返回任务描述上一页下一页返回任务描述③输入完成后,单击工具栏上的“分析查询”按钮,检查代码是否有语法错误。当代码无误后,单击“执行查询”按钮,用户将在查询编辑器的结果窗口中看到执行信息,使用T-SQL语句创建的课程表如图3.4所示。④把运行成功后的代码保存为脚本文件,方便以后使用该代码。保存方法是:单击工具栏上的“保存”按钮,打开“另存为”对话框,为脚本文件命名,如“Book.sql”,完成后保存。上一页下一页返回任务描述⑤在对象资源管理器中,单击“ebook数据库”,然后从视图菜单中选择“刷新”命令,查看新建的Book表及其表中各个列。2)在“ebook”数据库中创建“OrderInfo”表,“OrderInfo”的表结构定义见表3.3。实现代码如下:上一页下一页返回任务描述3.使用已有表创建新表)如果在不同的数据库中创建相同的表或同一数据库中创建相似的表,为了提高效率,可以先使用“对象资源管理器”创建一个表,然后再利用该表生成脚本,最后使用脚本创建的数据表。在“ebook”数据库中创建“Book1”表,其结构与“Book”表相同。因为“Book”表已存在于“ebook”数据库中,所以可以使用它生成脚本,然后创建“Book1”表。具体操作步骤如下:上一页下一页返回任务描述①启动SQLServerManagementStudio,在“对象资源管理”窗口中,依次展开“数据库”、“ebook”、“表”节点,右击“Book”表,在弹出的快捷菜单中执行如图3.5左侧所示的“编写表脚本为”→“CREATE到”→“新查询编辑器窗口”命令,打开“查询编辑器”窗口,新建查询窗口如图3.5右侧所示。②此时,“查询编辑器”窗口中显示出创建“Book”表的语句。如果在不同的数据库中创建相同的表,只需修改使用数据库的名称;如果在同一数据库中创建相似的表,必须更改数据表的名称,根据实际情况修改其他内容。上一页下一页返回任务描述在这里将表名“Book”改为“Book1”即可,修改后的代码如图3.6所示。③修改完毕后,单击工具栏上的“分析查询”按钮,验证语法。当检查通过后,单击“执行查询”按钮,即可创建“Book1”表。④根据需要,单击“保存”按钮,保存脚本文件,为以后创建相似的数据表提供方便。任务2设置数据完整性任务2.1使用约束上一页下一页返回任务描述约束(Constraint)是保证数据完整性的ANSI标准方法。每一种数据完整性类型都可以由不同的约束类型来保障。约束的用途就是限制输入表中的值的范围。有关CREATETABLE语句创建约束的一般语法格式前面已经介绍过了,下面详细介绍各种类型的约束及使用方法。任务2.1.1创建主键约束方法一:使用SQLServerManagementStudio创建主键约束在“ebook”数据库中,将“AdminUser”表中的“userId”设置为主键。其操作步骤如下:上一页下一页返回任务描述①启动SQLServerManagementStudio,在“对象资源管理器”窗口中,依次展开“数据库”、“ebook”、“表”节点,右击“AdminUser”表,在弹出的快捷菜单中选择“设计”命令,打开“表设计器”窗口。②在“表设计器”窗口中,选择需要设置为主键的字段,如果选择多个字段,可以按住“Ctrl”键,同时用鼠标单击要选择的每个字段。本例中只选择“userId”字段。③选择好字段后,右击选择的该字段,在弹出的快捷菜单中选择“设置主键”命令,如图3.7所示。上一页下一页返回任务描述④执行命令后,在作为主键的字段前有一个钥匙样的图标,“表设计器”窗口如图3.8所示。也可以在选择好字段后,单击工具栏上的“钥匙”工具按钮,设置主键。⑤设置完成后,关闭“表设计器”窗口,并保存设置。方法二:使用T-SQL语句创建主键约束使用T-SQL语句创建主键约束,可以使用CREATETABLE命令完成(建表及数据完整性案例),也可以使用ALTERTABLE为已存在的表创建主键约束。上一页下一页返回任务描述在“ebook”数据库中,将“Book”表中的“bookId”设置为主键。打开查询设计器,输入如下代码:在“ebook”数据库中,将“OrderInfo”表中的“orderId”设置为主键。打开查询设计器,输入如下代码:上一页下一页返回任务描述任务2.1.2创建唯一约束方法一:使用SQLServerManagementStudio创建唯一约束在“ebook”数据库中,将“Book”表中的“isbn”设置为唯一约束。其操作步骤如下:上一页下一页返回任务描述①启动SQLServerManagementStudio,在“对象资源管理器”窗口中,依次展开“数据库”、“ebook”、“表”节点,右击“Book”表,在弹出的快捷菜单中选择“设计”命令,打开“表设计器”窗口。②在“表设计器”窗口中,右击“isbn”字段,在弹出的快捷菜单中单击“索引/键”命令,打开“索引/键”对话框。③单击“添加”命令按钮,系统给出默认的唯一约束名:“IX_isbn”,显示在“选定的主/唯一或索引”列表框中,如图3.9所示。上一页下一页返回任务描述④选中唯一约束名“IX_isbn”,在其右侧的“属性”窗口中,可以执行修改约束名称、设置约束列等操作。⑤单击“属性”窗口中“常规”中的“列”属性,在其右侧出现“…”按钮,单击该按钮,打开“索引列”对话框,如图3.10所示。在列名下拉列表框中选择“isbn”,在排序顺序中选择“降序”,设置创建唯一约束的列名。⑥设置完成后,单击“确定”按钮,回到“索引/键”对话框,修改“常规”属性中“是唯一的”属性值为“是”,如图3.9所示。上一页下一页返回任务描述⑦设置完成后,关闭“索引/键”对话框和“标设计器”窗口,并保存设置。方法二:使用T-SQL语句创建唯一约束在“ebook”数据库中,将“AdminUser”表中的“password”字段添加一个唯一约束。打开查询设计器,输入如下代码:上一页下一页返回任务描述任务2.1.3创建检查约束方法一:使用SQLServerManagementStudio创建检查约束在“ebook”数据库中,将“Book”表中的“price”列设置一个检查约束,以保证输入的数据大于等于1.0而小于等于100.0。其操作步骤如下:①启动SQLServerManagementStudio,在“对象资源管理器”窗口中,依次展开“数据库”、“ebook”、“表”节点。上一页下一页返回任务描述②右击“Book”表,在弹出的快捷菜单中选择“设计”命令,打开“表设计器”对话框。在“表设计器”窗口中,右击“price”字段,在弹出的快捷菜单中单击“CHECK约束”命令,打开“CHECK约束”对话框。③单击“添加”命令按钮,系统给出默认的CHECK约束名:“CK_price”,显示在“选定的CHECK约束”列表中,创建“CHECK约束”对话框,如图3.11所示。上一页下一页返回任务描述④单击“属性”窗口中“常规”属性“表达式”,在其对应的文本框中输入约束条件(根据要求输入“price>=1.0andprice<=100.0”表达式),或者单击其属性右侧的“”按钮,打开“CHECK约束表达式”对话框,并输入约束条件,如图3.12所示。⑤根据实际要求,在“标识”属性“名称”对应的文本框中修改CHECK约束名称,如“ck_price”;根据需要修改“表设计器”的三个属性,三个属性值都为逻辑值,具体含义如下:强制用于INSERT和UPDATE:上一页下一页返回任务描述对新添加和修改的数据验证是否符合该约束;强制用于复制:对复制的数据验证是否符合该约束;在创建或重新启动时检查现有数据:验证基本表中现有数据是否符合该约束。三个选项的默认值都是“是”,用户根据实际情况进行设置。⑥设置完成后,单击“关闭”命令按钮,完成CHECK约束的创建,并保存。方法二:使用T-SQL语句创建检查约束在“ebook”数据库中,将“OrderInfo”表中的“state”字段添加一个检查约束,以保证输入的数据取值在(“已发货”、“未发货”)范围内,打开查询编辑器,输入如下代码:上一页下一页返回任务描述任务2.1.4创建默认约束方法一:使用SQLServerManagementStudio创建检查约束在“ebook”数据库中,将“OrderInfo”表中的“orderTime”(下单时间)列设置为默认约束,默认值为:当前系统时间。其操作步骤如下:上一页下一页返回任务描述①启动SQLServerManagementStudio,在“对象资源管理器”窗口中,依次展开“数据库”、“ebook”、“表”节点。②右击“OrderInfo”表,在弹出的快捷菜单中选择“设计”命令,打开“表设计器”窗口。③单击需要设置默认的列(如“orderTime”),在下面列属性设置栏的“默认值或绑定”选项对应的输入框中输入默认值(如getdate())即可,如图3.13所示。④设置完成后,关闭“表设计器”窗口。方法二:使用T-SQL语句创建默认约束上一页下一页返回任务描述在“ebook”数据库中,将“Book”表中的“publisher”列设置为默认约束,默认值为“高等教育出版社”。打开查询编辑器,输入如下代码:任务2.1.5创建外键约束上一页下一页返回任务描述方法一:使用SQLServerManagementStudio创建外键约束在“ebook”数据库中,创建一个“OrderDetail”表,表结构定义见表3.4,并将该表中的“bookId”列创建外键约束,从而保证在“OrderDetail”中输入有效的“bookId”值。其操作步骤如下:①启动SQLServerManagementStudio,在“对象资源管理器”窗口中,依次展开“数据库”、“ebook”、“表”节点。按照任务1创建表的方法一将“OrderDetail”表创建好。上一页下一页返回任务描述②右击“OrderDetail”表,在弹出的快捷菜单中选择“设计”命令,打开“表设计器”窗口。在“表设计器”窗口中,右击“bookId”字段,在弹出的快捷菜单中单击“关系”命令,打开“外键关系”对话框。③单击“添加”命令按钮,系统给出默认的外键约束名:“FK_OrderDetail_OrderDetail”,显示在“选定的关系”列表中。④将默认的外键约束名修改并单击“FK_OrderDetail_Book”,在其右侧的属性窗口中单击“表和列规范”属性,再单击该属性右侧的“”按钮,打开“表和列”对话框,如图3.14所示。上一页下一页返回任务描述⑤在“表和列”对话框中,修改外键的名称,选择主键表和表中的主键,以及外键表中的外键,修改后的结果如图3.14所示。单击“确定”按钮,回到“外键关系”对话框,如图3.15所示。⑥设置完成后,单击“关闭”命令按钮,完成外键约束的创建并保存。方法二:使用T-SQL语句创建外键约束在“ebook”数据库中,将“OrderDetail”表中的“orderId”列创建外键约束,从而保证在“OrderDetail”中输入有效的“orderId”值。上一页下一页返回任务描述打开查询编辑器,输入如下代码:任务2.2使用规则1.创建规则上一页下一页返回任务描述创建规则,要求字段的值只能是“高等教育出版社”、“清华大学出版社”或“电子工业出版社”。打开查询编辑器,输入如下代码:2.绑定规则上一页下一页返回任务描述将publisher1_rule规则绑定到“Book”表的“publisher”字段上,保证该字段输入的数据只能为“高等教育出版社”、“清华大学出版社”或“电子工业出版社”。打开查询编辑器,输入如下代码:在“查询编辑器”窗口中输入并执行以上代码,会给出提示信息:已将规则绑定到表的列。上一页下一页返回任务描述3.解绑规则将绑定到“Book”表的“publisher”字段上的规则publisher1_rule解绑。4.删除规则上一页下一页返回任务描述任务2.3使用默认1.创建默认值创建一个名称为“def_linkMan”的默认值对象。2.绑定默认值将def_linkMan绑定到“orderInfo”表的“linkMan”字段,使其默认值为“张红”。上一页下一页返回任务描述打开查询编辑器,输入如下代码:3.解绑默认值将绑定到“orderInfo”表的“linkMan”字段的默认值解绑。上一页下一页返回任务描述4.删除默认值从“ebook”数据库中删除def_linkMan默认值。打开查询编辑器,输入如下代码:上一页下一页返回任务描述任务2.4使用IDENTITY列方法一:使用SQLServerManagementStudio创建IDENTITY列在“ebook”数据库中,修改“Book”表,为其增加一个IDENTITY列,种子值为1,增量为1,操作步骤如下:①启动SQLServerManagementStudio,在“对象资源管理器”窗口中,依次展开“数据库”、“ebook”、“表”节点。②右击“Book”表,在弹出的快捷菜单中单击“修改”命令,打开“表设计器”窗口。上一页下一页返回任务描述③在“表设计器”窗口中,选中bookId列。然后,在“表设计器”窗口下部展开“标识规范”,设置“是标识”属性为“是”,修改“标识种子”属性值为“1”,“标识增量”属性值为“1”,这样即可创建一个IDENTITY列。④保存设置,完成IDENTITY列的创建,结果如图3.16所示。方法二:使用T-SQL语句创建IDENTITY列在“ebook”数据库,创建“BookType”表,见表3.5,并在bookTypeId列创建IDENTITY(自动编号),种子值为11,增量也为11。上一页下一页返回任务描述打开查询设计器,输入如下代码:任务3管理表任务3.1修改表上一页下一页返回任务描述方法一:使用SQLServerManagementStudio修改表①启动SQLServerManagementStudio,在“对象资源管理器”窗口中,展开“数据库”节点,选择“ebook”库。②展开“ebook”数据库节点,再展开表节点,右击要修改的表,在弹出的快捷菜单中选择“修改”命令,打开“表设计器”窗口。③如前所述,在表设计器中修改各字段的定义,如字段名、字段类型、字段长度、是否为空。上一页下一页返回任务描述④添加或删除字段。如果要增加一个字段,将光标移动到最后一个字段下面,输入新字段的名称即可。如果要在某一字段前插入一个新字段,右击该字段,在弹出的快捷菜单中选择“插入列”命令;如果要删除某列,右击该列,在弹出的快捷菜单中选择“删除列”命令。方法二:使用T-SQL语句修改表(1)添加字段在“AdminUser”表中增加“sex”一列,数据类型varchar(2),不允许为空。代码如下:上一页下一页返回任务描述(2)修改字段在“AdminUser”表中修改“sex”字段的属性,使该字段的数据类型为varchar(2),允许为空。代码如下:上一页下一页返回任务描述(3)删除字段删除“AdminUser”表中的“sex”字段。代码如下:(4)添加约束上一页下一页返回任务描述有关添加约束在任务2.1使用约束内容中有详细介绍,这里不再举例。(5)删除约束删除“Book”表中的df_publish默认约束。代码如下:上一页下一页返回任务描述(6)重命名表将“ebook”数据库中的“Book”表改为“BookInfo”表。代码如下:任务3.2删除表根据数据管理的需要,有时需要删除数据库中的某些表以释放空间。上一页下一页返回任务描述删除表时,表的结构定义、数据、全文索引、约束和索引都被永久地从数据库中删除,原来存放表及其索引的存储空间可用来存放其他表。删除表的操作可以通过图像化的对象资源管理器完成,也可以通过执行DROPTABLE语句来实现。方法一:使用SQLServerManagementStudio删除表删除“ebook”数据库中的“Book1”表:①启动SQLServerManagementStudio,在“对象资源管理器”窗口中,展开“数据库”节点,选择“ebook”库。上一页下一页返回任务描述②展开“ebook”数据库节点,再展开表节点。右击要删除的“Book1”表,在弹出的快捷菜单中选择“删除”命令,弹出“删除对象”对话框,单击“确定”按钮即可。方法二:使用T-SQL语句删除表删除“ebook”数据库中的“AdminUser”表、“Book”表和“OrderInfo”表。代码如下:上一页下一页返回任务描述执行完删除命令后,将ebook数据库中的“AdminUser”表、“Book”表和“OrderInfo”表都删除掉,用户可以通过执行结果窗口看到“命令已成功完成”的信息。任务3.3查看表信息在数据库中完成表的创建后,SQLServer会在系统表sysobjects中记录下创建的表名称、对象ID、表类型、创建时间等信息,并在系统表syscolunms中记录下创建表的各个字段属性。用户可以通过SQLServerManagementStudio和T-SQL命令对表的相关信息进行查询。上一页下一页返回任务描述方法一:使用SQLServerManagementStudio查看表的基本信息①启动SQLServerManagementStudio,在“对象资源管理器”窗口中,展开“数据库”节点,选择“ebook”库。②展开“ebook”数据库节点,再展开表节点,右击需要查看信息的表,如“OrderDetail”表,在弹出的快捷菜单中选择“属性”命令,出现“表属性”对话框。在该对话框中选择“常规”、“权限”和“扩展属性”选项页查看表的基本信息。方法二:使用T-SQL语句查看表的基本信息上一页下一页返回任务描述查看“BookType”表的结构,代码如下:在“查询编辑器”中输入上述代码并执行,使用系统存储过程查看表的属性,执行结果如图3.17所示。上一页返回知识要点一、表概念表是存放数据库中所有数据的数据库对象。如同Excel电子表格,数据在表中是按行和列的格式进行组织的,其中每行代表一条记录,每列代表记录中的一个域。在一个数据库中需要包含各个方面的数据,如在“ebook”数据库中,包含AdminUser、Book、OrderInfo、OrderDetail等。因此,在设计数据库时,应先确定需要什么样的表、各表中都应该包含哪些数据以及各个表之间的关系和存取权限等,这个过程称为设计表。在设计表时,需要确定如下内容:下一页返回知识要点①表的名称。②表中每一列的名称。③表中每一列的数据类型和长度。④表中的列是否允许空值、是否唯一、是否要进行默认设置和添加用户定义约束。⑤表与表之间的关系,即确定哪些是主键、哪些是外键。⑥表中需要的索引类型和需要建立索引的列。二、数据完整性概念及分类1.数据完整性的概念上一页下一页返回知识要点数据完整性,事实上是衡量数据库中数据质量好坏的一种标志,是使无序的数据条理化,确保正确的数据被存放在正确的位置的一种手段;是确保数据库中数据一致、正确以及符合实际需求的一种思想。满足完整性要求的数据应具备以下三个特征:①数据的值正确无误,包括数据类型正确和数据值范围正确。②数据的存在必须确保同一表格数据之间的和谐关系,例如在“AdminUser”表中,不能将同一个userId分配给两个不同的管理员。上一页下一页返回知识要点③数据的存在必须能够确保维护不同表格数据之间的和谐关系,例如,在数据库“ebook”中,不允许在“OrderDetail”表中出现的bookId在“Book”表中找不到。2.完整性分类在关系数据库中,数据完整性主要包括域完整性、实体完整性、参照完整性和用户自定义完整性。(1)域完整性域完整性,也称为列完整性,就是给指定列输入数值时的有效性限制,它反映了特定域(特定列)的规则。上一页下一页返回知识要点域完整性通常是经过使用有效性检查来实现的,并且还可以通过限制数据类型、格式或者取值范围来实现。(2)实体完整性实体完整性,又称为行完整性,要求表中只有一个主键或其他唯一标识列,其值不能为空且能唯一地标识对应的记录。实质上,实体完整性就是保证表中所有的行唯一,即所有记录都是互不相同的。实体完整性的基本思想是标识数据库中存放的每一个实体。实体就是数据库所要表示的一个实际的物体或事件。通过索引、UNIQUE约束或PRIMARYKEY属性即可实现数据的实体完整性。上一页下一页返回知识要点(3)参照完整性参照完整性又称为引用完整性,它是在插入或删除数据时用于维护表与表之间数据一致性的一种手段。参照完整性保证了主表(被参照表)中的数据与从表(参照表)中数据的一致性。在SQLServer2008中,参照完整性的实现是通过定义外键(外码)与主键(主码)之间或外键与唯一键之间的对应关系来实现的。码:又称键,是能够唯一标识表中记录的字段或字段组合。如果一个表中有多个码,可选其中一个作为主码(主键),其余的都称为候选码。上一页下一页返回知识要点外码:如果一个表中的一个字段或若干个字段的组合是另一个表的码,则称该字段或字段组合为该表的外码。(4)用户自定义完整性用户自定义完整性是应用领域需要遵守的约束条件,其允许用户定义不属于其他任何完整性分类的特定业务规则。所有的完整性类型(包括CREATETABLE中所有列级约束和表级约束、存储过程以及触发器)都支持用户自定义完整性。3.约束选择方法约束是SQLServer提供的自动强制数据完整性的一种方法,它通过定义列的取值规则来维护数据的完整性。上一页下一页返回知识要点SQLServer2008支持的约束有PRIMARYKEY(主键)约束、UNIQUE(唯一)约束、NOTNULL(非空)约束、CHECK(检查)约束、DEFAULT(默认)约束、FOREIGNKEY(外键)约束。下面将介绍每个约束的具体应用方法:(1)PRIMARYKEY(主键)约束一个表通常可以通过一个列或多个列组合的数据来唯一标识表中的每一行,这个列或列组合则被称为该表中的主键。主键的作用就是强制实现实体完整性。上一页下一页返回知识要点表的主键约束有以下特征和作用:PRIMARYKEY(主键)约束利用表中一列或多列数据来唯一标识一行数据。在设置主键的表中,绝不允许出现完全相同的两行数据。设置了主键约束的一列,或多列在插入数据时,不允许为空。一个表只能有一个主键约束,参照约束使用它作为维护数据完整性的参考点。定义主键(被参照表)、外键(参照表)值约束需满足以下两点:①如果被参照表中的一行被一个外键参考,那么这一行的主键值既不能被修改,也不能被删除。上一页下一页返回知识要点也就是说,删除被参照表中的记录或更新被参照表中的主关键值,必须保证没有相同的外键值存在,否则删除或修改都会出错。②若在被参照表中不存在包含相应主键的记录,那么对应外键值就不能插入参照表中。也就是说,向参照表插入记录或更新参照表中外键值的前提是,必须保证这个外键值与主键的某个值相等或者该外键值为空,否则插入或修改都会出错。(2)UNIQUE(唯一)约束唯一约束主要是用来确保不受主键约束的列上的数据的唯一性,限制指定表中指定列上所有非空值必须互不相同,允许在创建唯一索引的列上有空值。上一页下一页返回知识要点当在一个已经存放了数据的表上增加UNIQUE约束时,SQLServer会自动对表中的数据进行检查,以确保这些数据能够满足UNIQUE约束的要求,即除NULL外,所有数据的值必须唯一,否则SQLServer会返回错误信息,并拒绝执行增加约束的操作。UNIQUE约束可以在列级或表级上设置。如果要在多列上设置UNIQUE约束,则必须设置表级约束。要修改一个UNIQUE约束,唯一的方法就是先删除该UNIQUE约束,然后在对应的列上建立新的UNIQUE约束。唯一约束与主键约束区别如下:上一页下一页返回知识要点①唯一约束允许有空值,主键约束不允许有空值。②每一个表可以定义多个唯一约束,而主键约束只能定义一个。③唯一约束与主键约束都为指定的列上建立唯一索引,这个唯一索引可以是聚簇索引,也可以是非聚簇索引,但在缺省情况下,主键约束产生聚簇索引,唯一约束产生非聚簇索引。唯一约束的具体操作方法有如下三种:①在已经有数据但没有重复值的列或列的组合上添加UNIQUE约束。②修改或删除表上已经定义的UNIQUE约束。上一页下一页返回知识要点③用户在创建表时利用T-SQL语句直接创建UNIQUE约束。(3)NOTNULL(非空)约束NOTNULL(非空)约束用来强制实现数据的域完整性,它用于设定某列值不能为空。如果指定某列值不能为空,则在添加记录时,必须为该列添加数据,并且定义了主键约束和标识列属性的列都不允许为空。(4)CHECK(检查)约束CHECK(检查)约束通过检查输入表列的数据值来实现值域的完整性,该约束可指定某列的取值范围,也可用来指定某列可取值的清单或可取值的集合。上一页下一页返回知识要点检查约束通过对一个逻辑表达式的结果进行判断来对数据进行检查。可以在一列上设置多个检查约束,也可以将一个检查约束应用于多列。根据检查约束是作用于单列还是多列,可分为列级检查约束和表级检查约束。当一列受多个检查约束控制时,所有的约束按照创建的顺序,依次进行数据有效性检查。使用检查约束的方式有如下三种:①在创建表格时,定义检查约束,即检查约束是表格定义的一部分。②在已经建立的表上添加检查约束。③修改或删除表上已经定义的检查约束。上一页下一页返回知识要点(5)DEFAULT(默认)约束DEFAULT(默认)约束用来强制数据的域完整性,它为表中某列建立一个默认值。插入记录信息时,如果没有为该列提供输入值,系统就会自动将默认值赋给该列。有时恰当使用默认值可以提高数据插入、修改的速度。(6)FOREIGNKEY(外键)约束FOREIGNKEY(外键)约束主要用来维护两个表之间的一致性关系。外键约束通过将保存在表中主键值的一列或多列添加到另一个表中,创建两个表之间的连接。也就是说,通过将一个表中的主键所在列值包含在另一个表中,这个列就成为第二个表的外键。上一页下一页返回知识要点即外键约束定义一个列,该列参考同一个表或者另外一个表的主键约束或者唯一约束。一个表可以创建多个外键约束。通过外键约束,可以实现参照完整性。(7)使用IDENTITY列IDENTITY列是表的一个字段,该字段的值不由用户输入,当用户给表添加新记录时,由系统按照某种规律自动为新添加的记录中的该列设置唯一的行序列号。在一个表中只能有一个IDENTITY列,而且它的值是由系统提供的不重复的值,所以,用IDENTITY列可以实现数据的实体完整性。上一页下一页返回知识要点IDENTITY列的数据类型可以是任何整数类型,也可以是Decimal或Numeric数据类型,但是使用这样的数据类型时,不允许出现小数。4.语句基本语法(1)采用T-SQL语句建表的基本语法上一页下一页返回知识要点上一页下一页返回知识要点•数据库名指定在其中创建表的数据库名称,且该名称必须是现有数据库的名称,如果为指定,则master数据库默认为当前数据库。•架构名指定新表所属架构的名称。架构是指包含表、视图、过程等的容器。它位于数据库内部,而数据库又在服务器内部。上一页下一页返回知识要点特定架构中的每个安全对象都必须有唯一的名称。在SQLServer2008中,架构既是一个容器,又是一个命名空间。•表名指定新表的名称,表名必须遵循标识符规则。除了本地临时表名(以单个数字符号#为前缀的名称)不能超过116个字符外,表名最多可包含128个字符。对于每一个架构,在对应数据库内表的名称是必须唯一。如果给每张表指定了不同的架构,则可以创建多个具有相同名称的表。•列名为新建表中列的名称,列名也必须遵循标识符规则,并在不能出现相同名称的两个字段,每个列名可包含1~128个字符。每个表最多可定义1024列。上一页下一页返回知识要点•CONSTRAINT为可选关键字,表示主键(PRIMARYKEY)、非空(NOTNULL)、唯一(UNIQUE)、外键(FOREIGNKEY)或检查(CHECK)约束定义的开始。约束名表示约束的名称。约束名称必须是表所属的架构中唯一。•DEFAULT指定列的默认值,如果在插入记录的过程中未显式提供值,则该列将获得此默认值。DEFAULT约束可适用于除定义为timestamp或带IDENTITY属性的列以外的任何列。上一页下一页返回知识要点•IDENTITY为自动编号标识,在表中添加新行时,数据库引擎将为该列提供唯一的增值量。标识列一般与主键约束一起用作表的唯一行标识符。可将IDENTITY属性分配给tinyint、smallint、int、bigint、decimal(p,0)或numeric(p,0)列。每个表中只能创建一个标识列。不能对标识列使用DEFAULT约束或绑定默认值。标识种子是装入表的第一行所使用的值,标识增量是向装载的前一行的标识值中添加的增量值。必须同时制定种子和增量的值,或两者都不指定。若不指定,则取默认值(1,1)。上一页下一页返回知识要点•CLUSTERED为聚集索引,PRIMARYKEY约束默认为CLUSTERED;•NONCLUSTERED为非聚集索引,UNIQUE约束默认为NONCLUSTERED;•TEXTIMAGE_ON为text、ntext、image、xml、varchar(max)、nvarchar(max)、varbinary(max)的列指定存储文件组,如果表中没有较大值的列,则不使用TEXTIMAGE_ON。(2)主键约束语法格式上一页下一页返回知识要点①用户可以对已建好的表使用T-SQL语句,修改表添加约束的语法格式如下:②用户可以在创建表时用T-]SQL语句创建主键约束,其语法格式为:上一页下一页返回知识要点上一页下一页返回知识要点(3)唯一约束语句格式①为已存在的表创建唯一约束,其语法格式如下:②用户在创建表时,利用T-SQ}语句直接创建UNIQUE约束,其语法格式为:上一页下一页返回知识要点(4)检查约束语句格式①使用T-SQL语句为已经存在的表创建检查约束,其语法格式如下:上一页下一页返回知识要点②用户在创建表时,利用T-SQL语句创建检查约束的语法格式为:关键字CHECK表示定义CHECK约束,其后的logical_expression(逻辑表达式)称为CHECK约束表达式。(5)默认约束语句格式上一页下一页返回知识要点①使用T-SQl语句为已经存在的表创建检查约束,其语法格式如下:②用户在创建表时,利用T-SQL语句创建默认约束的语法格式为:上一页下一页返回知识要点(6)外键约束语句格式①使用T-SQL语句为已经存在的表创建外键约束,其语法格式如下:②用户在创建表时,利用T-SQL语句创建外键约束的语法格式为:上一页下一页返回知识要点上一页下一页返回知识要点(7)创建自动编号语句格式使用T-SQL语句在CREATETABLE或ALTERTABLE时都可以创建IDENTITY列,其语法格式为:IDENTITY[(标识种子,标识增量)](8)创建规则语句格式CREATERULE<规则名>AS<规则表达式>(9)绑定规则语句格式创建好的规则,必须绑定到列上才能起到作用。在“查询编辑器”窗口中,可以使用系统存储过程将规

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论