關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL語(yǔ)言基礎(chǔ).ppt_第1頁(yè)
關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL語(yǔ)言基礎(chǔ).ppt_第2頁(yè)
關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL語(yǔ)言基礎(chǔ).ppt_第3頁(yè)
關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL語(yǔ)言基礎(chǔ).ppt_第4頁(yè)
關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL語(yǔ)言基礎(chǔ).ppt_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

SQL語(yǔ)言基礎(chǔ),本章學(xué)習(xí)目標(biāo) SQL語(yǔ)言是數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言。只有理解了SQL才能真正理解關(guān)系數(shù)據(jù)庫(kù)。本章將介紹怎樣使用“結(jié)構(gòu)化查詢語(yǔ)言”(SQL)來(lái)操作數(shù)據(jù)庫(kù)。,第三章 SQL語(yǔ)言基礎(chǔ),本章內(nèi)容安排,3.1 SQL簡(jiǎn)介,3.2 SQL基本語(yǔ)法,3.3 數(shù)據(jù)查詢語(yǔ)言(DQL),3.4 數(shù)據(jù)操縱語(yǔ)言(DML),3.5 數(shù)據(jù)定義語(yǔ)言(DDL),3.6 數(shù)據(jù)控制語(yǔ)言(DCL),3.7 常用函數(shù),3.1.2 SQL的優(yōu)點(diǎn),3.1.3 操作界面,3.1.1 發(fā)展歷史,3.1 SQL簡(jiǎn)介,SQL語(yǔ)言是數(shù)據(jù)庫(kù)的核心語(yǔ)言。全稱是“結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language)”,最早的是IBM的圣約瑟研究實(shí)驗(yàn)室為其關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)SYSTEMR開(kāi)發(fā)的一種查詢語(yǔ)言,它的前身是SQUARE語(yǔ)言。,1.非過(guò)程化語(yǔ)言 SQL是一個(gè)非過(guò)程化的語(yǔ)言,因?yàn)樗淮翁幚硪粋€(gè)記錄,對(duì)數(shù)據(jù)提供自動(dòng)導(dǎo)航。SQL允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對(duì)單個(gè)記錄進(jìn)行操作,可操作記錄集。所有SQL語(yǔ)句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語(yǔ)句的結(jié)果作為另一條SQL語(yǔ)句的輸入。SQL不要求用戶指定對(duì)數(shù)據(jù)的存放方法。這種特性使用戶更易集中精力于要得到的結(jié)果。,3.1.2 SQL的優(yōu)點(diǎn),3.1.2 SQL的優(yōu)點(diǎn),2.統(tǒng)一的語(yǔ)言 SQL可用于所有用戶的DB活動(dòng)模型,包括系統(tǒng)管理員、數(shù)據(jù)庫(kù)管理員、應(yīng)用程序員、決策支持系統(tǒng)人員及許多其它類型的終端用戶。 SQL為許多任務(wù)提供了語(yǔ)句,包括: 查詢數(shù)據(jù) 在表中插入、修改和刪除記錄 建立、修改和刪除數(shù)據(jù)對(duì)象 控制對(duì)數(shù)據(jù)和數(shù)據(jù)對(duì)象的存取 保證數(shù)據(jù)庫(kù)一致性和完整性,3.1.2 SQL的優(yōu)點(diǎn),3.是所有關(guān)系數(shù)據(jù)庫(kù)的公共語(yǔ)言 由于所有主要的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)都支持SQL語(yǔ)言,用戶可將使用SQL的技能從一個(gè)RDBMS轉(zhuǎn)到另一個(gè),所有用SQL編寫的程序都是可以移植的。,1SQL*PLUS界面: (1)登錄 輸入SQLPLUS,再回車;接著輸入正確的Oracle用戶名并回車;輸入用戶口令并回車,會(huì)顯示提示符:SQL。 (2)退出 輸入EXIT即可。 2語(yǔ)句的編輯與運(yùn)行 語(yǔ)句的編輯與運(yùn)行可以在語(yǔ)句提示符后輸入SQL語(yǔ)句并運(yùn)行。執(zhí)行單條語(yǔ)句,以分號(hào)結(jié)束輸入;執(zhí)行程序塊以斜杠結(jié)束輸入,或者以空行結(jié)束輸入。 也可以利用SQL緩沖區(qū)進(jìn)行PL/SQL塊的編輯和運(yùn)行,或利用語(yǔ)句文件進(jìn)行PL/SQL塊的編輯和運(yùn)行。,3.1.3 操作界面,3.2.2 SQL語(yǔ)言的語(yǔ)法結(jié)構(gòu),3.2.1 SQL語(yǔ)言的主要功能,3.2 SQL基本語(yǔ)法,通過(guò)SQL語(yǔ)句,程序員或數(shù)據(jù)庫(kù)管理員(DBA)可以做如下的主要工作: (1)建立數(shù)據(jù)庫(kù)的表格,包括設(shè)置表格所可以使用之空間。 (2)改變數(shù)據(jù)庫(kù)系統(tǒng)環(huán)境設(shè)置。 (3)針對(duì)某個(gè)數(shù)據(jù)庫(kù)或表格,授予用戶存取權(quán)限。 (4)對(duì)數(shù)據(jù)庫(kù)表格建立索引值。 (5)修改數(shù)據(jù)庫(kù)表格結(jié)構(gòu)(新建、刪除或是修改表格字段)。 (6)對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的新建。 (7)對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的刪除。 (8)對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的修改。 (9)對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的查詢。,3.2.2 SQL語(yǔ)言的語(yǔ)法結(jié)構(gòu),SQL語(yǔ)句是針對(duì)關(guān)系型數(shù)據(jù)庫(kù)所建立出來(lái)的語(yǔ)法敘述,所以SQL在這類數(shù)據(jù)庫(kù)中所發(fā)揮的功能非常的強(qiáng),SQL的語(yǔ)句不多,而且其語(yǔ)法也相對(duì)較簡(jiǎn)單。歸納起來(lái),共有六大類: 1第一類屬性詞(Predicates) 2第二類聲明(Declaration) 3第三類條件子句(Clause) 4第四類運(yùn)算符(Operator)與操作數(shù)(Operation) 5第五類函數(shù)(Function) 6第六類SQL語(yǔ)句(Statement),3.3.2 復(fù)合查詢,3.3.1 基本查詢,3.3 數(shù)據(jù)查詢語(yǔ)言(DQL),3.3.3 集合函數(shù),1DQL的基本結(jié)構(gòu) 2SELECT 語(yǔ)句的格式 SELECTpredicate*|table.*|table.field,table.field2,. AS alias1 ,alias2,. FROM tableexpression ,. WHERE. GROUP BY. HAVING. ORDER BY. WITH OWNERACCESS OPTION,3.3.1 基本查詢,3SELECT中的條件語(yǔ)句 (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)查詢語(yǔ)句可以嵌套,例如: SELECTFROM 表名1 WHERE 字段1 in (SELECTFROM表名1,表名2, WHERE條件1 WHERE條件2); (3)查詢結(jié)果集的排序操作,默認(rèn)的排序是升序ASC,降序是DESC。 (4)每個(gè)表都有一個(gè)隱含的字段ROWID,它標(biāo)記著記錄的唯一性。,1連接查詢 連接可以在SELECT 語(yǔ)句的FROM子句或WHERE子句中建立,在FROM子句中指出連接時(shí)有助于將連接操作與WHERE子句中的搜索條件區(qū)分開(kāi)來(lái)。所以,在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中,外連接可以通過(guò)在WHERE子句中:(+)的使用來(lái)使用,例如:表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語(yǔ)句的查詢結(jié)果集合合并成一個(gè)結(jié)果集合顯示,即執(zhí)行聯(lián)合查詢。UNION的語(yǔ)法格式為: select_statement UNION ALL selectstatement UNION ALL selectstatementn,1統(tǒng)計(jì)字段值的數(shù)目 函數(shù)COUNT()用來(lái)統(tǒng)計(jì)一個(gè)表中有多少條記錄。 注意:函數(shù)COUNT()沒(méi)有指定任何字段。這個(gè)語(yǔ)句計(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.2 DELETE語(yǔ)句,3.4.1 INSERT語(yǔ)句,3.4 數(shù)據(jù)操縱語(yǔ)言(DML),3.4.3 UPDATE語(yǔ)句,1INSERT語(yǔ)句格式 INSERT語(yǔ)句用于往數(shù)據(jù)表里插入記錄。 (1)同時(shí)插入多條記錄的語(yǔ)句格式為: INSERT INTO (target.field1,target.field2,) SELECT (source.field1,source.field2,) FROM tableexpression (2)插入單條記錄的語(yǔ)句格式為: INSERT INTO (target.field1,target.field2,.) VALUES(value1,value2,.),3.4.1 INSERT語(yǔ)句,2注意事項(xiàng) (1)字符串類型的字段值必須用單引號(hào)括起來(lái),例如:GOODDAY。 (2)如果字段值里包含單引號(hào)需要進(jìn)行字符串轉(zhuǎn)換,把它替換成兩個(gè)單引號(hào) 。 (3)字符串類型的字段值超過(guò)定義的長(zhǎng)度會(huì)出錯(cuò),最好在插入前進(jìn)行長(zhǎng)度校驗(yàn)。 (4)日期字段的字段值可以用當(dāng)前數(shù)據(jù)庫(kù)的系統(tǒng)時(shí)間SYSDATE,精確到秒。 (5)INSERT時(shí)如果要用到從1開(kāi)始自動(dòng)增長(zhǎng)的序列號(hào),應(yīng)該先建立一個(gè)序列號(hào)。,1DELETE語(yǔ)句格式 DELETE語(yǔ)句刪除數(shù)據(jù)表里的記錄。用DELETE語(yǔ)句刪除的記錄,無(wú)法再?gòu)?fù)原,所以條件設(shè)置一定要正確。DELETE語(yǔ)句格式為: DELETE table.* FROM tableexpression WHERE criteria,3.4.2 DELETE語(yǔ)句,2注意事項(xiàng) (1)刪除記錄并不能釋放Oracle里被占用的數(shù)據(jù)塊表空間。它只把那些被刪除的數(shù)據(jù)塊標(biāo)成unused。 (2)如果確實(shí)要?jiǎng)h除一個(gè)大表里的全部記錄,可以用TRUNCATE語(yǔ)句,它可以釋放占用的數(shù)據(jù)塊表空間,其語(yǔ)句格式為: TRUNCATE TABLE 表名; (3)此操作不可回退。,UPDATE 語(yǔ)句通過(guò)條件的限制來(lái)修改特定的數(shù)據(jù)。 UPDATE語(yǔ)句格式為: UPDATE table SET newvalue WHERE criteria; DML 語(yǔ)句對(duì)表都加上了行級(jí)鎖,確認(rèn)完成后,必須加上事物處理結(jié)束的語(yǔ)句COMMIT才能正式生效,否則改變不一定寫入數(shù)據(jù)庫(kù)里。如果想撤回這些操作,可以用語(yǔ)句ROLLBACK復(fù)原。,3.4.3 UPDATE語(yǔ)句,3.5.2 ALTER語(yǔ)句,3.5.1 CREATE語(yǔ)句,3.5 數(shù)據(jù)定義語(yǔ)言(DDL),3.5.3 DROP語(yǔ)句,3.5.4 TRUNCATE語(yǔ)句,1表的建立 表是存儲(chǔ)用戶數(shù)據(jù)的基本結(jié)構(gòu)。 建立表主要指定義下列信息: 列定義 完整性約束 表所在表空間 存儲(chǔ)特性 可選擇的聚集,3.5.1 CREATE語(yǔ)句,(1)建立一個(gè)新表的語(yǔ)句格式 可以利用CREATE TABLE語(yǔ)句,來(lái)建立一個(gè)全新的表,但前提是:數(shù)據(jù)庫(kù)必須已經(jīng)存在。語(yǔ)句格式為: CREATE TABLE table(field1 type(size)index1,field2 type(size)index2,.,nultifieldindex,.) (2)注意事項(xiàng) 創(chuàng)建表時(shí)要把較小的不為空的字段放在前面,可能為空的字段放在后面。 創(chuàng)建表時(shí)可以用中文的字段名,但最好還是用英文的字段名。 創(chuàng)建表時(shí)可以給字段加上默認(rèn)值,例如DEFAULT SYSDATE。這樣每次插入和修改時(shí),不用程序操作這個(gè)字段都能得到動(dòng)作的時(shí)間。 創(chuàng)建表時(shí)可以給字段加上約束條件。例如不允許重復(fù)UNIQUE,關(guān)鍵字PRIMARY KEY。,2表索引的建立 索引是一種數(shù)據(jù)庫(kù)對(duì)象。對(duì)于在表或聚集的索引列上的每一值將包含一項(xiàng),為行提供直接的快速存取。在下列情況下,Oracle可利用索引改進(jìn)性能: 按指定的索引列的值查找行。 按索引列的順序存取表。,表索引的建立主要采用的是CREATE INDEX語(yǔ)句。這個(gè)命令是對(duì)一個(gè)已存在的表建立索引,語(yǔ)句格式為: CREATEUNIQUEINDEX index ON table(field1ASC|DESC, field2ASC|DESC,.) WITH PRIMARY|DISALLOWNULL|IGNORENULL,CONSTRAINT條件子句的功能也是類似索引(INDEX)的,雖然CONSTRAINT 也可以建立表之間的關(guān)聯(lián)性。如: (1)單一字段索引語(yǔ)句格式: CONSTRAINT namePRIMARY KEY|UNIQUE|REFERENCES foreigntable(foreignfield1,foreignfield2) (2)多字段索引語(yǔ)句格式: CONSTRAINT name PRIMARY KEY(primary1,primary2,.) |UNIQUE(unique1,unique2,.) |FOREIGN KEY (ref1,ref2,.) |REFERENCES foreigntable(foreignfield1, foreignfield2,.),3視圖的建立 視圖是一個(gè)邏輯表,它允許操作者從其它表或視圖存取數(shù)據(jù),視圖本身不包含數(shù)據(jù)。視圖所基于的表稱為基表。 引入視圖有下列作用: 提供附加的表安全級(jí),限制存取基表的行或/和列集合。 隱藏?cái)?shù)據(jù)復(fù)雜性。 為數(shù)據(jù)提供另一種觀點(diǎn)。 促使Oracle的某些操作在包含視圖的數(shù)據(jù)庫(kù)上執(zhí)行,而不在另一個(gè)數(shù)據(jù)庫(kù)上執(zhí)行。,建立視圖的語(yǔ)句格式為: CREATE VIEW view AS SELECT table1.field1,table2.field1 FROM table1,table2.;,4同義詞的建立 同義詞為表、視圖、序列、存儲(chǔ)函數(shù)、包、快照或其它同義詞的另一個(gè)名字。使用同義詞為了安全和方便。對(duì)某一對(duì)象建立同義詞可有下列好處: 引用對(duì)象不需指出對(duì)象的持有者。 引用對(duì)象不需指出它所位于的數(shù)據(jù)庫(kù)。 為對(duì)象提供另一個(gè)名字。 建立同義詞使用的語(yǔ)句格式為: CREATE SYNONYM symnon_name FOR username.tablename;,5用戶的建立 建立用戶使用的語(yǔ)句格式為: CREATE USER username IDENTIFIED BY password;,1ALTER語(yǔ)句格式 用ALTER語(yǔ)句,可以修改表、索引,或?qū)σ晥D的字段重新設(shè)計(jì)。語(yǔ)句格式為: ALTER TABLE table ADD COLUMN field type(size)CONSTRAINT index |CONSTRAINT multifiedindex |DROP COLUMN field|CONSTRAINT indexname,3.5.2 ALTER語(yǔ)句,2ALTER語(yǔ)句的具體用法 (1)改變表的名稱,語(yǔ)句格式為: ALTER TABLE table1 TO table 2; (2)在表的后面增加一個(gè)字段,語(yǔ)句格式為: ALTER TABLE table ADD FIELD DESCRIPTION; (3)修改表里字段的定義描述,語(yǔ)句格式為: ALTER TABLE table MODIFY FIELD DESCRIPTION; (4)給表里的字段加上約束條件,語(yǔ)句格式為: ALTER TABLE table ADD CONSTRAINT cons_name PRIMARYKEY (field); ALTER TABLE table ADD CONSTRAINTcons_name UNIQUE(field); (5)把表放在或取出數(shù)據(jù)庫(kù)的內(nèi)存區(qū),語(yǔ)句格式為: ALTER TABLE table CACHE; ALTER TABLE table NOCACHE;,使用DROP語(yǔ)句,可以刪除表,索引,視圖,同義詞,過(guò)程,函數(shù),數(shù)據(jù)庫(kù)鏈接等。DROP語(yǔ)句的格式為: DROP TABLE table|INDEX index ON table,3.5.3 DROP語(yǔ)句,使用TRUNCATE語(yǔ)句,可以清空表里的所有記錄,保留表的結(jié)構(gòu)。TRUNCATE語(yǔ)句的格式為: TRUNCATE table;,3.5.4 TRUNCATE語(yǔ)句,2. REVOKE語(yǔ)句,1. GRANT語(yǔ)句,3.6 數(shù)據(jù)控制語(yǔ)言(DCL),3. COMMIT語(yǔ)句,4. ROLLBACK語(yǔ)句,1GRANT語(yǔ)句 GR

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論