關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言-SQL.ppt_第1頁(yè)
關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言-SQL.ppt_第2頁(yè)
關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言-SQL.ppt_第3頁(yè)
關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言-SQL.ppt_第4頁(yè)
關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言-SQL.ppt_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第3章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言-SQL,參考書(shū)籍,曹軍生等.SQL Server 2000實(shí)用教程.北京:北京理工大學(xué)出版社,2003. 教育部考試中心.全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)教程: Visual FoxPro程序設(shè)計(jì)(2011年版) M.北京:高等教育出版社,2011. 劉麗.Visual FoxPro程序設(shè)計(jì)(第三版)M.北京:中國(guó)鐵道出版社,2011.,3.1 SQL概述(1),SQL 發(fā)展: SQL(Structured Query Language):結(jié)構(gòu)化查詢(xún)語(yǔ)言 1974年,Boyce 和Chamberlin 最早提出; 1975-1979年,IBM公司通過(guò)System R實(shí)現(xiàn)了商業(yè)

2、用途; 版本:SQL86(ANSI)-89SQL92SQL99 同樣 Visual FoxPro也引入了SQL語(yǔ)言,3.1 SQL概述(2),一、SQL語(yǔ)言的特點(diǎn): SQL是結(jié)構(gòu)化查詢(xún)語(yǔ)言,其功能不僅僅是查詢(xún),他是一個(gè)通用的功能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言。 1、綜合統(tǒng)一:SQL語(yǔ)言集數(shù)據(jù)定義語(yǔ)言(DDL)、數(shù)據(jù)操縱語(yǔ)言(DML)、數(shù)據(jù)控制語(yǔ)言(DCL)功能于一體; 2、高度非過(guò)程化:,3、面向集合的操作方式:可以同時(shí)對(duì)多個(gè)記錄進(jìn)行查詢(xún)、插入、更新、刪除等操作; 4、以同一種語(yǔ)法結(jié)構(gòu)提供兩種使用方式:即可獨(dú)立使用,也可嵌入其它語(yǔ)言程序中; 5、功能豐富,語(yǔ)言簡(jiǎn)練:,3.1 SQL概述(3),二、VFP

3、中SQL的功能: 數(shù)據(jù)查詢(xún): 數(shù)據(jù)定義: 數(shù)據(jù)操縱: 三、視圖的定義: 視圖是從一個(gè)或幾個(gè)數(shù)據(jù)庫(kù)表中導(dǎo)出的“表”,它本身不獨(dú)立存儲(chǔ)在數(shù)據(jù)庫(kù)中,是虛表。,3.2 數(shù)據(jù)定義功能(1),3.2.1 表的定義 一般格式如下: CREATE TABLE | DBF ; (字段1的完整性約束條件; ,字段2的完整性約束條件; ,表的完整性約束條件(表間關(guān)系) ),3.2 表數(shù)據(jù)的定義功能(2),說(shuō)明: 1.Table與DBF是等價(jià)的,Table是標(biāo)準(zhǔn)SQL的關(guān)鍵字,DBF是VFP的關(guān)鍵字; 2.是基本表的名稱(chēng),它可包含多個(gè)字段; 3.字段的完整約束條件包括: 1)滿足實(shí)體完整性的主關(guān)鍵字(主索引)可用PR

4、IMARY KEY | UNIQUE 說(shuō)明,UNIQUE也可指定關(guān)鍵字內(nèi)容的唯一性。 2)定義字段值(字段內(nèi)容)的有效性用CHECK約束,出錯(cuò)提示信息用ERROR說(shuō)明(說(shuō)明的內(nèi)容為字符型數(shù)據(jù)),定義默認(rèn)值用 DEFAULT 3)用NULL或NOT NULL 說(shuō)明字段值是否可以為空值。,3.2 表數(shù)據(jù)的定義功能(3),4此外還有描述表之間聯(lián)系的 FOREIGN KEY和 REFERENCES(用FOREIGN KEY指定普通索引,用REFERENCES限定索引與表建立關(guān)系)等。 5字段類(lèi)型用字母表示(見(jiàn)下頁(yè))有些類(lèi)型需要用戶(hù)給定字段寬度和小數(shù)位。,3.2 表數(shù)據(jù)的定義功能(4),3.2 表數(shù)據(jù)的

