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

下载本文档

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

文档简介

第8章创建和使用表8.1表的概念8.1.1什么是表

在关系数据库中,每一个关系都表现为一张表。表是用来存储数据和操作数据的逻辑结构,关系数据库中的所有数据都表现为表的形式,表由列和行组成,行称为记录,列称为属性或字段。

SQLServer提供了很多种数据类型,还可以根据需要用户自已定义新的数据类型,SQLServer中常用的数据类型如下所示。数据类型说明number(p)整数(其中p为精度)decimal(p,s)浮点数(其中p为精度,d为小数位数)char(n)固定长度字符串(其中n为长度)varchar(n)可变长度字符串(其中n为最大长度)datetime日期和时间

注意:空值是列的一种特殊取值,用NULL表示。它表示对应的数据不存在、不确定或不知道。表中主键列必须有确定的取值不能为空值,其余列的取值可以根据现实语义决定是否可以取空值。8.1.2表中数据的完整性

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

规则是指表中数据应满足一些基本条件。

例如,学生成绩表中分数只能在0~100之间。2.默认值

默认值是指表中数据的默认取值。

例如,学生表中性别的默认可以设置为“男”。3.约束

约束是指表中数据应满足一些强制性条件,这些条件通常由用户在设计表时指定。

(1)非空约束(NOTNULL):非空约束是指数据列不接受NULL值。

例如,学生表中学号通常设定为主键,不能接受NULL值。

(2)检查约束(CHECK约束):检查约束是指限制输入到一列或多列中的可能值。

例如,学生表中性别约束为只能取“男”或“女”值。

(3)唯一约束(UNIQUE约束):唯一约束是指一列或多列组合不允许出现两个或两个以上的相同的值。

例如,学生成绩表中,学号和课程号可以设置为唯一约束,因为一个学生对应一门课程不能有两个或以上的分数。(4)主键约束(PRIMARYKEY约束):主键约束是指定义为主键(一列或多列组合)的列不允许出现两个或两个以上的相同值。

例如,若将学生表中的学号设置为主键,则不能存在两个学号相同的学生记录。

(5)外键约束(FOREIGNKEY约束):一个表的外键是参照另一个表的候选主键的属性或属性组合,外键约束是指输入外键值时必须参照所对应的另一个表的候选主键值。

例如,成绩表中的学号列是外键,对应于学生表的学号主键,外键约束是指输入成绩表中的学号值必须在学生表的学号列中已存在,因此,在输入上述两个表的数据时,必须先输入学生表的数据,然后才能输入成绩表的数据,即学生表中存在这个学生,成绩表才能有其成绩记录。8.2创建表两种创建表的方法

使用SQLServer管理控制器建立表

使用T-SQL语句中的createtable命令建立表创建表的过程1.创建表的结构(定义表)

设置表各列的列名、数据类型、是否允许取null值、默认值、主键约束、唯一约束、外键约束等2.输入表的记录在设计表结构时,应该考虑如下几点因素表中需要包含的列,每一列的数据类型、精度。表中哪些列允许空值或不允许空值。表中是否设置主键,在何处设置主键。表中是否设置约束、默认值等,以及在何处设置。表中是否设置外键以及在何处设置。

表中是否设置索引、在何处设置以及设置什么样的索引。

【例8.1】

使用SQLServer管理控制器在school数据库中建立student表(学生表)、teacher表(教师表)、course表(课程表)、allocate(课程分配表)和score表(成绩表)。

解:其操作步骤如下:

(1)启动SQLServer管理控制器,展开“LCB-PC”服务器节点。(2)展开“数据库”节点。选中数据库“school”,展开school数据库。

(3)选中“表”,单击鼠标右键,在出现的快捷菜单中选择“新建表”命令,如图8.1所示。

(4)此时打开表设计器窗口,在“列名”栏中依次输入表的字段名,并设置每个字段的数据类型、长度等属性。输入完成后的结果如下图,每个列都对应一个“列属性”对话框,其中各个选项的含义如下:名称:指定列名称。长度:数据类型的长度。默认值或绑定:在新增记录时,如果没有把值赋予该字段,则此默认值为字段值。数据类型:列的数据类型,用户可以单击该栏,然后单击出现的下三角按钮,即可进行选择。允许空:指定是否可以输入空值。RowGuid:可以让SQLServer产生一个全局唯一的列值,但列类型必须是uniqueidentifier。有此属性的列会自动产生列值,不需要用户输入(用户也不能输入)。排序规则:指定该列的排序规则。

(5)在学号列上右击鼠标,在出现的快捷菜单中选择“设置主键”命令,如下图,从而将学号列设置为该表的主键,此时,该列名前面会出现一个钥匙图标。

