第4章创建和使用表new_第1页
第4章创建和使用表new_第2页
第4章创建和使用表new_第3页
第4章创建和使用表new_第4页
第4章创建和使用表new_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

第4章创建和使用表4.1表的概念4.1.1什么是表SQLServer中的数据库由表的集合组成,这些表用于存储一组特定的结构化数据。表中包含行(也称为记录或元组)和列(也称为属性)的集合。SQLServer提供了很多种数据类型,还可以根据需要用户自已定义新的数据类型,SQLServer中常用的数据类型如表4.1所示。数据类型说明number(p)整数(其中p为精度)decimal(p,s)浮点数(其中p为精度,d为小数位数)char(n)固定长度字符串(其中n为长度)varchar(n)可变长度字符串(其中n为最大长度)datetime日期和时间空值是列的一种特殊取值,用NULL表示。空值既不是char型或varchar型中的空字符串,也不是int型的0值。它表示对应的数据是不确定的。表中主键列必须有确定的取值(不能为空值),其余列的取值可以不确定(可以为空值)。4.1.2表中数据的完整性

数据完整性包括规则、默认值和约束等。1.规则

规则是指表中数据应满足一些基本条件。例如,学生成绩表中分数只能在0~100之间,学生表中性别只能取“男”或“女”之一等。2.默认值默认值是指表中数据的默认取值。例如,学生表中性别的默认可以设置为“男”。3.表的约束约束是指表中数据应满足一些强制性条件,这些条件通常由用户在设计表时指定。(1)非空约束(NOTNULL):非空约束是指数据列不接受NULL值。例如,学生表中学号通常设定为主键,不能接受NULL值。(2)检查约束(CHECK约束):检查约束是指限制输入到一列或多列中的可能值。例如,学生表中性别约束为只能取“男”或“女”值。(3)唯一约束(UNIQUE约束):唯一约束是指一列或多列组合不允许出现两个或两个以上的相同的值。例如,学生成绩表中,学号和课程号可以设置为唯一约束,因为一个学生对应一门课程不能有两个或以上的分数。(4)主键约束(PRIMARYKEY约束):主键约束是指定义为主键(一列或多列组合)的列不允许出现两个或两个以上的相同值。例如,若将学生表中的学号设置为主键,则不能存在两个学号相同的学生记录。(5)外键约束(FOREIGNKEY约束):一个表的外键通常指向另一个表的候选主键,所谓外键约束是指输入的外键值必须在对应的候选码中存在。例如,学生成绩表中的学号列是外键,对应于学生表的学号主键,外键约束是指输入学生成绩表中的学号值必须在学生表的学号列中已存在。4.2创建表

SQLServer提供了两种方法创建数据库表,第一种方法是利用SQLServer管理控制器建立表;另一种方法是利用T-SQL语句中的createtable命令建立表。本章只介绍采用前一种方法建表,后一种方法将在下一章介绍。

【例4.1】使用SQLServer管理控制器在school数据库中建立student表(学生表)、teacher表(教师表)、course表(课程表)和score表(成绩表)。操作步骤启动SQLServer管理控制器,展开“LCB-PC”服务器节点。展开“数据库”节点。选中数据库“school”,展开school数据库。选中“表”,单击鼠标右键,在出现的快捷菜单中选择“新建表”命令,如图4.1所示。此时打开表设计器窗口,在“列名”栏中依次输入表的列名,并设置每个列的数据类型、长度等属性。输入完成后的结果如图4.2所示。名称:指定列名称。长度:数据类型的长度。默认值或绑定:在新增记录时,如果没有把值赋予该字段,则此默认值为字段值。数据类型:列的数据类型,用户可以单击该栏,然后单击出现的下三角按钮,即可进行选择。允许空:指定是否可以输入空值。RowGuid:可以让SQLServer产生一个全局唯一的列值,但列类型必须是uniqueidentifier。有此属性的列会自动产生列值,不需要用户输入(用户也不能输入)。排序规则:指定该列的排序规则。在“学号”列上右击鼠标,在出现的快捷菜单中选择“设置主键”命令,如图4.3所示,从而将“学号”列设置为该表的主键,此时,该列名前面会出现一个钥匙图标。单击工具栏中的保存按钮,出现如图4.4所示的对话框,输入表的名称“student”,单击“确定”按钮。此时便建好了student表(表中没有数据)。依照上述步骤,再创建3个表:teacher表(教师表)、course表(课程表)和score表(学生成绩表)。表的结构分别如图4.7~图4.9所示。4.3修改表的结构采用SQLServer管理控制器修改和查看数据表结构十分简单,修改表结构与创建表结构的过程相同。

