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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(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)容安排2.1SQL簡介

2.2SQL基本語法

2.3數(shù)據(jù)查詢語言(DQL)2.4數(shù)據(jù)操縱語言(DML)

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

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

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

2.1.3操作界面

2.1.1發(fā)展歷史

3.1SQL簡介

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è)記錄,對數(shù)據(jù)提供自動導(dǎo)航。SQL允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對單個(gè)記錄進(jìn)行操作,可操作記錄集。所有SQL語句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語句的結(jié)果作為另一條SQL語句的輸入。SQL不要求用戶指定對數(shù)據(jù)的存放方法。這種特性使用戶更易集中精力于要得到的結(jié)果。2.1.2SQL的優(yōu)點(diǎn)

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

SQL可用于所有用戶的DB活動模型,包括系統(tǒng)管理員、數(shù)據(jù)庫管理員、應(yīng)用程序員、決策支持系統(tǒng)人員及許多其它類型的終端用戶。SQL為許多任務(wù)提供了語句,包括:查詢數(shù)據(jù)在表中插入、修改和刪除記錄建立、修改和刪除數(shù)據(jù)對象控制對數(shù)據(jù)和數(shù)據(jù)對象的存取保證數(shù)據(jù)庫一致性和完整性2.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編寫的程序都是可以移植的。1.SQL*PLUS界面:(1)登錄輸入SQLPLUS,再回車;接著輸入正確的Oracle用戶名并回車;輸入用戶口令并回車,會顯示提示符:SQL>。(2)退出輸入EXIT即可。2.語句的編輯與運(yùn)行語句的編輯與運(yùn)行可以在語句提示符后輸入SQL語句并運(yùn)行。執(zhí)行單條語句,以分號結(jié)束輸入;執(zhí)行程序塊以斜杠結(jié)束輸入,或者以空行結(jié)束輸入。也可以利用SQL緩沖區(qū)進(jìn)行PL/SQL塊的編輯和運(yùn)行,或利用語句文件進(jìn)行PL/SQL塊的編輯和運(yùn)行。2.1.3操作界面

2.2.2SQL語言的語法結(jié)構(gòu)

2.2.1SQL語言的主要功能

3.2SQL基本語法

通過SQL語句句,程序序員或數(shù)數(shù)據(jù)庫管管理員((DBA)可以以做如下下的主要要工作::(1)建建立數(shù)據(jù)據(jù)庫的表表格,包包括設(shè)置置表格所所可以使使用之空空間。(2)改改變數(shù)據(jù)據(jù)庫系統(tǒng)統(tǒng)環(huán)境設(shè)設(shè)置。(3)針針對某個(gè)個(gè)數(shù)據(jù)庫庫或表格格,授予予用戶存存取權(quán)限限。(4)對對數(shù)據(jù)庫庫表格建建立索引引值。(5)修修改數(shù)據(jù)據(jù)庫表格格結(jié)構(gòu)((新建、、刪除或或是修改改表格字字段)。。(6)對對數(shù)據(jù)庫庫進(jìn)行數(shù)數(shù)據(jù)的新新建。(7)對對數(shù)據(jù)庫庫進(jìn)行數(shù)數(shù)據(jù)的刪刪除。(8)對對數(shù)據(jù)庫庫進(jìn)行數(shù)數(shù)據(jù)的修修改。(9)對對數(shù)據(jù)庫庫進(jìn)行數(shù)數(shù)據(jù)的查查詢。2.2.2SQL語言的的語法結(jié)結(jié)構(gòu)SQL語語句是針針對關(guān)系系型數(shù)據(jù)據(jù)庫所建建立出來來的語法法敘述,,所以SQL在在這類數(shù)數(shù)據(jù)庫中中所發(fā)揮揮的功能能非常的的強(qiáng),SQL的的語句不不多,而而且其語語法也相相對較簡簡單。歸歸納起來來,共有有六大類類:1.第一一類———屬性詞詞(Predicates))2.第二二類———聲明((Declaration))3.第三三類———條件子子句(Clause))4.第四四類———運(yùn)算符符(Operator)5.第五五類———函數(shù)((Function))6.第六六類———SQL語句((Statement)2.3.2復(fù)復(fù)合查查詢2.3.1基基本查查詢2.3數(shù)數(shù)據(jù)查查詢語言言(DQL)2.3.3集集合函函數(shù)1.DQL的基基本結(jié)構(gòu)構(gòu)2.SELECT語語句的格格式SELECT[distinct字字段列表表][table.字字段名][字段段名as別別名][*][集合函函數(shù)(字字段名))]FROM表名名1[,...][WHERE...][GROUPBY...][HAVING...][ORDERBY...]2.3.1基基本查查詢3.SELECT中的的條件語語句(1)FROM條件件子句SELECTfieldlist(可以以使用算算術(shù)運(yùn)算算符(+-*/)))FROMtableexpression(2)WHERE條條件子句句SELECTfieldlistFROMtableexpressionWHEREcriteria(后后副:where子句句中的運(yùn)運(yùn)算符)(3)“*”,DISTINCT屬性詞用用法SELECT[*|DISTINCT]FROMtable(4)ORDERBY條件子句句SELECTfieldlistFROMtableWHEREselectcriteriaORDERBYfield[ASC|DESC][,field2[ASC|DESC][,...]](5)GROUPBY條條件子句句SELECTfieldlistFROMtableWHEREcriteriaGROUPBYgroupfieldlist(6)HAVING條件子句句SELECTfieldlistFROMtableWHEREselectcriteriaGROUPBYgroupfieldlistHAVINGgroupcriteriawhere子句中的的運(yùn)算符::(1)比較較運(yùn)算符::><<=>==<>(2)范圍圍運(yùn)算符::[NOT]Between…….and(3)列表表運(yùn)算符::[NOT]IN(expressionlistvalue)(4)模式式匹配運(yùn)算算符like_,%(5)NULL運(yùn)算符符:isnotnull(6)邏輯輯運(yùn)算符::andornot(not要與其其他兩個(gè)共共同使用)例如:WHERE(type='business'ORtype='psychology')ANDNOTadvance>55004.注意事項(xiàng)項(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。1.連接查詢連接可以在在SELECT語語句的FROM子句句或WHERE子句句中建立,,在FROM子句中中指出連接接時(shí)有助于于將連接操操作與WHERE子子句中的搜搜索條件區(qū)區(qū)分開來。。這樣就可可以將多個(gè)個(gè)表中的數(shù)數(shù)據(jù)進(jìn)行有有條件的查查詢:select*fromtablename1,tablename2,……whereexpre2.3.2復(fù)復(fù)合查詢詢2.聯(lián)合查詢UNION運(yùn)算符可可以將兩個(gè)個(gè)或兩個(gè)以以上SELECT語語句的查詢詢結(jié)果集合合合并成一一個(gè)結(jié)果集集合顯示,,即執(zhí)行聯(lián)聯(lián)合查詢。。UNION的語法法格式為::select_statementUNION[ALL]selectstatement[UNION[ALL]selectstatement][…n]3,外聯(lián)接接查詢:左外連接查查詢:leftjoin右外連接查查詢:rightjoin全外連接查查詢:fulljoin條條件件的指定用用on4,內(nèi)連接接查詢:第一種:在在from后直接添添加表名,,中間用逗逗號隔開;;第二種:使使用“join””連接,,條件的的指定用““on”5,自連接接:就是將同一一個(gè)表其不不同的別名名,使他在在邏輯上成成為兩張表表1.統(tǒng)計(jì)字字段值的數(shù)數(shù)目函數(shù)COUNT())用來統(tǒng)計(jì)計(jì)一個(gè)表中中有多少條條記錄。Count(distinct/*字字段名稱稱)注意:函數(shù)COUNT()沒有指定定任何字段段。這個(gè)語語句計(jì)算表表中所有記記錄所數(shù)目目,包括有有空值的記記錄。因此此,不需要要指定要被被計(jì)算的特特定字段。。2.計(jì)算字字段的平均均值函數(shù)AVG()可以以返回一個(gè)個(gè)字段中所所有值的平平均值。注意:函數(shù)AVG()只能能對數(shù)值型型字段使用用。這個(gè)函函數(shù)在計(jì)算算平均值時(shí)時(shí)也忽略空空值。2.3.3集合函數(shù)數(shù)3.計(jì)算字字段值的和和計(jì)算字段值值的和使用用函數(shù)SUM()。。注意:函數(shù)SUM()的返返回值代表表字段purchase_amount中所有有值的總和和。4.返回最最大值或最最小值函數(shù)MAX()和函函數(shù)MIN()分別別用于返回回最大值和和最小值。。注意:函數(shù)MIN()返回回一個(gè)字段段的所有值值中的最小小值。如果果字段是空空的,函數(shù)數(shù)MIN()返回空空值。2.4.2DELETE語語句2.4.1INSERT語句2.4數(shù)數(shù)據(jù)據(jù)操操縱縱語語言言((DML))2.4.3UPDATE語語句句1..INSERT語語句句格格式式INSERT語語句句用用于于往往數(shù)數(shù)據(jù)據(jù)表表里里插插入入記記錄錄。。(1))插入入單單條條記記錄錄的的語語句句格格式式為為::INSERTINTOtablename(target.field1,target.field2,,...)VALUES(value1,value2,...)、(2))同時(shí)時(shí)插插入入多多條條記記錄錄的的語語句句格格式式為為::INSERTINTOtablename(target.field1,target.field2,…………)SELECT(source.field1,source.field2,,…………)FROMtableexpression2.4.1INSERT語語句句2..注意意事事項(xiàng)項(xiàng)(1))字字符符串串類類型型的的字字段段值值必必須須用用單單引引號號括括起起來來,,例例如如::’’GOODDAY’’。。(2))如如果果字字段段值值里里包包含含單單引引號號需需要要進(jìn)進(jìn)行行字字符符串串轉(zhuǎn)轉(zhuǎn)換換,,把把它它替替換換成成兩兩個(gè)個(gè)單單引引號號‘‘‘‘。。(3))字字符符串串類類型型的的字字段段值值超超過過定定義義的的長長度度會會出出錯(cuò)錯(cuò),,最最好好在在插插入入前前進(jìn)進(jìn)行行長長度度校校驗(yàn)驗(yàn)。。(4)日期字字段的字段值值可以用當(dāng)前前數(shù)據(jù)庫的系系統(tǒng)時(shí)間SYSDATE,精確到秒秒。(5)INSERT時(shí)如如果要用到從從1開始自動動增長的序列列號,應(yīng)該先先建立一個(gè)序序列號。(6)在添加加數(shù)據(jù)時(shí)可以以使用轉(zhuǎn)換函函數(shù)添加指定定的數(shù)據(jù)類型型。有to_char()to_date()to_number()1.DELETE語句格格式DELETE語句刪除數(shù)數(shù)據(jù)表里的記記錄。用DELETE語語句刪除的記記錄,無法再再復(fù)原,所以以條件設(shè)置一一定要正確。。DELETE語句格式式為:DELETE[tablename]FROMtableexpressionWHEREcriteria2.4.2DELETE語語句2.注意事項(xiàng)(1)刪除除記錄并不不能釋放Oracle里被占占用的數(shù)據(jù)據(jù)塊表空間間。它只把把那些被刪刪除的數(shù)據(jù)據(jù)塊標(biāo)成unused。(2)如果果確實(shí)要刪刪除一個(gè)大大表里的全全部記錄,,可以用TRUNCATE語語句,它可可以釋放占占用的數(shù)據(jù)據(jù)塊表空間間,其語句句格式為::TRUNCATETABLE表名名;(3)此操操作不可回回退。UPDATE語句句通過條件件的限制來來修改特定定的數(shù)據(jù)。。UPDATE語語句格式為為:UPDATEtablenameSETnewvalue[FROMtableexpression]WHEREcriteria;DML語語句對表都都加上了行行級鎖,確確認(rèn)完成后后,必須加加上事物處處理結(jié)束的的語句COMMIT才能正式式生效,否否則改變不不一定寫入入數(shù)據(jù)庫里里。如果想想撤回這些些操作,可可以用語句句ROLLBACK復(fù)原。2.4.3UPDATE語語句2.5.2ALTER語語句2.5.1CREATE語語句2.5數(shù)數(shù)據(jù)定義語語言(DDL)2.5.3DROP語句句2.5.4TRUNCATE語句1.表的建建立表是存儲用用戶數(shù)據(jù)的的基本結(jié)構(gòu)構(gòu)。建立表主要要指定義下下列信息::列定義完整性約束束2.5.1CREATE語語句字段數(shù)據(jù)類類型:字符型:1、char(n):定長長字符串長長度1~20002、varchar2(n):變長長字符串長長度1~40003、nchar(n):定長長字符串長長度1~10004、nvarchar2(n)變長字字符串長長度1~10005、long(n)變長字符符串長長度2G數(shù)字型1、Number(p,s):p為為所有位數(shù)數(shù),s為小小數(shù)位數(shù)number范范圍圍10的-38次方到到10的38次方日期型1、date:儲儲存從公公元前4712/1/1到公公元4712/12/31大對象數(shù)據(jù)據(jù)類型1、Blob(n):存4G的二進(jìn)制制數(shù)據(jù)2、Clob(n):存4G的字符數(shù)數(shù)據(jù)3、NClob(n):存4Gunicode的字字符數(shù)據(jù)(1)建立立一個(gè)新表表的語句格格式可以利用CREATETABLE語語句,來建建立一個(gè)全全新的表,,但前提是是:數(shù)據(jù)庫庫必須已經(jīng)經(jīng)存在。語語句格式為為:CREATETABLEtablename(field1type[(size)][index1],field2type[(size)][index2],...,nultifieldindex[,...])[constraint約約束名]primarykey(列名)[constraint約約束名]primarykey(列名)::不重復(fù),,不能有null值值可以被外鍵鍵引用,一一個(gè)表中只只能有一個(gè)個(gè)主鍵[constraint約約束名]unique(列名)::字段中的的數(shù)據(jù)不能能重復(fù),可可以被外鍵鍵引用。[constraint約約束名]foreignkey(列名)references主主鍵表(主主鍵列)中中的數(shù)據(jù)必必須來自于于主鍵或者者是唯一約約束列數(shù)據(jù)據(jù)。[constraint約約束名]check(檢查查表達(dá)式)[constraint約約束名]default(默認(rèn)值值)得得到到系統(tǒng)時(shí)間間:sysdate(2)注意事項(xiàng)①創(chuàng)建表時(shí)時(shí)要把較小小的不為空空的字段放放在前面,,可能為空空的字段放放在后面。。②創(chuàng)建表時(shí)時(shí)可以用中中文的字段段名,但最最好還是用用英文的字字段名。③創(chuàng)建表時(shí)時(shí)可以給字字段加上默默認(rèn)值,例例如DEFAULTSYSDATE。這樣每每次插入和和修改時(shí),,不用程序序操作這個(gè)個(gè)字段都能能得到動作作的時(shí)間。。④創(chuàng)建表時(shí)時(shí)可以給字字段加上約約束條件。。例如不允允許重復(fù)UNIQUE,主鍵鍵PRIMARYKEY。。2.表索引的建建立索引是一種種數(shù)據(jù)庫對對象,他他是表和蔟蔟相聯(lián)系的的結(jié)構(gòu),能能夠是與表表相關(guān)的SQL語句句執(zhí)行更迅迅速,能夠夠快速定位位要查詢的的信息,他他對查詢結(jié)結(jié)果每影響響,但可以以提高查詢詢速度,對對于在表或或聚集的索索引列上的的每一值將將包含一項(xiàng)項(xiàng),為行提提供直接的的快速存取取。在下列列情況下,,Oracle可利利用索引改改進(jìn)性能::按指定的的索引列的的值查找行行。按索引列列的順序存存取表。注意:建立表的主主鍵時(shí)候的的約束可以以自動建索索引primarykey-------唯唯一性索引引unique-------唯唯一性索引引表索引的建建立主要采采用的是CREATEINDEX語語句。這個(gè)個(gè)命令是對對一個(gè)已存存在的表建建立索引,,語句格式式為:CREATE[UNIQUE]INDEXindexnameONtablename(field1[ASC|DESC],field2[ASC|DESC],...)3.視圖的的建立視圖是一個(gè)個(gè)邏輯表,,它允許操操作者從其其它表或視視圖存取數(shù)數(shù)據(jù),視圖圖本身不包包含數(shù)據(jù)。。視圖所基基于的表稱稱為基表。。引入視圖有有下列作用用:提供附加加的表安全全級,限制制存取基表表的行或/和列集合合。隱藏?cái)?shù)據(jù)據(jù)復(fù)雜性。。為數(shù)據(jù)提提供另一種種觀點(diǎn)。促使Oracle的某些操操作在包含含視圖的數(shù)數(shù)據(jù)庫上執(zhí)執(zhí)行,而不不在另一個(gè)個(gè)數(shù)據(jù)庫上上執(zhí)行。建立視圖的的語句格式式為:CREATEVIEWviewname(字段列表表)ASSELECTtable1.field1,…,table2.field1……FROMtable1,table2…….;Withreadonly4..同義義詞詞的的建建立立同義義詞詞為為表表、、視視圖圖、、序序列列、、存存儲儲函函數(shù)數(shù)、、包包、、快快照照或或其其它它同同義義詞詞的的另另一一個(gè)個(gè)名名字字。。使使用用同同義義詞詞為為了了安安全全和和方方便便。。對對某某一一對對象象建建立立同同義義詞詞可可有有下下列列好好處處::引引用用對對象象不不需需指指出出對對象象的的持持有有者者。。引引用用對對象象不不需需指指出出它它所所位位于于的的數(shù)數(shù)據(jù)據(jù)庫庫。。為為對對象象提提供供另另一一個(gè)個(gè)名名字字。。建立立同同義義詞詞使使用用的的語語句句格格式式為為::CREATESYNONYMsymnon_nameFOR[username.]tablename;1..ALTER語語句句格格式式用ALTER語語句句,,可可以以修修改改表表、、索索引引,,或或?qū)σ曇晥D圖的的字字段段重重新新設(shè)設(shè)計(jì)計(jì)。。語語句句格格式式為為::ALTERTABLEtablename{ADD(COLUMNfieldtype[(size)]|CONSTRAINTmultifiedindex}|DROP{COLUMNfield|CONSTRAINTindexname}}2.5.2ALTER語語句句2..ALTER語語句句的的具具體體用用法法(1))在在表表的的后后面面增增加加一一個(gè)個(gè)字字段段,,例例如如為為::ALTERTABLE表表名名ADD("BOOK_SHU"VARCHAR2(10))(2))修修改改表表里里字字段段的的定定義義描描述述,,例例如如為為::ALTERTABLE表表名名MODIFY("BOOK_NAME““NOTNULL)(3))給給表表里里的的字字段段加加上上約約束束條條件件,,語語句句格格式式為為::ALTERTABLE"SCOTT"."ZHOU1"ADD(CONSTRAINT"ZHUJIAN"PRIMARYKEY(book_name))修改改表表名名稱稱::rename舊舊表表名名to新新表表名名修改改列列的的屬屬性性時(shí)時(shí),,需需要要注注意意以以下下幾幾條條::1、、可可以以增增加加列列的的寬寬度度或或數(shù)數(shù)字字的的精精度度。。2、、減減少少列列的的寬寬度度時(shí)時(shí),,列列的的取取值值要要大大于于列列值值范范圍。3、當(dāng)數(shù)數(shù)據(jù)類型型被修改改時(shí),列列值必須須為空使用DROP語語句,可可以刪除除表,索索引,視視圖,同同義詞,,過程,,函數(shù),,數(shù)據(jù)庫庫鏈接等等??梢砸曰謴?fù),,DROP語句句的格式式為:DROP{TABLEtable|INDEXindexONtable}例如:droptablebiao2.5.3DROP語句使用TRUNCATE語句,,可以清清空表里里的所有有記錄,,保留表表的結(jié)構(gòu)構(gòu)。TRUNCATE語句的的格式為為:TRUNCATEtable表表名;2.5.4T

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論