(6)单击工具栏中的保存按钮,出现下图所示的对话框,输入表的名称“student”,单击“确定”按钮。此时便建好了student表(表中没有数据)。

(7)依照上述步骤,再创建4个表:teacher表(教师表)、course表(课程表)、allocate(课程分配表)和score表(学生成绩表)。表的结构分别如下图。

最后在school数据库中建立的5个表的表结构如下(带下划线字段表示主键):

student(学号,姓名,性别,出生日期,班号)

teacher(编号,姓名,性别,出生日期,职称,部门)

course(课程号,课程名,任课教师)

allocate(班号,课程号,教师编号)

score(学号,课程号,分数)8.3修改表的结构

使用SQLServer管理控制器修改和查看数据表结构与创建表结构的过程相同。

【例8.2】

使用SQLServer管理控制器,先在student表中增加一个民族列(其数据类型为char(16)),然后进行删除。

解:其操作步骤如下:(1)启动SQLServer管理控制器,展开“LCB-PC”服务器节点。

(2)展开“数据库”节点。选中“school”,将其展开,选中“表”,将其展开,选中表“dbo.student”,单击鼠标右键,在出现的快捷菜单中选择“修改”命令,如图8.8所示。

(3)在班号列前面增加民族列,其操作是,在打开的表设计器窗口中,用鼠标右击班号列,然后在出现的快捷菜单中选择“插入列”命令。(4)在新插入的列中,输入“民族”,设置数据类型为char,长度为16,如图所示。

(5)现在删除刚增加的民族列。用鼠标右击“民族”列,然后在出现的快捷菜单中选择“删除列”命令,如图8.9所示,这样就删除了民族列。

(6)单击工具栏中的保存按钮,保存所进行的修改。说明:本例操作完毕后,student表保持原有的表结构不变。8.4数据库关系图

一个数据库中可能有多个表,表之间可能存在着关联关系,建立这种关联关系的图示称为数据库关系图。8.4.1建立数据库关系图通过一个示例说明建立数据库关系图的过程。

【例8.3】

建立school数据库中5个表的若干外键关系。

解:其操作步骤如下:(1)启动SQLServer管理控制器,展开“LCB-PC”股务器节点。(2)展开“数据库”节点,选中“school”,将其展开。

(3)选中“数据库关系图”,单击鼠标右键,在出现的快捷菜单中选择“新建数据库关系图”命令,如图8.11所示。

(4)此时出现“添加表”对话框,由于要建立school数据库中5个表的关系,所以选中每一个表,并单击“添加”按钮,添加完毕后,单击“关闭”按钮返回到SQLServer管理控制器。在“关系图”中任意空白处单击鼠标右键,在出现的快捷菜单中选择“添加表”命令即可出现“添加表”对话框。

(5)此时SQLServer管理控制器右边出现如图8.12所示的“关系图”对话框。

(6)现在建立student表中学号列和score表中学号列之间的关系。

(7)采用同样的过程建立course表中课程号列(主键)和score表中课程号列(外键)之间的外键关系。(8)采用同样的过程建立teacher表中编号列(主键)和allocate表中教师编号列(外键)之间的外键关系。(9)采用同样的过程建立course表中课程列(主键)和allocate表中课程号列(外键)之间的外键关系。

(10)最终建好的关系图如图所示。单击工具栏中的保存按钮来保存关系,此时出现“选择名称”对话框,输入关系图名称,单击“确定”按钮保存。

建好的school数据库中5个表之间的关系如下图。

通过数据库关系图建立的关系反映在各个表的键中,如图所示是allocate表的键列表,其中PK_allocate键是通过设置主键建立的,而FK_allocate_course和FK_allocate_teacher两个键是通过上例建立的。8.4.2删除关系和数据库关系图1.通过数据库关系图删除关系

可通过数据库关系图删除表之间的外键关系。

其操作方法:打开相关的数据库关系图,选中该外键关系连线,单击鼠标右键,在出现的快捷菜单中选择“从数据库中删除关系”命令,在出现的对话框中选择“是”即可。2.删除数据库关系图

当不再需要数据库关系图时,可以选中“数据库关系图”列表中的某个数据库关系图(如dbo.Diagram_0),单击鼠标右键,在出现的快捷菜单中选择“删除”命令即可。删除某个数据库关系图后,其包含的外键关系仍然保存在数据库中,不会连同该数据库关系图一起被删除。若某数据库关系图被删除了,还需要删除其外键关系,只有进入各表的键列表中,一个一个将不需要的外键删除掉。8.5更改表名

在有些情况下需要更改表的名称,被更名的表必须已经存在。可使用SQLServer管理控制器更改表名。