5、定義功能(),【例3.1】用命令建立一個(gè)名為“YYGL”的醫(yī)院科室數(shù)據(jù)庫(kù),再用SQL新建一個(gè)名為“BUMEN”的科室信息表(要求有:科室編號(hào),科室名,床位數(shù),并對(duì)床位數(shù)進(jìn)行有效性規(guī)則檢查)。 Create Database YYGL CREATE TABLE BUMEN(科室編號(hào) C(3) PRIMARY KEY,科室名 C(10),床位數(shù) I CHECK(床位數(shù)0)ERROR 床位數(shù)應(yīng)該大于0!),3.2 表數(shù)據(jù)的定義功能(6),【例3.2】用SQL的命令建立醫(yī)生信息表(YSXX)于醫(yī)院管理庫(kù)。 create table ysxx(編號(hào) c(6) primary key,姓名 c(6),性別

6、 c(2),職稱(chēng) c(10),年齡 I check(年齡=15 and 年齡=30)error 年齡范圍在15-30!default 19,科室編號(hào) c(3),參加工作日期 d,學(xué)歷 c(8),畢業(yè)學(xué)校 c(24),foreign key 科室編號(hào) tag 科室編號(hào) references bumen),【例3.3】用SQL的命令建立病人信息表(BRXX)。 create table brxx(床位號(hào) C(4) primary key,姓名 c(6),性別 c(2),入院日期 D,年齡 i check 年齡0 error 年齡值不合法!,科室編號(hào) c(3),主治大夫編號(hào) c(6),foreign

7、 key 科室編號(hào) tag 科室編號(hào) references bumen,foreign key 主治大夫編號(hào) tag 編號(hào) references ysxx) 通過(guò)3個(gè)例題,共建立3個(gè)關(guān)系: BUMEN 科室編號(hào)-YSXX 科室編號(hào) BUMEN 科室編號(hào)-BRXX 科室編號(hào) YSXX 編號(hào)BRXX 主治大夫編號(hào),3.2 表數(shù)據(jù)的定義功能(7),3.2.2修改基本表的結(jié)構(gòu) 【格式一】ALTER TABLE ADD | ALTERCOLUMN 完整性約束 該用法可以添加(ADD)新的字段或修改(ALTER)己有的字段,它的句法基本可以與 CREATE TABLE 的句法相對(duì)應(yīng)。 注意:該用法用于增加

8、字段或修改字段的類(lèi)型、寬度。以及重新定義有效性規(guī)則、錯(cuò)誤信息、默認(rèn)值,主關(guān)鍵字和聯(lián)系等;但是不能修改字段名,不能刪除字段等。,3.2 表數(shù)據(jù)的定義功能(8),【例3.4】為科室信息表(BUMEN)增加一個(gè)“職工數(shù)”字段,并且要求該字段值不能為零。 【例3.5】 將醫(yī)生信息表(YSXX)的“姓名”字段的寬度改為8。,3.2 表數(shù)據(jù)的定義功能(9),【格式二】ALTER TABBLE ALTERCOLUMN NULL | NOT NULL SET DEFAULT SET CHECK 有效性規(guī)則 ERROR 提示信息 DROP DEFAULT DROP CHECK 注意:該格式主要用于修改和刪除有效

9、性規(guī)則和默認(rèn)值定義。,3.2 表數(shù)據(jù)的定義功能(10),【例3.6】 修改或定義科室信息表(BUMEN)“職工數(shù)”字段的有效性規(guī)則。 【例3.7】 刪除科室信息表(BUMEN)的有效性規(guī)則。,3.2 表數(shù)據(jù)的定義功能(11),【格式三】ALTER TABLE DROPCOLUMN字段名 ADD PRIMARY KEY 關(guān)鍵字 TAG 索引名 FOR 條件 DROP PRIMARY KEY ADD UNIQUE 關(guān)鍵字 TAG索引名FOR 條件 DROP UNIQUE TAG索引名 ADD FOREIGN KEY關(guān)鍵字TAG索引名FOR 條件 REFERENCES 表名TAG 索引名 DROP

10、FOREIGN KEY TAG索引名SAVE RENAME COLUMN 字段名 TO 新字段名 該用法可以刪除字段(DROPCOLUMN)、可以修改字段名(RENAME COLUMN)。可以定義、修改和刪除表一級(jí)的有效性規(guī)則等。,3.2 表數(shù)據(jù)的定義功能(12),【例3.8】將科室信息表(BUMEN)的“職工數(shù)”字段名改為“職工人數(shù)”。 【例3.9】刪除科室信息表(BUMEN)中的“職工人數(shù)”字段。 【例3.10】 將科室信息表(BUMEN)的“床位數(shù)”為候選索引(候選關(guān)鍵字),索引名是TEMP_CWS 。 【例3.11】刪除科室信息表(BUMEN)的候選索引TEMP_CWS。 alter

11、table bumen drop unique tag Temp_cws,3.2 表數(shù)據(jù)的定義功能(13),3.2.3 表的刪除 Drop Table 注意:刪除數(shù)據(jù)庫(kù)中表時(shí),數(shù)據(jù)庫(kù)要打開(kāi)。,3.3 數(shù)據(jù)查詢(xún)功能(1),數(shù)據(jù)庫(kù)查詢(xún)是SQL的核心操作Select一般格式: SELECT ALL | DISTINCT , FROM表名1 ,表名2 WHERE GROUP BY HAVING ORDER BY ASC | DESC,3.3 數(shù)據(jù)查詢(xún)功能(2),3.3.1 簡(jiǎn)單查詢(xún)(單表查詢(xún)): 一、選擇表中的任意列(字段): 1、查詢(xún)指定列: 【例3.12】查詢(xún)?nèi)w醫(yī)生的姓名與學(xué)歷。 select

12、姓名,學(xué)歷 from ysxx 【例3.13】查詢(xún)?nèi)w醫(yī)生的姓名、學(xué)歷和編號(hào)。 select 姓名,學(xué)歷,編號(hào) from ysxx 2查詢(xún)?nèi)苛?: 【例3.14】查詢(xún)?nèi)w醫(yī)生的詳細(xì)記錄。 Select * from ysxx,3.3 數(shù)據(jù)查詢(xún)功能(3),3、查詢(xún)經(jīng)過(guò)計(jì)算的值 : SELECT子句的不僅可以是表中的字段,也可以是表達(dá)式。 【例3.15】查詢(xún)?nèi)w醫(yī)生的姓名及其出生年份。 Select 姓名,2012-年齡 from ysxx Select 姓名,year(date()-年齡 as 出生年份 from ysxx,3.3 數(shù)據(jù)查詢(xún)功能(4),二、選擇表中的若干記錄(行): 1、消除取

13、值重復(fù)的行:Distinct 2、查詢(xún)滿足條件的記錄:where,3.3 數(shù)據(jù)查詢(xún)功能(5),【例3.17】查詢(xún)所有年齡在30歲以下的醫(yī)生姓名及其年齡。 【例3.18】查詢(xún)年齡在30-40歲(包括30歲和40歲)之間的醫(yī)生的姓名和年齡。 【例3.19】查詢(xún)科室編號(hào)為“101”、“102”,“103”的醫(yī)生的全部信息。 【例3.20】查詢(xún)編號(hào)為“101001”的醫(yī)生的詳細(xì)情況。 SELECT * FROM YSXX WHERE 編號(hào) LIKE “101001” 等價(jià)于:SELECT * FROM YSXX WHERE 編號(hào) =“101001”,3.3 數(shù)據(jù)查詢(xún)功能(6),【例3.21】查詢(xún)所有姓

14、“雷”的醫(yī)生的全部信息。 SELECT * FROM YSXX WHERE 姓名 LIKE “雷%” 【例3.22】查詢(xún)姓名中姓“劉”,且姓名只有兩個(gè)字的醫(yī)生的姓名。 SELECT 姓名 FROM YSXX WHERE 姓名 LIKE “劉_” 【例3.23】查詢(xún)所有不姓劉的醫(yī)生的姓名。 SELECT 姓名 FROM YSXX WHERE NOT 姓名 LIKE “劉”,3.3 數(shù)據(jù)查詢(xún)功能(7),【例3.24】某些醫(yī)生有來(lái)醫(yī)院工作意向但沒(méi)有報(bào)到上班,所以有個(gè)人信息而沒(méi)有參加工作日期。查詢(xún)?nèi)鄙賲⒓庸ぷ魅掌诘尼t(yī)生的姓名。 SELECT 姓名 FROM YSXX WHERE 參加工作日期 IS N

