第七章 SQL語言基礎(chǔ)_第1頁
第七章 SQL語言基礎(chǔ)_第2頁
第七章 SQL語言基礎(chǔ)_第3頁
第七章 SQL語言基礎(chǔ)_第4頁
第七章 SQL語言基礎(chǔ)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

SQL語言基礎(chǔ)本章學(xué)習(xí)目標(biāo)

SQL語言是數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。只有理解了SQL才能真正理解關(guān)系數(shù)據(jù)庫。本章將介紹怎樣使用“結(jié)構(gòu)化查詢語言”(SQL)來操作數(shù)據(jù)庫。SQL語言基礎(chǔ)

本章內(nèi)容安排3.1SQL簡介

3.2SQL基本語法

3.3數(shù)據(jù)查詢語言(DQL)3.4數(shù)據(jù)操縱語言(DML)

3.5數(shù)據(jù)定義語言(DDL)

3.6數(shù)據(jù)控制語言(DCL)

3.7常用函數(shù)SQL的優(yōu)點(diǎn)

發(fā)展歷史

SQL簡介

SQL語言是數(shù)據(jù)庫的核心語言。全稱是“結(jié)構(gòu)化查詢語言(StructuredQueryLanguage)”,最早的是IBM的圣約瑟研究實(shí)驗(yàn)室為其關(guān)系數(shù)據(jù)庫管理系統(tǒng)SYSTEMR開發(fā)的一種查詢語言,它的前身是SQUARE語言。

1.非過程化語言

SQL是一個(gè)非過程化的語言,因?yàn)樗淮翁幚硪粋€(gè)記錄,對(duì)數(shù)據(jù)提供自動(dòng)導(dǎo)航。SQL允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對(duì)單個(gè)記錄進(jìn)行操作,可操作記錄集。所有SQL語句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語句的結(jié)果作為另一條SQL語句的輸入。SQL不要求用戶指定對(duì)數(shù)據(jù)的存放方法。這種特性使用戶更易集中精力于要得到的結(jié)果。3.1.2SQL的優(yōu)點(diǎn)

3.1.2SQL的優(yōu)點(diǎn)2.統(tǒng)一的語言

SQL可用于所有用戶的DB活動(dòng)模型,包括系統(tǒng)管理員、數(shù)據(jù)庫管理員、應(yīng)用程序員、決策支持系統(tǒng)人員及許多其它類型的終端用戶。SQL為許多任務(wù)提供了語句,包括:查詢數(shù)據(jù)在表中插入、修改和刪除記錄建立、修改和刪除數(shù)據(jù)對(duì)象控制對(duì)數(shù)據(jù)和數(shù)據(jù)對(duì)象的存取保證數(shù)據(jù)庫一致性和完整性3.1.2SQL的優(yōu)點(diǎn)3.是所有關(guān)系數(shù)據(jù)庫的公共語言由于所有主要的關(guān)系數(shù)據(jù)庫管理系統(tǒng)都支持SQL語言,用戶可將使用SQL的技能從一個(gè)RDBMS轉(zhuǎn)到另一個(gè),所有用SQL編寫的程序都是可以移植的。SQL語言的語法結(jié)構(gòu)

SQL語言的主要功能

SQL基本語法

通過SQL語句,程序員或數(shù)據(jù)庫管理員(DBA)可以做如下的主要工作:(1)建立數(shù)據(jù)庫的表格,包括設(shè)置表格所可以使用之空間。(2)改變數(shù)據(jù)庫系統(tǒng)環(huán)境設(shè)置。(3)針對(duì)某個(gè)數(shù)據(jù)庫或表格,授予用戶存取權(quán)限。(4)對(duì)數(shù)據(jù)庫表格建立索引值。(5)修改數(shù)據(jù)庫表格結(jié)構(gòu)(新建、刪除或是修改表格字段)。(6)對(duì)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的新建。(7)對(duì)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的刪除。(8)對(duì)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的修改。(9)對(duì)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的查詢。復(fù)合查詢

基本查詢

數(shù)據(jù)查詢語言(DQL)集合函數(shù)

1.SQL的基本結(jié)構(gòu)2.SELECT語句的格式SELECT[predicate]{*|table.*|[table.]field[,[table.]field2[,...]]}[ASalias1[,alias2[,...]]]FROMtableexpression[,...][WHERE...][GROUPBY...][HAVING...][ORDERBY...][WITHOWNERACCESSOPTION]3.3.1基本查詢

3.SELECT中的條件語句(1)FROM條件子句SELECTfieldlistFROMtableexpression

(2)WHERE條件子句SELECTfieldlistFROMtableexpressionWHEREcriteria(未來同學(xué)們經(jīng)常碰到的幾種情況)(3)“*”,DISTINCT屬性詞用法

SELECT[*|DISTINCT]FROMtable

比較大小字符匹配確定范圍多重條件查詢常用查詢條件查詢條件謂詞比較>,<,>=,<=,<>,=,!>,!<,not+上述比較運(yùn)算符關(guān)鍵謂詞:Like匹配串重點(diǎn)額通配符“%““_”Between…and(notbetween…and…)example:

selectname,dept,agefromstudentwhereagebetween20and23邏輯運(yùn)算符and、or例如:(4)ORDERBY條件子句

SELECTfieldlistFROMtableWHEREselectcriteriaORDERBYfield[ASC|DESC][,field2[ASC|DESC][,...]](5)GROUPBY條件子句SELECTfieldlistFROMtableWHEREcriteriaGROUPBYgroupfieldlist(6)HAVING條件子句SELECTfieldlistFROMtableWHEREselectcriteriaGROUPBYgroupfieldlistHAVINGgroupcriteria

4.注意事項(xiàng)(1)字段名之間可以進(jìn)行算術(shù)運(yùn)算,例如:(字段名1*字段名2)/3(2)查詢語句可以嵌套,例如:SELECT……FROM表名1WHERE字段1in(SELECT……FROM表名1,表名2,……WHERE條件1WHERE條件2);(3)查詢結(jié)果集的排序操作,默認(rèn)的排序是升序ASC,降序是DESC。(4)每個(gè)表都有一個(gè)隱含的字段ROWID,它標(biāo)記著記錄的唯一性。1.連接查詢

連接可以在SELECT語句的FROM子句或WHERE子句中建立,在FROM子句中指出連接時(shí)有助于將連接操作與WHERE子句中的搜索條件區(qū)分開來。所以,在Transact-SQL中推薦使用這種方法。(1)內(nèi)連接內(nèi)連接查詢操作列出與連接條件匹配的數(shù)據(jù)行,它使用比較運(yùn)算符比較被連接列的列值。內(nèi)連接分三種:①等值連接:在連接條件中使用等于號(hào)(=)運(yùn)算符比較被連接列的列值,其查詢結(jié)果中列出被連接表中的所有列,包括其中的重復(fù)列。②不等連接:在連接條件使用除等于運(yùn)算符以外的其它比較運(yùn)算符比較被連接的列的列值。這些運(yùn)算符包括>、>=、<=、<、!>、!<和<>。③自然連接:在連接條件中使用等于(=)運(yùn)算符比較被連接列的列值,但它使用選擇列表指出查詢結(jié)果集合中所包括的列,并刪除連接表中的重復(fù)列。3.3.2復(fù)合查詢(2)外連接外連接分為左外連接、右外連接和全外連接三種。與內(nèi)連接不同的是,外連接不只列出與連接條件相匹配的行,而是列出左表(左外連接時(shí))、右表(右外連接時(shí))或兩個(gè)表(全外連接時(shí))中所有符合搜索條件的數(shù)據(jù)行。在ORACLE中,外連接可以通過在WHERE子句中:(+)的使用來使用,例如:表A與表B的左連接A.FIELD1(+)=B.FIELD1,右連接A.FIELD1=B.FIELD1(+)。(3)交叉連接交叉連接不帶WHERE子句,它返回被連接的兩個(gè)表所有數(shù)據(jù)行的笛卡爾積,返回到結(jié)果集合中的數(shù)據(jù)行數(shù)等于第一個(gè)表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個(gè)表中符合查詢條件的數(shù)據(jù)行數(shù)。2.聯(lián)合查詢

