已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(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.1 SQL簡介,3.2 SQL基本語法,3.3 數(shù)據(jù)查詢語言(DQL),3.4 數(shù)據(jù)操縱語言(DML),3.5 數(shù)據(jù)定義語言(DDL),3.6 數(shù)據(jù)控制語言(DCL),3.7 常用函數(shù),3.1.2 SQL的優(yōu)點(diǎn),3.1.3 操作界面,3.1.1 發(fā)展歷史,3.1 SQL簡介,SQL語言是數(shù)據(jù)庫的核心語言。全稱是“結(jié)構(gòu)化查詢語言(Structured Query Language)”,最早的是IBM的圣約瑟研究實(shí)驗(yàn)室為其關(guān)系數(shù)據(jù)庫管理系統(tǒng)SYSTEMR開發(fā)的一種查詢語言,它的前身是SQUARE語言。,1.非過程化語言 SQL是一個非過程化的語言,因?yàn)樗淮翁幚硪粋€記錄,對數(shù)據(jù)提供自動導(dǎo)航。SQL允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對單個記錄進(jìn)行操作,可操作記錄集。所有SQL語句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語句的結(jié)果作為另一條SQL語句的輸入。SQL不要求用戶指定對數(shù)據(jù)的存放方法。這種特性使用戶更易集中精力于要得到的結(jié)果。,3.1.2 SQL的優(yōu)點(diǎn),3.1.2 SQL的優(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ù)庫一致性和完整性,3.1.2 SQL的優(yōu)點(diǎn),3.是所有關(guān)系數(shù)據(jù)庫的公共語言 由于所有主要的關(guān)系數(shù)據(jù)庫管理系統(tǒng)都支持SQL語言,用戶可將使用SQL的技能從一個RDBMS轉(zhuǎn)到另一個,所有用SQL編寫的程序都是可以移植的。,1SQL*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)行。,3.1.3 操作界面,3.2.2 SQL語言的語法結(jié)構(gòu),3.2.1 SQL語言的主要功能,3.2 SQL基本語法,通過SQL語句,程序員或數(shù)據(jù)庫管理員(DBA)可以做如下的主要工作: (1)建立數(shù)據(jù)庫的表格,包括設(shè)置表格所可以使用之空間。 (2)改變數(shù)據(jù)庫系統(tǒng)環(huán)境設(shè)置。 (3)針對某個數(shù)據(jù)庫或表格,授予用戶存取權(quán)限。 (4)對數(shù)據(jù)庫表格建立索引值。 (5)修改數(shù)據(jù)庫表格結(jié)構(gòu)(新建、刪除或是修改表格字段)。 (6)對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的新建。 (7)對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的刪除。 (8)對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的修改。 (9)對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的查詢。,3.2.2 SQL語言的語法結(jié)構(gòu),SQL語句是針對關(guān)系型數(shù)據(jù)庫所建立出來的語法敘述,所以SQL在這類數(shù)據(jù)庫中所發(fā)揮的功能非常的強(qiáng),SQL的語句不多,而且其語法也相對較簡單。歸納起來,共有六大類: 1第一類屬性詞(Predicates) 2第二類聲明(Declaration) 3第三類條件子句(Clause) 4第四類運(yùn)算符(Operator)與操作數(shù)(Operation) 5第五類函數(shù)(Function) 6第六類SQL語句(Statement),3.3.2 復(fù)合查詢,3.3.1 基本查詢,3.3 數(shù)據(jù)查詢語言(DQL),3.3.3 集合函數(shù),1DQL的基本結(jié)構(gòu) 2SELECT 語句的格式 SELECTpredicate*|table.*|table.field,table.field2,. AS alias1 ,alias2,. FROM tableexpression ,. WHERE. GROUP BY. HAVING. ORDER BY. WITH OWNERACCESS OPTION,3.3.1 基本查詢,3SELECT中的條件語句 (1)FROM 條件子句 SELECT fieldlist FROM tableexpression (2)WHERE 條件子句 SELECT fieldlist FROM tableexpression WHERE criteria (3)“*”,DISTINCT屬性詞用法 SELECT *|DISTINCT FROM table,(4)ORDER BY條件子句 SELECT fieldlist FROM table WHERE selectcriteria ORDER BY fieldASC|DESC,field2ASC|DESC,. (5)GROUP BY 條件子句 SELECT fieldlist FROM table WHERE criteria GROUP BY groupfieldlist (6)HAVING 條件子句 SELECT fieldlist FROM table WHERE selectcriteria GROUP BY groupfieldlist HAVING groupcriteria,(7)BETWEEN.AND 運(yùn)算符 exprNotBETWEEN value1 AND value2 (8)LIKE 操作數(shù) expression LIKE “pattern“ expression,4注意事項(xiàng) (1)字段名之間可以進(jìn)行算術(shù)運(yùn)算,例如: (字段名1*字段名2)/3 (2)查詢語句可以嵌套,例如: SELECTFROM 表名1 WHERE 字段1 in (SELECTFROM表名1,表名2, WHERE條件1 WHERE條件2); (3)查詢結(jié)果集的排序操作,默認(rèn)的排序是升序ASC,降序是DESC。 (4)每個表都有一個隱含的字段ROWID,它標(biāo)記著記錄的唯一性。,1連接查詢 連接可以在SELECT 語句的FROM子句或WHERE子句中建立,在FROM子句中指出連接時有助于將連接操作與WHERE子句中的搜索條件區(qū)分開來。所以,在Transact-SQL中推薦使用這種方法。 (1)內(nèi)連接 內(nèi)連接查詢操作列出與連接條件匹配的數(shù)據(jù)行,它使用比較運(yùn)算符比較被連接列的列值。內(nèi)連接分三種: 等值連接:在連接條件中使用等于號(=)運(yùn)算符比較被連接列的列值,其查詢結(jié)果中列出被連接表中的所有列,包括其中的重復(fù)列。 不等連接: 在連接條件使用除等于運(yùn)算符以外的其它比較運(yùn)算符比較被連接的列的列值。這些運(yùn)算符包括、=、!。 自然連接:在連接條件中使用等于(=)運(yùn)算符比較被連接列的列值,但它使用選擇列表指出查詢結(jié)果集合中所包括的列,并刪除連接表中的重復(fù)列。,3.3.2 復(fù)合查詢,(2)外連接 外連接分為左外連接、右外連接和全外連接三種。與內(nèi)連接不同的是,外連接不只列出與連接條件相匹配的行,而是列出左表(左外連接時)、右表(右外連接時)或兩個表(全外連接時)中所有符合搜索條件的數(shù)據(jù)行。 在ORACLE中,外連接可以通過在WHERE子句中:(+)的使用來使用,例如:表A與表B的左連接A.FIELD1(+)=B.FIELD1,右連接A.FIELD1=B.FIELD1(+)。,(3)交叉連接 交叉連接不帶WHERE 子句,它返回被連接的兩個表所有數(shù)據(jù)行的笛卡爾積,返回到結(jié)果集合中的數(shù)據(jù)行數(shù)等于第一個表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個表中符合查詢條件的數(shù)據(jù)行數(shù)。,2聯(lián)合查詢 UNION運(yùn)算符可以將兩個或兩個以上SELECT語句的查詢結(jié)果集合合并成一個結(jié)果集合顯示,即執(zhí)行聯(lián)合查詢。UNION的語法格式為: select_statement UNION ALL selectstatement UNION ALL selectstatementn,1統(tǒng)計(jì)字段值的數(shù)目 函數(shù)COUNT()用來統(tǒng)計(jì)一個表中有多少條記錄。 注意:函數(shù)COUNT()沒有指定任何字段。這個語句計(jì)算表中所有記錄所數(shù)目,包括有空值的記錄。因此,不需要指定要被計(jì)算的特定字段。 2計(jì)算字段的平均值 函數(shù)AVG()可以返回一個字段中所有值的平均值。 注意:函數(shù)AVG()只能對數(shù)值型字段使用。這個函數(shù)在計(jì)算平均值時也忽略空值。,3.3.3集合函數(shù),3計(jì)算字段值的和 計(jì)算字段值的和使用函數(shù)SUM()。 注意:函數(shù)SUM()的返回值代表字段purchase_amount中所有值的總和。 4返回最大值或最小值 函數(shù)MAX()和函數(shù)MIN()分別用于返回最大值和最小值。 注意:函數(shù)MIN()返回一個字段的所有值中的最小值。如果字段是空的,函數(shù)MIN()返回空值。,3.4.2 DELETE語句,3.4.1 INSERT語句,3.4 數(shù)據(jù)操縱語言(DML),3.4.3 UPDATE語句,1INSERT語句格式 INSERT語句用于往數(shù)據(jù)表里插入記錄。 (1)同時插入多條記錄的語句格式為: INSERT INTO (target.field1,target.field2,) SELECT (source.field1,source.field2,) FROM tableexpression (2)插入單條記錄的語句格式為: INSERT INTO (target.field1,target.field2,.) VALUES(value1,value2,.),3.4.1 INSERT語句,2注意事項(xiàng) (1)字符串類型的字段值必須用單引號括起來,例如:GOODDAY。 (2)如果字段值里包含單引號需要進(jìn)行字符串轉(zhuǎn)換,把它替換成兩個單引號 。 (3)字符串類型的字段值超過定義的長度會出錯,最好在插入前進(jìn)行長度校驗(yàn)。 (4)日期字段的字段值可以用當(dāng)前數(shù)據(jù)庫的系統(tǒng)時間SYSDATE,精確到秒。 (5)INSERT時如果要用到從1開始自動增長的序列號,應(yīng)該先建立一個序列號。,1DELETE語句格式 DELETE語句刪除數(shù)據(jù)表里的記錄。用DELETE語句刪除的記錄,無法再復(fù)原,所以條件設(shè)置一定要正確。DELETE語句格式為: DELETE table.* FROM tableexpression WHERE criteria,3.4.2 DELETE語句,2注意事項(xiàng) (1)刪除記錄并不能釋放Oracle里被占用的數(shù)據(jù)塊表空間。它只把那些被刪除的數(shù)據(jù)塊標(biāo)成unused。 (2)如果確實(shí)要刪除一個大表里的全部記錄,可以用TRUNCATE語句,它可以釋放占用的數(shù)據(jù)塊表空間,其語句格式為: TRUNCATE TABLE 表名; (3)此操作不可回退。,UPDATE 語句通過條件的限制來修改特定的數(shù)據(jù)。 UPDATE語句格式為: UPDATE table SET newvalue WHERE criteria; DML 語句對表都加上了行級鎖,確認(rèn)完成后,必須加上事物處理結(jié)束的語句COMMIT才能正式生效,否則改變不一定寫入數(shù)據(jù)庫里。如果想撤回這些操作,可以用語句ROLLBACK復(fù)原。,3.4.3 UPDATE語句,3.5.2 ALTER語句,3.5.1 CREATE語句,3.5 數(shù)據(jù)定義語言(DDL),3.5.3 DROP語句,3.5.4 TRUNCATE語句,1表的建立 表是存儲用戶數(shù)據(jù)的基本結(jié)構(gòu)。 建立表主要指定義下列信息: 列定義 完整性約束 表所在表空間 存儲特性 可選擇的聚集,3.5.1 CREATE語句,(1)建立一個新表的語句格式 可以利用CREATE TABLE語句,來建立一個全新的表,但前提是:數(shù)據(jù)庫必須已經(jīng)存在。語句格式為: CREATE TABLE table(field1 type(size)index1,field2 type(size)index2,.,nultifieldindex,.) (2)注意事項(xiàng) 創(chuàng)建表時要把較小的不為空的字段放在前面,可能為空的字段放在后面。 創(chuàng)建表時可以用中文的字段名,但最好還是用英文的字段名。 創(chuàng)建表時可以給字段加上默認(rèn)值,例如DEFAULT SYSDATE。這樣每次插入和修改時,不用程序操作這個字段都能得到動作的時間。 創(chuàng)建表時可以給字段加上約束條件。例如不允許重復(fù)UNIQUE,關(guān)鍵字PRIMARY KEY。,2表索引的建立 索引是一種數(shù)據(jù)庫對象。對于在表或聚集的索引列上的每一值將包含一項(xiàng),為行提供直接的快速存取。在下列情況下,Oracle可利用索引改進(jìn)性能: 按指定的索引列的值查找行。 按索引列的順序存取表。,表索引的建立主要采用的是CREATE INDEX語句。這個命令是對一個已存在的表建立索引,語句格式為: CREATEUNIQUEINDEX index ON table(field1ASC|DESC, field2ASC|DESC,.) WITH PRIMARY|DISALLOWNULL|IGNORENULL,CONSTRAINT條件子句的功能也是類似索引(INDEX)的,雖然CONSTRAINT 也可以建立表之間的關(guān)聯(lián)性。如: (1)單一字段索引語句格式: CONSTRAINT namePRIMARY KEY|UNIQUE|REFERENCES foreigntable(foreignfield1,foreignfield2) (2)多字段索引語句格式: CONSTRAINT name PRIMARY KEY(primary1,primary2,.) |UNIQUE(unique1,unique2,.) |FOREIGN KEY (ref1,ref2,.) |REFERENCES foreigntable(foreignfield1, foreignfield2,.),3視圖的建立 視圖是一個邏輯表,它允許操作者從其它表或視圖存取數(shù)據(jù),視圖本身不包含數(shù)據(jù)。視圖所基于的表稱為基表。 引入視圖有下列作用: 提供附加的表安全級,限制存取基表的行或/和列集合。 隱藏?cái)?shù)據(jù)復(fù)雜性。 為數(shù)據(jù)提供另一種觀點(diǎn)。 促使Oracle的某些操作在包含視圖的數(shù)據(jù)庫上執(zhí)行,而不在另一個數(shù)據(jù)庫上執(zhí)行。,建立視圖的語句格式為: CREATE VIEW view AS SELECT table1.field1,table2.field1 FROM table1,table2.;,4同義詞的建立 同義詞為表、視圖、序列、存儲函數(shù)、包、快照或其它同義詞的另一個名字。使用同義詞為了安全和方便。對某一對象建立同義詞可有下列好處: 引用對象不需指出對象的持有者。 引用對象不需指出它所位于的數(shù)據(jù)庫。 為對象提供另一個名字。 建立同義詞使用的語句格式為: CREATE SYNONYM symnon_name FOR username.tablename;,5用戶的建立 建立用戶使用的語句格式為: CREATE USER username IDENTIFIED BY password;,1ALTER語句格式 用ALTER語句,可以修改表、索引,或?qū)σ晥D的字段重新設(shè)計(jì)。語句格式為: ALTER TABLE table ADD COLUMN field type(size)CONSTRAINT index |CONSTRAINT multifiedindex |DROP COLUMN field|CONSTRAINT indexname,3.5.2 ALTER語句,2ALTER語句的具體用法 (1)改變表的名稱,語句格式為: ALTER TABLE table1 TO table 2; (2)在表的后面增加一個字段,語句格式為: ALTER TABLE table ADD FIELD DESCRIPTION; (3)修改表里字段的定義描述,語句格式為: ALTER TABLE table MODIFY FIELD DESCRIPTION; (4)給表里的字段加上約束條件,語句格式為: ALTER TABLE table ADD CONSTRAINT cons_name PRIMARYKEY (field); ALTER TABLE table ADD CONSTRAINTcons_name UNIQUE(field); (5)把表放在或取出數(shù)據(jù)庫的內(nèi)存區(qū),語句格式為: ALTER TABLE table CACHE; ALTER TABLE table NOCACHE;,使用DROP語句,可以刪除表,索引,視圖,同義詞,過程,函數(shù),數(shù)據(jù)庫鏈接等。DROP語句的格式為: DROP TABLE table|INDEX index ON table,3.5.3 DROP語句,使用TRUNCATE語句,可以清空表里的所有記錄,保留表的結(jié)構(gòu)。TRUNCATE語句的格式為: TRUNCATE table;,3.5.4 TRUNCATE語句,2. REVOKE語句,1. GRANT語句,3.6 數(shù)據(jù)控制語言(DCL),3. COMMIT語句,4. ROLLBACK語句,1GRANT語句 GR
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 九年級思想品德課件
- 《電氣安全防范》課件
- 《證券基礎(chǔ)知識培訓(xùn)》課件
- 單位管理制度合并選集【員工管理】十篇
- 《學(xué)業(yè)生涯規(guī)劃》課件
- 單位管理制度分享大全人員管理十篇
- 《服裝供應(yīng)鏈》課件
- 單位管理制度范例選集人員管理篇
- 單位管理制度呈現(xiàn)大合集人事管理篇十篇
- 國開《機(jī)械制圖》形成性任務(wù)1-4
- 北方民族大學(xué)床上用品投標(biāo)文件
- 安全生產(chǎn)費(fèi)用歸集清單(安措費(fèi)清單)
- 左傳簡介完整
- 榕江縣銻礦 礦業(yè)權(quán)出讓收益計(jì)算書
- 顱腦外科手術(shù)環(huán)境及手術(shù)配合
- 長期異地安置、居住就醫(yī)備案承諾書【模板】
- 盤查戰(zhàn)術(shù)教案
- GB/T 2652-2022金屬材料焊縫破壞性試驗(yàn)熔化焊接頭焊縫金屬縱向拉伸試驗(yàn)
- GB/T 1243-1997短節(jié)距傳動用精密滾子鏈和鏈輪
- 打起手鼓唱起歌二聲部改編簡譜
- 陜西西安電子科技大學(xué)招考聘用(同步測試)模擬卷和答案
評論
0/150
提交評論