第一篇:數(shù)據(jù)庫(kù) 學(xué)習(xí)總結(jié)
數(shù)據(jù)庫(kù)學(xué)習(xí)總結(jié)
XX班 姓名 學(xué)號(hào)
摘要:在當(dāng)今信息化的社會(huì)里,數(shù)據(jù)庫(kù)可以說(shuō)已經(jīng)融入到我們生活的方方面面中,如交通運(yùn)輸、銀行金融、工商企業(yè)等等。只要有大量的數(shù)據(jù)要管理或者需要有大量數(shù)據(jù)支持的工作,都要使用到數(shù)據(jù)庫(kù),它為我們的生活帶來(lái)了便捷。關(guān)鍵詞:數(shù)據(jù)庫(kù),功能、SQL Server的特點(diǎn)
在學(xué)習(xí)《數(shù)據(jù)庫(kù)原理及應(yīng)用》這門課之前,就和課本上提到的一個(gè)觀點(diǎn)一樣,認(rèn)為它只是存放數(shù)據(jù)的倉(cāng)庫(kù)而已,但是現(xiàn)在我深深體會(huì)到這個(gè)觀點(diǎn)是多么的片面。數(shù)據(jù)庫(kù)是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi),有組織、可共享的大量的數(shù)據(jù)集合,前者只能表達(dá)它的一方面而已。
數(shù)據(jù)庫(kù)技術(shù)發(fā)展到今天已經(jīng)是一門非常成熟的技術(shù),它的技術(shù)水平、應(yīng)用水平多比初始時(shí)都有了很大的改變,但是它的最基本的特征卻沒(méi)有變,概括起來(lái)有以下幾個(gè)方面:
第一點(diǎn):數(shù)據(jù)庫(kù)是相互關(guān)聯(lián)的的數(shù)據(jù)集合;即在數(shù)據(jù)庫(kù)中不僅要能夠表示數(shù)據(jù)本身,還要能夠表示數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系。
第二點(diǎn):數(shù)據(jù)庫(kù)用綜合的方法組織數(shù)據(jù),保證盡可能高的訪問(wèn)效率;即根據(jù)不同的需要按不同的方法組織數(shù)據(jù),例如順序組織方法、索引組織方法、倒排數(shù)據(jù)組織方法等。
第三點(diǎn):數(shù)據(jù)庫(kù)具有較小的數(shù)據(jù)冗余,可供多個(gè)用戶共享;即通過(guò)共享共用的數(shù)據(jù),降低數(shù)據(jù)的冗余度,這也能保證數(shù)據(jù)的一致性。
第四點(diǎn):數(shù)據(jù)庫(kù)具有較高的數(shù)據(jù)獨(dú)立性;即令數(shù)據(jù)的組織和存儲(chǔ)方法與應(yīng)用程序互不依賴,降低應(yīng)用程序的開(kāi)發(fā)代價(jià)和維護(hù)代價(jià)。
第五點(diǎn):數(shù)據(jù)庫(kù)能夠保證數(shù)據(jù)的安全、可靠;即擁有(1)、安全控制機(jī)制,這可以有效地防止數(shù)據(jù)庫(kù)中數(shù)據(jù)被非法使用或非法修改;(2)、完整的備份和恢復(fù)機(jī)制,這能保證當(dāng)數(shù)據(jù)遭到破壞時(shí)(軟件或硬件故障引起的),能立刻將數(shù)據(jù)完全恢復(fù),從而保證系統(tǒng)能持續(xù)、可靠地運(yùn)行。
第六點(diǎn):數(shù)據(jù)庫(kù)允許并發(fā)地使用,能有效、及時(shí)地處理數(shù)據(jù),并能保證數(shù)據(jù)的一致性和完整性;即當(dāng)多個(gè)用戶同時(shí)使用相同的數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)能夠協(xié)調(diào)一致,保證不發(fā)生沖突和矛盾。那么對(duì)于上面數(shù)據(jù)庫(kù)的各種功能和特性是如何實(shí)現(xiàn)的呢?當(dāng)然它不是數(shù)據(jù)庫(kù)中的數(shù)據(jù)固有的,是靠管理或支持?jǐn)?shù)據(jù)庫(kù)的系統(tǒng)軟件——數(shù)據(jù)庫(kù)管理系統(tǒng)(DataBase Management System)提供的。下面我將結(jié)合我所學(xué)習(xí)的內(nèi)容,談?wù)勱P(guān)于數(shù)據(jù)庫(kù)管理系統(tǒng)——Mircrosoft SQL Server。
Mircrosoft SQL Server是一個(gè)高性能的、多用戶的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它專為客戶/服務(wù)器計(jì)算環(huán)境設(shè)計(jì),它提供的內(nèi)置數(shù)據(jù)復(fù)制功能、強(qiáng)大的管理工具和開(kāi)放式的系統(tǒng)體系結(jié)構(gòu)為基于事物的企業(yè)級(jí)信息管理方案提供了一個(gè)卓越的平臺(tái)。
首先作為一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng),Mircrosoft SQL Server應(yīng)該具備如下功能:
1、數(shù)據(jù)庫(kù)定義功能:可以定義數(shù)據(jù)庫(kù)的結(jié)構(gòu)和數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu),可以定義數(shù)據(jù)庫(kù)中數(shù)據(jù)之間的聯(lián)系,可以定義數(shù)據(jù)的完整性約束條件和保證完整性的觸發(fā)機(jī)制等;
2、數(shù)據(jù)庫(kù)操作功能:可以完成對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的操作,可以裝入、刪除、修改數(shù)據(jù),可以重新組織數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu),可以完成數(shù)據(jù)庫(kù)的備份和恢復(fù)等操作;
3、數(shù)據(jù)庫(kù)的查詢功能:可以以各種方式提供靈活的查詢功能,使用戶可以方便地使用數(shù)據(jù)庫(kù)中的數(shù)據(jù);
4、數(shù)據(jù)庫(kù)的控制功能:可以完成對(duì)數(shù)據(jù)庫(kù)的安全性控制、完整性控制、多用戶環(huán)境下的并發(fā)控制等各方面的控制;
5、數(shù)據(jù)庫(kù)的通信功能:在分布式數(shù)據(jù)庫(kù)或是提供網(wǎng)絡(luò)操作功能的數(shù)據(jù)庫(kù)中還必須提供數(shù)據(jù)庫(kù)的通信功能。
其次是Mircrosoft SQL Server中系統(tǒng)數(shù)據(jù)庫(kù)的作用,每個(gè)SQL Server實(shí)例包括四個(gè)系統(tǒng)數(shù)據(jù)庫(kù)(master、model、tempdb和msdb)以及一個(gè)或多個(gè)用戶數(shù)據(jù)庫(kù)。下面是關(guān)于四個(gè)系統(tǒng)數(shù)據(jù)庫(kù)的介紹:
1、master數(shù)據(jù)庫(kù):用于存儲(chǔ)SQL Server系統(tǒng)的所有系統(tǒng)級(jí)信息,包括所有的其它數(shù)據(jù)庫(kù)的信息、所有數(shù)據(jù)庫(kù)注冊(cè)用戶的信息以及系統(tǒng)配置設(shè)置等。
2、tempdb數(shù)據(jù)庫(kù):用以保存所有的臨時(shí)表和臨時(shí)存儲(chǔ)過(guò)程,還可以滿足任何其它的臨時(shí)存儲(chǔ)要求,例如存儲(chǔ)SQL Server生成的工作表。
3、model數(shù)據(jù)庫(kù):它是一個(gè)模板,當(dāng)使用CREATE DATABASE命令建立新的數(shù)據(jù)庫(kù)時(shí),新的數(shù)據(jù)庫(kù)的一部分總是通過(guò)復(fù)制model數(shù)據(jù)庫(kù)中的內(nèi)容創(chuàng)建,剩余部分由空頁(yè)填充。
4、msdb數(shù)據(jù)庫(kù):用于SQL Server代理程序調(diào)度報(bào)警和作業(yè)等系統(tǒng)操作。同時(shí)在安裝SQL Server時(shí),還建立了一個(gè)pubs數(shù)據(jù)庫(kù),這是一個(gè)用戶數(shù)據(jù)庫(kù),是一個(gè)可以用于練習(xí)的示例數(shù)據(jù)庫(kù)。在建立數(shù)據(jù)庫(kù)時(shí),每個(gè)數(shù)據(jù)庫(kù)至少有兩個(gè)文件:一個(gè)主文件(存儲(chǔ)數(shù)據(jù)庫(kù)的啟動(dòng)信息、用戶數(shù)據(jù)和系統(tǒng)表,以.mdf為擴(kuò)展名)和一個(gè)事物日志文件(用來(lái)保存恢復(fù)數(shù)據(jù)庫(kù)的日志信息,以.ldf為擴(kuò)展名)。
接下來(lái)是SQL Server的數(shù)據(jù)庫(kù)結(jié)構(gòu):
在SQL Server數(shù)據(jù)庫(kù)中,數(shù)據(jù)被組織為用戶可以看得見(jiàn)的邏輯組件,主要包括基本表、視圖、存儲(chǔ)過(guò)程、觸發(fā)器和用戶等。SQL Server在發(fā)出CREATE DATABASE命令建立數(shù)據(jù)庫(kù)時(shí),會(huì)同時(shí)發(fā)出建立操作系統(tǒng)文件、申請(qǐng)物理存儲(chǔ)空間的請(qǐng)求;當(dāng)CREATE DATABASE命令成功執(zhí)行后,在物理上和邏輯上都建立了一個(gè)新的數(shù)據(jù)庫(kù)。這就可以在數(shù)據(jù)庫(kù)庫(kù)中建立各種用戶所需的邏輯組件,如基本表、視圖等。
然后是Mircrosoft SQL Server管理中的幾個(gè)特點(diǎn):
1、數(shù)據(jù)庫(kù)鏡像:通過(guò)數(shù)據(jù)庫(kù)鏡像,將自動(dòng)失效轉(zhuǎn)移建立到一個(gè)待用服務(wù)器上增強(qiáng)SQL服務(wù)器系統(tǒng)的可用性。
2、在線檢索操作:即在指數(shù)數(shù)據(jù)定義語(yǔ)句(DDL)執(zhí)行期間,允許對(duì)基地表格或集簇索引數(shù)據(jù)和任何相關(guān)的檢索,進(jìn)行同步修改。例如,當(dāng)一個(gè)集簇索引正在重建時(shí),可以對(duì)基低數(shù)據(jù)繼續(xù)進(jìn)行更新、查詢。
3、快速回復(fù):新的、速度更快的恢復(fù)選項(xiàng)可以改進(jìn)SQL服務(wù)器數(shù)據(jù)庫(kù)的可用性,管理人員將能夠在事物日志向前滾動(dòng)之后,重新連接到正在恢復(fù)的數(shù)據(jù)庫(kù)。
4、快照隔離:通過(guò)快照隔離,使用者能夠使用與傳統(tǒng)一致的視野觀看數(shù)據(jù)庫(kù),存取最后執(zhí)行的一行數(shù)據(jù),這也為服務(wù)器提供了更大的可升級(jí)性。
5、專門的管理員連接:即即使在一個(gè)服務(wù)器被鎖住,或者因?yàn)槠渌虿荒苁褂脮r(shí),管理員可以通過(guò)這個(gè)連接,接通這個(gè)正在運(yùn)行的服務(wù)器。這一功能能讓管理員,通過(guò)操作診斷或Transact-SQL指令,找到并解決發(fā)現(xiàn)的問(wèn)題。最后是關(guān)于學(xué)習(xí)過(guò)程中的體會(huì),數(shù)據(jù)庫(kù)能給我們生活帶來(lái)便捷,但它的學(xué)習(xí)肯定不會(huì)那么一帆風(fēng)順,總會(huì)遇到問(wèn)題。我想解決問(wèn)題最好的方法是理解它,從多方面理解、掌握它。
首先是對(duì)概念的理解,例如關(guān)于游標(biāo)的使用,最基本的操作語(yǔ)句如定義游標(biāo):DECLARE CURSOR、打開(kāi)游標(biāo):OPEN、從游標(biāo)中讀記錄:FETCH、關(guān)閉游標(biāo):CLOSE、釋放游標(biāo):DEALLOCATE、執(zhí)行:EXEC等,如果都不明白這些語(yǔ)句含義,如何掌握它?其次是對(duì)數(shù)據(jù)結(jié)構(gòu)的理解,數(shù)據(jù)庫(kù)就象房子,也有地基、承重墻(框架)、門、窗、內(nèi)部家俱飾品等,對(duì)應(yīng)到數(shù)據(jù)庫(kù)里,一樣可以找到相應(yīng)的東東。地基就象數(shù)據(jù)庫(kù)的系統(tǒng)表,不論以后要蓋多少房子,多高多大的房子,都要在地基上開(kāi)始;框架(承重墻)可以是每張表,也可以是每張表中的字段,是不可逾越而又相互交叉的;門窗就是數(shù)據(jù)庫(kù)中的通道,就是索引、訪問(wèn)權(quán)限、視圖等;內(nèi)飾、家具就是最終的用戶數(shù)據(jù),是放在數(shù)據(jù)庫(kù)這所房子里的東西。然后是在思維上的理解,東西方的思維方式上存在差異,比如在多表查詢、數(shù)據(jù)庫(kù)結(jié)構(gòu)優(yōu)化時(shí)需要多考慮這種理解和實(shí)施層面的“差異性”。
第二篇:數(shù)據(jù)庫(kù)學(xué)習(xí)總結(jié)(模版)
電子商務(wù)數(shù)據(jù)庫(kù)技術(shù)----SQL Server 篇
學(xué)習(xí)總結(jié)
------60951P南信院這學(xué)期我們學(xué)習(xí)了數(shù)據(jù)庫(kù)的SQL Server 篇,具體內(nèi)容提綱如下:
1、數(shù)據(jù)庫(kù)系統(tǒng)的基本概念
2、SQL語(yǔ)言
一、數(shù)據(jù)庫(kù)的基本概念
1、數(shù)據(jù)庫(kù)
1)數(shù)據(jù)庫(kù)是統(tǒng)一管理并長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)內(nèi)優(yōu)結(jié)構(gòu)的大量共享的數(shù)據(jù)集合。
2)現(xiàn)在所有的數(shù)據(jù)庫(kù)都是關(guān)系型數(shù)據(jù)庫(kù)(二維表)
3)數(shù)據(jù)獨(dú)立性:物理獨(dú)立、邏輯獨(dú)立
4)實(shí)現(xiàn)數(shù)據(jù)獨(dú)立性:三級(jí)模式、二級(jí)映射
三級(jí)模式:外外模式、概念模式、內(nèi)模式
二級(jí)映射:外模式/概念模式
概念模式/內(nèi)模式
5)邏輯結(jié)構(gòu):表結(jié)構(gòu)(外模式)
Eg:S(sno,sname)
物理結(jié)構(gòu):數(shù)據(jù)庫(kù)存取的方式位置(內(nèi)模式)
Eg:P(sno char(8)
Snamechar(10))
邏輯結(jié)構(gòu)比物理結(jié)構(gòu)少了數(shù)據(jù)類型
2、數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)功能:
1)數(shù)據(jù)定義
2)數(shù)據(jù)操縱
3)安全與備份
3、六個(gè)約束
主鍵約束、非空約束、檢查約束、默認(rèn)約束、外鍵約束、唯
一性約束
4、任何一張表必須有且只有一個(gè)主鍵(PK),一個(gè)主鍵可以有多個(gè)
字段組成5、關(guān)系性質(zhì)
1)每個(gè)字段的每個(gè)值都是單值
2)每個(gè)字段里的值都具有相同的數(shù)據(jù)類型
3)行順序無(wú)關(guān)緊要
4)列順序無(wú)關(guān)緊要
5)行不能重復(fù)
6)列不能重復(fù)
二維表必須滿足以上關(guān)系性質(zhì)才是關(guān)系
關(guān)系:二維表結(jié)構(gòu)
6、數(shù)據(jù)完整性
1)實(shí)體完整性
2)參照完整性
3)用戶自定義完整性
二、SQL語(yǔ)言
1、SQL功能:數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)控制
2、單表查詢
固定格式:Select...from…where3、Select子句
*表示一個(gè)表中的所有字段
Eg:查詢計(jì)算機(jī)系所有學(xué)生的姓名、學(xué)號(hào)、性別、年齡、專業(yè)Select * from students where sdept=”computer”
4、Where子句
1)多條件(And,Or連接)
2)Between...and...3)In(等于期中的某一個(gè))
Like模糊查詢(條件不完整)
Eg:查詢姓王的學(xué)生的學(xué)號(hào)、姓名、專業(yè)
Select sno,sname,sdept from students where sname
like ‘王%’
5、統(tǒng)計(jì)函數(shù)
Count(*)個(gè)數(shù)包含null
Count(列名)個(gè)數(shù)去掉null
Sum(列名)和
Avg(列名)平均值
Max(列名)最大值
Min(列名)最小值
6、分組Group by
1)包含Group by子句的查詢語(yǔ)句中Select子句指定的列名,要么是統(tǒng)計(jì)函數(shù),要么是包含在Group by子句中的列名。
2)分組條件
Having 必須和Group by一起使用,不可單獨(dú)。
7、排序Order by
ASC(升序)(默認(rèn))
DESC(降序)
8、多表查詢
1)內(nèi)連接(兩張表或以上連接)
2)外連接(兩張表連接)
Eg:查詢所有學(xué)生的選課情況,結(jié)果包括學(xué)號(hào)、課程、姓名 內(nèi)連接:Select students.sno, cno , sname from students ,enrollment where students.sno*=enrollment.sno
外連接:Select students.sno, cno , sname from students
left join enrollment on student.sno=enrollment.sno9、嵌套查詢
Eg:查詢與Sue選修同樣課程學(xué)生的學(xué)號(hào)、課程號(hào)、姓名Select students.sno,cno,sname from students,
第三篇:Oracle數(shù)據(jù)庫(kù)學(xué)習(xí)總結(jié)
Oracle數(shù)據(jù)庫(kù)學(xué)習(xí)總結(jié)
1.set linesize xx;設(shè)置行間距,常用數(shù)值有100,200,300
2.set pagesize xx;設(shè)置每頁(yè)顯示行數(shù)
3.ed x;表示新建一個(gè)x.sql文件,通過(guò)文件編輯SQL語(yǔ)句,然后用@x命令可以調(diào)用剛才的命令
4.CONN username/password;命令可以建立用戶的連接,需要注意的是sys用戶是超級(jí)管理員,連接是時(shí)需要在末尾加上AS SYSDBA 以系統(tǒng)管理員的身份進(jìn)行連接
5.如果表是歸某個(gè)用戶特有的,在查詢的時(shí)候需要加上用戶名 即以 用戶名.表名 的格式查詢
6.SHOW USER;命令可以顯示當(dāng)前連接的用戶名
7.SELECT * FROM tab;可以顯示當(dāng)前用戶下的所有數(shù)據(jù)表
8.“ / ”表示重復(fù)執(zhí)行上一次的SQL命令操作
9.SELECT xx別名,xx 別名 FROM xx;搜索指定列名,并指定別名,方便顯示
10.關(guān)鍵字DISTINCT 可以消除重復(fù)值 如 SELECT DISTINCT xx FROM xx;
11.Oracle中提供的字符串連接操作,使用“||”表示,相當(dāng)于Java的“+”普通字符用“ ' ” 括起來(lái)
如: SELECT'員工姓名是'||ename||'員工卡號(hào)是'||empnoFROM emp;
12.查詢語(yǔ)句 BETWEEN xx AND xx 是包括邊界的13.查詢?nèi)掌诘臅r(shí)候要加上''把日期引起來(lái)
例如:SELECT * FROM emp WHERE hiredate BETWEEN '1-1月-81' AND '08-9月-81';
14.模糊查詢中“%”可以匹配任意長(zhǎng)度的內(nèi)容,“_”可以匹配一個(gè)長(zhǎng)度的內(nèi)容,如果沒(méi)輸入模糊查詢關(guān)鍵字,那么默認(rèn)查詢?nèi)繑?shù)據(jù),like關(guān)鍵字可以用在任何地方,可以匹配數(shù)字、字符、日期等。
15.SQL中不等于可以用“<>”或者“!=”表示
16.ORDER BY語(yǔ)句中 ASC表示升序,DESC表示降序,在沒(méi)指定的時(shí)候默認(rèn)按照升序排序
17.Oracle中的單行函數(shù)有如下,默認(rèn)的所有的函數(shù)都要到表中執(zhí)行,加上關(guān)鍵字DUAL只會(huì)產(chǎn)生一個(gè)臨時(shí)表
UPPER('xxx')將小寫(xiě)轉(zhuǎn)換為大寫(xiě)
LOWER('xxx')將大寫(xiě)轉(zhuǎn)換為小寫(xiě)
INITCAP('xxx')將首字母大寫(xiě)
CONCAT('','')字符串連接
SUBSTR('xxx',x,x)字符串截取,從0或1開(kāi)始截取效果是一樣的,因?yàn)镺racle比較智能,要是輸入的參數(shù)為負(fù)數(shù),則表示倒著截取
LENGTH('xxx')字符串長(zhǎng)度
REPLACE('xxx','x','x')字符串替換
ROUND(xxx,xx)四舍五入 xxx需要四舍五入的數(shù)值,xx保留的小數(shù)位,可以加負(fù)數(shù) TRUNC(xxx)截?cái)嗖僮?,默認(rèn)小數(shù)點(diǎn)后的全部截?cái)?,也可以指定小?shù)點(diǎn)保留位數(shù)如TRUNC(789.536,2)得到的結(jié)果是789.53,也可以加負(fù)數(shù)如TRUNC(789.536,-2)結(jié)果是700
18.SELECT sysdate FROM DUAL;可以求出當(dāng)前的日期
19.Oracle 中提供了以下日期函數(shù)支持:
MONTHS_BETWEEN()求出給定日期范圍的月數(shù)
ADD_MONTHS(xxx,xxx)在指定日期加上指定的月數(shù)
NEXT_DATE(xxx,'')求出下一個(gè)給定日期數(shù)
TO_CHAR()可以將年、月、日進(jìn)行分割
例如
TO_CHAR(hirdate,'yyyy')year,TO_CHAR(hirdate,'mm')months,TO_CHAR(hirdate,'dd')day 還可以對(duì)時(shí)間進(jìn)行格式化輸出 如TO_CHAR(hirdate,'yyyy-mm-dd')
TO_CHAR(hirdate,'fmyyyy-mm-dd')可以去掉前導(dǎo)0
TO_CHAR()還可以對(duì)數(shù)字進(jìn)行格式化 如
SELECT ename,TO_CHAR(SAL,'99,999')FROM emp;
注意:一定要用9來(lái)表示
$表示美元符號(hào),L表示Local的縮寫(xiě),以本地語(yǔ)言進(jìn)行金額顯示
TO_NUMBER()將字符串變?yōu)閿?shù)字
TO_DATE()將字符串變?yōu)镈ate類型 例如 SELECT TO_DATE('2009-12-8','yyyy-mm-dd')FROM dual;
TO_NVL()可以將NULL的內(nèi)容變?yōu)橹付ǖ膬?nèi)容
DECODE()相當(dāng)于Java的if else else語(yǔ)句
例如SELECT DECODE(1,1,'內(nèi)容是1',2,'內(nèi)容是2',3,'內(nèi)容是3')FROM dual;將輸入 內(nèi)容是1
20.左右連接
SELECT e.empno,e.ename,d.deptno,d.dname,d.loc FROM emp e,dept d WHERE
e.deptno(+)=d.deptno;此例中是右連接,以deptno表為準(zhǔn)。
21.SQL1999語(yǔ)法
CROSS JOIN 交叉連接 會(huì)產(chǎn)生笛卡爾積
NATURAL JOIN 自然連接 自動(dòng)進(jìn)行關(guān)聯(lián)字段匹配 可以消除笛卡爾積
USING 子句:直接關(guān)聯(lián)操作列 如 SELECT * FROM emp e JOIN dept USING(deptno)WHERE deptno=30;
ON 子句 用戶自己編寫(xiě)連接條件
LETF JOIN/RIGHT JOIN 左右連接
SELECT e.empno,e.ename,d.deptno,d.dname,d.loc FROM emp e right OUTER JOIN dept d ON(e.deptno=d.deptno);
22.分組查詢GROUP BY 放在where之后
常見(jiàn)的組函數(shù)有
COUNT();
MAX();
MIN();
AVG();
SUM();
用法如下:SELECT deptno,count(empno)FROM emp GROUP BY deptno;
語(yǔ)法:SELECT deptno,empno,count(empno)FROM emp GROUP BY deptno;是錯(cuò)誤的,原因是使用分組函數(shù)的時(shí)候,不能出現(xiàn)分組函數(shù)和分組條件以外的字段。
語(yǔ)法:SELECT deptno,count(empno)FROM emp;是錯(cuò)誤的,原因是不使用分組的時(shí)候,則只能單獨(dú)使用分組函數(shù)
分組函數(shù)只能在分組中使用,不允許子啊where語(yǔ)句中個(gè)使用,要使用個(gè)分組條件可以加上HAVING
例如:SELECT deptno,avg(sal)FROM emp GROUP BY deptno having avg(sal)>2000;注意:分組函數(shù)可以嵌套使用,但是在組函數(shù)嵌套使用的時(shí)候不能再出現(xiàn)分組條件的查詢語(yǔ)句
如下語(yǔ)法是錯(cuò)誤的:SELECT deptno,max(avg(sal))FROM emp GROUP BY deptno;不能出現(xiàn)deptno
如下語(yǔ)法是正確的:SELECT max(avg(sal))FROM emp GROUP BY deptno;
23.子查詢中
>ANY 比里面的最小值大
=ANY 與IN用法相同 >ALL 比里面的最大值大 24.表復(fù)制 CREATE TABLE myemp AS SELECT * FROM emp;既復(fù)制表結(jié)構(gòu),又復(fù)制表內(nèi)容 CREATE TABLE myemp AS SELECT * FROM emp where 1=2;后面的條件不可能成立,只復(fù)制表結(jié)構(gòu) 25.Oracle 中常用的數(shù)據(jù)類型 VARCHAR、VARCHAR2 代表一個(gè)字符串,有長(zhǎng)度限制,為255 NUMBER 分為兩種 1)NUMBER(n)代表一個(gè)整數(shù),數(shù)字的長(zhǎng)度是n,可以使用INT 2)NUMBER(m,n)代表一個(gè)小數(shù),小數(shù)長(zhǎng)度為n,整數(shù)長(zhǎng)度為m-n,可以使用FLOAT DATE 代表日期的類型,日期要按照標(biāo)準(zhǔn)的日期格式進(jìn)行存放 CLOB 大對(duì)象,表示大文本數(shù)據(jù),一般可以存放4G的文本 BLOB 大對(duì)象,表示二進(jìn)制數(shù)據(jù)最大可以存放4G,例如存放歌曲、電影、圖片 26.表的創(chuàng)建 CREATE TABLE person(pid VARCHAR2(18),name VARCHAR2(200),birthdate DATE,age NUMBER(4),sex VARCHAR2(2)DEFAULT '男'); 27.插入數(shù)據(jù) INSERT INTO person(pid,name,birthdate,age)VALUES('222','里斯 ',TO_DATE('1989-02-09','yyyy-mm-dd'),45); 28.更改表中數(shù)據(jù) 增加表結(jié)構(gòu):ALTER TABLE person ADD(address VARCHAR2(50)DEFAULT '暫無(wú)地址'); 修改已存在的列:ALTER TABLE person MODIFY(name VARCHAR2(40)DEFAULT '無(wú)名氏'); 29.表的重命名(只能在Oracle中使用) RENAME XXX TO XXX; 30.約束(主要分為5類) 1)主鍵約束 主鍵表示是一個(gè)唯一的標(biāo)識(shí)。本身不能為空 2)唯一約束 在一個(gè)表中只允許建立一個(gè)主鍵約束,而其他列如果不希望重復(fù)值的話,則可以使用唯一約束 3)檢查約束 檢出一個(gè)列的內(nèi)容是否合法 4)非空約束 5)外鍵約束 在兩張表中進(jìn)行約束的操作 刪除時(shí)應(yīng)該先刪除子表,再刪除父表 創(chuàng)建主鍵: 語(yǔ)法1 CREATE TABLE person(pid VARCHAR2(18)PRIMARY KEY,name VARCHAR2(200),birthdate DATE,age NUMBER(4),sex VARCHAR2(2)DEFAULT '男'); 語(yǔ)法2: CREATE TABLE person(pid VARCHAR2(18),name VARCHAR2(200),birthdate DATE,age NUMBER(4),sex VARCHAR2(2)DEFAULT '男',CONSTRAINT p_id PRIMARY KEY(pid)); 創(chuàng)建非空約束 CREATE TABLE person(pid VARCHAR2(18),name VARCHAR2(200)NOT NULL,birthdate DATE,age NUMBER(4),sex VARCHAR2(2)DEFAULT '男'); 創(chuàng)建唯一約束 語(yǔ)法一 CREATE TABLE person(pid VARCHAR2(18),name VARCHAR2(200)UNIQUE NOT NULL,birthdate DATE,age NUMBER(4),sex VARCHAR2(2)DEFAULT '男'); 語(yǔ)法二 CREATE TABLE person(pid VARCHAR2(18),name VARCHAR2(200)NOT NULL,birthdate DATE,age NUMBER(4),sex VARCHAR2(2)DEFAULT '男',CONSTRAINT p_name UNIQUE(name),); 創(chuàng)建檢查約束 語(yǔ)法一 CREATE TABLE person(pid VARCHAR2(18),name VARCHAR2(200)NOT NULL,birthdate DATE,age NUMBER(4)NOT NULL CHECK(age BETWEEN 0 AND 150),sex VARCHAR2(2)DEFAULT '男' CHECK(sex IN('男','女','中')),); 語(yǔ)法二 CREATE TABLE person(pid VARCHAR2(18),name VARCHAR2(200)NOT NULL,birthdate DATE,age NUMBER(4)NOT NULL ,sex VARCHAR2(2)DEFAULT '男' ,CONSTRAINT p_age CHECK(age BETWEEN 0 AND 150),CONSTRAINT p_sex CHECK(sex IN('男','女','中'))); 創(chuàng)建外鍵約束 --person表 CREATE TABLE person(pid VARCHAR2(18)PRIMARY KEY,name VARCHAR2(200)NOT NULL,birthdate DATE,age NUMBER(4)NOT NULL ,sex VARCHAR2(2)DEFAULT '男'); --book表 CREATE TABLE book(bid NUMBER PRIMARY KEY,bname VARCHAR2(30),bprice NUMBER(5,2),pid VARCHAR2(18),CONSTRAINT b_pid_fk FOREIGN KEY(pid)REFERENCES person(pid)); 對(duì)于刪除,應(yīng)該先刪除book表再刪除person表 也可以使用級(jí)聯(lián)刪除,強(qiáng)制刪除某張表 DROP TABLE person CASCADE CONSTRAINT; 設(shè)置外鍵約束級(jí)聯(lián)刪除 --person表 CREATE TABLE person(pid VARCHAR2(18)PRIMARY KEY,name VARCHAR2(200)NOT NULL,birthdate DATE,age NUMBER(4)NOT NULL ,sex VARCHAR2(2)DEFAULT '男'); --book表 CREATE TABLE book(bid NUMBER PRIMARY KEY,bname VARCHAR2(30),bprice NUMBER(5,2),pid VARCHAR2(18),CONSTRAINT b_pid_fk FOREIGN KEY(pid)REFERENCES person(pid)ON DELETE CASCADE); 31.修改約束 如果一張表已經(jīng)建立完成之后,則可以為其添加約束 ALTER TABLE 表名稱 ADD CONSTRAINT 約束名稱 約束類型(約束字段); 關(guān)于約束名稱的命名最好要統(tǒng)一: PRIMARY KEY :主鍵字段_PK UNIQUE:字段_UK CHECK:字段_CK FOREIGH KEY:父字段_子字段_FK 例如: DROP TABLE person; CREATE TABLE person(pid VARCHAR2(18),name VARCHAR2(200)NOT NULL,birthdate DATE,age NUMBER(4)NOT NULL ,sex VARCHAR2(2)DEFAULT '男'); ALTER TABLE person ADD CONSTRAINT pid_PK PRIMARY KEY(pid); ALTER TABLE person ADD CONSTRAINT name_UK UNIQUE(name); ALTER TABLE person ADD CONSTRAINT age_CK CHECK(age BETWEEN 1 AND 150);CREATE TABLE book(bid NUMBER ,bname VARCHAR2(30),bprice NUMBER(5,2),pid VARCHAR2(18)); ALTER TABLE book ADD CONSTRAINT book_PK PRIMARY KEY(bid); ALTER TABLE book ADD CONSTRAINT pid_FK FOREIGN KEY(pid)REFERENCES person(pid);刪除約束 ALTER TABLE person DROP CONSTRAINT name_UK; ALTER TABLE person DROP CONSTRAINT age_CK; 數(shù)據(jù)庫(kù)學(xué)習(xí)總結(jié)-Marlon 目錄一、二、三、四、五、六、七、八、ORACLE_簡(jiǎn)介.............................................................................................................................................................1 ORACLE_簡(jiǎn)單查詢.....................................................................................................................................................3 ORACLE標(biāo)量函數(shù)和算數(shù)運(yùn)算..................................................................................................................................5 ORACLE_多表查詢.....................................................................................................................................................9 ORACLE_列函數(shù)和分組...........................................................................................................................................10 ORACLE_子查詢.......................................................................................................................................................12 ORACLE_表的更新操作...........................................................................................................................................13 ORACLE_表與視圖的管理.......................................................................................................................................15 一、ORACLE_簡(jiǎn)介 ? Oralce數(shù)據(jù)庫(kù)發(fā)展 Oracle 8 Oracle 8i:i表示internet,標(biāo)識(shí)著Oracle公司正式進(jìn)軍互聯(lián)網(wǎng)。Oracle9i Oracle10g:g表示grid,即網(wǎng)絡(luò)技術(shù)。Oracle11g ? Oracle體系結(jié)構(gòu)一 物理結(jié)構(gòu): 文件系統(tǒng) 控制文件 數(shù)據(jù)文件 日志文件 參數(shù)文件(不是數(shù)據(jù)庫(kù)的組成成分) ? Oracel體系結(jié)構(gòu)三 邏輯結(jié)構(gòu): block 快 extent 盤(pán)區(qū) segment 段 tablespace 表空間 datafile 數(shù)據(jù)文件 ? SQL * Plus下的常用命令 ? 連接到SQL*PLUS sqlplus user/password[as sysdaba|sysoper] sqlplus/nolog ? 啟動(dòng)數(shù)據(jù)庫(kù) startup mount 啟動(dòng)實(shí)例,打開(kāi)控制文件,但不打開(kāi)數(shù)據(jù)文件 startup nomount 只啟動(dòng)實(shí)例 ? 關(guān)閉數(shù)據(jù)庫(kù) shutdown immediate ? 迫使每個(gè)用戶執(zhí)行為當(dāng)前的SQL語(yǔ)句,立即斷開(kāi)連接 shutdown transactional ? 迫使用戶執(zhí)行完當(dāng)前事務(wù)時(shí),斷開(kāi)連接 shutdown abort 強(qiáng)制關(guān)閉數(shù)據(jù)庫(kù) ? 常用SQL命令 show user:查看當(dāng)前連接的用戶 connect scott/tiger: 采用scott的用戶名/tiger的密碼連接數(shù)據(jù)庫(kù) desc table_name:查看tableName表結(jié)構(gòu) quit|exit:退出 disconnect:斷開(kāi)連接 clear screen:清屏,相當(dāng)于Windows下的cls命令 select * from tab:列出當(dāng)前用戶下的所有表 @pata 執(zhí)行pata制定的腳本文件 ? Oracle常用基本數(shù)據(jù)類型 varchar2/varchar:變成字符串 char:定長(zhǎng)字符串 Integer:整型 number(m,n):數(shù)字型 smallint:短整型 float:浮點(diǎn)數(shù) decimal:十進(jìn)制數(shù)字(小數(shù))date:日期型 二、ORACLE_簡(jiǎn)單查詢 ? SQL結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language) ? SQL分類 1.數(shù)據(jù)定義語(yǔ)言(Data Definition Language,DDL):create、alter、drop。 create table 表名;alter table add 新列名 數(shù)據(jù)類型;drop table 表名;2.數(shù)據(jù)操縱語(yǔ)言(Data Manipulation Language,DML):insert、update、delete、select。Insert into 表名(字段1,字段2…)values(值1,值2…);update student set sage=22 where sno='200215';(將學(xué)生200215的年齡改為22歲)select distinct job from emp;去除重復(fù)行 3.數(shù)據(jù)控制語(yǔ)言(Data Control Language,DCL):commit work、rollback work。? 查詢雇員的所有信息 select * from emp; *表示所有列 ? 查詢語(yǔ)句的格式 select *|列名 from 表名 ? 查詢雇員的編號(hào),姓名,工資 select * from empno,ename,sal from emp; ? 查詢所有職位 select job from emp;select distinct job from emp;distinct: 有區(qū)別的(去除重復(fù)行) ? 查詢工資大于1500的雇員信息,列出編號(hào),用戶名,工資 select empno,ename,sal from emp where sal>1500; ? 帶有where條件查詢語(yǔ)句的基本格式 select *|列名 from 表名 where 條件; ? 比較運(yùn)算符 大于:> 小于:< 等于:= 大于等于:>= 小于等于:<= 不等于:!=或者<> ? 限定查詢 is null 和 is not null 的使用 ? 查詢每月可以得到獎(jiǎng)金的雇員 select empno,ename,comm from emp where comm is not null; select empno,ename,comm from emp where comm is not null and comm>0;? 查詢誰(shuí)沒(méi)有獎(jiǎng)金 select empno,ename from emp where comm is null; ? 限定查詢 and 的使用 ? 查詢工資大于1500,并且可以領(lǐng)取獎(jiǎng)金的雇員 SQL> select empno,ename,sal,comm from emp where comm is not null and sal>1500; ? 限定查詢 or 的使用 ? 查詢工資大于1500和可以領(lǐng)取獎(jiǎng)金的雇員 select empno,ename,sal,comm from emp where sal>1500 or comm is not null;? 查詢沒(méi)有獎(jiǎng)金的雇員 select empno,ename,comm from emp where comm=0 or comm is null; ? 限定查詢 使用not對(duì)條件整體取反 ? 查詢工資不大于1500并且不能領(lǐng)取獎(jiǎng)金的雇員 select empno,ename,sal,comm from emp where sal<=1500 and(comm is null or comm=0);select empno,ename,sal,comm from emp where not(sal>1500 or comm is not null); ? 限定查詢 between...and...的使用 ? 查詢基本工資大于等于1500并且小于等于3000的雇員 select empno,ename,sal from emp where sal>=1500 and sal<=3000;select empno,ename,sal from emp where sal between 1500 and 3000;? 查詢1981年雇傭的所有員工 select empno,ename,hiredate from emp where hiredate between'1-1月 1981' and '31-12月 1981';注:日期格式 日-月 年,要匹配上 ? 限定查詢 字符串的比較 ? 查詢姓名是'SMITH'員工的所有信息 select * from emp where ename='SMITH';select * from emp where ename='smith';注:列值區(qū)分大小寫(xiě) ? 限定查詢 in的使用 ? 查詢出編號(hào)7369,7499,7521的雇員的具體信息 select * from emp where empno=7369 or empno=7499 or empno=7521;select * from emp where empno in(7369,7499,7521); ? 限定查詢 not in的使用 ? 查詢出雇員編號(hào)不是369,7499,7521的雇員的具體信息 select * from emp where empno not in(7369,7499,7521); ? 限定查詢 like的使用 ? 查詢雇員的名字第二個(gè)字符是M的雇員信息 select * from emp where ename like'_M%';注:_匹配一個(gè)字符,%匹配0個(gè)多個(gè)字母(前綴或后綴的代表)? 查詢1982年入職的所有雇員的信息 select * from emp where hiredate like'%82';? 查詢工資中包含5的雇員信息 select * from emp sal where like'%5%'; ? 對(duì)結(jié)果排序-Oracle By ? 查詢員工工資大于1500員工的信息,按工資排序 select * from emp where sal>1500 order by sal;? 查詢工資大于1500員工的信息,按工資降序,按雇傭日期升序排序 select * from emp where sal>1500 order by sal desc,hiredate asc;注:ASC升序,DESC降序,默認(rèn)ASC。 ascending [?'sendi?]上升的,降序排列(descend [di'send] 的縮寫(xiě)); 三、ORACLE標(biāo)量函數(shù)和算數(shù)運(yùn)算 字符函數(shù)的使用 ? 轉(zhuǎn)換為大寫(xiě)字母 select upper('smith')from dual;注:dual是公共表。upper ['?p?] 上面的,上部的 ? 轉(zhuǎn)換為小寫(xiě)字母 select lower('SMITH')from dual;注:lower 放下 ? 每個(gè)單詞的字母變成大寫(xiě),其余字母小寫(xiě) select initcap('hello world')from dual ? 串連接(concat):可以使用“||”進(jìn)行串連接 select concat('HELLO','WORLD')from dual;select 'HELLO'||'WORLD' from dual; ? 求子串(SUBSTR)select substr(ename,1,3)from emp;注:含義為截取ename字段從第一個(gè)字符開(kāi)始,總共三個(gè)字符 ? 求長(zhǎng)度(LENGTH)select length(ename)from emp; ? 串替換(REPLACE)select replace('HELLO WORLD','WOR','WEL')from dual;結(jié)果: REPLACE('HE-----------HELLO WELLD 注:第一個(gè)逗號(hào)是原字符,第二個(gè)逗號(hào)是原字符的一部分,第三部分是替換原字符那個(gè)部分。 ? 要求顯示所有雇員的姓名和姓名的后三個(gè)字符 select ename,substr(ename,length(ename)-2)from emp;select ename,substr(ename,-3)from emp; ? 四舍五入(Round)select round(789.536)from dual;ROUND(789.536)-------------- 790 ? 四舍五入(Round):指定保留小數(shù)位數(shù) select round(789.536,2)from dual;---------------- 789.54 ? 四舍五入(Round):對(duì)整數(shù)四舍五入 select round(789.536,-2)from dual;ROUND(789.536,-2)----------------- 800 ? 截?cái)嘈?shù)位(TRUNC)select trunc(789.536)from dual;TRUNC(789.536)-------------- 789 ? 截?cái)嘈?shù)位(TRUNC):指定保留小數(shù)位 select trunc(789.536,2)from dual;TRUNC(789.536,2)---------------- 789.53 ? 截?cái)嘈?shù)位(TRUNC):對(duì)整數(shù)截?cái)?select trunc(789.536,-2)from dual;TRUNC(789.536,-2)----------------- 700 ? 除空格(TRIM) SQL> SELECT TRIM(55)FROM DUAL;TRIM(55)--------55 ? 取余數(shù)(MOD)select mod(10,3)from dual; ? 日期函數(shù) 運(yùn)算規(guī)律: 日期+數(shù)字=日期 日期-數(shù)字=日期 日期-日期=數(shù)字(天數(shù)) ? 查詢當(dāng)前日期 select sysdate from dual;SYSDATE-------------10-3月-12 ? 顯示10部門員工進(jìn)入公司的星期數(shù) select empno,ename,round((sysdate-hiredate)/7)from emp where deptno=10; ? 在指定日期上加入指定的月數(shù)之后的日期(ADD_MONTHS)select add_months(sysdate,4)from dual;ADD_MONTHS(SYS--------------10-7月-12 ? 求出給定日期范圍的月數(shù)(months_between)select empno,ename,months_between(sysdate,hiredate)from emp; ? 下一個(gè)給定的星期是那個(gè)日期(next_day)select next_day(sysdate,'星期一')from dual;注:表示在當(dāng)前時(shí)間的前提下,下個(gè)禮拜一的具體日期 ? 求出給定日期所在月份的最后一天日期(last_day)select last_day(sysdate)from dual; ? 轉(zhuǎn)換成字符串(to_char)查詢雇員號(hào),姓名,以及入職的年份 select empno,ename,to_char(hiredate,'yyyy')from emp;注:yyyy匹配年份,mm匹配月份,dd匹配日 ? 使用to_char設(shè)置日期的顯示格式 select empno,ename,to_char(hiredate,'yyyy-mm-dd')from emp; ? 使用fm去掉前導(dǎo)0 select empno,ename,to_char(hiredate,'fmyyyy-mm-dd')from emp;EMPNO ENAME TO_CHAR(HI-------------------------- 7369 SMITH 1980-12-17 7499 ALLEN 1981-2-20 注:正常的值是1981-02-20,02前面的0去掉,變成了1981-2-20.? 通過(guò)to_char設(shè)置數(shù)值的格式 select empno,ename,to_char(sal,'99,999')from emp;說(shuō)明:9代表1位數(shù)字 EMPNO ENAME TO_CHAR--------------------------- 7369 SMITH 800 7499 ALLEN 1,600 7521 WARD 1,250 注:把sal的值分成兩個(gè)部分,后三位為一個(gè)部分,前兩位為一個(gè)部分,用逗號(hào)隔開(kāi)。 ? 顯示余額 select empno,ename,to_char(sal,'$99,999')from emp;說(shuō)明:$代表美元 ? 轉(zhuǎn)換成數(shù)字(to_number)select to_number('123')+to_number('123')from dual;TO_NUMBER('123')+TO_NUMBER('123')-- 246 ? 轉(zhuǎn)換成日期(to_date)select to_date('2009-07-31','yyyy-mm-dd')from dual;TO_DATE('2009---------------31-7月-09 ? 算數(shù)運(yùn)算 ? 查詢每個(gè)員工的年收入 select empno,ename,(sal+comm)*12 from emp;年收入=工資+獎(jiǎng)金 ? 查詢每個(gè)員工的年收入 select empno,ename,(sal+comm)*12 income from emp; ? 查詢每個(gè)員工的年收入 select empno,ename,(sal+NVL(comm,0))*12 income from emp;注:NVL(comm,0),當(dāng)comm的值為null時(shí),用0替換 ORACLE_多表查詢 ? 格式: select 列名1 別名1,......from 表名1,表名2,......where 條件 order by 列名 ? 查詢員工的編號(hào),姓名,部門編號(hào),部門名稱 select empno,ename,emp.deptno,dname from emp,dept where emp.deptno=dept.deptno; 關(guān)聯(lián)查詢-為表命別名 ? 查詢員工的編號(hào),姓名,部門編號(hào),部門名稱 select empno,ename,e.deptno,dname from emp e,dept d where d.deptno=e.deptno;注:這里的e是emp的別名,d是dept的別名 關(guān)聯(lián)查詢-自連接 ? 查詢出每個(gè)雇員的姓名、工作、雇員的直接上級(jí)領(lǐng)導(dǎo)的姓名 select e.empno,e.ename,e.job,m.ename mname from emp e,emp m where e.mgr=m.empno;注:mname是m.ename的別名 關(guān)聯(lián)查詢-多表關(guān)聯(lián) 四、? 查詢出每個(gè)雇員的姓名,工作,雇員的直接上級(jí)領(lǐng)導(dǎo),以及部門名稱 select e.ename,e.job,m.ename,d.dname from emp e,dept d,emp m where e.mgr=m.empno and e.deptno=d.deptno;注:當(dāng)查詢的字段間的關(guān)系涉及到n個(gè)表時(shí),則n個(gè)表之間關(guān)聯(lián)。 左、右外連接 ? 查詢員工編號(hào),姓名,所在部門號(hào),部門名稱,將沒(méi)有員工的部門也顯示出來(lái) select e.ename,d.deptno,d.dname from emp e,dept d where e.deptno(+)=d.deptno;注:(+)在左邊,表示右連接,會(huì)列出所有右表中出現(xiàn)但是沒(méi)有在左表中出現(xiàn)的行。 ? 查詢雇員的編號(hào),姓名及其領(lǐng)導(dǎo)的編號(hào),將沒(méi)有領(lǐng)導(dǎo)的員工也列出來(lái) select e.empno,e.ename,m.empno,m.ename from emp e,emp m where e.mgr=m.empno(+);注:(+)在右邊表示左連接,會(huì)列出左表中出現(xiàn)但沒(méi)有在右表中出現(xiàn)的行。 ? 交叉連接(cross join):用來(lái)長(zhǎng)生笛卡爾積 select * from emp cross join dept; ? 自然連接(nutural join):自動(dòng)進(jìn)行關(guān)聯(lián)字段的匹配 select * from emp natural join dept; ? using子句:直接指定操作關(guān)聯(lián)列 select * from emp join dept using(deptno) ? on子句:用戶自己編寫(xiě)連接條件 select * from emp join dept on emp.deptno=dept.deptno; ? left join:左外連接 ? right join:右外連接 五、ORACLE_列函數(shù)和分組 ? 常用的列函數(shù) sum(expression)求和 max(expression)求最大值 min(expression)求最小值 avg(expression)求平均數(shù) count(expression)統(tǒng)計(jì)記錄數(shù) count(distinct colname)統(tǒng)計(jì)去除重復(fù)行記錄數(shù) nvl(comm,0)當(dāng)comm為null時(shí),用0替換 列函數(shù)的使用 ? 查詢員工的記錄數(shù),員工工資的總和,平均工資,最高工資,最低工資 select count(*)count_emp,sum(sal)sum_sal, max(sal)max_sal,min(sal)min_sal, avg(sal)avg_sal from emp; 列函數(shù)的使用-對(duì)null的處理 ? 查詢所有員工的年收入 select sum(sal+comm)from emp;SUM(SAL+COMM)------------- 7800 注:當(dāng)comm為null時(shí),sal+comm是沒(méi)有結(jié)果值的 select sum(sal)+sum(comm)from emp;SUM(SAL)+SUM(COMM)------------------ 31225 select sum(sal+nvl(comm,0))from emp;SUM(SAL+NVL(COMM,0))-------------------- 31225 ? 分組查詢 語(yǔ)法格式 select 列名...,列函數(shù) from 表名...where 條件...group by 列名...order by 列名...? 查詢每個(gè)部門的人數(shù) select deptno,count(*)from emp group by deptno;規(guī)則:如果在select字句中,有不在列函數(shù)中的列,則該列一定要出現(xiàn)在group by之后。 分組查詢having字句的使用 ? 顯示出平均工資大于2000的部門編號(hào)和平均工資 select deptno,avg(sal)from emp group by deptno having avg(sal)>2000; SQL語(yǔ)句的書(shū)寫(xiě)順序 select 列名,列函數(shù) from 表名 where 條件 group by列名 having 條件 order by 列名 SQL語(yǔ)句的執(zhí)行順序 from where group by having select order by ? 查詢20,30部門的平均工資,并將平均工資大于2000的輸出,輸出結(jié)果按平均工資排序 select deptno,avg(sal)from emp where deptno in(20,30)group by deptno having avg(sal)>2000 order by avg(sal); 六、ORACLE_子查詢 在where子句中使用子查詢 ? 查詢工資比7654雇員工資高的全部雇員信息 select * from emp where sal>(select sal from emp where empno=7654);子查詢-in的使用 ? 查詢和smith或jones在同一部門,同一職位工作的員工 select ename from emp where(deptno,job)in(select deptno,job from emp where ename in('SMITH','JONES')); 子查詢-any的使用 ? =any:與in操作符的效果一致 查詢和smith或jones在同一部門,同一職位工作的員工 select ename from emp where(deptno,job)=any(select deptno,job from emp where ename in('SMITH','JONES')); ? >any:只要大于子查詢中的任何一個(gè)值即可 select * from emp where sal>any(select min(sal)from emp group by deptno); ? select empno from emp where sal 子查詢all的使用 ? >all:比最大的值大 select * from emp where sal>all (select min(sal)from emp group by deptno);注:select min(sal)from emp group by deptno結(jié)果為 MIN(SAL)---------- 950 800 1300 是每個(gè)部門當(dāng)中的最少工資。 ? 七、ORACLE_表的更新操作 ? 創(chuàng)建表副本 create table myemp as select * from emp; ? 插入 ? 到表中 insert的語(yǔ)法 insert into 表名(字段名1,字段名2,......)values(值1,值2......) ? 為myemp中增加一條記錄 insert into myemp(empno,ename,job,mgr,hiredate,sal,comm,deptno)values(7899,'張三','清潔工','7369','14-2月-2005',9000,300,40);注:給定的值要和指定的字段數(shù)一致。 1.如果全部字段都插入值的話,那字段名可以省略。即: insert into 表名 values(值1,值2,.......);2.如果只是部分字段插入值的話,字段名又想省略的話,那么,其余沒(méi)有數(shù)據(jù)插入的字段用null填補(bǔ)。 ? to_date:字符型轉(zhuǎn)換成日期型 ? 批量插入記錄 格式: insert into 表名 select 字段列表 from 表名 where 條件 注:insert表和select表列數(shù)等都一致 例如: create table test as select * from emp;insert into test select * from emp; ? 修改記錄 update表名set要修改的字段=新值,要修改的字段=新值,...where條件 ? 將雇員號(hào)為7896的雇員的獎(jiǎng)金修改為100 update myemp set comm=100 where empno=7896;注:執(zhí)行修改操作時(shí),一定要使用where來(lái)指定修改的條件,否則會(huì)改變表中的所有記錄。 ? 刪除記錄 delete from 表名 where 條件 ? 刪除雇員編號(hào)為7896的雇員信息 delete from myemp where empno=7896;注:執(zhí)行delete操作時(shí),一定要使用where來(lái)指定修改的條件,否則會(huì)刪除表中所有的記錄。 ? Oralce的事務(wù)處理 commit:提交事務(wù) rollback:回滾操作 注:操作一旦執(zhí)行了commit操作,就再也不能回滾操作了。 八、ORACLE_表與視圖的管理 ? oracle中的常見(jiàn)數(shù)據(jù)類型 varchar、varchar2:表示一個(gè)字符串,有長(zhǎng)度限制,為255 number: number(n):表示一個(gè)整數(shù),數(shù)字的長(zhǎng)度是n,可以使用int number(n,m):表示一個(gè)小數(shù),數(shù)字的長(zhǎng)度為n,整數(shù)長(zhǎng)度m-n,可以使用float date:表示日期類型,日期要按照標(biāo)準(zhǔn)格式日期存放。clob:大對(duì)象,表示大文本數(shù)據(jù)類型,可存放4G。 blob:大對(duì)象,表示二進(jìn)制數(shù)據(jù),最大可以存放4G,如電影,圖片、歌曲 ? 創(chuàng)建表 語(yǔ)法: create table 表名(字段名稱1 字段類型[default 默認(rèn)值], 字段名稱1 字段類型[default 默認(rèn)值],............字段名稱1 字段類型[default 默認(rèn)值],); ? 復(fù)制表 create table 表名 as(子查詢);注:當(dāng)子查詢不成立時(shí),如果1=2,則只復(fù)制表的結(jié)果,不復(fù)制表的數(shù)據(jù)。 ? 刪除表 語(yǔ)法: drop table 表名; ? 修改表結(jié)構(gòu) ? 增加一列 alter table 表名 add(列名稱 列數(shù)據(jù)類型 default 默認(rèn)值) ? 刪除列 alter table 表名 drop column 列名稱; ? 修改列的數(shù)據(jù)類型 alter table 表名稱 modify(列的名稱 列的類型 default 默認(rèn)值);注:1.如果是更改數(shù)據(jù)的長(zhǎng)度,則要求更改時(shí),長(zhǎng)度不能小于當(dāng)前表中數(shù)據(jù)所具有的最大長(zhǎng)度。 2.如果是更改數(shù)據(jù)類型,則要求更改時(shí),該列的所有記錄值都為空。 ? 修改表結(jié)構(gòu) ? 為表重命名 rename 舊表名 to 新表名;注:這是oracle特有的操作 ? 將myemp表改名為iemp SQL> rename myemp to iemp;表已重命名。? 截?cái)啾?/p> truncate table 表名;意義:清空表中的所有數(shù)據(jù),并且立即釋放資源,該操作是不可回滾。 ? 約束-約束的分類 主鍵約束:表示一個(gè)唯一的標(biāo)識(shí),本身不能為空 唯一約束:列值不允許重復(fù) 檢查約束:檢查一個(gè)列的內(nèi)容是否合法 非空約束:不能為空值,如用戶不能為空(no null)外鍵約束:在兩張表中進(jìn)行約束的操作 ? 主鍵約束(primary key)主鍵約束一般在id上使用,而且本身已經(jīng)默認(rèn)了不能為空,主鍵約束可以在建表的時(shí)候指定 create table person(pid varchar2(18)primary key, name varchar(30), age number(3), sex varchar2(2)default'男'); 使用constraint指定 constraint [k?n'streint] 約束;強(qiáng)制 create table person(pid varchar2(18), name varchar(30), age number(3), sex varchar2(2)default'男' constraint person_pid_pk primary key(pid););? 非空約束(not null)create table person(pid varchar2(18)primary key, name varchar(30)not null, age number(3), sex varchar2(2)default'男'); ? 唯一約束(unique)create table person(pid varchar2(18)primary key, name varchar(30)unique not null, age number(3), sex varchar2(2)default'男'); ? 視圖 概念:一個(gè)視圖實(shí)質(zhì)是封裝了一條復(fù)雜的SQL語(yǔ)句 ? 創(chuàng)建視圖 語(yǔ)法: create view 視圖名稱 as 子查詢 ? 創(chuàng)建部門20員工的雇員信息 create view empv20 as select * from emp where deptno=20;注:當(dāng)創(chuàng)建視圖以后,可以像操作表一樣操作視圖。注:視圖的操作會(huì)影響到表的操作。 with check option 不能更新創(chuàng)建視圖的條件 with read only 創(chuàng)建只讀視圖 ? 刪除視圖 語(yǔ)法: drop view 視圖名稱 注:當(dāng)刪除視圖所在的表時(shí),則視圖也不能被使用 ? 序列 創(chuàng)建序列語(yǔ)法:sequence ['si:kw?ns] create sequence 序列名稱;create sequence myseq;序列的操作: nextval:取得序列的下一個(gè)內(nèi)容 currval:取得當(dāng)前序列的內(nèi)容 ? 創(chuàng)建表驗(yàn)證序列的操作 create table testseq(next number,curr number);insert into testseq values(myseq.currval,myseq.nextval); ? 創(chuàng)建序列指定每次增長(zhǎng)的增量 create sequence myseq increment by 2;注:每次增長(zhǎng)2 ? 創(chuàng)建序列指定開(kāi)始的序列,默認(rèn)的序列從1開(kāi)始。create sequence myseq increment by 2 start with 10;注:序列從10開(kāi)始,每次增長(zhǎng)2 ? 創(chuàng)建一個(gè)序列1,3,5,7,9.create sequence myseq maxvalue 9 increment by 2 start with 1 cache 2 cycle;注:序列從1開(kāi)始,每次增長(zhǎng)2,最大值為9,循環(huán)兩次。 數(shù)據(jù)庫(kù)學(xué)習(xí)總結(jié) 這學(xué)期我們學(xué)習(xí)了數(shù)據(jù)庫(kù)應(yīng)用教程這門課,以前并不知道這門課是干什么的,也不懂得什么是數(shù)據(jù)庫(kù),通過(guò)這一學(xué)期的學(xué)習(xí),雖然了解的不是非常多,但也有了初步的一點(diǎn)認(rèn)識(shí)。 我大概的明白數(shù)據(jù)庫(kù)技術(shù)是處理信息,管理數(shù)據(jù)最有效的一種方法。它具有完善的數(shù)據(jù)管理功能,還具有操作方便,簡(jiǎn)單實(shí)用等特點(diǎn)。因?yàn)槲沂欠怯?jì)算機(jī)專業(yè)的學(xué)生,所以我學(xué)起來(lái)就感覺(jué)很難,在上第一堂課的時(shí)候,因?yàn)椴涣私猓谑切睦锍錆M了對(duì)這門課的神秘感,在第一堂課上我聽(tīng)得很認(rèn)真,我感覺(jué)它與其他的課程沒(méi)有什么聯(lián)系,不需要其它太多的知識(shí),我想它可能是一門從頭開(kāi)始學(xué)的課,就沒(méi)有太多的擔(dān)憂,然而事實(shí)并不是我想的這樣,隨著時(shí)間的延長(zhǎng),我發(fā)現(xiàn)每一堂課都比前一堂課難,逐漸的我聽(tīng)得就越來(lái)越吃力,還好書(shū)上除了理論知識(shí)外還有很多例題和圖片,這對(duì)我對(duì)知識(shí)的理解有很大的幫助。 同時(shí)老師每堂課都用詳細(xì)的和書(shū)上相似的PPT,并且老師講的非常細(xì)致,書(shū)上的每一個(gè)知識(shí)他都會(huì)仔細(xì)的給我們講解,有時(shí)遇到比較難的問(wèn)題他還會(huì)很耐心的講解好幾遍直到我們都明白了為止,有時(shí)候我們好多人都沒(méi)有聽(tīng),但只要有人聽(tīng),他就會(huì)很認(rèn)真的講。本書(shū)的第一章主要介紹數(shù)據(jù)庫(kù)系統(tǒng)的基本概念,VFP的開(kāi)發(fā)環(huán)境,項(xiàng)目管理器等知識(shí),還記得上第一章時(shí)老師就告訴我們這一門課程對(duì)我們來(lái)說(shuō)比較難學(xué),也鼓勵(lì)我們不要放棄,要慢慢的理解,老師總是態(tài)度很和藹的與我們說(shuō)話,更減少了我們對(duì)這一門課的恐懼感。 為了讓我們更好的理解所學(xué)的知識(shí),老師還為我們準(zhǔn)備了與教學(xué)知識(shí)相關(guān)的實(shí)驗(yàn)內(nèi)容,一般在每堂理論課后都會(huì)有實(shí)驗(yàn)課,所做的實(shí)驗(yàn)都是我們剛學(xué)的那些基本的,重點(diǎn)的知識(shí)。這種理論與實(shí)驗(yàn)相結(jié)合的方式加深了我們對(duì)教材的理解。剛開(kāi)始做實(shí)驗(yàn)時(shí),因?yàn)槭浅鯇W(xué),所以老師會(huì)把所有的步驟都寫(xiě)上,讓我們照著做,先熟悉它的基本操作,再慢慢的理解,時(shí)間久了,老師就會(huì)省去一些簡(jiǎn)單的步驟,讓我們自己練習(xí)。并且每次實(shí)驗(yàn)之間都有一定的聯(lián)系,比如下一次實(shí)驗(yàn)時(shí)當(dāng)中有的東西就要用到上一次或前幾次的實(shí)驗(yàn)內(nèi)容。如果第一次沒(méi)有做或者沒(méi)有做完,就會(huì)影響到下一次的實(shí)驗(yàn),剛開(kāi)始我因?yàn)椴皇炀妥霾煌?,也不知道與以后的實(shí)驗(yàn)是有聯(lián)系的,偶爾做完了也不知道保存,直到做到下一次實(shí)驗(yàn)不會(huì)做去問(wèn)老師時(shí),才知道那是上節(jié)課的內(nèi)容,于是我又從第一次重新開(kāi)始做起。這樣不僅浪費(fèi)時(shí)間,而且趕不上老師的進(jìn)度,每一節(jié)我就會(huì)忙于做以前的任務(wù),而不能及時(shí)做當(dāng)天的,從而總覺(jué)得自己很忙,但又不知忙了些什么,更不能及時(shí)掌握當(dāng)天所學(xué)的知識(shí)。使不懂的知識(shí)越來(lái)越多,自然也就覺(jué)得學(xué)起來(lái)很吃力。 書(shū)中第二章給我們介紹了VFP的基礎(chǔ)知識(shí)及數(shù)據(jù)運(yùn)算,這一章內(nèi)容讓我對(duì)數(shù)據(jù)庫(kù)有了進(jìn)一步的理解,這也為我以后學(xué)習(xí)數(shù)據(jù)庫(kù)打下了基礎(chǔ),因?yàn)榛A(chǔ)的東西才是一切學(xué)習(xí)的前提,沒(méi)有這些知識(shí)又怎能繼續(xù)學(xué)習(xí)后面的知識(shí)。第三章講了表的基本操作,如對(duì)表結(jié)構(gòu)的認(rèn)識(shí),如何創(chuàng)建表和修改表操作,排序與索引,數(shù)據(jù)表的統(tǒng)計(jì),工作區(qū)與多表操作,表文件等。這一章內(nèi)容是數(shù)據(jù)處理與操作的前提基礎(chǔ)。每一章的內(nèi)容由淺入深,層層相扣,關(guān)系密切。這對(duì)我們學(xué)好這門課有很大幫助。 通過(guò)這一學(xué)期的學(xué)習(xí)我了解到數(shù)據(jù)庫(kù)有很多優(yōu)點(diǎn),對(duì)我們的學(xué)習(xí)和生活非常有用,第一,它可以實(shí)現(xiàn)數(shù)據(jù)共享,所有用戶可同時(shí)存取數(shù)據(jù)庫(kù)中的數(shù)據(jù),也可以用各種方式通過(guò)接口使用數(shù)據(jù)庫(kù),這樣大大方便了我們每一個(gè)人的學(xué)習(xí)與生活。第二,它可以減少數(shù)據(jù)的冗余度,與其他的一些文件系統(tǒng)相比,因?yàn)閿?shù)據(jù)庫(kù)實(shí)現(xiàn)了數(shù)據(jù)共享,從而避免了用戶各自建立應(yīng)用文件,減少了大量重復(fù)數(shù)據(jù),減少了數(shù)據(jù)冗余,這一特點(diǎn)使我們的操作更方便更快捷。減少了時(shí)間的浪費(fèi),提高了工作的效率。第三,數(shù)據(jù)庫(kù)可以確保數(shù)據(jù)的安全性和可靠性,可以防止數(shù)據(jù)丟失,保證數(shù)據(jù)的正確性和有效性,同時(shí)數(shù)據(jù)庫(kù)可以及時(shí)發(fā)現(xiàn)故障并修復(fù)故障,從而防止數(shù)據(jù)被破壞。數(shù)據(jù)庫(kù)的這一系列特點(diǎn)都決定了它有很強(qiáng)大的功能,可以為我們提供很多方便,提高了我們的學(xué)習(xí)生活效率和質(zhì)量,是一門很值得我們?nèi)W(xué)習(xí)的一門課程。我們應(yīng)該重視它,使其更好地幫助我們?,F(xiàn)在想起來(lái)還有一點(diǎn)點(diǎn)后悔,當(dāng)時(shí)沒(méi)有好好聽(tīng)。 在這一學(xué)期有限的幾次實(shí)驗(yàn)課后,我雖然沒(méi)有學(xué)會(huì)很多,但也學(xué)會(huì)了一些簡(jiǎn)單的操作,我學(xué)會(huì)了一些簡(jiǎn)單的數(shù)據(jù)運(yùn)算;會(huì)建立一些簡(jiǎn)單的表,修改表的結(jié)構(gòu)和在表中輸入簡(jiǎn)單的記錄以及對(duì)表記錄的定位和修改;創(chuàng)建與編輯數(shù)據(jù)庫(kù)等比較容易簡(jiǎn)單的操作。有時(shí)候在做實(shí)驗(yàn)時(shí),對(duì)于實(shí)驗(yàn)中的一些東西我不怎么了解,但我還會(huì)去做,因?yàn)槲蚁胫挥卸嗑毩?xí)才能熟練,也才能理解掌握知識(shí)。我不知道這一門課對(duì)其他同學(xué)來(lái)說(shuō)怎么樣,但對(duì)我來(lái)說(shuō)卻有些難,但我會(huì)努力。因?yàn)槲艺J(rèn)為它對(duì)我以后考計(jì)算機(jī)二級(jí)有很大的幫助。 很快這一學(xué)期馬上就要結(jié)束了,數(shù)據(jù)庫(kù)這一門課也很快就要結(jié)束了,但這一學(xué)期的學(xué)習(xí)讓我知道了很多,尤其是老師的耐心,老師的敬業(yè)精神感動(dòng)了我,每一次還在午休時(shí)就有不想去上課的沖動(dòng),但我都克服了,因?yàn)槲蚁氲嚼蠋煆哪敲催h(yuǎn)來(lái)給我們上課,他能來(lái),為什么我不能,所以每次我都會(huì)說(shuō)服自己要好好上課。這不僅僅對(duì)我的學(xué)習(xí)有很大的啟示,更重要的是,他也告訴了我在以后的人生中如何去做事,如何去做人。再做任何事時(shí)都應(yīng)該認(rèn)真負(fù)責(zé),任何一個(gè)人都應(yīng)該被尊重。因?yàn)橛腥诉€是想聽(tīng),所以每次有人說(shuō)話時(shí),老師就會(huì)說(shuō)你可以不聽(tīng),可以睡覺(jué),但不能影響其他人聽(tīng)課。上次清明放假時(shí),好多人想回家,所以大部分人都沒(méi)有來(lái),老師并沒(méi)有生氣,而是很理解我們,有時(shí)候當(dāng)別人理解我們時(shí),我們應(yīng)該思考自己有沒(méi)有去理解過(guò)他人,這是相互的,就像老師理解我們一樣,我們也應(yīng)該按時(shí)上課,尊重老師,理解老師。經(jīng)過(guò)一個(gè)學(xué)期的數(shù)據(jù)庫(kù)課程的學(xué)習(xí),我們掌握了創(chuàng)建數(shù)據(jù)庫(kù)以及對(duì)數(shù)據(jù)庫(kù)的操作的基礎(chǔ)知識(shí)。數(shù)據(jù)庫(kù)這門課涉及到以前的知識(shí)不多,是一門從頭學(xué)起的課程,即使基礎(chǔ)不是很好,只要認(rèn)真聽(tīng)講、復(fù)習(xí)功課,還是一門比較容易掌握的課。課堂上講的知識(shí)比較理論化,如果不動(dòng)手就無(wú)法將知識(shí)轉(zhuǎn)化為技能,而動(dòng)手去做能夠讓我們將學(xué)過(guò)的知識(shí)在實(shí)踐中運(yùn)用,找到知識(shí)漏洞,并且能學(xué)到更多關(guān)于實(shí)際操作的知識(shí)和技巧。并且培養(yǎng)了我們的自學(xué)能力。 第一次接觸sql語(yǔ)言,雖然陌生,但是可以讓我從頭開(kāi)始學(xué),就算沒(méi)有基礎(chǔ)的人也可以學(xué)得很好。剛開(kāi)始練習(xí)sql語(yǔ)言的時(shí)候,并不是很難,基本上都是按照老師的步驟來(lái)做,還很有成就感。我們通過(guò)老師的一些ppt,我們可以鞏固課內(nèi)的知識(shí),還可以學(xué)習(xí)內(nèi)容相關(guān)的知識(shí),更好地完成老師布置的作業(yè)。access--中小型數(shù)據(jù)庫(kù)開(kāi)發(fā)系統(tǒng),內(nèi)嵌vba編程語(yǔ)言,面向?qū)ο缶幊?,excel--數(shù)據(jù)表格處理系統(tǒng),編程能力有限.access是數(shù)據(jù)庫(kù)管理軟件,內(nèi)含的是數(shù)據(jù)庫(kù)(基本對(duì)象),一個(gè)數(shù)據(jù)庫(kù)包含多張表 主要用于開(kāi)發(fā)系統(tǒng),日常辦公用起來(lái)不方便,他主要是做軟件的后臺(tái)的。而excel只是一般的表格處理軟件,主要于一些日常的辦公而已 兩都所用到的地方不一樣.access是一個(gè)數(shù)據(jù)庫(kù)軟件,一個(gè)access文件由存儲(chǔ)特定結(jié)構(gòu)化數(shù)據(jù)集的表集合組成。表中包含行(有時(shí)稱作記錄或元組)和列(有時(shí)稱作特性)的集合。表中的每一列都設(shè)計(jì)為存儲(chǔ)某種類型的信息(例如,日期、名稱、美元金額或數(shù)字)。表上有幾種控制(約束、規(guī)則、觸發(fā)器、默認(rèn)值和自定義用戶數(shù)據(jù)類型)用于確保數(shù)據(jù)的有效性。表上可以有索引(與書(shū)中的索引非常相似),利用索引可以快速地找到行。可將聲明引用完整性(dri)約束添加到表上,以確保不同表中相互關(guān)聯(lián)的數(shù)據(jù)保持一致。 學(xué)習(xí)數(shù)據(jù)庫(kù)對(duì)我來(lái)說(shuō)是一直都計(jì)劃學(xué)的,沒(méi)接觸的時(shí)候總是覺(jué)得它比較深?yuàn)W或是不可接近的電腦知識(shí),盡管自己對(duì)電腦非常感興趣,其實(shí)還是有些心理上的陌生感。學(xué)習(xí)電腦就和我們平時(shí)的其它科目學(xué)習(xí)一樣感覺(jué)它有永無(wú)止境的知識(shí),在這從初接觸電腦時(shí)連個(gè)電腦的鍵盤(pán)都不敢動(dòng)到現(xiàn)在連硬盤(pán)都也修理,其中的過(guò)程是多么長(zhǎng)啊,數(shù)據(jù)庫(kù)是我在高中時(shí)候聽(tīng)過(guò),到了大學(xué)漸漸了解了些,但就其原理性的內(nèi)容還不知道,也就是根本就不清楚什么是數(shù)據(jù)庫(kù),只是知道一個(gè)所謂的中國(guó)字典里的名詞。我認(rèn)識(shí)它是從我接觸網(wǎng)頁(yè)制作開(kāi)始的,初用FrontPage做網(wǎng)頁(yè)也就是弄幾個(gè)框圖,沒(méi)什么東西但還覺(jué)得不錯(cuò),后來(lái)聽(tīng)朋友說(shuō)這是最簡(jiǎn)單最普通的東東。朋友告訴我真真的網(wǎng)頁(yè)起碼也用到數(shù)據(jù)庫(kù)這些東西了,有什么前臺(tái)的后臺(tái)的。聽(tīng)我的都暈頭轉(zhuǎn)向了,感覺(jué)自己是一個(gè)長(zhǎng)不大的菜鳥(niǎo)了,之后我就去查找相關(guān)資料發(fā)現(xiàn)在數(shù)據(jù)庫(kù)有很多種,這才對(duì)它有所了解。 大 一、大二的時(shí)候想學(xué)可不知道怎么學(xué),從什么地方學(xué)起。當(dāng)時(shí)也沒(méi)注意選課本上有這類的課程,到了大三正式的課程也輕松些了,仔細(xì)觀摩了選修課發(fā)現(xiàn)有數(shù)據(jù)庫(kù),有數(shù)據(jù)庫(kù)原理和Oracle數(shù)據(jù)庫(kù)。當(dāng)時(shí)感覺(jué)Oracle數(shù)據(jù)庫(kù)既然是單獨(dú)一門課程一定會(huì)講的比較細(xì),也能學(xué)到真正實(shí)用的內(nèi)容。選上了這門課以后發(fā)現(xiàn)和我想的基本是一樣的,老師對(duì)學(xué)生也比較和藹可親,對(duì)我們要求也不是很緊。讓每個(gè)人都覺(jué)得輕輕松松就能把這門課程學(xué)完,沒(méi)有多么緊張的作業(yè),也沒(méi)有太苛刻的要求。 當(dāng)老師在最后說(shuō)這個(gè)課程結(jié)束了,回顧一下以前老師給我們講過(guò)的東西,真的有很多是我們應(yīng)該去注意的。學(xué)習(xí)完Oracle數(shù)據(jù)庫(kù)后感覺(jué)Oracle可分兩大塊,一塊是開(kāi)發(fā),一塊是管理。開(kāi)發(fā)主要是寫(xiě)寫(xiě)存儲(chǔ)過(guò)程、觸發(fā)器什么的,還有就是用Oracle的Develop工具做form。有點(diǎn)類似于程序員,當(dāng)然我可不是什么程序員,有幾個(gè)程序員朋友他們是我的偶像。開(kāi)發(fā)還需要有較強(qiáng)的邏輯思維和創(chuàng)造能力,自己沒(méi)有真正做過(guò),但感覺(jué)應(yīng)該會(huì)比較辛苦,是青春飯;管理則需要對(duì)Oracle數(shù)據(jù)庫(kù)的原理有深刻的認(rèn)識(shí),有全局操縱的能力和緊密的思維,責(zé)任較大,因?yàn)橐粋€(gè)小的失誤就會(huì)down掉整個(gè)數(shù)據(jù)庫(kù),相對(duì)前者來(lái)說(shuō),后者更看重經(jīng)驗(yàn)。這些東西都是從老師哪里和朋友的討論中得到的心得,也希望其他朋友能多多向老師和朋友請(qǐng)教,如果是個(gè)人單獨(dú)靠自己來(lái)完成一個(gè)完美的數(shù)據(jù)庫(kù)我覺(jué)得比較困難,現(xiàn)在基本上都是團(tuán)隊(duì)類型的,而且他們的效率高開(kāi)發(fā)的周期也快。在煙臺(tái)的.NET俱樂(lè)部認(rèn)識(shí)幾個(gè)比較歷害的人,他們的團(tuán)隊(duì)精神我比較佩服,像我這樣一個(gè)大學(xué)生和他們說(shuō)起來(lái)太菜了。由于數(shù)據(jù)庫(kù)管理的責(zé)任重大,很少公司愿意請(qǐng)一個(gè)剛剛接觸Oracle的人去管理數(shù)據(jù)庫(kù)。對(duì)于我們這些初出茅廬的新手來(lái)說(shuō),個(gè)人認(rèn)為可以先選擇做開(kāi)發(fā),有一定經(jīng)驗(yàn)后轉(zhuǎn)型,去做數(shù)據(jù)庫(kù)的管理。當(dāng)然,這個(gè)還是要看人個(gè)的實(shí)際情況來(lái)定。其實(shí)在煙臺(tái)大學(xué)里學(xué)生中有做的好的也是有,只不過(guò)通常象這些兄弟們我覺(jué)得很少能發(fā)現(xiàn)在,因?yàn)槲抑恢酪粋€(gè)。在煙雨樓臺(tái)的BBS版塊里有個(gè)程序版塊,這位版主以前就是學(xué)校網(wǎng)絡(luò)中心的牛人。他曾告訴我學(xué)習(xí)的方法就是:看書(shū)、思考、寫(xiě)筆記、做實(shí)驗(yàn)、再思考、再寫(xiě)筆記。我覺(jué)得說(shuō)的很對(duì),對(duì)于新手來(lái)說(shuō)就要這樣,不斷的去努力奮斗,最后一定能得到自己想要的成果。 對(duì)于學(xué)習(xí)Oracle數(shù)據(jù)庫(kù)從網(wǎng)絡(luò)上找資料我認(rèn)為是比較好的,現(xiàn)在的網(wǎng)絡(luò)又這么的發(fā)達(dá)應(yīng)該去充分利用。我知道Oracle的官方網(wǎng)站:這里有Oracle的各種版本的數(shù)據(jù)庫(kù)、應(yīng)用工具和權(quán)威的官方文檔。雖然我是個(gè)新手,但是常到哪些相關(guān)的數(shù)據(jù)庫(kù)論壇或是網(wǎng)站覺(jué)得每次的收獲都不小,網(wǎng)絡(luò)對(duì)我來(lái)說(shuō)可是個(gè)重要的東西,除了Oracle數(shù)據(jù)庫(kù)對(duì)于其它的一些電腦知識(shí)都從網(wǎng)絡(luò)里學(xué)習(xí)了不少,我常用的一個(gè)搜索網(wǎng)站就是大家都熟悉的百度了 以前沒(méi)接觸過(guò)它,現(xiàn)在認(rèn)識(shí)了它才知道Oracle的體系很龐大,要學(xué)習(xí)它,首先要了解Oracle的框架。它有物理結(jié)構(gòu)(由控制文件、數(shù)據(jù)文件、重做日志文件、參數(shù)文件、歸檔文件、密碼文件組成),邏輯結(jié)構(gòu)(表空間、段、區(qū)、塊),內(nèi)存分配(SGA和PGA)算機(jī)的實(shí)際內(nèi)存中得以分配,如果實(shí)際內(nèi)存不夠再往虛擬內(nèi)存中寫(xiě),后臺(tái)進(jìn)程(數(shù)據(jù)寫(xiě)進(jìn)程、日志寫(xiě)進(jìn)程、系統(tǒng)監(jiān)控、進(jìn)程監(jiān)控、檢查點(diǎn)進(jìn)程、歸檔進(jìn)程、服務(wù)進(jìn)程、用戶進(jìn)程),SCN(System Change Number)。這些東西感覺(jué)都比較專業(yè),我對(duì)它們也就是個(gè)知道,想要真真去認(rèn)識(shí)我還得努力去做。雖然懂得還不是很多,起碼會(huì)了基本的軟件操作,老師說(shuō)我們用的都是客戶端,服務(wù)端看不到,也不知道服務(wù)端是什么樣的,只知道客戶端就挺多東西的,沒(méi)有真正的去學(xué)習(xí)利用是很難掌握的。 Oracle數(shù)據(jù)庫(kù)的學(xué)習(xí)使我對(duì)數(shù)據(jù)庫(kù)的有了新的進(jìn)步,以后再看到也就不至于什么也不懂,其實(shí)那么多數(shù)據(jù)庫(kù)我覺(jué)得學(xué)好一門就行,只是他們的語(yǔ)言可能不大一樣,學(xué)好一門后就可去認(rèn)識(shí)其它的,這樣應(yīng)該有事半功倍的效果。就像我學(xué)習(xí)C語(yǔ)言,當(dāng)時(shí)不能說(shuō)是學(xué)習(xí)的棒,但不算差。所以我對(duì)以后的語(yǔ)言感覺(jué)都不是很困難,了解了VB、C++還有網(wǎng)頁(yè)中用的Html語(yǔ)言、asp語(yǔ)言都能看懂,起碼可以對(duì)別人的東西進(jìn)行了一下修改。因此,我感謝Oracle數(shù)據(jù)庫(kù)老師給了我有用的知識(shí),以便我在以后學(xué)習(xí)或認(rèn)識(shí)更多的內(nèi)容能有新的方法和思維,也能更加有效和快速的去消化吸收新的東西。希望在今后中,Oracle能給我更多幫助,讓我在我熟悉的VB中運(yùn)用上去,我以前的一個(gè)目標(biāo)是要為學(xué)校的選課做一個(gè)選課助手來(lái)幫助大學(xué),就用我的VB。不過(guò)因?yàn)榉N種原因一直沒(méi)有完成,也包括我對(duì)數(shù)據(jù)庫(kù)的不了解,因?yàn)閷W(xué)了Oracle以后知道第一項(xiàng)內(nèi)容是通過(guò)SQL查詢后得到的,如果去把它們聯(lián)系起來(lái)還不是真正明白,不過(guò)我相信我的目標(biāo)能在學(xué)習(xí)Oracle后得到進(jìn)展。在這一年中我主要學(xué)習(xí)的數(shù)據(jù)庫(kù)是sql serverXX,在學(xué)習(xí)的時(shí)候過(guò)程中,我們首先是從基礎(chǔ)開(kāi)始,比如數(shù)據(jù)類型、運(yùn)算符號(hào)、關(guān)鍵字等等,然后上升到一些增刪改查,還有觸發(fā)、存儲(chǔ)過(guò)程等的使用等等。 經(jīng)過(guò)了一學(xué)期的學(xué)習(xí),我從起初對(duì)數(shù)據(jù)庫(kù)的認(rèn)識(shí)模糊到后來(lái)清晰,深入,我認(rèn)為我學(xué)到了許許多多的東西。當(dāng)然,在學(xué)習(xí)中,薛立柱會(huì)給我們?cè)诰W(wǎng)上下很多的學(xué)習(xí)資料,同時(shí)他也會(huì)建議我們多讀讀網(wǎng)上的學(xué)習(xí)資料。除了這個(gè)以外,我在學(xué)習(xí)數(shù)據(jù)庫(kù)課程過(guò)程中,接觸到的軟件工程思想,網(wǎng)上學(xué)習(xí)經(jīng)驗(yàn),以及利用網(wǎng)絡(luò)的學(xué)習(xí)資源都很好的改善了我的學(xué)習(xí)。后來(lái),在學(xué)習(xí)的深入中,雖然學(xué)習(xí)有時(shí)是十分叫人感到枯燥乏味的,但我慶幸的是我堅(jiān)持了下來(lái),在最后的考試復(fù)習(xí)中,薛立柱老師雖然勸誡我學(xué)習(xí)不要因?yàn)榭荚嚩V?。是?。∫雽W(xué)好一門功課我們需要的是持之以恒的精神。 數(shù)據(jù)庫(kù)編程,這個(gè)是作為一個(gè)程序員的基本功,絕大多數(shù)軟件開(kāi)發(fā)公司數(shù)據(jù)庫(kù)編程都是由程序員自己完成的,因?yàn)樗墓ぷ髁坎皇呛艽?,也不是很?fù)雜。所以作為一個(gè)綜合的程序員,學(xué)習(xí)數(shù)據(jù)庫(kù)編程,像數(shù)據(jù)庫(kù)四大操作,增刪改查,還有觸發(fā)、存儲(chǔ)過(guò)程等的使用,這些都是基礎(chǔ)的基矗很多時(shí)候我們會(huì)認(rèn)為數(shù)據(jù)庫(kù)沒(méi)什么作用,學(xué)習(xí)的時(shí)候吊兒郎當(dāng),到今年做項(xiàng)目時(shí),還不會(huì)連接查詢,要想避免這種情況發(fā)生就必須打好基礎(chǔ),扎實(shí)的掌握每個(gè)知識(shí)點(diǎn)。 只要你從事計(jì)算機(jī)行業(yè),就需要學(xué)習(xí)好數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí),不論以后選擇哪個(gè)方向,數(shù)據(jù)庫(kù)的學(xué)習(xí)都不能放松。古人云:書(shū)到用時(shí)方恨少,知識(shí)學(xué)多了不會(huì)成為累贅,慢慢的積累,總有用到的時(shí)候。給自己明確一個(gè)目標(biāo),剩下的就是向著這個(gè)目標(biāo)努力,無(wú)論遇到什么困難,克服它就向成功邁進(jìn)了一步。第四篇:ORACLE數(shù)據(jù)庫(kù)學(xué)習(xí)總結(jié)
第五篇:數(shù)據(jù)庫(kù)學(xué)習(xí)總結(jié)