【例8.4】

将数据库school中abc表(已创建)更名为xyz。

解:其操作步骤如下:(1)启动SQLServer管理控制器,展开“LCB-PC”股务器节点。(2)展开“数据库”节点,展开“school”,选中“表”,将其展开。

(3)选中表“dbo.abc”,单击鼠标右键,在出现的快捷菜单中选择“重命名”命令,如图所示。

(4)此时表名称变为可编辑的,如图所示,直接将其修改成“xyz”即可。8.6删除表

【例8.5】

删除数据库school中xyz表(已创建)。

解:其操作步骤如下:(1)启动SQLServer管理控制器,展开“LCB-PC”股务器节点。(2)展开“数据库”节点,展开“school”,选中“表”,将其展开。

(3)选中表“dbo.xyz”,单击鼠标右键,在出现的快捷菜单中选择“删除”命令,如图所示。

(4)此时出现“删除对象”对话框,直接单击“确定”按钮将xyz表删除了。8.7记录的新增和修改

记录的新增和修改与记录的表内容的查看的操作过程是相同的,就是在打开表的内容窗口后,直接输入新的记录或者进行修改。

【例8.6】

输入school数据库中student、teacher、course、allocate和score等5个表的相关记录。

解:其操作步骤如下:(1)启动SQLServer管理控制器,展开“LCB-PC”股务器节点。(2)展开“数据库”节点,选中“school”,将其展开,选中“表”,将其展开。

(3)选中表“dbo.student”,单击鼠标右键,在出现的快捷菜单中选择“打开表”命令,如图所示。

(4)此时出现student数据表编辑对话框,用户可以在其中各字段中直接输入或编辑相应的数据,这里输入6个学生记录,如图所示。

(5)采用同样的方法输入teacher、course、allocate和score表中数据记录,分别如图所示。说明:本例中输入的数据作为样本数据,在本书后面的许多例子中用到。常用的基本数据类型种类数据类型数字整数int,bigint,smallint,tinyint精确数值decimal,numeric近似数值float,real货币money,smallmoney日期和时间datetime,smalldatetime字符Non-Unicodechar,varchar,varchar(max),textUnicodenchar,nvarchar,nvarchar(max),ntext二进制binary,varbinary,varbinary(max)图像image全局标识符uniqueidentifierXMLxml特殊bit,cursor,timestamp,sysname,table,sql_variant数字数据类型数字数据类型表示符号用途精确数字类型整数数据类型int、bigint、smallint、tinyint存储数字数据,直接进行数据运算位数据类型bit用于一些条件逻辑判断货币数据类型money、smallmoney存储货币数据十进制小数型decimal、numeric存储带固定精度和位数的小数近似数字类型浮点数据类型float、real存储范围非常大的数字,用于表示指定数的大致数据值整数数据类型:bigint型,长度为8个字节,存储范围为-263~263-1;int型,长度为4个字节,存储范围为-231~231-1;smallint型,长度为2个字节,存储范围为-215~215-1;tinyint型,长度为1个字节,存储范围为0~255。位型数据(bit):只存储0、1或NULL,长度为1字节,常用于一些条件逻辑判断。货币数据类型:小数位数最多4位,money型长度为8个字节,存储范围为-263~263-1,smallmoney型长度为4个字节,存储范围为-231~231-1,使用时在数字前面加上“$”货币符号。十进制小数型:decimal和numeric,这两种数据类型为完全相同的数据类型。decimal数据类型由整数部分和小数部分构成,它的语法格式如下:decimal(p,s)其中p表示数字的精度,s表示数字的小数位数,s的默认值为0。浮点数据型数:(real和float)通常用于科学计算,数据用科学计数法表示。这种数据类型的优点是能够存储范围非常大的数字。但是浮点数据类型容易产生舍入误差。在对数据的精度要求并不是绝对严格时,可以考虑使用real或者float型数据。字符数据类型字符类型表示符号用法ANSI字符char存储指定长度的字符串varchar存储可变长度字符text存储大量字符Unicode字符nchar用于存储Unicode字符nvarchar与varchar类似,存储可变长度Unicode字符ntext与text类似,存储大量Unicode字符数据Char:存储固定长度字符的ANSI字符类型,最长可以容纳8K个字符,当列中字符长度基本一致时(如学号、姓名等),可以使用char类型。Varchar:用于存储可变长度的ANSI字符数据,最长可以容纳8K个字符,当数据长度相差较大时(如备注),使用varchar类型可以节省存储空间。Text:存储长度大于8K个字符的ANSI字符。Nchar:用于存储固定长度的Unicode字符数据。Nvarchar:用于存

温馨提示

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

评论

0/150

提交评论