UNION運(yùn)算符可以將兩個(gè)或兩個(gè)以上SELECT語句的查詢結(jié)果集合合并成一個(gè)結(jié)果集合顯示,即執(zhí)行聯(lián)合查詢。UNION的語法格式為:select_statementUNION[ALL]selectstatement[UNION[ALL]selectstatement][…n]1.統(tǒng)計(jì)字段值的數(shù)目函數(shù)COUNT()用來統(tǒng)計(jì)一個(gè)表中有多少條記錄。注意:函數(shù)COUNT()沒有指定任何字段。這個(gè)語句計(jì)算表中所有記錄所數(shù)目,包括有空值的記錄。因此,不需要指定要被計(jì)算的特定字段。2.計(jì)算字段的平均值函數(shù)AVG()可以返回一個(gè)字段中所有值的平均值。注意:函數(shù)AVG()只能對(duì)數(shù)值型字段使用。這個(gè)函數(shù)在計(jì)算平均值時(shí)也忽略空值。3.3.3集合函數(shù)3.計(jì)算字段值的和計(jì)算字段值的和使用函數(shù)SUM()。注意:函數(shù)SUM()的返回值代表字段purchase_amount中所有值的總和。4.返回最大值或最小值函數(shù)MAX()和函數(shù)MIN()分別用于返回最大值和最小值。注意:函數(shù)MIN()返回一個(gè)字段的所有值中的最小值。如果字段是空的,函數(shù)MIN()返回空值。3.4.2DELETE語句3.4.1INSERT語句

3.4數(shù)據(jù)操縱語言(DML)3.4.3UPDATE語句1.INSERT語句格式INSERT語句用于往數(shù)據(jù)表里插入記錄。(1)同時(shí)插入多條記錄的語句格式為:INSERTINTO(target.field1,target.field2,……)SELECT(source.field1,source.field2,……)FROMtableexpression(2)插入單條記錄的語句格式為:INSERTINTOtablename(target.field1,target.field2,...)VALUES(value1,value2,...)3.4.1INSERT語句2.注意事項(xiàng)(1)字符串類型的字段值必須用單引號(hào)括起來,例如:’GOODDAY’。(2)如果字段值里包含單引號(hào)需要進(jìn)行字符串轉(zhuǎn)換,把它替換成兩個(gè)單引號(hào)‘‘。(3)字符串類型的字段值超過定義的長度會(huì)出錯(cuò),最好在插入前進(jìn)行長度校驗(yàn)。(4)日期字段的字段值可以用當(dāng)前數(shù)據(jù)庫的系統(tǒng)時(shí)間SYSDATE,精確到秒。(5)INSERT時(shí)如果要用到從1開始自動(dòng)增長的序列號(hào),應(yīng)該先建立一個(gè)序列號(hào)。1.DELETE語句格式DELETE語句刪除數(shù)據(jù)表里的記錄。用DELETE語句刪除的記錄,無法再復(fù)原,所以條件設(shè)置一定要正確。DELETE語句格式為:DELETE[table.*]FROMtableexpressionWHEREcriteria3.4.2DELETE語句2.注意事項(xiàng)(1)刪除記錄并不能釋放Oracle里被占用的數(shù)據(jù)塊表空間。它只把那些被刪除的數(shù)據(jù)塊標(biāo)成unused。(2)如果確實(shí)要?jiǎng)h除一個(gè)大表里的全部記錄,可以用TRUNCATE語句,它可以釋放占用的數(shù)據(jù)塊表空間,其語句格式為:TRUNC

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論