IT計算機課件sql sever 數(shù)據(jù)庫 入門- 5_第1頁
IT計算機課件sql sever 數(shù)據(jù)庫 入門- 5_第2頁
IT計算機課件sql sever 數(shù)據(jù)庫 入門- 5_第3頁
IT計算機課件sql sever 數(shù)據(jù)庫 入門- 5_第4頁
IT計算機課件sql sever 數(shù)據(jù)庫 入門- 5_第5頁
已閱讀5頁,還剩145頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

(

ul)I

-a"

SOI

SAS

a加

s

v強

q

g那

v

a里

sw

u

o眼

w

n噌

p談

o

h小

U

I蝌

u

<“

3.1SQL概述(視頻)

3.2學(xué)生課程數(shù)據(jù)庫

3.3數(shù)據(jù)定義

3.4數(shù)據(jù)查詢

3.5數(shù)據(jù)更新

3.6視圖

3.8小結(jié)

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

?3」SQL概述

;SQL的特點

-1.綜合統(tǒng)一

-2.高度非過程化

-3,面向集合的操作方式

-4.以同一種語法結(jié)構(gòu)提供兩種使用方法

-5.語言簡潔,易學(xué)易用

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

5.語言簡捷,易學(xué)易用

表3.1SQL語言的動詞

SQL功能動詞

數(shù)據(jù)定義CREATE,DROP,ALTER

數(shù)據(jù)查詢SELECT

數(shù)據(jù)操縱INSERT,UPDATE

DELETE

數(shù)據(jù)控制GRANT,REVOKE

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

3.1.2SQL語言的基本概念

的,OFSC電2

?基本表(BaseTable)和視圖(View)

ASQL語言支持數(shù)據(jù)庫的三級模式結(jié)構(gòu)

SQL語言支持的關(guān)系數(shù)據(jù)庫的三級邏輯結(jié)構(gòu)

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

視圖與基本表

2,OF

1.基本表(BaseTable)

基本表是模式的基本內(nèi)容。每個基本表都是一

個實際存在的關(guān)系。

2.視圖(View)

視圖是外模式的基本單位,用戶通過視圖使用

數(shù)據(jù)庫中基于基本表的數(shù)據(jù)(基本表也可作為

外模式使用)。一個視圖雖然也是一個關(guān)系,

但是它與基本表有著本質(zhì)的區(qū)別。任何一個視

圖都是從已有的若干關(guān)系導(dǎo)出的關(guān)系,它只是

邏輯上的定義,實際并不存在。在導(dǎo)出時,給

出一個視圖的定義(從哪幾個關(guān)系中,根據(jù)什

么標準選取數(shù)據(jù),組成一個什么

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

域視圖與基本表(續(xù))

名稱的關(guān)系等),此定義存放在數(shù)據(jù)庫(數(shù)據(jù)

字典)中,但沒有真正執(zhí)行此定義(并未真正生

成此關(guān)系)。當使用某一視圖查詢時,將實時從

數(shù)據(jù)字典中調(diào)出此視圖的定義;根據(jù)此定義以及

現(xiàn)場查詢條件,從規(guī)定的若干關(guān)系中取出數(shù)據(jù),

組織成查南4果,展現(xiàn)給用戶。

因此,視圖是虛表,實際并不存在,只有定

義存放在數(shù)據(jù)字典中。

當然,用戶可在視圖上再定義視圖,就像在

基本表上定義視圖一樣,因為視圖也是關(guān)系。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

3.存儲文件

存儲文件是內(nèi)模式的基本單位。每一個存

儲文件存儲一個或多個基本表的內(nèi)容。一個基

本表可有若干索引,索引也存儲在存儲文件中。

存儲文件的存儲結(jié)構(gòu)對用戶是透明的。

下面將介紹SQL的基本語句。各廠商的

RDBMS實際使用的SQL語言,與標準SQL語

言都有所差異及擴充。因此,具體使用時,應(yīng)

參閱實際系統(tǒng)的有關(guān)手冊。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

第三章關(guān)系數(shù)據(jù)庫標準語言SQL

3.1SQL概述

3.2學(xué)生課程數(shù)據(jù)庫

3.3數(shù)據(jù)定義

3.4數(shù)據(jù)查詢

3.5數(shù)據(jù)更新

3.6視圖

3.8小結(jié)

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

3.2學(xué)生課程數(shù)據(jù)庫?■一學(xué)生

Student

學(xué)號姓名性別年齡所在系

SnoSnameSsexSageSdept

2002151李勇男20CS

21

2002151劉晨女19IS

22

2002151王敏女18MA

23

2002151張立用19IS

25

(a)

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

'場3.2學(xué)生課程數(shù)據(jù)庫一課程

課程號課程名先行課學(xué)分

CnoCnameCpnoCcredit

1數(shù)據(jù)庫54

2數(shù)學(xué)2

3信息系統(tǒng)14Course

4操作系統(tǒng)63

5數(shù)據(jù)結(jié)構(gòu)74

6數(shù)據(jù)處理2

7PASCAL語言64

(b)

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

3.2學(xué)生課程數(shù)據(jù)庫?一選課

學(xué)號課程號成績

SnoCnoGrade

200215121192

200215121285

200215121388

200215122290

200215122380

(C)

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

第三章關(guān)系數(shù)據(jù)庫標準語言SQL

3.1SQL概述

3.2學(xué)生課程數(shù)據(jù)庫

3.3數(shù)據(jù)定義

3.4數(shù)據(jù)查詢

3.5數(shù)據(jù)更新

3.6視圖

3.8小結(jié)

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

入SQL2000數(shù)據(jù)庫簡介

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

