| 目的:继上一篇:SQL开发中容易忽视的一些小地方(一) 总结SQL中的null用法后,本文我将说说表联接查询. 为了说明问题,我创建了两个表,分别是学生信息表(student),班级表(classInfo).相关字段说明本人以SQL创建脚本说明: 测试环境:SQL2005 CREATE TABLE [dbo].[student]([ID] [int] IDENTITY(1,1) NOT NULL,
 [sUserName] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,--姓名
 [sAddress] [varchar](200) COLLATE Chinese_PRC_CI_AS NULL,--地址
 [classID] [int] NULL,--班级
 [create_date] [datetime] NULL CONSTRAINT [DF_student_create_date] DEFAULT (getdate())--入班时间
 ) ON [PRIMARY]
 学生表记录:插入数据999999行.可以说的上是一个不大不小的表. CREATE TABLE [dbo].[classInfo]([classID] [int] IDENTITY(1,1) NOT NULL,--所属班级ID
 [sClassName] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,--班级名称
 [sInformation] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,--班级相关信息
 [sDescription] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,--班级描述
 [iSchooling] [int] NULL,--学费
 CONSTRAINT [PK_classInfo] PRIMARY KEY CLUSTERED
 (
 [classID] ASC
 )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
 ) ON [PRIMARY]
 班级表:共插入100行,实际可能不存在这么多的班级. 示例需求:查询学生的基本信息以及所属班级名称,我们都会第一时间想到用表关联,这里我列出相关实现方法. 第一:将数据量较大的学生表放在前面. --大表在前 select top 1000 a.sUserName,b.sClassName from student ainner join classInfo b on
 a.classID=b.classID
 第二:将数据量较小的班级表放在前面. --小表在前 select top 1000 a.sUserName,b.sClassName from classInfo binner join student a on
 a.classID=b.classID
 第三:用where 实现. --join与where select top 1000 a.sUserName,b.sClassName from classInfo b, student awhere a.classID=b.classID
 (编辑:南平站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |