Java數(shù)據(jù)庫知識點(diǎn)總結(jié)(部分,還有很多沒整合進(jìn)去)_第1頁
Java數(shù)據(jù)庫知識點(diǎn)總結(jié)(部分,還有很多沒整合進(jìn)去)_第2頁
Java數(shù)據(jù)庫知識點(diǎn)總結(jié)(部分,還有很多沒整合進(jìn)去)_第3頁
Java數(shù)據(jù)庫知識點(diǎn)總結(jié)(部分,還有很多沒整合進(jìn)去)_第4頁
Java數(shù)據(jù)庫知識點(diǎn)總結(jié)(部分,還有很多沒整合進(jìn)去)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

♂JDBCPreparedStatementStatement的好處sql命令發(fā)給效勞器去執(zhí)行的步驟為:語法檢查,語義分析,編譯成內(nèi)部指令,緩存指令,執(zhí)行指令等過程。select*fromstudentwhereid=3 緩存--xxxxx二進(jìn)制命令select*fromstudentwhereid=3 直接取-xxxxx二進(jìn)制命令select*fromstudentwhereid=4 會怎么干?假設(shè)當(dāng)時(shí)是select*fromstudentwhereid=? 又會怎么干?1、上面說的是性能提高2sql注入?!岽髷?shù)據(jù)量下的分頁解決方法。答:最好的方法是sql語句進(jìn)展分頁,這樣每次查詢出的結(jié)果集中就只包含某頁的數(shù)據(jù)內(nèi)容。在sql通過游標(biāo)定位方式來獵取某頁的數(shù)據(jù)。mysql:Stringsql=“select*fromstudentsorderbyidlimit“+Size*(Number-1)+“,“+Size;oracle:Stringsql=“select*from“+(select*,rownumridfrom(select*fromstudentsorderbypostimedesc)whererid<=“+size*number+“)ast“+“wheret>“+Size*(Number-1);select*from(select*fromtalkorderbyid)rownum<=5andidnotin(selectidfrom(select*fromtalkorderbyid)whererownum<=5*(1-1));sqlserver:Stringsql=“selecttop“+Size+“*fromstudentswhereidnotin“+“(selecttop“+Size*(Number-1)+“idfromstudentsorderbyid)“+“orderbyid“;♂說出一些數(shù)據(jù)庫優(yōu)化方面的閱歷?1sql命令的緩存功能,用PreparedStatement一般來說比Statement性能高。sql語句全部大寫,特別是列名和表名都大寫sql發(fā)給效勞器去執(zhí)行,涉及步驟:語法檢查、語義分析,編譯,緩存“inertintouservalues(1,1,1)”-二進(jìn)制“inertintouservalues(2,2,2)”-二進(jìn)制“inertintouservalues(?,?,?)”-二進(jìn)制2、假設(shè)程序能夠保證數(shù)據(jù)的完整性,那在設(shè)計(jì)數(shù)據(jù)庫時(shí)就去掉外鍵,由于它會影響插入和比方:就好比免檢產(chǎn)品,就是為了提高效率,充分信任產(chǎn)品的制造商〔對于hibernate來說,就應(yīng)當(dāng)有一個變化:empleyee->Deptment對象,現(xiàn)在設(shè)計(jì)時(shí)就成了employeedeptid〕3、表中允許適當(dāng)冗余,譬如,主題帖的回復(fù)數(shù)量和最終回復(fù)時(shí)間等4、mysql幫助文檔子查詢章節(jié)的最終局部,例如,依據(jù)掃描的原理,下面的子查詢語句要比關(guān)聯(lián)查詢的效率高:,e.salarywheree.managerid=(selectidfromemployeewherename=”zxx”);,e.salary,,m.salaryfromemployeese,employeesmwheree.managerid==”zxx”;5、將姓名和密碼單獨(dú)從用戶表中獨(dú)立出來。這可以是格外好的一對一的案例喲!6、索引能提高查詢的性能。。。。。?!釘?shù)據(jù)庫三范式是什么?〔7個范式〕第一范式〔1NF:字段具有原子性,不行再分。比方年齡之類的。假設(shè)每列都是不行再分的最小數(shù)據(jù)單元〔也稱為最小的原子單元,則滿足第一范式其次范式2NF1NF除了主鍵以外的其他列,都依靠與該主鍵式〔2NF〕即其次范式要求每個表只描述一件事情。比方訂單表中包含訂單編號和訂單日期,但是假設(shè)還包含產(chǎn)品編號和產(chǎn)品價(jià)格,就不滿足二范式了第三范式3NF2NF主鍵以外的其他列都不傳遞依靠于主鍵列,則滿足第三范式。簡而言之,第三范式〔3NF〕要求一個數(shù)據(jù)庫表中不包含已在其它表中已包含的非主關(guān)鍵字信息。idid,還消滅發(fā)帖人姓名,否則,只要消滅同id的全部記錄,它們中的姓名局部都必需嚴(yán)格保持全都,這就是數(shù)據(jù)冗余?!酑lass.forName的作用?為什么要用?過,則返回代表該字節(jié)碼的Class實(shí)例對象,否則,按類加載器的托付機(jī)制去搜尋和加載該類,假設(shè)全部的類加載器都無法加載到該類,則拋出ClassNotFoundException。加載完這個ClassClass字節(jié)碼的newInstance方法去創(chuàng)立該類的實(shí)例對象了。〔即開發(fā)時(shí)〕無法確定,只有程序運(yùn)行時(shí)才能確定,這時(shí)候就需要使用Class.forName去動態(tài)加載該類,這個類名通常是在配置文件中配置的,例如,springioc中每次依靠注入的具體類就是這樣配置的,jdbc的驅(qū)動類名通。wx的用戶,其密碼為wx123CREATEUSERwxIDENTIFIEDBYwx123DEFAULT TABLESPACE USERSTEMPORARY TABLESPACE TEMP;GRANT命令可用于為用戶安排權(quán)限或角色CONNECT角色允許用戶連接至數(shù)據(jù)庫,并創(chuàng)立數(shù)據(jù)庫對象GRANTCONNECTTOwx;RESOURCE角色允許用戶使用數(shù)據(jù)庫中的存儲空間GRANTRESOURCETOwx;此系統(tǒng)權(quán)限允許用戶在當(dāng)前模式中創(chuàng)立序列,此權(quán)限包含在CONNECT角色中9GRANTCREATESEQUENCETOwx;授予用戶MARTIN操作TEST表對象的權(quán)限允許用戶查詢TEST表的記錄GRANTSELECTONTESTTOMARTIN;允許用戶更TEST表中的記錄GRANTUPDATEONTESTTOMARTIN;允許用戶插入、刪除、更和查詢TEST表中的記錄GRANTALLONTESTTOMARTIN;ALTERUSER命令可用于更改口令修改MARTIN用戶的密碼ALTER USER wx IDENTIFIED BY PWDOFWX;DROPUSER命令用于刪除用戶刪除MARTIN用戶模式DROPUSER wxCASCADE;例如:#CONNECT、RESOURCE角色授予用戶epetGRANTCONNECT,RESOURCETOepet;#撤銷用戶epet的RESOURCE角色REVOKERESOURCEFROMepet;#允許用戶查看EMP表中的記錄GRANTSELECTONempTOepet;#允許用戶更EMP表中的記錄GRANTUPDATEONempTOepet;Char固定長度的非Unicode字符數(shù)據(jù)Varchar/varchar2 Unicode數(shù)據(jù)CREATETABLEstuInfo(sidchar(13NOTNULL, 學(xué)號sNamevarchar(8NOTNULL, 姓名sSexchar(2NULL,性別sEbackgroundchar(4DEFAULT”高中”高中”r大?!北究?L,學(xué)歷sAddressvarchar(50NULL, 地址constraintPK_sidprimarykey(sid))CREATETABLEstuMarks(smidintNOTNULL, 編號sidCHAR(13)NOTNULL, 學(xué)號computerdecimal(4,2)DEFAULT”0”CHECK(computer>=0andcomputer<=100NULL, 計(jì)算機(jī)根底分Cdecimal(4,2)DEFAULT”0”CHECK(C>=0andC<=100NULLC 語言分JAVAdecimal(4,2)DEFAULT”0”CHECK(JAVA>=0andJAVA<=100NULLJAVA語言分SQLdecimal(4,2)DEFAULT”0”CHECK(SQL>=0andSQL<=100NULLSQL 語言分JSPdecimal(4,2)DEFAULT”0”CHECK(JSP>=0andJSP<=100NULLJSP 語言分projectdecimal(4,2)DEFAULT”0”CHECK(project>=0andproject<=100NULL, 工程分CONSTRAINTPK_smidPRIMARYKEY(smid),CONSTRAINTFK_sidFOREIGNKEY(sid)REFERENCESstuInfo(sid));什么是數(shù)據(jù)完整性?數(shù)據(jù)庫創(chuàng)立表的過程是規(guī)定數(shù)據(jù)列的屬性的過程,同時(shí)也是實(shí)施〔包括域完整性、實(shí)體完整性、引用完整性和自定義完整性等〕保證的過程。數(shù)據(jù)庫中的五種約束:主鍵約束PrimaryKeyConstrain:要求主鍵列數(shù)據(jù)唯一,并且不允許為空唯一約束UniqueConstrain要求該列唯一,允許為空,但只能消滅一個空值。默認(rèn)約束DefaultConstrain檢查約束CheckConstrain:某列取值范圍限制、格式限制等,如有關(guān)年齡的約束外鍵約束ForeignKeyConstrain:用于兩表間建立關(guān)系,需要指定引用主表的那列ALTERTABLEstuInfoADDCONSTRAINTPK_stuNoPRIMARYKEY (stuNo);ADDCONSTRAINTUQ_stuIDUNIQUE(stuID);ALTERTABLEstuInfoADD CONSTRAINT CK_stuAge CHECK(stuAge>=15ANDstuAge<=40);ALTERTABLEstuMarksADD CONSTRAINT FK_stuNoFOREIGN KEY(stuNo) REFERENCES stuInfo(stuNo);ALTERTABLEstuInfomodify(stu_addressvarchar2(200)default”地址不詳”);ALTERTABLE表名DROP CONSTRAINT 約束名創(chuàng)立數(shù)據(jù)庫表的過程實(shí)際上就是實(shí)施完整性約束的過程SQL(StructuredQueryLanguage):構(gòu)造化查詢語言SQL組成:DML〔數(shù)據(jù)操作語言〕——查詢、插入、刪除和修改數(shù)據(jù)庫中的數(shù)據(jù);——SELECT、INSERT、UPDATE、DELETE等;DCL〔數(shù)據(jù)掌握語言〕——用來掌握存取許可、存取權(quán)限等;——GRANT、REVOKE、DENY等;DDL〔數(shù)據(jù)定義語言〕——用來建立數(shù)據(jù)庫、數(shù)據(jù)庫對象和定義其列——CREATETABLE、DROPTABLE、ALTER TABLE等變量說明、流程掌握、功能函數(shù)——定義變量、推斷、分支、循環(huán)構(gòu)造等——日期函數(shù)、數(shù)學(xué)函數(shù)、字符函數(shù)、系統(tǒng)函數(shù)等創(chuàng)立序列CREATESEQUENCEemp_sequenceSTARTWITH1 --1開頭計(jì)數(shù)INCREMENTBY1每次加幾個MAXVALUE( NOMAXVALUE) 設(shè)置最大值MINVALUE --設(shè)置最小值〔假設(shè)循環(huán)的話,是從最大值變?yōu)樽钚≈翟傺h(huán)〕NOCYCLE --始終累加,不循環(huán)CACHE10;一旦定義了emp_sequence,你就可以用CURRVAL,NEXTVALCURRVAL=sequence的當(dāng)前值NEXTVAL=sequencesequence值比方:emp_sequence.NEXTVAL‘_’ 一個字符% 任意長度的字符串1、INSERTINT?SELECT的使用建表時(shí)多條語句同時(shí)插入CREATETABLEusers(cardidintnotnull,userNamevarchar2(10)null);INSERTINTOusers(cardid,userName)SELECT16,”張三”FROMdualUNIONSELECT23,”李四”FROMdualUNIONSELECT25,”王五”FROMdualUNIONSELECT29,”六子”FROMdualUNIONSELECT30,”趙七”FROMdual假設(shè)插入的數(shù)據(jù)不是固定的數(shù)據(jù)項(xiàng),而是從其它表中篩選數(shù)據(jù)再插入,可使用INSERTINTSELECT構(gòu)造INSERTINTOAccount(Account.CardID,Account.Score)SELECTUsers.CardID,2FROMUsersLEFTJOINAccountON(Account.CardID=Users.CardID)WHEREAccount.CardIDISNULL2、快速的復(fù)制一張表createtablebasselect*froma3、算平均值的時(shí)候,空值不參與計(jì)算從大到小排序時(shí),空值位于最前列4、模糊查詢中的between25and5是錯的5、內(nèi)連接、左外連接、右外連接、全外連接、穿插連接沒有空右允許空左允許空左右允許空很少用,可用于產(chǎn)生隨機(jī)數(shù)6、一般來說,表連接都可以用子查詢替換,但有的子查詢卻不能用表連接替換三張表以內(nèi),子查詢效率較高。多余三張表,建議用表連接子查詢返回的值不能保證只有一個,所以用IN比用=安全點(diǎn)。Oracle數(shù)據(jù)庫對象又稱模式對象數(shù)據(jù)庫對象是規(guī)律構(gòu)造的集合,最根本的數(shù)據(jù)庫對象是表其他數(shù)據(jù)庫對象包括:同義詞、序列、視圖、索引Create or replace public synonym xxx_syn for scott.emp;Create sequence emp_seqenceStart with 1;Create or replace view xxxx asSelect * from emp order by posttime;Create index article_index on article(aTitle,aCdate)同義詞假設(shè)你每次查詢的時(shí)候不想都輸入很長的表名,可以考慮用同義詞同義詞是現(xiàn)有對象的一個別名,作用:1、簡化SQL語句2、隱蔽對象的名稱和全部者3、供給對對象的公共訪問同義詞共有兩種類型:私有同義詞〔只能在其模式內(nèi)訪問,且不能與當(dāng)前模式的對象同名〕和公有同義詞〔被全部的數(shù)據(jù)庫用戶訪問〕創(chuàng)立私有同義詞和公有同義詞CREATE SYNONYM emp_syn FOR SCOTT.emp;CREATE PUBLIC SYNONYM emp_syn FOR SCOTT.emp;創(chuàng)立或替換現(xiàn)有的同義詞CREATE OR REPLACE SYNONYM emp_syn FOR SCOTT.emp;刪除同義詞DROP SYNONYM emp;創(chuàng)立或刪除同義詞的時(shí)候假設(shè)權(quán)限不夠,可以先賦權(quán)比方:grantcreatesynonymto用戶序列序列是用于生成唯一、連續(xù)序號的對象序列可以是升序的,也可以是降序的使用CREATESEQUENCE語句創(chuàng)立序列:CREATESEQUENCEemp_sequenceSTARTWITH1 --1開頭計(jì)數(shù)INCREMENTBY1每次加幾個MAXVALUE( NOMAXVALUE) 設(shè)置最大值MINVALUE --設(shè)置最小值〔假設(shè)循環(huán)的話,是從最大值變?yōu)樽钚≈翟傺h(huán)〕NOCYCLE --始終累加,不循環(huán)CACHE10;通過序列的偽列來訪問序列的值1、NEXTVAL返回序列的下一個值2、CURRVAL返回序列的當(dāng)前值SQL>INSERTINTOtoys(toyid,toyname,toyprice)VALUES(toys_seq.NEXTVAL,‘TWENTY’,25);SQL>INSERTINTOtoys(toyid,toyname,toyprice)VALUES(toys_seq.NEXTVAL,’MAGICPENCIL’,75);SQL>SELECTtoys_seq.CURRVALFROMdual;使用ALTERSEQUENCE語句修改序列,不能更改序列的STARTWITH參數(shù)SQL>ALTERSEQUENCEtoys_seqMAXVALUE5000CYCLE;使用DROPSEQUENCE語句刪除序列SQL>DROPSEQUENCEtoys_seq;視圖當(dāng)一個查詢是多表連接,且該查詢使用頻繁時(shí),可以考慮創(chuàng)立視圖視圖以經(jīng)過定制的方式顯示來自一個或多個表的數(shù)據(jù)視圖可以視為“虛擬表”或“存儲的查詢”創(chuàng)立視圖所依據(jù)的表稱為“基表”視圖的優(yōu)點(diǎn)有:供給了另外一種級別的表安全性隱蔽的數(shù)據(jù)的簡單性簡化的用戶的SQL命令隔離基表構(gòu)造的轉(zhuǎn)變通過重命名列,從另一個角度供給數(shù)據(jù)創(chuàng)立視圖的語法:CREATE[ORREPLACE][FORCE]VIEWview_name[(alias[,alias]...)]ASselect_statement[WITHCHECKOPTION][WITHREADONLY];使

溫馨提示

  • 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

提交評論