SQLServer的發(fā)展

1.誕生

SQLServer2000是Microsoft開發(fā)和推廣的關(guān)系數(shù)

據(jù)庫管理系統(tǒng),是目前最為流行的關(guān)系數(shù)據(jù)庫管理

系統(tǒng)之一。它的第一個版本是由Microsoft、

Sybase和AshtonTate三家公司在1988年合作開

發(fā)的,應(yīng)用對象主要是OS/2操作系統(tǒng)的關(guān)系數(shù)據(jù)庫

管理系統(tǒng)產(chǎn)品。

2.主要版本

在MicrosoftSQLServer的發(fā)展歷程中,最為重要

的版本有三個:SQLServer6.5>SQLServer7.0

和SQLServer2000o

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

SQLServer2000主要特點

?1.對XML支持

?2.用戶定義函數(shù)和新的數(shù)據(jù)類型

?3.支持多個SQLServer實例

,4.分布式查詢

?5.備份和還原

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

SQLServer2000的版本

?1.SQLServer2000企業(yè)版

?2.SQLServer2000標準版

?3.SQLServer2000個人版

?4.SOLServer2000開發(fā)版

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

>SQLServer2000是一種采用SQL語言的

關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它包括:

?數(shù)據(jù)庫文件

?數(shù)據(jù)庫對象

?數(shù)據(jù)庫文件組

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

(視頻)

>SQL2000安裝與構(gòu)成

?企業(yè)管理器的應(yīng)用

?查詢分析器的應(yīng)用

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

域一、數(shù)據(jù)庫文件分類

;或據(jù)庫以文件的形式存放在磁盤上,根據(jù)其

作用不同,可分為以下三種類型:

?1)主數(shù)據(jù)文件(primaryfile)

?用來存儲數(shù)據(jù)和數(shù)據(jù)庫的啟動信息。每

個數(shù)據(jù)庫必須有且僅有一個主數(shù)據(jù)文件,其

擴展名為.MDF。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

輔助數(shù)據(jù)文件(secondaryfile)

?用來存放數(shù)據(jù)。使用它可以擴展存儲空

間。若只使用主數(shù)據(jù)文件,則文件的最大容

量受一個磁盤容量的限制。但使用輔助數(shù)據(jù)

文件就可以將他們放到不同的磁盤上,不再

受一個磁盤的限制。

?每個數(shù)據(jù)庫可有0個或多個輔助數(shù)據(jù)文件,

其擴展名為.NDF。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

>3)事務(wù)日志文件(transactionlog)

?用于存放數(shù)據(jù)庫的修改信息。

(如:nsert,update,delete)者6會記錄在

其中。當數(shù)據(jù)庫被破壞時,可利用事務(wù)日志

文件來恢復(fù)數(shù)據(jù)庫的內(nèi)容。

每個數(shù)據(jù)庫有一個或多個事務(wù)日志文件,其

擴展名為.LDFo

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

尸創(chuàng)建數(shù)據(jù)庫時,一個數(shù)據(jù)庫至少由一個主數(shù)

據(jù)文件和一個事務(wù)日志文件組成,默認時存

?programfile\microsoftsqlserver\

mssql\data目錄下,也可以改變存放路

徑。

?默認時,

?主數(shù)據(jù)文件名為“數(shù)據(jù)庫名-DATA.MDF”

?事務(wù)日志文件名為“數(shù)據(jù)庫名?LOG.LDF”

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

域二、數(shù)據(jù)庫對象

?SQLServer2000中有以下數(shù)據(jù)對象:

?表、視圖、存儲過程、

?觸發(fā)器、用戶自定義數(shù)據(jù)類型、用戶自定義

函數(shù)、索引、規(guī)則、約束等。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

Ol三、數(shù)據(jù)庫文件組

?為擴展存儲空間,在建庫時常將多個數(shù)據(jù)文

件存放在不同的磁盤上并把多個數(shù)據(jù)文件組

成一個或多個文件組。

?創(chuàng)建數(shù)據(jù)庫對象(如表)時,要指定它的組。

這樣在進行數(shù)據(jù)操縱時,由數(shù)據(jù)對象找到文

件組,再由文件組找到組中的數(shù)據(jù)文件。

?在寫入數(shù)據(jù)時,數(shù)據(jù)庫根據(jù)組內(nèi)文件的大小

按比例寫入組內(nèi)所有數(shù)據(jù)文件中。這樣可以

多個磁盤同時并行工作。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

南錯徽件組允許多個數(shù)據(jù)庫文件組成一個組,并對它

徐進行管尤比如,可以x個數(shù)據(jù)文件

^<aata1.mdf>data2.ndf和data3.ndf)分別創(chuàng)建在

三個盤上,這三個文件組成文件組fgroupl,在創(chuàng)建

表的時候,就可以指定一個表創(chuàng)建崔文侔組fgroupl

上。這樣該表的數(shù)據(jù)就可以分布在三個盤上,在燈

該表執(zhí)行查詢時,可以并行操作,大大提高了查詢

效率O

?SQLServer的數(shù)據(jù)庫文件和文件組必須遵循以

下規(guī)則:

-(1)一個文件和文件組只能被一個數(shù)據(jù)庫使用。

?(2)一個文件只能屬于一個文件組。

?(3)數(shù)據(jù)和事務(wù)日志不能共存于同一文件或文件組

上。

?(4)日志文件不能屬于文件組。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

、系統(tǒng)數(shù)據(jù)庫

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

的,OFSC電2

安裝時,自動安裝了幾個特殊的數(shù)據(jù)庫。

包括四個系統(tǒng)數(shù)據(jù)庫:

?1)master2)tempdb

?3)model4)msdb

,兩個示例數(shù)據(jù)庫:

?1)Northwind2)pubs

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

1、master

FSQLServer2000中的主控數(shù)據(jù)庫,用于管理

其它數(shù)據(jù)庫和保存SQLServer系統(tǒng)信息。

?它記載了系統(tǒng)中所有的登陸帳號、系統(tǒng)配置信息、

所有數(shù)據(jù)庫的信息、所有用戶數(shù)據(jù)庫的主文件地

址等,并保存在各個表中。

?為與用戶建立的表區(qū)別,這些表成為“系統(tǒng)表”

?都以“sys”開頭。

?Master數(shù)據(jù)庫包含60個表,26個視圖,930個存

儲過程,以及174個擴展存儲過程。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

常用的master系統(tǒng)表

OF

系統(tǒng)表名稱用途

Sys_server_info保存服務(wù)器及安裝信息

Spt_values用于保存系統(tǒng)表的特征值

sysconfigures保存服務(wù)器選項的代碼、名稱及設(shè)置

sysdatabases保存所有數(shù)據(jù)庫的代碼、名稱和創(chuàng)建

日期等信息

syslogins保存系統(tǒng)所有登陸帳號

sysdevices保存系統(tǒng)數(shù)據(jù)庫設(shè)備和備份的信息

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

2、tempdb數(shù)據(jù)庫

'^^二個臨時數(shù)據(jù)庫

?用于存放用戶創(chuàng)建的臨時表、存儲過程或

用戶聲明的全局變量,以及用戶通過游標篩

選出來的數(shù)據(jù),并為數(shù)據(jù)排序提供一個臨時

性工作空間。

?用戶離開時,tempdb中的表將被刪除。當

再次啟動SQLServer2000時又會重建

tempdb數(shù)據(jù)庫??臻g不夠時,系統(tǒng)會自動

擴展它的大小。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

用tempdb不需要特殊權(quán)限,不論SQL

Server2000中有多少數(shù)據(jù)庫,tempdb只有

一個。

?Tempdb的負擔最重,幾乎所有的查詢都可

能使用到它。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

3.Model數(shù)據(jù)庫

-SQLServer2000中的模板數(shù)據(jù)庫。所

包含的各個系統(tǒng)表可為每一個用戶數(shù)據(jù)庫共

享。

?當創(chuàng)建一個數(shù)據(jù)庫時,model數(shù)據(jù)庫中的內(nèi)

容會自動復(fù)制到該數(shù)據(jù)庫中。所以我們可以

把每一個新建數(shù)據(jù)庫所需要的數(shù)據(jù)對象創(chuàng)建

在model數(shù)據(jù)庫中。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

t常用數(shù)據(jù)庫系統(tǒng)表

系統(tǒng)表名稱用途

Sysobject保存數(shù)據(jù)庫中所有的數(shù)據(jù)庫對象的信息,

S包括表、視圖、存儲過程、規(guī)則

Systypes記錄系統(tǒng)數(shù)據(jù)類型和用戶定義的數(shù)據(jù)類型

Sysfiles記錄數(shù)據(jù)庫的數(shù)據(jù)文件和日志文件的信息

Sysdevice保存數(shù)據(jù)庫的文件組信息

s

sysusers記錄數(shù)據(jù)庫中所有的用戶和角色。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

4.Msdb數(shù)據(jù)庫

>SQLServer2000代理使用msdb數(shù)據(jù)庫來

安排報警、作業(yè)并記錄操作員。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

3.3SQL數(shù)據(jù)定義

表3.2SQL的數(shù)據(jù)定義語句

操作方式

操作對

象倉建冊u除修改

數(shù)據(jù)庫CREATEDROPALTER

databasedatabasedatabase

表CREATEDROPALTER

TABLETABLETABLE

視圖CREATEDROPVIEW

VIEW

索引CREATEDROP

INDEXINDEX

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

3.3.1模式的定義與刪除

的,OFSC電2

一定義模式

CREATESCHEMA〈模式名〉

AUTHORIZATION(用戶名〉

二刪除模式

DROPSCHEMAv模式名〉

<CASCADE|RESTRICT>

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

?補充:一個SQL模式由模式名和模式擁有

者的用戶名或帳號來確定并包含模式中每

一個元素(基本表、視圖、索引等)。大

多數(shù)的DBMS不用“SQL模式”這個名詞

而是采用“數(shù)據(jù)庫”(DATABASE)這個

名詞。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

創(chuàng)建、修改、刪除數(shù)據(jù)庫

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

______________兩種方法

工[管理器向?qū)?chuàng)建(視而

?查詢分析器語句創(chuàng)建

CREATEDATABASE〈數(shù)據(jù)庫名〉

DROPDATABASE〈數(shù)據(jù)庫名〉

ALTERDATABASE〈數(shù)據(jù)庫名〉

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

Createdatabase語句格式

"zOF?.

^Createdatabase數(shù)據(jù)庫名

[on[primary]

{([name=數(shù)據(jù)文件的邏輯名稱,]

filename^數(shù)據(jù)文件的物理名稱'

[,§126=數(shù)據(jù)文件的初始大小]

Lmaxsize=數(shù)據(jù)文件的最大容量]

[,filegrowth=數(shù)據(jù)文件的增長量])}

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

ogon

{([name=事務(wù)日志文件的邏輯名稱,]

filename=,事務(wù)日志文件的物理名稱'

[,size=事務(wù)日志文件的初始大小]

[,maxsize=事務(wù)日志文件的最大值]

[,filegrowth=事務(wù)日志文件的增長量])}

[,…n]]

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

濟證創(chuàng)建一個名為studentl的數(shù)據(jù)庫,包含

Y木主數(shù)據(jù)文件和一個事務(wù)日志文件。主數(shù)

據(jù)文件的邏輯文件名為student!data,物理

文件名為student1_data.mdf,初始容量大

小為10MB,最大容量為50MB,每次增長量為

25%。事務(wù)日志文件的邏輯名為

studentllog,物理文件名為student1_log」df,

初始容量大小為10MB,最大容量不受展制,

每次增長量為2MB.要求這兩個文件都存放

在“e:\data”目錄下。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

在查詢分析器的編輯窗口輸入以下代碼:

?CREATEDATABASEstudentl

?ONPRIMARY

?(NAME=student1data,

?FILENAME="e:\data\student1_data.mdf,

?SIZE=10,

?MAXSIZE=50,

?FILEGROWTH=25%)

?LOGON

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

?(NAME=student1log9

?FILENAME="e:\data\student1Jog.ldf,

?SIZE=10MB,

?MAXSIZE=UNLIMITED,

?FILEGR0WTH=2MB)

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

?企業(yè)管理器向?qū)?chuàng)建

?查詢分析器語句創(chuàng)建

一、定義表語句的格式

二、數(shù)據(jù)類型

三、完整性約束

四、修改表的格式

五、刪除表的格式

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

3.3.2基本表的定義格式

一、定義基本表

CREATETABLEv表名〉

(v列名〉〈數(shù)據(jù)類型,[v列級完整性約束條件>]

[,V列名,V數(shù)據(jù)類型>[V列級完整性約束條件>]]…

[,V表級完整性約束條件>]);

—〈表名〉:所要定義的基本表的名字

-V列名,:組成該表的各個屬性(列)

-〈列級完整性約束條件〉:涉及相應(yīng)屬性列的完整性

約束條件

-V表級完整性約束條件〉:涉及一個或多個屬性列的

完整性約束條件

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

>創(chuàng)建表語句格式

型[(長度)][NULL|NOTNULL]

[IDENTITY(初始值,步長值)]

其中列約束的格式為:

[CONSTRAINT約束名]PRIMARYKEY[(歹U名)]

[CONSTRAINT約束名]UNIQUE[(歹U名)]

[CONSTRAINT約束名][FOREIGENKEY[(外鍵歹U)]]

REFERENCES弓I用表名(引用列)

[CONSTRAINT約束名]CHECK(檢查表達式)

[CONSTRAINT約束名]DEFAULT默認值。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

"比1說明:

少當約束定義放在列屬性設(shè)置之后,可以省略”列

名“。若約束定義單獨作為一個子句(構(gòu)成表級完

整性約束)時可以省略列名。

?2)IDENTITY子句用于指定對字段進行自動編號。

?3)使用CONSTRAINT關(guān)鍵字可以對約束進行命名,

若省略關(guān)鍵字,約束名使用默認名稱。

?4)PRIMARYKEY用來設(shè)置主鍵;UNIQUE用來

設(shè)置唯一性約束;FOR日GENKEY用來設(shè)置外鍵

約束;CHECK用來設(shè)置檢查約束;DEFAULT用來

設(shè)置默認值約束。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

在SQLServer中創(chuàng)建表有如下限制:

①每個數(shù)據(jù)庫里最多有20億個表;

②每個表上最多可以創(chuàng)建一個聚集索弓I和249個非聚

集索引;

③每個表最多可以包含1024個字段;

④每條記錄最多可以占用8060字節(jié),但不包括text字

段和image字段。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

、數(shù)據(jù)類型

T用SQL語句定義表時,需要為表中的每一

個字段設(shè)置一個數(shù)據(jù)類型,用來指定字段所

存放的數(shù)據(jù)是整數(shù)、字符串、貨幣或是其它

類型的數(shù)據(jù)。

?SQLSERVER的數(shù)據(jù)類型有很多種,分為

以下9類:

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

:電溫數(shù)數(shù)據(jù)類型:依整數(shù)數(shù)值的范圍大小,有

int,smallint,tinyiht四種;

-Bigint:存放-263-263-1數(shù)值范圍內(nèi)的整型數(shù)據(jù)

-Int:存放?231?231」數(shù)值范圍內(nèi)的整型數(shù)據(jù)

-Smallint:存放?215?2傷/數(shù)值范圍內(nèi)的整型數(shù)

據(jù)

-Tinyint:存放。?255數(shù)值范圍內(nèi)的整型數(shù)據(jù)

2,精確數(shù)值類型:用來定義可帶小數(shù)部分的數(shù)字,

有NUMERIC和DECIMAL兩種。二者相同,但建

議使用DECIMAL。如:123.0、8000.56

Decimal(p,s):p為精度,表示不算小數(shù)點,總輸出

的位數(shù);s為小數(shù)點后的位數(shù)。其取值范圍為