15、ULL,3.3 數(shù)據(jù)查詢(xún)功能(8),【例3.25】查詢(xún)科室編號(hào)為“101”的年齡在40歲以下的醫(yī)生姓名。 SELECT 姓名FROM YSXX WHERE 科室編號(hào)=“101”AND 年齡40,3.3 數(shù)據(jù)查詢(xún)功能(9),三.對(duì)查詢(xún)結(jié)果排序: 用戶(hù)可以用ORDER BY子句對(duì)查詢(xún)結(jié)果按照一個(gè)或多個(gè)字段的升序(ASC)或降序(DESC)排列,缺省值為升序。 【例3.26】查詢(xún)所有醫(yī)生的姓名和年齡,查詢(xún)結(jié)果按年齡的降序排列。 select 姓名,年齡 from ysxx order by 年齡 desc 注:SELECT命令要顯示的行數(shù)可以是 TOP n Percent(TOP 必須與Order

16、by 同時(shí)使用 ),3.3 數(shù)據(jù)查詢(xún)功能(10),四.使用集函數(shù):,3.3 數(shù)據(jù)查詢(xún)功能(11),【例3.27】查詢(xún)醫(yī)生的總?cè)藬?shù)。 Select count(*) from ysxx 【例3.28】查詢(xún)病人信息表中醫(yī)生的人數(shù)。 Select count(distinct 主治大夫編號(hào)) from brxx 【例3.29】查詢(xún)醫(yī)生中年齡最大的年齡。 Select max(年齡) from ysxx,3.3 數(shù)據(jù)查詢(xún)功能(12),五.對(duì)查詢(xún)結(jié)果進(jìn)行分組: GROUP BY子句將查詢(xún)結(jié)果表按某一列或多列的值分組,值相等的為一組。對(duì)查詢(xún)結(jié)果分組的目的是為了細(xì)化集函數(shù)的作用對(duì)象。如果未對(duì)查詢(xún)結(jié)果分組,集

17、函數(shù)將作用于整個(gè)查詢(xún)結(jié)果,如上面的例3.27、例3.28、例3.29。分組后集函數(shù)將作用于每一個(gè)組,即每一組都有一個(gè)函數(shù)值。,3.3 數(shù)據(jù)查詢(xún)功能(13),【例3.30】求各個(gè)科室的醫(yī)生相應(yīng)人數(shù)。 SELECT 科室編號(hào),COUNT(科室編號(hào)) FROM YSXX GROUP BY 科室編號(hào) 如果分組后還要求按一定的條件對(duì)這些組進(jìn)行篩選,最終只輸出滿足指定條件的組,則可以使用HAVING短語(yǔ)指定篩選條件。 【例3.31】查詢(xún)醫(yī)生人數(shù)超過(guò)1人的科室編號(hào)和科室的醫(yī)生人數(shù)。,3.3.2 聯(lián)接查詢(xún)(1),若一個(gè)查詢(xún)同時(shí)涉及兩個(gè)或兩個(gè)以上的表,則稱(chēng)之為聯(lián)接查詢(xún)。 分類(lèi):等值、非等值、自身聯(lián)接查詢(xún)、超聯(lián)接

