計算機二級vfp-SQL命令集合_第1頁
計算機二級vfp-SQL命令集合_第2頁
計算機二級vfp-SQL命令集合_第3頁
計算機二級vfp-SQL命令集合_第4頁
計算機二級vfp-SQL命令集合_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Vf講義第二部分第一節(jié) 關(guān)系數(shù)據(jù)庫標準語言1、 SQL概述(1 SQL(structured query language)是結(jié)構(gòu)化查詢語言的縮寫,是關(guān)系數(shù)據(jù)庫的標準語言。SQL的核心是查詢,主要功能為:數(shù)據(jù)查詢(Select、數(shù)據(jù)定義(Create、Drop,Alter、數(shù)據(jù)操縱(Insert ,Update , Delete、數(shù)據(jù)控制(Grant , Revoke(2 特點:A: 是一種一體化的語言B: 是一種高度非過程化的語言C: 非常簡潔D: 既可在命令窗口中使用,也可在程序中使用2、 數(shù)據(jù)查詢(1 簡單查詢A: 格式:select distinct 字段名列表 from 表名 whe

2、re 條件 select 姓名,性別,出生日期 from zgdaselect * from zgdaselect distinct 職稱 from zgdaselect distinct 性別,職稱from zgdaselect * from zgda where 性別=”女”select * from zgda where 職稱="教授"select * from zgda where 工資>700select 姓名,性別,婚否 from zgda where 婚否=.t.select * from zgda where 職稱="教授" and

3、 性別="男"select * from zgda where 性別="男" or 出生日期<=1975-01-01B: 注釋:Ø 可用通配符“*”來代表所有字段Ø distinct 表示唯一顯示,各個字段值完全一致的相同記錄只顯示一條記錄Ø where 條件構(gòu)成了條件查詢,如果缺省默認為所有記錄Ø 查詢窗口可以按ESC鍵關(guān)閉(2 幾種特殊的運算符A: inØ 格式:字段名 not in (表達式1,表達式2,)select * from zgda where 職稱 in("教授"

4、;,"助教"select * from zgda where 職稱 not in("助教","講師"B: betweenØ 格式1(函數(shù):not between(字段名,表達式1,表達式2)select * from zgda where between(工資,500,700Ø 格式2(短語): 字段名 not between 表達式1 and 表達式2字段的取值范圍在 或 不在:>=表達式1并且<=表達式2select * from zgda where not between(獎金,100,200C

5、: likeØ 格式1(函數(shù): like(表達式,字段名select * from zgda where like("王*",姓名格式2(短語): 字段名 like 表達式select * from zgda where 姓名 like “_小_”(3 排序Ø 格式:select top n percent all / distinct 字段表達式 as 新字段名 from 表名 order by 排序字段列表 asc / desc order by 短語的使用,asc 表示升序,desc 表示降序,默認升序select * from zgda orde

6、r by 工資select * from zgda order by 出生日期 descselect * from zgda order by 獎金,工資 descselect * from zgda where 性別="女" order by 獎金 desctop n percent 表示在符合查詢條件的所有記錄中,選取指定數(shù)量或百分比的記錄,Top短語必須與order by短語同時使用select top 3 * from zgda order by 出生日期select top 2 * from zgda where 婚否=.t. order by 工資 desc產(chǎn)生

7、新字段的方法,字段表達式 as 新字段名 select 姓名,職稱,工資+獎金 as 實發(fā)工資 from zgdaselect 姓名,性別,year(date(-year(出生日期 as 年齡 from zgda where 職稱="助教" order by 年齡 desc(4 分組與計算查詢A: 計算查詢Ø sum(求和字段名 Ø avg(字段名Ø count(*Ø max(字段名Ø min(字段名select sum(工資 as 工資合計 from zgda select sum(工資 as 工資合計,avg(工資 as

8、 平均工資,max(工資 as 最高工資,min(工資 as 最低工資 from zgda where 性別=”男”select count(* as 職工人數(shù) from zgdaselect count(* as 職工人數(shù) from zgda where 職稱=”教授”注釋:以上函數(shù)均為列項求值;查詢中只要有任一個(也可為多個)函數(shù),如果沒有g(shù)roup by 分組,則查詢結(jié)果只有表中最后一條記錄,如果有g(shù)roup by 分組,則查詢結(jié)果留下每一類最后一條記錄。如果使用了以上函數(shù),則在查詢結(jié)果中只有分組字段和統(tǒng)計字段有效,其他字段均無實際意義。B: 分組查詢:格式:select 字段表達式 a

9、s 新字段名 from 表名 where 條件 Group by 分類字段 having 條件注釋:Group by 按列的值對查詢的行進行分組,查詢結(jié)果留下每一類最后一條記錄select 職稱,sum(工資 as 工資合計 from zgda group by 職稱select 性別,count(* as 職工人數(shù) from zgda group by 性別select 職稱,性別,sum(工資 as 工資合計,count(* as 人數(shù) from zgda group by 職稱,性別 order by 職稱 descwhere短語是指在原表中進行條件篩選,也就是說,只有滿足條件的記錄才參

10、與分組。Select 職稱,count(* as 人數(shù) from zgda where 性別=”女” group by 職稱 Select 性別,sum(工資 as 工資合計 from zgda where 職稱=”講師” group by 性別 select 職稱,性別,sum(工資+獎金 as 工資總和,max(工資+獎金 as 最高工資,avg(工資+獎金 as 平均工資 from zgda group by 職稱,性別Having 包含在查詢結(jié)果中的組必須滿足的條件,即對分組的結(jié)果進行篩選,去掉不滿足條件的分組,必須與Group by 同時使用select 職稱,count(* as

11、職工人數(shù) from zgda group by 職稱select 職稱,count(* as 職工人數(shù) from zgda group by 職稱 having 職工人數(shù)>=2如果有Group by短語,而無order by 短語時,查詢的結(jié)果默認以分組字段的升序排列如果Where 和 Having 同時使用時,先執(zhí)行Where ,再執(zhí)行Having補充:在查詢的過程當中使用了統(tǒng)計函數(shù),并且查詢結(jié)果可能有多個值,此時使用group by 短語進行分組,在分組了以后,每組對應(yīng)一條記錄(5 集合的并運算(union)A: 是將兩個select 語句的查詢結(jié)果合并成一個查詢結(jié)果,默認情況下,合

12、并的結(jié)果刪除重復的記錄。用all表示顯示所有記錄(包含重復記錄)B: 合并條件:Ø 列數(shù)相同,并且對應(yīng)字段的數(shù)據(jù)類型和寬度相同Ø 對應(yīng)字段的取值范圍相同合并格式:第一條完整的sql語句 union 第二條完整的sql 語句例如:sele * from zgda where 性別=”女” union sele * from zgda where 職稱=”教授”(6 利用空值查詢注:查詢空值時用: 字段名 is nullselect * from 訂購單 where 訂購日期 is null查詢不為空值時用: 字段名 is not nullselect * from 訂購單 w

13、here 訂購日期 is not null(7 保存查詢結(jié)果格式:select all / distinct 字段表達式 as 新字段名 top n percent from 表名 Group by 分類字段 having 條件 order by 排序字段列表asc / desc A: 輸出到臨時表中:into cursor 表名Ø 執(zhí)行完select 語句后,臨時表仍然保持打開和活動狀態(tài),但為只讀Ø 一旦關(guān)閉臨時表,查詢結(jié)果則自動被刪除B: 輸出到永久表中:into dbf / table 表名Ø 執(zhí)行完select 語句后,此表依然處于打開和活動狀態(tài)Ø

14、; 這個表將永遠保存在默認目錄下C: 輸出到數(shù)組中: into array 數(shù)組名Ø 這里的數(shù)組為二維數(shù)組,每行一條記錄,每列對應(yīng)查詢結(jié)果的一列,數(shù)組中有幾行幾列由查詢結(jié)果中記錄以及字段來確定Ø 數(shù)組中可以存放n個值,但他只屬于一個內(nèi)存變量Ø 數(shù)組的下標是從1開始的。D: 輸出到文本文件中:to file 文件名 additiveØ 擴展名為 .txt,無格式僅是純文本Ø 有 additive表示將查詢結(jié)果追加到此文件內(nèi)容的后面3、 數(shù)據(jù)定義(1 建立表(若建立數(shù)據(jù)庫表,則必須事先建立或打開數(shù)據(jù)庫)格式:create table 表名 free

15、 (字段名1 類型(寬度,小數(shù)位數(shù)) check 條件 error字符串 default 默認值 NULL NOT NULL primary key unique, ,foreign key 索引表達式 tag 索引名 references 父表名 tag 父表的索引名 注釋:Ø free 說明此表為自由表。 create table 注冊 free(姓名 c(6,性別 c(2,出生年月 dØ 類型只能用代表字母。Ø check 為字段指定有效性規(guī)則;error 表示出錯時的提示信息create table student(姓名 c(6,性別 c(2,年齡 i c

16、heck 年齡>=10 error "年齡超范圍"Ø Default 表示默認值create table score(學號 c(10,成績 n(7,2 default 40create table 教師(姓名 c(6,性別 c(2 default "女",基本工資 n(8,2Ø NULL 表示字段中允許取空值;NOT NULL 表示字段中不能取空值。create table 職工(編號 c(5,姓名 c(6,工資 n(5,2 null default .null.Ø primary key 表示建立主索引Ø

17、unique 表示建立候選索引Ø foreign key 表示建立普通索引,但不能單獨使用,在此之前必須先給父表建立主索引或侯選索引,建立普通索引的同時和父表建立永久性關(guān)系。若無 tag 父表的索引名 選項,則表示將關(guān)系建立在父表的主索引上。Ø 不能建立唯一索引(2 修改表結(jié)構(gòu)A: 字段Ø 修改字段名alter table 表名 rename column 原字段名 to 新字段名Ø 修改字段的寬度和類型alter table 表名 alter column 字段名 類型(寬度,小數(shù)位數(shù))Ø 添加新字段alter table 表名 add co

18、lumn 字段名 類型(寬度,小數(shù)位數(shù))Ø 刪除字段名alter table 表名 drop column 字段名B: 修改字段有效性Ø 修改規(guī)則及提示信息alter table 表名 alter 字段名 set check 條件 error 字符串Ø 修改字段的默認值alter table 表名 alter 字段名 set default 默認值 Ø 刪除規(guī)則及提示信息alter table 表名 alter 字段名 drop checkØ 刪除字段的默認值alter table 表名 alter 字段名 drop default補充:添加新

19、字段的同時設(shè)置有效性規(guī)則C: 索引(表事先存在)Ø 建立主索引alter table 表名 add primary key 索引表達式 tag 索引名Ø 刪除主索引alter table 表名 drop primary keyØ 建立侯選索引alter table 表名 add unique 索引表達式 tag 索引名Ø 刪除侯選索引alter table 表名 drop unique tag 索引名Ø 建立兩表之間的永久關(guān)系(建立普通索引)alter table 當前表(子表) add foreign key 索引表達式 tag 索引名 re

20、ferences 父表 tag父表的索引名Ø 刪除兩表之間的永久關(guān)系(刪除普通索引alter table 表名(子表 drop foreign key tag 索引名(3 表的刪除(物理刪除)A: 刪除自由表: drop table 表名B: 刪除數(shù)據(jù)庫表:Ø 打開數(shù)據(jù)庫Ø drop table 表名5、 操作功能(1 插入記錄A: 插入單條記錄insert into 表名 (字段名1,字段名2,) values (表達式1,表達式2,Ø 注釋:如果要向當前表所有字段中插入所有值,則第一部分可以省略Ø 第二部分表達式的值必須與對應(yīng)的字段類型相同

21、B: 將數(shù)組中的值插入到表中Ø insert into 表名 from array 數(shù)組名(2 刪除記錄(邏輯刪除Ø delete from 表名 where 條件(3 有規(guī)律的修改記錄或替換記錄Ø update 表名 set 要修改的字段名=用誰來修改 where 條件6、 聯(lián)接查詢(1 簡單聯(lián)接查詢select 多表中字段名列表 from 多表列表 where 聯(lián)接條件Ø 基于多個表的查詢,查詢的結(jié)果可以出自多個表中找出工資多于1230元的職工號和他們所在的城市Select 職工號,城市 from 職工,倉庫 where (工資>1230 and (職工.倉庫號=倉庫.倉庫號找出工作面積大于400的倉庫的職工號一級這些職工工作的城市Select 職工號,城市 from 倉庫,職工 where (面積>400 and (職工.倉庫號=倉庫.倉庫號(2)嵌套查詢select 字段列表 f

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論