-1038?[Q38」__________

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

■3.近似值型數(shù)據(jù):

■該類型用于存儲浮點數(shù),包括float和real兩

?Float(n):其中n為精度,表示總輸出位數(shù)。

?這種近似數(shù)值型數(shù)據(jù)不能確定所輸出的數(shù)值

精確度。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

4日期時間數(shù)據(jù)類型:用來表示日期與時間,依

時間范圍與精確程度可分為DATETIME與

SMALLDATETIME兩種。

-Datetime:存放1/1/1753?12/31/9999的時間數(shù)

據(jù),精確到0.001s。

-Smalldatetime:存放1/1/1900?6/6/2079的時

間數(shù)據(jù),精確到分。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

字符型數(shù)據(jù)類型:用來存儲漢字、英文字母、

數(shù)字、標點、和各種符號,包括:CHAR,

VARCHAR,TEXT三種,如:“數(shù)據(jù)庫”

Char(n):按固定長度存儲字符數(shù)據(jù)

Varchar(n):按變長存儲字符數(shù)據(jù)

Text:可存儲最大長度為231-1個字節(jié)字符數(shù)據(jù)。

前兩種字符型數(shù)據(jù)中,如果不指定n值,其默認

值為1。

在輸入字符型數(shù)據(jù)時要用單引號號括起來。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

?6凈一字符型數(shù)據(jù)(unicode)

壓血3種數(shù)據(jù):定長字符型nchar、變長字符

型nvarchar、和文本類型ntext。

Nchar(n):按固定長度存儲n個Unicode數(shù)據(jù)

Nvarchar(n):存放可變長度的n個Unicode數(shù)據(jù)

Ntext:存儲最大長度為23。-1個字節(jié)Unicode數(shù)據(jù)

統(tǒng)一字符型數(shù)據(jù)與字符型數(shù)據(jù)區(qū)別:

如:char(2)最多可存放2個英文字母或1個漢字;

Nchar(2)則最多存放2個漢字或2個英文字母或1個

漢字1個英文字母

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

o_______

二進制數(shù)據(jù)類型:用來定義二進制碼的數(shù)據(jù)。

有:BINARY,VARBINARY,IMAGE三種,

通常用十六進制表示:如:OX5F3C

BINARY(n):按固定長度存儲二進制數(shù)據(jù)。若

輸入的數(shù)據(jù)不足n個字節(jié),補足后存儲;若超

過n個字節(jié),則截斷后存儲。總是用n個字節(jié)存

儲數(shù)據(jù)。

VARBINARY(n):按變長存儲二進制數(shù)據(jù)。若輸

入數(shù)據(jù)不足n個字節(jié),按實際長度存儲;若超過

n個字節(jié),則截斷個存儲。

IMAGE:可存儲最大長度為231個字節(jié)的二進

制數(shù)據(jù)。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

0.貨幣型數(shù)據(jù)

?用于存儲貨幣數(shù)據(jù),包括money和

smallmoney兩種。這些數(shù)據(jù)類型實際上都

是帶有4位小數(shù)的decimal類型數(shù)據(jù)。

?輸入貨幣型數(shù)據(jù)時要在數(shù)據(jù)前加貨幣符號。

若為負值,則在貨幣符號后面加符號。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

?9.位類型數(shù)據(jù)(bit)

?用于存儲整數(shù),只能取值0、1或null(空

值),可用于邏輯判斷中。

■在位類型的字段中輸入0和1以外的任何值,

系統(tǒng)都會作為1來處理。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

二常用的完整性約束

?主鍵約束(PRIMARYKEY)

?唯一約束(UNIQUE)

?外鍵約束(FOR日GNKEY)

?檢查約束(CHECK)

?默認值約束(DEFAULT)

?空值約束(NULL)

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

1.主鍵約束(primarykey)

…鍵約束是用來保證表中記錄唯一可區(qū)分的列。一

個表可以通過一列或列組合的數(shù)據(jù)來唯一標識表中

的每一條記錄。

?創(chuàng)建了主鍵約束的列有如下特點:

?1)每一表僅能定義一個主鍵,主鍵值是表中記錄的

?標識。

?2)主鍵列可以有一個或多個列組合而成。

?3)主鍵值不可為空。

?4)主鍵值不可重復(fù)。若主鍵是多列組成時,某一列

-上的數(shù)據(jù)可以重復(fù),但多列的組合值不能重復(fù)。

?5)image和text類型的列不能做主鍵。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

2.唯一約束(unique)

宅定一條記錄的一個字段值或幾個字段的組

合值不得與其他記錄的相同字段或字段組合

的值重復(fù),將這種限制成為“唯一約束”。

?唯一約束是為了保證除主鍵列外的其他列的

數(shù)據(jù)不重復(fù)。它可以由一個列或多個列組成。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

唯一約束和主鍵約束的區(qū)別:

?15一個表中只能定義一個主鍵約束,但可

以定義多個唯一約束。

?2)如果在某列創(chuàng)建了主鍵約束,表中記錄在

磁盤的存放順序就以該列的值從小到大的順

序存放,而唯一約束則不改變記錄的物理存

放順序,僅保證該列的值不重復(fù)。

?3)定義了唯一約束的列數(shù)據(jù)可以為空值,

而定義了主鍵約束的列數(shù)據(jù)不能為空值。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

3,外鍵約束(foreignkey)

[特點如下:

?1)外鍵列可以由是一個列或多個列組成。

?2)外鍵列的取值可以為空,可以有重復(fù)值,

但必須是它所引用列的列值之一。引用列必

須是創(chuàng)建了主鍵約束或唯一約束的列。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

:期4.檢查約束(check)__________

里常查約束是用來檢查一個字段或多個字段的

輸入值是否滿足指定的約束條件。

?使用邏輯表達式來限制某列上可以接受的數(shù)

值范圍,將這種對字段輸入值的限制成為

“檢查約束”。

例如

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

5.默認值約束(default)

-在數(shù)據(jù)庫中建立一個默認值并把該默認值綁定到表中

某字段或用戶定義數(shù)據(jù)類型時,如果用戶在插入記錄

時沒有明確提供該字段數(shù)值,系統(tǒng)便自動將默認值賦

給該字段,這種對字段數(shù)值的限制被稱為“默認值”

約束。