18、查詢(xún)。,3.3.2 聯(lián)接查詢(xún)(2),1.等值與非等值聯(lián)接查詢(xún): 其一般格式為: 表名1 比較運(yùn)算符 表名2 (聯(lián)接謂詞) 當(dāng)聯(lián)接運(yùn)算符為=時(shí),稱(chēng)為等值聯(lián)接。使用其他運(yùn)算符稱(chēng)為非等值聯(lián)接。 聯(lián)接謂詞中的字段名稱(chēng)為聯(lián)接字段。聯(lián)接條件中的各聯(lián)接字段類(lèi)型必須是可比的。但不必是相同的。,3.3.2 聯(lián)接查詢(xún)(3),【例3.32】查詢(xún)每個(gè)醫(yī)生及其對(duì)應(yīng)科室情況。 醫(yī)生情況存放在YSXX表中,科室情況存放在BUMEN表中,所以本查詢(xún)實(shí)際上涉及兩個(gè)表。這兩個(gè)表之間的聯(lián)系是通過(guò)公共字段科室編號(hào)實(shí)現(xiàn)的 若在等值聯(lián)接中把目標(biāo)字段中重復(fù)的字段去掉則為自然聯(lián)接。 SELECT YSXX.科室編號(hào),姓名,性別,職稱(chēng),年齡,

19、參加工作日期,學(xué)歷,畢業(yè)學(xué)校,職務(wù),科室名,床位數(shù) FROM YSXX,BUMEN WHERE YSXX.科室編號(hào)=BUMEN.科室編號(hào),3.3.2 聯(lián)接查詢(xún)(4),2.自身聯(lián)接查詢(xún)(命名別名來(lái)實(shí)現(xiàn)): 聯(lián)接操作不僅可以在兩個(gè)表之間進(jìn)行,也可以是一個(gè)表與其自己進(jìn)行聯(lián)接,稱(chēng)為表的自身聯(lián)接。 【例3.34】查詢(xún)醫(yī)生信息表中是科室主任的醫(yī)生是哪些醫(yī)生的科室主任。 SELECT ZW.姓名,是,YS.姓名,的主任 FROM YSXX ZW,YSXX YS WHERE ZW.科室編號(hào)=YS.科室編號(hào) AND ZW.職務(wù)=主任 AND YS.職務(wù)主任,3.3.2 聯(lián)接查詢(xún)(5),3.超聯(lián)接查詢(xún): 首先保證

20、一個(gè)表中滿足條件的記錄都在結(jié)果表中,然后將滿足聯(lián)接條件的記錄與另一個(gè)表的記錄進(jìn)行聯(lián)接,不滿足聯(lián)接條件的則將應(yīng)來(lái)自另一表的屬性值置為空值(NULL)。 【格式】SELECT FROM INNER | LEFT | RIGHT | FULL JOIN ON WHERE ,3.3.2 聯(lián)接查詢(xún)(6),說(shuō)明: 1 INNER JOIN 等價(jià)于 JOIN,為普通的聯(lián)接(等值聯(lián)接),在 Visual FoxPro 中稱(chēng)為內(nèi)部聯(lián)接。 2 LEFT JOIN 為左聯(lián)接。 3 RIGHT JOIN 為右聯(lián)接。 4 FULL JOIN 可以稱(chēng)為完全聯(lián)接,即兩個(gè)表中的記錄不管是否滿足聯(lián)接條件將都在目標(biāo)表或查詢(xún)結(jié)果中

21、出現(xiàn),不滿足聯(lián)接條件的記錄對(duì)應(yīng)內(nèi)容部分為 NULL。 5 ON 聯(lián)接條件 :指定聯(lián)接的條件,3.3.2 聯(lián)接查詢(xún)(7),【例3.35】查詢(xún)醫(yī)生與病人間的診治關(guān)系,按醫(yī)生編號(hào)的升序排列。 SELECT 編號(hào),Ysxx.姓名,Ysxx.性別,參加工作日期,Brxx.床位號(hào),Brxx.姓名 FROM Ysxx inner JOIN Brxx ON Ysxx. 編號(hào)=BRxx. 主治大夫編號(hào) ORDER BY Ysxx.編號(hào),3.3.3 嵌套查詢(xún)(1),在SQL語(yǔ)言中,一個(gè)SELECTFROMWHERE語(yǔ)句稱(chēng)為一個(gè)查詢(xún)塊。將一個(gè)查詢(xún)塊嵌套在另一個(gè)查詢(xún)塊的WHERE子句或HAVING短語(yǔ)的條件中的查詢(xún)稱(chēng)

22、為嵌套查詢(xún) 嵌套查詢(xún)是基于多個(gè)表的查詢(xún),這類(lèi)查詢(xún)所要求的結(jié)果出自一個(gè)表,但相關(guān)的條件卻涉及多個(gè)表。 上層的查詢(xún)塊稱(chēng)為外層查詢(xún)或父查詢(xún),WHERE后的下層查詢(xún)塊稱(chēng)為內(nèi)層查詢(xún)或子查詢(xún)。SQL語(yǔ)言允許多層嵌套查詢(xún)。,3.3.3 嵌套查詢(xún)(2),1.帶有IN謂詞的子查詢(xún): 在嵌套查詢(xún)中,子查詢(xún)的結(jié)果往往是一個(gè)集合,所以謂詞IN是嵌套查詢(xún)中最經(jīng)常使用的謂詞。 【例3.36】查詢(xún)與“肖冰”同在一個(gè)科室住院治療的病人。 SELECT * FROM BRXX WHERE 科室編號(hào) IN (SELECT 科室編號(hào) FROM BRXX WHERE 姓名=“肖冰”),3.3.3嵌套查詢(xún)(3),【例3.37】 哪些科

23、室有45歲以上的職工? SELECT DISTINCT 科室名,有45歲以上職工 From Bumen WHERE 科室編號(hào) IN (SELEC 科室編號(hào) FROM Ysxx WHERE 年齡45),3.3.3 嵌套查詢(xún)(4),2、帶有比較運(yùn)算符的子查詢(xún):返回是單值 3、帶有ANY(SOME)和ALL謂詞的子查詢(xún): 【例3.38】 查詢(xún)出只要年齡小于或等于“內(nèi)科”(科室編號(hào)為102)中某一名醫(yī)師年齡的醫(yī)師編號(hào)。這個(gè)查詢(xún)可以使用ANY或SOME量詞。 SELECT 編號(hào) FROM Ysxx WHERE 年齡 102,3.3.3 嵌套查詢(xún)(5),【例3.39】 查詢(xún)出年齡大于或等于“內(nèi)科”(科室編

24、號(hào)為102)中所有醫(yī)師年齡的醫(yī)師編號(hào)。這個(gè)查詢(xún)使用ALL量詞。 SELECT DISTINCT 編號(hào) FROM Ysxx WHERE 年齡= ALL ; (SELECT 年齡 FROM Ysxx WHERE 科室編號(hào)= 102) and 科室編號(hào)102,3.3.3 嵌套查詢(xún)(),3.3.3 嵌套查詢(xún)(),、帶有EXISTS謂詞的子查詢(xún): EXISTS(NOT EXISTS)代表存在(不存在)量詞。帶有EXISTS謂詞的子查詢(xún)不返回任何數(shù)據(jù),只產(chǎn)生邏輯真值“Ture“或邏輯假值“False”, 用來(lái)檢查在子查詢(xún)中是否有結(jié)果返回,即存在記錄或不存在記錄。,3.3.3嵌套查詢(xún)(8),【例3.40】

25、在Brxx表檢索那些在ysxx表中無(wú)主治大夫編號(hào)的病號(hào)記錄。使用謂詞 NOT EXISTS: SELECT * FROM Brxx WHERE NOT EXISTS (SELECT * FROM Ysxx WHERE 編號(hào) = Brxx.主治大夫編號(hào)) SELECT * FROM Brxx WHERE 主治大夫編號(hào) NOT IN (SELECT 編號(hào) FROM Ysxx ),3.3.3嵌套查詢(xún)(9),所有帶IN謂詞、比較運(yùn)算符、ANY(SOME)和ALL謂詞的子查詢(xún)都能用帶EXISTS謂詞的子查詢(xún)等價(jià)替換,3.3.4 集合查詢(xún)(1),SELECT語(yǔ)句查詢(xún)的結(jié)果是記錄的集合,所以多個(gè)SELECT

