2011年全國計(jì)算機(jī)等級(jí)考試二級(jí)VFP完全筆記(15)

字號(hào):

2011年全國計(jì)算機(jī)等級(jí)考試二級(jí)VFP完全筆記(15)

    五、關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL
    (一)SQL概述
    1.SQL的基本概況
    1)含義:SQL是structured query languge的縮寫,它是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)數(shù)據(jù)語言,所有的關(guān)系數(shù)據(jù)庫管理系統(tǒng)都支持。
    2)功能:數(shù)據(jù)查詢、數(shù)據(jù)操作和數(shù)據(jù)定義
    2.特點(diǎn)
    1)一體化:包括數(shù)據(jù)定義、查詢和操作等方面功能,可以完成數(shù)據(jù)庫活動(dòng)中的全部工作;
    2)高度非過程化:只需告訴計(jì)算機(jī)用戶“做什么”,SQL便可自動(dòng)完成全部工作;
    3)非常簡潔:只有為數(shù)不多的幾條命令組成;
    4)它可以直接以命令方式使用,也可以嵌入到程序設(shè)計(jì)語言中以程序方式使用。
    3.主要短語及其含義
    1)select-說明要查詢的數(shù)據(jù)
    2)from-說明查詢的數(shù)據(jù)來自哪些表,可對單表或多表進(jìn)行查詢
    3)where-說明查詢條件,即選擇元組的條件
    4)group by-用于對查詢進(jìn)行分組,可用它對數(shù)據(jù)進(jìn)行分組匯總
    5)having-必須跟group by短語一起使用,用來限定分組必須滿足的條件
    6)order by-用來對查詢的結(jié)果進(jìn)行排序
    (二)SQL的查詢功能
    1.簡單查詢
    1)適用范圍:即單表查詢,查詢的字段信息和查詢條件都來自于同一張表
    2)語法格式:select 字段名1,…字段名n from 表名 where 條件式
    3)查詢細(xì)節(jié):
    ü distinct 去掉查詢結(jié)果中的重復(fù)值
    ü 若查詢某張表的全部字段,則可把select后的字段名全部用通配符*代替即可
    ü union并運(yùn)算可把兩個(gè)select語句的查詢結(jié)果合并成一個(gè)查詢結(jié)果(要求是兩個(gè)查詢結(jié)果要具有相同的字段個(gè)數(shù),并且對應(yīng)字段的值要出自同一個(gè)值域,即具有相同的數(shù)據(jù)類型和取值范圍)
    ü 查詢?nèi)ハ颍篿nto array 數(shù)組名——將查詢結(jié)果存放于數(shù)組中
    into cursor 臨時(shí)表文件名——將查詢結(jié)果存放于臨時(shí)只讀文件,關(guān)閉時(shí)自動(dòng)刪除
    into dbf/table 自由表文件名——將查詢結(jié)果存放于永久表中
    to file 文本文件名——將查詢結(jié)果存放于文本文件中
    2.簡單的聯(lián)接查詢
    1)適用范圍:查詢的字段信息或條件來自于多張表
    2)語法格式:select 字段名1,…字段名n from 表名1,…表名n where 聯(lián)接條件 and 其他條件
    3.嵌套查詢
    1)適用范圍:查詢的字段信息出自于同一張表,而查詢條件出自于其他表
    2)語法格式:select 字段名1,…字段名n from 表名1 where 外部關(guān)鍵字 in (select 外部關(guān)鍵字 from 表名2 where 條件)
    3)查詢細(xì)節(jié):
    ü 幾個(gè)特殊的運(yùn)算符:between…and…用于查詢滿足某個(gè)值域范圍內(nèi)的記錄;like用于查詢與指定字段值相匹配的記錄(like后所指定的字段值一定是個(gè)字符型數(shù)據(jù);通配符%表示0個(gè)或多個(gè)字符,“_”只表示一個(gè)字符)
    ü 排序:order by 字段名1 asce/desc,…字段名n asce/desc
    注意:系統(tǒng)默認(rèn)升序,asce可省略,允許按一個(gè)或多個(gè)字段對查詢結(jié)果排序
    ü 簡單計(jì)算查詢:count()-計(jì)數(shù) sum()-求和,所指字段是N型 avg()-求平均數(shù),所指字段是N型 max()-求值,所指字段是N型min()-求最小值,所指字段是N型
    ü 分組與計(jì)算查詢:group by 字段名1,…字段名n having 條件表達(dá)式 (注意:having必須和group by一起使用,因?yàn)樗菍Ψ纸M后的結(jié)果進(jìn)一步進(jìn)行篩選,having條件和where條件不矛盾,在select語句查詢中是先用where子句限定元組,然后進(jìn)行分組,最后再用having子句限定分組結(jié)果)
    ü 利用空值查詢:is null/is not null
    ü 內(nèi)外層互相嵌套查詢:內(nèi)層查詢的條件需要外層查詢提供值,而外層查詢的條件需要內(nèi)層查詢的結(jié)果
    ü 使用量詞和謂詞的查詢:
    表達(dá)式 運(yùn)算符 any/some/all(select子查詢)——其中any和some表任意一個(gè),all表示全部
    [not] exists(select子查詢)——exists表示存在
    ü 虛字段:即原表中并無此字段,是通過函數(shù)或者表達(dá)式計(jì)算所得出的字段名;其格式為:表達(dá)式/函數(shù) as 虛字段名
    ü 顯示部分結(jié)果:top 表達(dá)式 [percent] order by 字段名1,…字段名n
    注意:不使用percent時(shí),在1-32767之間取值,說明顯示前幾條記錄
    使用percent時(shí),則在0.01-99.99之間取值,說明顯示前百分之幾的記錄
    并且top短語要與order by短語同時(shí)使用才有效
    4.內(nèi)聯(lián)接查詢:超級(jí)聯(lián)接查詢的一種
    1)適用范圍:查詢的字段名或查詢條件來自于多張表
    2)語法格式:select 字段名1,…字段名n from 表名1 inner join 表名2 on 聯(lián)接條件 where 條件
    (三)SQL的操作功能
    1.插入功能
    1)標(biāo)準(zhǔn)格式:insert into 表名(字段名1,…字段名n)values(字段值1,…字段值n)
    注意:此命令格式表示向表中插入記錄,當(dāng)插入的不是完整的記錄時(shí)必須指明字段
    2)特殊格式:insert into 表名 from array 數(shù)組名
    注意:此命令格式表示從指定的數(shù)組向表中插入記錄
    2.更新功能
    1)格式:update 表名 set 字段名1=表達(dá)式1,…字段名n=表達(dá)式n where 條件式
    注意:使用where表示更新滿足條件的記錄,不使用where則更新全部記錄
    2)注意update命令與replace命令的區(qū)別:
    ² update可對一表和多表操作,replace只能對當(dāng)前一表操作
    ² update用where接條件表達(dá)式,replace用for接條件表達(dá)式
    ² update用=接表達(dá)式,replace用with接表達(dá)式
    ² update用set接字段名,replace的字段名前不加set
    ² update不用where子句就可更新全部記錄,replace有all無for條件才是更新全部記錄
    3.刪除功能
    1)格式:delete from 表名 where 條件
    注意:此命令表示邏輯刪除表中相應(yīng)的記錄,有where條件時(shí)表示邏輯刪除表中滿足條件的記錄
    2)本格式可用于一表與多表,而delete for條件則只可用于當(dāng)前表
    (四)SQL的定義功能
    1.表的定義,即建立表
    1)格式:create table 表名(字段名1 字段類型(寬度),…字段名n 字段類型(寬度))
    2)注意:
    2.表的刪除
    1)格式:drop table 表文件名
    2)注意:
    3.表結(jié)構(gòu)的修改
    1)添加/刪除表中字段:
    alter table 表名 add/drop column 字段名 字段類型(寬度)
    注意:只能一次添加一個(gè)字段,并且如果是刪除字段則不需要寫寬度
    2)修改字段類型及寬度:
    alter table 表名 alter 字段名 新類型(新寬度)
    3)更新字段名:
    alter table 表名 rename column 原字段名 to 新字段名
    4)修改字段有效性:
    alter table 表名 alter column 字段名[null/not null][set default 表達(dá)式][set check 邏輯表達(dá)式[error 字符表達(dá)式]]
    alter table 表名 alter column 字段名[drop default][drop check]
    5)添加/刪除表中表中索引:
    alter table 表名 add primary key/unique字段名 tag 索引名
    注意:primary key是主索引;unique是候選索引