?在用戶定義數(shù)據(jù)類型的情況下,如果使用默認值約束,

則默認值被插入到使用這個自定義數(shù)據(jù)的所有字段中C

?默認值可以是常量、內(nèi)置函數(shù)或表達式。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

6,空值約束(null)

尸空值約束就是指尚不知道或不確定的數(shù)據(jù)值,

它不等同于。或空格。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

例題

05]建立一個“學(xué)生”表Student,它由學(xué)號

Sno>姓名Sname、性另USsex、年齡Sage、

所在系Sdept五個屬性組成。其中學(xué)號不能為

空,值是唯一的,并且姓名取值也唯一。

CREATETABLEStudent

(SnoCHAR(5)NOTNULLUNIQUE,

SnameCHAR(20)UNIQUE,

SsexCHAR(1),

SageINT,

SdeptCHAR(15));

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

學(xué)生表結(jié)構(gòu)如下圖:

SnoSnameSsexSageSdept

字符型字符型字符型整數(shù)字符型

長度為5長度為20長度為1長度為15

不能為空值

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

[例7]建立一個“學(xué)生選課”表S表它由學(xué)號

Sno>課程號Cno,修課成績Grade組成,其

中(Sno,Cno)為主碼。

CREATETABLESC

SnoCHAR(5),

表級完整性約束

CnoCHAR(3),

Gradeint,

Primarykey(Sno,Cno);

Foreignkey(sno)Referencesstudent(sno)

Foreignkey(cno)Referencescourse(cno))

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

例1:試創(chuàng)建customers表(在market中),記

〕兼客戶的基木信息。設(shè)置客戶編號字段為主鍵

約束,電話字段為唯一約束,姓名字段不能為

空。

?USEmarket

?GO

?CREATTABLEcustomers

?(客戶編號INTPRIMARYKEY,

?姓名VARCHAR(20)NOTNULL,

?電話VARCHAR(50)unique,

?出生日期DATETIME)

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

?例2:在market中創(chuàng)建orders表,記錄客

戶定購貨品的訂單信息,設(shè)置訂單號字段

為自動編號,初始值為1,遞增量為1,同

時設(shè)置主鍵。設(shè)置客戶編號字段為外鍵約

束。數(shù)量字段檢查約束為數(shù)量大于0,同時

不能為空。訂貨日期設(shè)為默認值,為系統(tǒng)

日期。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

market

?CREATETABLEorders

?訂(單號intIDENTITY(1,1)PRMARYKEY,

?貨品名稱varchar(20)NOTNULLFOR日GN

KEYREFERENCESgoods(貨品名稱)

客戶編號intFOR日GNKEY

REFERENCEScustomers(客戶編號)

數(shù)量intNOTNULLCHECK(數(shù)量>0)

總金額money

訂貨日期datetimeDEFAULTgetdate()),一,

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

_____________修改基本表

TABLEv表名〉

[ADDv新列名〉〈數(shù)據(jù)類型〉[完整性約束]]

[ADDCONSTRAINTv完整性約束名><約束類型>]

[DROPCOLUMNv列名>[,…n]]

[DROPCONSTRAINTv完整性約束名>]

[ALTERCOLUMNv列名〉v數(shù)據(jù)類型〉];

-V表名,:要修改的基本表

-ADD子句:增加新列或新的完整性約束條件

-DROP子句:刪除指定的完整性約束條件

-ALTERCOLUMN子句:用于修改列名和數(shù)據(jù)類型

-DROPCOLUMN字句:用于從表中刪除一個或多個

字段

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

_____________JU題

[例8]向Student表增加“入學(xué)時間”歹U,其數(shù)據(jù)類

型為日期型。

ALTERTABLEStudentADDScomeDATE;

-不論基本表中原來是否已有數(shù)據(jù),新增加的列一

律為空值(新添列可以設(shè)置為允許為空)。

-若新添列設(shè)置不允許為空時,必須給該列指定默

認值,SQLServer就將該默認值送給已存在數(shù)

據(jù)的新添列,否則操作將失敗。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

[例9]將年齡的數(shù)據(jù)類型改為半字長整數(shù)。

ALTERTABLEStudentALTERCOLUMN

SageSMALLINT;

-注:修改原有的列定義有可能會破壞已有數(shù)據(jù)

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

例題

[例10]刪除學(xué)生姓名必須取唯一值的約束。

ALTERTABLEStudent

0表示在SQL2000中不合法

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

?例:刪除customers表中“電子郵件”字段

?USEmarket

?ALTERTABLEcustomers

?DROPCOLUMN電子郵件

?注意:在刪除列時,必須先刪除基于該列的索

引和約束后,才能刪除該列

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

五、刪除基本表

DROPTABLEv表名〉

[RESTRICT!8s8D互7;

刪除基本表時,系統(tǒng)會從數(shù)據(jù)字典中刪去有關(guān)

該基本表及其索引的描述

不同數(shù)據(jù)庫產(chǎn)品的規(guī)定不一樣O

見SQL2000目錄索弓I

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

例題

)OF於砂

[例11]刪除Student表

DROPTABLEStudentCASCADE;

[例12]?STRICT時的刪除Page88

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

3.3.2建立與刪除索引

索引是一種特殊類型的數(shù)據(jù)庫對象,

它與表有著密切的關(guān)系。索引用來

提高表中數(shù)據(jù)的查詢速度

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

kServer使用索引來實現(xiàn)表或視圖中記

能字,段的唯一性約束,對數(shù)據(jù)進行物理排

序或把數(shù)據(jù)展開到多個文件組中,以此來提

e高檢索效率。

編號姓名職業(yè)編號