26、語(yǔ)句的結(jié)果可再進(jìn)行集合操作。集合操作主要包括”并”操作(UNION)。 【例3.41】查詢(xún)“內(nèi)科”(科室編號(hào)為102)的醫(yī)生以及年齡不大于30歲的醫(yī)生的信息。 SELECT * FROM YSXX WHERE 科室編號(hào)=102 UNION SELECT * FROM YSXX WHERE 年齡=30,3.3.4 集合查詢(xún)(2),注意:參加UNION操作的各結(jié)果表的列數(shù)必須相同;對(duì)應(yīng)項(xiàng)的數(shù)據(jù)類(lèi)型也必須相同。 【例3.42】查詢(xún)“內(nèi)科”(科室編號(hào)為102)的醫(yī)生及年齡不大于30歲的醫(yī)生交集。 【例3.43】查詢(xún)“內(nèi)科”(科室編號(hào)為102)的醫(yī)生與年齡小于30歲的醫(yī)生的差集。 Select * fr

27、om ysxx where 科室編號(hào)=“102” and 年齡=30,3.3.5 設(shè)定輸出目標(biāo),1.輸出到自由表:INTO TABLE 2.輸出到數(shù)組:INTO ARRAY 3.輸出到臨時(shí)表:INTO CURSOR 4.輸出到文本文件:TO FILE ,3.3.6 其他子句,(1) NOCONSOLE:禁止將查詢(xún)結(jié)果發(fā)送到 文件、打印機(jī)和Visual FoxPro主窗口。 (2)PLAIN:防止列標(biāo)題出現(xiàn)在查詢(xún)結(jié)果的主窗口顯示中。 (3)NOWAIT:打開(kāi)瀏覽窗口,并將查詢(xún)結(jié)果輸出到這個(gè)窗口后繼續(xù)程序的執(zhí)行;程序并不等待關(guān)閉瀏覽窗口,而是立即執(zhí)行緊接在SELECT語(yǔ)句后面的程序行。,3.4 數(shù)

28、據(jù)更新功能(1),3.4.1 插入數(shù)據(jù): SQL的數(shù)據(jù)插入語(yǔ)句INSERT通常有兩種形式。一種是插入一條記錄,另一種通過(guò)數(shù)組或變量等插入多條記錄。 1.插入單條記錄: INSERT INTO (字段名1,字段名2,) VALUES (常量1,常量2,),3.4 數(shù)據(jù)更新功能(2),例3.47向表YSXX中插入記錄,記錄內(nèi)容如下:(106002 王明 男 主任醫(yī)師 55 106 1980.10.1 本科 濱州醫(yī)學(xué)院 教師) INSERT INTO YSXX VALUES(106002,王明,男,主任醫(yī)師,55,106,1980-10-1,本科,濱州醫(yī)學(xué)院,教師,null) INSERT INTO

29、 YSXX(編號(hào),姓名,性別,職稱(chēng),年齡,科室編號(hào),參加工作日期,學(xué)歷,畢業(yè)學(xué)校,職務(wù)) VALUES(106002,王明,男,主任醫(yī)師,55,106,1980-10-1,本科,濱州醫(yī)學(xué)院,教師),3.4 數(shù)據(jù)更新功能(3),2. 對(duì)批量生成的數(shù)據(jù)操作: INSERT INTO FROM ARRAY |MEMVAR 說(shuō)明: ()FROMARRAY 從指定的數(shù)組中插入記錄值; ()FROM MEMVAR 從同名的內(nèi)存變量中插入記錄值。,3.4 數(shù)據(jù)更新功能(4),【例3.48】 USE Ysxx SELE * FROM ysxx INTO ARRAY arr1 COPY STRU TO Ord1 INSERT INTO Ord1 FROM ARRAY arr1 SELECT Ord1 BROWSE US

溫馨提示

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

評(píng)論

0/150

提交評(píng)論