程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL開發中容易忽視的一些小地方(二)

SQL開發中容易忽視的一些小地方(二)

編輯:關於SqlServer

目的:繼上一篇: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 a
 inner join classInfo b on
  a.classID=b.classID

第二:將數據量較小的班級表放在前面.

--小表在前

select top 1000 a.sUserName,b.sClassName from classInfo b
 inner join student a on
  a.classID=b.classID

第三:用where 實現.

--join與where

select top 1000 a.sUserName,b.sClassName from classInfo b, student a
where a.classID=b.classID

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved