数据源表
Student表 English表
如图所示,其中Student表为各学生的学号(Sno)、姓名(Sname)、性别(Ssex)、所在系(Sdept)等信息,而Englisg表则为各学生的学号(Sno)及期末的英语考试成绩(Grade).两个表
之间均有唯一的学号( Sno)标识。如何把各学生的所有信息连接起来放在一个表中?
1 通过OLE DB方法找到外部数据源,保留“选择表格”对话框中对名称的默认选择,单击“确定”按钮,激活“导入数据”对话框,再单击“属性”按钮,在弹出的“连接属性”对话框中勾选“打开文件时刷新数据”复选框,然后单击“定义”选项卡,清空“命令文本“框中原有的内容。
2 在“命令文本”框中输入以下SQL连接语句:
SELECT [sheet1$].Sno,Sname,Ssex,Sage,Sdept,Grade
FROM [sheet1$],[sheet2$]
WHERE [sheet1$].Sno=[sheet2$].Sno
单击“确定”按钮返回“导入数据”对话框,指定返回的查询数据位置为新工作表,然后单击“确定”按钮,即可把Student表及English表相关的记录连接在一起,调整单元格格式,最后的结果如图所示。
※如何理解主键标识※
本例以Sno字段作为唯一标识把Student表和English表的列字段连接在一起,通过使用主键列来标识这两者之间不重复的关系,将表的距离拉近。那么,如何理解主键标识呢?
大部分表都包含一个主键,它标识了表中的每一行,并给它们起了一个名字。每一行都必须有自己的特性,因此,不允许两行中有相同的主键。例如,一个学生在学校中的唯一标
识就是其学号,通过其学号,可以知道该学生在学校里登记的相关信息,不会与其他学生的信息发生冲突。这个唯一主键要求SQL初学者必须牢牢记住,这对于以后规范设计工作表有
很大的帮助。
主键是由表的几个列组成的,按照阅读习惯,一般是前面几列。主键可以是一个或一个以上的列。假定只有一个主键,它是由几个列组成的,那么这个主键就是这些列的集合,作为单
个单元格来使用,这就是用来标识每一行的主键。
主键就像一个名词,因为它命名了每个行的对象。其他列就像是形容词,因为它们给出了有关这个对象的其他信息。
列的名字可以看做是表定义的一部分,同样,行的名字(是行的主键)可看做是表中数据的一部分。
表的主键列有以下两条规则:
1.主键列不可以包含一个Null。这是有意义的,因为Null是一个未知数值,所以,主键的任意部分为Null将意味着用户不知道对象或者行的特性。在数据库中,一般不建议输入未经
确认的相关信息。
2.每一行都必须有一个不同于表中其他行的特性。这就是说,没有两行可以拥有相同的特性,这个相同的特性就是主键的所有列中的相同值。对于表的任意两行,它们必须至少在主
键的一个列是不同的。
对于主键,可以归纳成以下几点:
1.大部分表都有主键。
2.通常,主键是由表的第一列或者前面几列组成的。
3.主键指明了行所表示的对象、事件或关系。按照语法,它是一个名词,因为它是行中所有信息的题目。
4.表的其他列陈述了主键。按照语法,它们是形容词或者副词,它们描述了主键所指明的对象,并且给出了有关对象的其他信息。