?查詢右表編號006Aa01

為003的職工002Bb08

005Cc03

007Dd05

003Ee09

001Ff15

004gg04

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

方法有二:全表查詢,索引查詢。

編號指針地址

0016

0022

在編號字段上建

0035

0047立索引

0053

0061

0074

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

索引分類

工窿一索引和非唯一索引

?唯一索引要求所有數(shù)據(jù)行中任意兩行中的被索

引列不能存在重復(fù)值。也不能有兩個null,

而非唯一索引則不存在這一限制。

例如:如果一個表中的一個字段或多個字段的組

合在多行記錄中具有null值(相同),則不能

將這個字段或字段組合作為唯一索引鍵。

如:SC表中sno

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

2.聚集索引和非聚集索引_____________

金索引改變記錄的物理存儲順序,使之與索

引列的順序完全相同。

?非聚集索引不改變表記錄的存放順序。

?由于一個表中的數(shù)據(jù)只能按照一種順序來存儲,

所以一個表中只能建立一個聚集索引。

建立聚集索引后,更新該索引列上的數(shù)據(jù)時,往往

導(dǎo)致表中的記錄物理順序的變更,代價較大,所以

經(jīng)常更新的列不適合建立聚集索引.

例如

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

建立索引的方法

、通過企業(yè)管理器

、查詢分析器中創(chuàng)建語句

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

尊332建立與刪除索引

建立索引

-DBA或表的屬主(即建立表的人)根據(jù)需要建立

-有些DBMS自動建立以下列上的索引

?PRIMARYKEY

?UNIQUE

?維護索引

一DBMS自動完成

?使用索引

-DBMS自動選擇是否使用索引以及使用哪些索引

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

建一、建立索引語句格式

?^^ATE[UNIQUE][CLUSTERED]

?INDEXv索引名>0N

?v表名〉(〈歹U名>[<ASC|DESC>][,...n])

-用v表名,指定要建索引的基本表名字

-索引可以建立在該表的一列或多列上,各列名之間用逗

號分隔

-用v次序〉指定索引值的排列次序,升序:ASC,降序:

DESCo缺省值:ASC

-UNIQUE表明此索引的每一個索引值只對應(yīng)唯一的數(shù)據(jù)

記錄

-CLUSTERED表示要建立的索引是聚簇索引

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

列14]為學(xué)生■課程數(shù)據(jù)庫中的Student,

Course,SC三個表建立索引。其中Student表按

學(xué)號升序建唯一索引,Course表按課程號升序建

唯一索引,SC表按學(xué)號升序和課程號降序建唯一

索引。

CREATEUNIQUEINDEXStusnoONStudent(Sno);

CREATEUNIQUEINDEXCoucnoONCourse(Cno);

CREATEUNIQUEINDEXSCno

ONSC(SnoASC,CnoDESC);

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

建立索引幾點說明

?唯一值索引

-對于已含重復(fù)值的屬性列不能建UNIQUE索引

-對某個列建立UNIQUE索引后,插入新記錄時

DBMS會自動檢查新記錄在該列上是否取了

重復(fù)值。這相當于增加了一個UNIQUE約束

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

期建立索引(續(xù))

-聚簇索引

-建立聚簇索引后,基表中數(shù)據(jù)也需要按指定的聚簇屬性

值的升序或降序存放。也即聚簇索引的索引項順序與表

中記錄的物理順序一致

[例13]:

CREATECLUSTEREDINDEXStusnameON

S(Sname);

在S表的Sname(姓名)列上建立一個聚簇索引,而且

Student表中的記錄將按照Sname值的升序存放

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

、刪除索引

DROPINDEX表名.索引名[,一.n];

-刪除索引時,系統(tǒng)會從數(shù)據(jù)字典中刪去有關(guān)

該索引的描述。

[例15]冊ij除S表的Stusname索弓I。

DROPINDEXstudent.Stusname;

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

3.4查詢

3.4.1單表查詢

3.4.2連接查詢

3.4.3嵌套查詢

3.4.4集合查詢

3.4.5SELECT語句的一般格式

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

概述

?語句格式

SELECT[ALL|DISTINCT]〈目標列表達式〉

[,v目標列表達式習(xí)…

FROMv表名或視圖名>[,v表名或視圖名>>?.

[WHEREv條件表達式>]

[GROUPBYv歹U名[HAVINGv條件表達式>]]

[ORDERBY〈歹U名2>[ASC|DESC]];

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

_______________語句格式______________

"?^SELECT子句:指定要顯示的屬性列或表達式

-FROM子句:指定查詢對象(基本表或視圖)

-WHERE子句:指定查詢條件

-GROUPBY子句:對查詢結(jié)果按指定列的值分

組,該屬性列值相等的元組為一個組。通常會

在每組中作用集函數(shù)。

-HAVING短語:篩選出只有滿足指定條件的組

-ORDERBY子句:對查詢結(jié)果表按指定列值的

升序或降序排序

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

示例數(shù)據(jù)庫

生?課程數(shù)據(jù)庫

學(xué)生表:S(Sno,Sname,Ssex,Sage,Sdept)

課程表:C(Cno,Cname,Cpno,Ccredit)

學(xué)生選課表:SC(Sno,Cno,Grade)

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

3.4查詢

?3.4.1單表查詢

?3.4.2連接查詢

?3.4.3嵌套查詢

?3.4.4集合查詢

■345SELECT語句的一般格

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

3.4.1單表查詢

查詢僅涉及一個表,是一種最簡單的查詢操作

、選擇表中的若干列

二、選擇表中的若干元組

三、對查詢結(jié)果排序

四、使用集函數(shù)

五、對查詢結(jié)果分組

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

1.查詢指定列

Wi]查詢?nèi)w學(xué)生的學(xué)號與姓名。