【例4.2】使用SQLServer管理控制器,先在student表中增加一个民族列(其数据类型为char(16)),然后进行删除。操作步骤启动SQLServer管理控制器,展开“LCB-PC”服务器节点。展开“数据库”节点。选中“school”,将其展开,选中“表”,将其展开,选中表“dbo.student”,单击鼠标右键,在出现的快捷菜单中选择“设计”命令。在班号列前面增加民族列,其操作是,在打开的表设计器窗口中,用鼠标右击班号列,然后在出现的快捷菜单中选择“插入列”命令。在新插入的列中,输入“民族”,设置数据类型为char,长度为16,如图4.10所示。现在删除刚增加的民族列。用鼠标右击“民族”列,然后在出现的快捷菜单中选择“删除列”命令,如图所示,这样就删除了民族列。单击工具栏中的保存按钮,保存所进行的修改。说明:本例操作完毕后,student表保持原有的表结构不变。4.4数据库关系图一个数据库中可能有多个表,表之间可能存在着关联关系,建立这种关联关系的图示称为数据库关系图。4.4.1建立数据库关系图【例4.3】建立school数据库中4个表的若干外键关系。操作步骤启动SQLServer管理控制器,展开“LCB-PC”服务器节点。展开“数据库”节点,选中“school”,将其展开。选中“数据库关系图”,单击鼠标右键,在出现的快捷菜单中选择“新建数据库关系图”命令,如图4.11所示。此时出现“添加表”对话框,由于要建立school数据库中4个表的关系,所以选中每一个表,并单击“添加”按钮,添加完毕后,单击“关闭”按钮返回到SQLServer管理控制器。在“关系图”中任意空白处单击鼠标右键,在出现的快捷菜单中选择“添加表”命令即可出现“添加表”对话框。此时SQLServer管理控制器右边出现如图4.12所示的“关系图”对话框。现在建立student表中学号列和score表中学号列之间的关系:选中score表中的学号列,按下鼠标左键不放,拖动到student表上学号列上,放开鼠标左键,立即出现如图4.13所示的“表和列”对话框,表示要建立student表中学号列和score表中学号列之间的关系(用户可以从主键表和外键表组合框中选择其他表,也可以选择其他列名),这里保持表和列不变,关系名也取默认值,单击“确定”按钮。出现如图4.14所示的“外键关系”对话框,单击“确定”按钮返回到SQLServer管理控制器。采用同样的过程建立course表中课程号列(主键)和score表中课程号列(外键)之间的外键关系。采用同样的过程建立teacher表中编号列(主键)和course表中任课教师编号列(外键)之间的外键关系。最终建好的关系图如图4.16所示。单击工具栏中的保存

按钮来保存关系。通过数据库关系图建立的关系反映在各个表的键中,如图4.17所示是score表的键列表,其中PK_score键是通过设置主键建立的,而FK_score_course和FK_score_student两个键是通过上例建立的。8.4.2删除关系和数据库关系图通过数据库关系图删除关系当不再需要时,可以通过数据库关系图删除表之间的外键关系。其操作是:进入建立该外键关系的数据库关系图,选中该外键关系连线,单击鼠标右键,在出现的快捷菜单中选择“从数据库中删除关系”命令,在出现的对话框中选择“是”即可。2.删除数据库关系图当不再需要数据库关系图后,可以选中“数据库关系图”列表中的某个数据库关系图(如dbo.Diagram_0),单击鼠标右键,在出现的快捷菜单中选择“删除”命令即可。删除某个数据库关系图后,其包含的外键关系仍然保存在数据库中,不会连同该数据库关系图一起被删除。若某数据库关系图被删除了,还需要删除其外键关系,只有进入各表的键列表中,一个一个将不需要的外键删除掉。4.5表的更名和删除4.5.1表的更名【例4.4】将数据库school中abc表(已创建)更名为xyz。操作步骤启动SQLServer管理控制器,展开“LCB-PC”服务器节点。展开“数据库”节点,展开“school”,选中“表”,将其展开。选中表“dbo.abc”,单击鼠标右键,在出现的快捷菜单中选择“重命名”命令。此时表名称变为可编辑的,直接将其修改成“xyz”即可。4.5.2删除表【例4.5】删除数据库school中xyz表(已创建)。操作步骤启动SQLServer管理控制器,展开“LCB-PC”服务器节点。展开“数据库”节点,展开“school”,选中“表”,将其展开。选中表“dbo.xyz”,单击鼠标右键,在出现的快捷菜单中选择“删除”命令。此时出现“删除对象”对话框,直接单击“确定”按钮将xyz表删除了。4.6记录的新增和修改记录的新增和修改与记录的表内容的查看的操作过程是相同的,就是在打开表的内容窗口后,直接输入新的记录或者进行修改。

【例4.6】输入school数据库中student、teacher、course和score等4个表的相关记录。操作步骤启动SQLServer管理控制器,展开“LCB-PC”服务器节点。展开“数据库”节点,选中“school”,将其展开,选中“表”,将其展开。选中表“dbo.student”,单击鼠标右键,在出现的快捷菜单中选择“编辑前200行”命令。此时出现student数据表编辑对话框,用户可以在其中各列中直接输入或编辑相应的数据,这里输入6个学生记录,如图4.18所示。采用同样的方法输入teacher、course和score表中数据记录,分别如图4.19~图4.21所示。

说明:本例中输入的数据作为样本数据,在本书后面的许多例子中用到。4.7表的几种特殊的列计算列计算列由可以使用同一表中的其他列的表达式计算得来。表达式可以是非计算列的列名、常量、函数,也可以是用一个或多个运算符连接的上述元素的任意组合。表达式不能为子查询。除非另行指定,否则计算列是未实际存储在表中的虚拟列。每当在查询中引用计算列时,都将重新计算它们的值。数据库引擎在CREATETABLE和ALTERTABLE语句中使用PERSISTED关键字(持久的)来将计算列实际存储在表中。如果在计算列的计算更改时涉及任何列,将更新计算列的值。

【例4.7】在school数据库中设计一个含自动计算总分的计算列的表stud1,并输入记录验证。启动SQLServer管理控制器,在school数据库中创建stud1表,如图4.22所示,其中“总分”列是计算列,其值是由语文、数学、英语和综合四门课程累计的。操作步骤打开该表,输入6个记录,如图4.23所示,SQLServer会自动计算出总分,总分列呈现浅灰色,不可输入。2.标识列如果一个列包含有规律的数值,可以设计成标识列。标识列包含系统生成的连续值,用于唯一标识表中的每一行。因此,标识列不能包含默

温馨提示

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

评论

0/150

提交评论