SELECTSno,Sname

FROMS;

[例2]查詢?nèi)w學(xué)生的姓名、學(xué)號、所在系。

SELECTSname,Sno,Sdept

FROMS;

注意:目標表達式中的各個列的先后順序可以與

表中的順序不一致。

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

2.查詢?nèi)苛?/p>

[例3]查詢?nèi)w學(xué)生的詳細記錄。

SELECTSno,Sname,Ssex,Sage,Sdept

FROMStudent;

SELECT*

FROMStudent;

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

3.查詢經(jīng)過計算的值

SELECT子句的v目標列表達式〉為表達式

-算術(shù)表達式

—字符串常量

-函數(shù)

—列別名

_等

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

植)3.查詢經(jīng)過計算的值

[例4]查全體學(xué)生的姓名及其出生年份。

SELECTSname,2004-Sage

FROMStudent;

輸出結(jié)果:

Sname無列名

李勇1976

劉晨1977

王名1978

張立1978

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

3.查詢經(jīng)過計算的值

5]查詢?nèi)w學(xué)生的姓名、出生年份和所有

系,要求用小寫字母表示所有系名。

SELECTSname,'YearofBirth:2004-Sage.

ISLOWER(Sdept)Q

FROMS;

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

例題(續(xù))

輸出結(jié)果:

Sname無列名無列名無列名

李勇YearofBirth:1984cs

劉晨YearofBirth:1985is

王名YearofBirth:1986ma

張立YearofBirth:1985is

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

[例5.1]使用列川:改變杳詢結(jié)果的列標題

OFsc^^

SELECTSnameNAME,'YearofBirth:,BIRTH,

2000-SageBIRTHDAY,

ISLOWER(Sdept)DEPARTMENT

FROMS;

輸出結(jié)果

NAMEBIRTHBIRTHDAYDEPARTMENT

李勇YearofBirth:1984cs

劉晨YearofBirth:1985is

王名YearofBirth:1986ma

張立YearofBirth:1984is

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

、選擇表中的若干元組

?消除取值重復(fù)的行

?查詢滿足條件的元組

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

1.消除取值重復(fù)的行

疊^SELECT子句中使用DISTINCT短語

假設(shè)SC表中有下列數(shù)據(jù)

SnoCnoGrade

95001192

95001285

95001388

95002290

95002380

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

ALL與DISTINCT

)OF於砂

[例6]查詢選修了課程的學(xué)生學(xué)號。

(1)SELECTSno

FROMSC;

或(默認ALL)

SELECTALLSno

FROMSC;

結(jié)果:Sno

200215121

200215121

200215121

200215122

200215122

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

FSELECTDISTINCTSno

FROMSC;

結(jié)果:

Sno

200215121

200215122

指定DISTINCT,表示去掉重復(fù)行。缺省為ALL

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

例題(續(xù))

意DISTINCT短語的作用范圍是所有目標列

例:查詢選修課程的各種成績

錯誤的寫法

SELECTDISTINCTCno,DISTINCTGrade

FROMSC;

正確的寫法

SELECTDISTINCTCno,Grade

FROMSC;

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

2,查詢滿足條件的元組

WHERE子句常用的查詢條件

表3.3常用的查詢條件

查詢條件謂詞

=,>,<,>=,<=,!=,<>,!>,!<;

比較

NOT+上述比較運算符

確定范圍BETWEENAND,NOTBETWEENAND

確定集合IN,NOTIN

字符匹配LIKE,NOTLIKE

空值ISNULL,ISNOTNULL

多重條件AND,OR

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

(1)比較大小

ERE子句的〈比較條件〉中使用比較運算符

一=,>,<,>=,<=,!=或<>,!>,!<,

-邏輯運算符NOT+比較運算符

-[例7]查詢計算機科學(xué)系全體學(xué)生的名單

一selectsname

一froms

-wheresdept='CS'

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

的,OF50鏟"

-[例8]查詢所有年齡在20歲以下的學(xué)生姓名及

其年齡。

SELECTSname,Sage

FROMStudent

WHERESage<20;或

SELECTSname,Sage

FROMStudent

WHERENOTSage>=20;

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

[例9]查詢考試成績有不及格的學(xué)生的學(xué)號

Selectdistinctsno

Fromsc

Wheregrade<60

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

(2)確定范圍

用謂詞ETWEEN...AND...

NOTETWEEN...AND...

[例10]杳詢年齡在20?23歲(包括20歲和23歲)之間

的學(xué)生的姓名、系別和年齡。

SELECTSname,Sdept,Sage

FROMS

WHERESageBETWEEN20AND23;

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

[例11]查詢年齡不在20?23歲之間的學(xué)生姓名、系別

和年齡。

SELECTSname,Sdept,Sage

FROMS

WHERESageNOTBETWEEN20AND23;

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

(3)確定集合

使用謂詞INv值表>,NOTINv值表〉

〈值表》:用逗號分隔的一組取值

[例12]查詢信息系(IS)、數(shù)學(xué)系(MA)和計

算機科學(xué)系(CS)學(xué)生的姓名和性別。

SELECTSname,Ssex

FROMS

WHERESdeptlNCIS','MA','CS');

2012-6-27長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院

[例13]查詢既不是信息系、數(shù)學(xué)系,也不是計

算機科學(xué)系的學(xué)生的姓名和性別。

SELECTSname,Ssex

FROMStudent

WHERESdeptNOTIN('IS','MA\'CS');

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論