WEB开发网      濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻橀弻锝夊箣閿濆棭妫勯梺鍝勵儎缁舵岸寮诲☉妯锋婵鐗嗘慨娑氱磽娴e搫鈻堢紒鐘崇墵瀵顓奸崼顐n€囬梻浣告啞閹歌顫濋妸鈺佺闁靛繒濮Σ鍫熺箾閸℃ê濮囨い搴㈡崌濮婃椽宕ㄦ繝鍌氼潓閻庢鍠栭悥濂哥嵁閺嶎厼绠涙い鏃傚亾閿涘繘姊洪崨濠冨瘷闁告洦鍋呴悾顒勬⒒娴e摜鏋冩い顐㈩樀瀹曞綊宕稿Δ鈧粻鏍煃閸濆嫬鏆婇柛瀣崌瀹曠兘顢橀悙鎰╁灪閵囧嫰濡烽敂鍓х杽濠殿喖锕ら幖顐f櫏闂佹悶鍎滈埀顒勫磻閹炬緞鏃堝川椤撶媴绱遍梻浣筋潐瀹曟﹢顢氳椤㈠﹪姊绘担鍛婂暈婵炶绠撳畷褰掑箥椤斿彞绗夊┑鐐村灟閸ㄦ椽鎮¢弴鐔翠簻闁规澘澧庣粙鑽ょ磼閳ь剟宕橀埞澶哥盎闁硅壈鎻槐鏇熸櫏婵犳鍠栭敃銊モ枍閿濆洤鍨濇繛鍡楃箚閺嬪酣鏌熼鍡楀暙椤ユ劙姊婚崒娆戭槮闁硅姤绮嶉幈銊╂偨缁嬭法顦┑鐐叉閸旀帞鎹㈤崱娑欑厽闁靛繆鎳氶崷顓犵焼閻庯綆鍋佹禍婊堟煛瀹ュ啫濮€濠㈣锕㈤弻娑㈡倷椤忓嫬顫囧┑顔硷攻濡炶棄螞閸愵煁褰掑Χ閸℃瑢濮囬梺鐟板槻閹虫﹢鐛幘璇茬鐎广儱鎷嬪Λ婊堟⒒閸屾瑧顦︽繝鈧柆宥呯?闁靛牆顦埀顒€鍟村畷鍗炩槈濡厧骞堥梻浣告贡閸庛倝銆冮崱娑欏亗闁哄洢鍨洪悡娑㈡煕閵夛絽鍔氬┑锛勫帶闇夋繝濠傚閻鏌曢崶褍顏紒鐘崇洴閺佹劙宕ㄩ鐘垫綁闂傚倷绀侀幖顐e緞閸ヮ剙鐒垫い鎺嗗亾缁剧虎鍙冨鎶藉幢濞戞瑥鈧敻鏌ㄥ┑鍡涱€楀褌鍗抽弻锟犲幢濞嗗繆鏋呴梺鍝勭潤閸曨偒鍤ゅ┑鐐叉閸ㄧ敻宕哄畝鍕拺闂傚牊绋掗ˉ鐐烘偨椤栨稑娴柨婵堝仜閳规垹鈧綆鍋勬禍妤呮煙閼圭増褰х紒鎻掋偢閹粙鎳¢妶鍥╋紳婵炶揪缍€椤曟牕鈻撻弴銏$厱闁靛ǹ鍎虫禒銏°亜椤愩垻绠崇紒杈ㄥ笒铻i悹鍥ф▕閳ь剚鎸剧槐鎾存媴閸︻厸妲堝銈嗗灥閹冲酣鍩㈤幘娲绘晣闁绘劏鏅滈弬鈧俊鐐€栧褰掑几婵犳艾绀傛い鎺戝€荤壕濂告煟濡寧鐝€规洖鐭傞弻鏇㈠幢閺囩媭妲銈庡亝缁诲牓鐛崶銊﹀闁稿繐顦伴悗鍛婄節閻㈤潧啸闁轰礁鎲¢幈銊╊敇閵忕姷锛涢梺瑙勫礃缁夘喛銇愰幒鎾存珳闂佹悶鍎弬鍌炲焵椤掆偓閿曨亪寮婚敓鐘茬劦妞ゆ帊鑳堕々鐑芥倵閿濆骸浜為柛妯挎閳规垿鍩ラ崱妤冧画濡炪倖鍨堕悷鈺佺暦閻㈢鍋撻敐搴″幋闁稿鎸鹃幉鎾礋椤掆偓娴犫晠姊虹粙鎸庡攭缂侇噣绠栭幃姗€宕橀瑙f嫼缂傚倷鐒﹂埣銈夘敂閸曢潧娈ㄩ梺鍓插亝濞叉牠鎮块鈧弻锝夊箛椤旇姤姣勭紒鐐劤閵堟悂寮诲☉姘勃闁绘劦鍓涘▓銈夋煛娴e摜澧﹂柟顔筋殘閹叉挳宕熼鍌ゆО缂傚倷绶¢崰鏍崲濡寧顥ら梺璇查叄濞佳囧箺濠婂吘娑㈩敍閻愬鍘靛銈嗙墪濡梻绮堟担鍦浄妞ゆ洍鍋撻柟顔筋殔閳绘捇宕归鐣屼邯闂備胶绮悧婊堝储瑜旈幃楣冩倻閼恒儱浜楅柟鐓庣摠钃辨い顐㈢Т閳规垿鍩ラ崱妤冧户闁荤姭鍋撻柨鏇炲€归崐鐢碘偓瑙勬礀濞层劎澹曟禒瀣厱閻忕偛澧介幊鍛存煕閺傝法校闁靛洤瀚版俊鎼佸Ψ閿旂粯顥i梻浣风串缁插墽鎹㈤崼銉у祦闁哄秲鍔嶆刊瀛樻叏濠靛棙婀伴柟韫嵆濮婄粯鎷呴搹鐟扮濠碘槅鍋勯崯纾嬫"闂佽宕橀褍效閺屻儲鍊甸柨婵嗛閺嬬喖鏌i幘璺烘瀾濞e洤锕俊鍫曞磼濮橆偄顥氶梻鍌欒兌缁垶銆冮崨顓囨稑螖閸涱厾鍘洪梺鍦亾缁剁偤寮崼婵嗙獩濡炪倖妫侀~澶屸偓姘偢濮婃椽鎳¢妶鍛呫垺绻涢懠顒€鈻堥柛鈹惧亾濡炪倖甯掗崯顖炴偟椤忓牊鐓熼煫鍥э工娴滈箖姊婚崒姘偓椋庣矆娓氣偓楠炴牠顢曢敃鈧粻鐘绘煙闁箑骞楅柛娆忕箻閺岀喓绱掗姀鐘崇亶闂佺ǹ顑傞弲鐘诲蓟閿濆围閹艰揪绱曟禒婊勭箾鐎涙ḿ鐭婄紓宥咃躬瀵鎮㈤崗鐓庘偓缁樹繆椤栨繂浜归柣锝嗘そ濮婃椽宕崟顒€娅ょ紓浣筋嚙閻楀棝锝炶箛鎾佹椽顢旈崪浣诡棃婵犵數鍋為崹鍫曟嚌妤e啨鈧倿宕崟銊︽杸闂佸疇妫勫Λ妤佺濠靛鐓熼柣鏂垮级濞呭﹪鏌曢崱鏇狀槮闁宠閰i獮鎺楀籍閸屾稒绶梻鍌欑閹碱偊宕锕€纾瑰┑鐘崇閸庡﹪鏌涢鐘插姕闁抽攱鍨堕幈銊╂偡閻楀牊鎮欓梺璇茬箰瀵墎鎹㈠☉娆愬闁告劖褰冮顐c亜閳哄啫鍘撮柡灞诲姂瀵挳鎮欏ù瀣壕鐟滅増甯楅崑鍌炴煛閸ャ儱鐏柣鎾崇箰閳规垿鎮欓懠顑胯檸闂佸憡鏌i崐婵嬪蓟濞戙垹鐓涢悗锝庡墰钃辨俊鐐€戦崝濠囧磿閻㈢ǹ绠栨繛鍡樻尭缁狙囨煙鐎涙ḿ绠ユ繛鍏肩娣囧﹪濡堕崶顬儵鏌涚€n剙浠遍柡浣稿暣婵偓闁靛牆鍟犻崑鎾存媴缁洘鐎婚梺鍦亾濞兼瑥鈻撻幇鐗堚拺闁告劕寮堕幆鍫熴亜閹存繃鍠橀柣娑卞櫍婵偓闁靛牆妫岄幏濠氭⒑缁嬫寧婀伴柣鐕傚缁﹪鎮ч崼娑楃盎濡炪倖鍔戦崺鍕i幖浣圭厽闁挎繂鎳庡Σ濠氭懚閿濆鐓犳繛鏉戭儐濞呭洭鏌i幘鎰佸剰妞ゎ亜鍟存俊鍫曞幢濮楀棙鈷栭梻浣芥硶閸犲棝宕曢懠顒傜焿鐎广儱鐗勬禍褰掓煙閻戞ɑ灏甸柛妯兼暬濮婅櫣绱掑Ο铏逛桓闁藉啴浜堕幃妯跨疀閿濆懎绠归梻鍥ь槹缁绘繃绻濋崒姘缂備礁顦遍崕銈夊箞閵婏妇绡€闁告侗鍣禒鈺冪磽娴d粙鍝洪悽顖涘笩閻忔帡姊洪幆褏绠婚柍褜鍓氱粙鎺椼€佸鈧濠氬磼濞嗘垵濡介柣搴g懗閸忕姴鎼鍏煎緞婵犲嫭鐓f繝鐢靛仦閸ㄥ墎鍒掓惔銏㈩洸闂侇剙绉甸埛鎺懨归敐鍛暈闁哥喓鍋炵换娑氭嫚瑜忛悾鐢碘偓瑙勬礀缂嶅﹪寮婚崱妤婂悑闁告侗鍨伴獮鍫ユ⒒娴d警鏀伴柟娲讳邯濮婁粙宕熼娑樹簵濠电偛妫欓幐濠氭偂閻樺磭绠鹃柡澶嬪焾閸庢劖绻涢崨顓熷櫣闂囧鏌eΟ铏癸紞闁活厼锕弻宥囨喆閸曨偆浼岄梺鎼炲姂缁犳牠骞冨▎鎾村癄濠㈣泛顦崹婵嬫⒒閸屾瑦绁版い鏇熺墵瀹曟澘螖閸涱偀鍋撻崘顔煎窛闁哄鍨归崣鈧┑鐘灱閸╂牠宕濋弴鐘典笉闁规儼濮ら悡娆撴煙椤栧棗鑻▓鍫曟偡濠婂嫭绶叉繛灞傚妿濡叉劙骞樼拠鑼紲濠电偛妫欓崹鑲╃玻濡ゅ懏鈷戦柛婵勫劚鏍¢梺缁橆殘婵炩偓闁靛棔绶氬浠嬵敇閻愯尙鐛╅梻浣告贡閳峰牓宕㈡禒瀣柧闁挎繂顦伴埛鎴犵磼鐎n厽纭剁紒鐘冲▕閺屾稑螣閻樺弶鍣烘い鎰矙閺岋綁骞囬鍓х槇缂備浇顕уΛ娆撳Φ閸曨垰鍐€闁靛ě鍛帓闂佹眹鍩勯崹杈╃矙閹烘梹宕叉繛鎴欏灩瀹告繃銇勯幘璺烘瀻闁哄濮撮埞鎴︻敊绾嘲濮涚紓渚囧櫘閸ㄥ爼鐛箛娑樺窛閻庢稒锚娴狀參姊绘笟鍥у伎缂佺姵鍨甸埢鎾斥攽閸垻锛濋梺绋挎湰閻燂妇绮婇悧鍫涗簻闁哄洤妫楀ú銈囧瑜版帗鐓曟い顓熷灥濞呮﹢鏌涢妶鍡樼缂佽鲸鎸婚幏鍛嫻椤栨粎绐楃紓鍌欒濡狙囧磻閹剧粯鈷掑ù锝堫潐閸嬬娀鏌涙惔顔肩仸鐎规洘绻傞濂稿川椤忓懐鈧椽姊洪幖鐐插姶闁告挻宀搁崺娑㈠箣閻樼數锛滈柣搴秵閸嬪嫰顢氬⿰鍕瘈闁逞屽墴楠炲秹顢欓崜褝绱查梺璇插嚱缂嶅棝宕戦崨顓犳殾鐎光偓閳ь剟鍩€椤掑喚娼愭繛鎻掔箻瀹曡绂掔€n亞鐣烘繛瀵稿Т椤戝懎顔忓┑鍡忔斀闁绘ɑ褰冮鈺傤殽閻愭惌娈滄慨濠冩そ閹兘寮堕幐搴♀偓顖炴⒑娴兼瑧绉靛ù婊庝簻閻i鎲撮崟顓犵槇濠殿喗锕╅崜娑㈠储閹扮増鈷戦柛婵嗗閸屻劑鏌涢妸锔姐仢闁诡噯绻濇俊鐑芥晜閽樺浼庢繝纰樻閸ㄤ即鎮樺┑瀣亗闁规壆澧楅悡鐔兼煙閹规劖纭鹃柡瀣洴閺岋綁骞欓崘銊ゅ枈閻庤娲栭悥鍏间繆閻戣棄唯闁靛鍎涢幋鐘电=闁稿本鐟чˇ锔姐亜閹存繄澧曢柣锝囧厴閹粙宕归顐g稐闂備礁婀遍崕銈咁潖閼姐倕顥氶柛蹇涙?缁诲棙銇勯弽銊х畵濞存粌缍婇弻锝夋晲閸噥浠╃紓浣介哺閹稿骞忛崨瀛樻優闁荤喐澹嗛鑲╃磽閸屾瑦绁版い鏇嗗洦鍋嬮柛鈩冪⊕閸嬧晝鈧懓瀚伴崑濠傖缚閵娾晜鐓冪憸婊堝礈濮橆厾鈹嶅┑鐘插亞濞兼壆鈧厜鍋撳┑鐘插敪閵娧呯=闁稿本鐟︾粊鏉款渻閺夋垶鎲搁柟骞垮灲瀹曠厧鈹戦幇顓犵▉缂傚倸鍊烽悞锕佹懌婵犳鍨伴顓犳閹烘垟妲堟慨妤€妫楅崜鏉库攽閻愯尙澧涢柛鏃€鐟ラ~蹇撁洪鍕啇闂佺粯鍔栬ぐ鍐€栭崱娑欌拺闁告稑饪村▓鏃堟煕閻旈攱鍋ラ柟顕€绠栭幃婊呯驳鐎n偅娅栭梻浣虹帛閸旀ḿ浜稿▎鎰垫闁搞儺鍓氶埛鎴︽煟閻旂厧浜伴柛銈囧枎閳规垿顢氶埀顒€岣胯閸┿垽骞樺ǎ顒€浜濋梺鍛婂姀閺備線骞忛搹鍦=闁稿本鐟ч崝宥夋嫅闁秵鐓冮梺鍨儏濞搭噣鏌$仦鐣屝㈤柣锝忕節楠炲秹顢欑亸鏍у緧闂佽瀛╅鏍闯椤曗偓瀹曟垶绻濋崒婊勬闂佸湱鍎ら〃鍡涘磹閻戣姤鍊甸柣銏㈡瑜版帞宓侀柛顐犲劜閳锋帒霉閿濆洦鍤€闁崇粯娲熼弻鈩冪瑹閸パ勭彎閻庤娲橀崹鍧楃嵁濡偐纾兼俊顖滃帶楠炴劙姊绘担鍛婂暈濞撴碍顨婂畷鏉款潩鐠鸿櫣鐤囬梺鍛婁緱閸犳洜鎹㈤崱娑欑厱婵炲棗娴氬Σ绋库攽椤斿吋鍠橀柟钘夌埣閺佹劖寰勭€n亙鍝楁繝鐢靛仦閸ㄥ墎鏁幒鎾存珷闁哄被鍎查悡娑㈡煕鐏炵虎娈斿ù婊堢畺濮婂宕掑顑藉亾閻戣姤鍤勯柛鎾茬閸ㄦ繃銇勯弽顐粶缂佲偓婢舵劖鐓涢柛銉㈡櫅閳ь剨缍侀幃銏ゅ传閵壯呮闂備焦鎮堕崕婊堝礃閳轰礁濮冮梻鍌氬€烽懗鍓佸垝椤栫偛钃熼柕濞炬櫆閸庡秵绻濋棃娑卞剰缂備讲鏅犻弻銈夊箒閹烘垵濮屾繛瀛樼矋缁捇寮婚敓鐘茬闁靛⿵绠戦ˇ鈺侇渻閵堝啫鍔氭い锔炬暬瀵鈽夐姀鐘愁棟闁荤姴娲︾粊鎾磻閹炬枼鏀介悗锝庝簽椤旀垿姊洪崜鎻掍簼婵炲弶锕㈠畷鎰版倻閼恒儳鍘介梺鐟邦嚟閸嬪秶绱撳鑸电厱婵せ鍋撳ù婊嗘硾椤繐煤椤忓嫪绱堕梺鍛婃处閸撴瑩宕戝澶嬧拺闁告稑锕ラ悡銉╂煛閸偄澧寸€殿喗鐓″畷濂稿即閵婏附娅栭梻浣虹帛閸旀洟顢氶銏犲偍闁告鍋愰弨浠嬫煟閹邦剙绾фい銉︾矌缁辨帞绱掑Ο铏诡儌缂備緡鍠氱划顖滄崲濠靛棭娼╂い鎾跺Т楠炴劙姊虹拠鑼闁稿鍠栧鏌ヮ敃閿濆棙鐝¢梻浣筋嚙濮橈箓锝炴径濞掓椽鏁冮崒姘憋紱婵犵數濮撮崐濠氬汲閿曞倹鐓熼柡鍐ㄥ€甸幏锟犳煛娴e憡顥㈤柡灞界Х椤т線鏌涢幘瀵告噰闁糕斂鍨归鍏煎緞鐎n偅鐝抽梻浣规偠閸庮噣寮插┑瀣櫖婵犻潧娲ㄧ粻楣冨级閸繂鈷旂紒瀣吹閹叉悂寮堕崹顔芥缂備礁鍊哥粔褰掑箖濞嗘搩鏁嗛柛灞剧矌濡插洭姊绘笟鈧ḿ褎顨ヨ箛鏇炵筏闁告挆鍕幑闂佺粯鍔﹂崗娆愮濠婂牊鐓欓悗娑欋缚缁犳牜鈧懓鎲$换鍕閹烘鏁婇柛鎾楀啰顐奸梻渚€娼ч悧鐐电礊娴e摜鏆︽慨妞诲亾闁糕晪绻濆畷姗€濡搁妷褜鍚嬮梻鍌氬€峰ù鍥敋瑜忛埀顒佺▓閺呮繄鍒掑▎鎾崇闁瑰濮寸粻鐢告煟閻樺厖鑸柛鏂垮缁嬪顓奸崱妯哄伎濠碉紕鍋犻褎绂嶆ィ鍐┾拺闁告繂瀚~锕傛煕閺傝法鐒搁柛鈹垮劜瀵板嫭绻涢姀銏犳瀾鐎垫澘瀚伴幆鍌炲传閵夘灖鎴︽⒑闂堟稒鎼愰悗姘卞娣囧﹪骞栨担瑙勬珳闂佸憡渚楅崢鑹邦杺闂傚倸鍊峰ù鍥敋閺嶎厼绐楁俊銈呮噺閸嬶繝鏌嶉崫鍕櫡闁逞屽厸缁舵艾顕i鈧畷鐓庘攽閸偅效濠碉紕鍋戦崐鏍箰閼姐倖宕查柛鏇ㄥ幘閻棝鏌涢弴銊ョ仭闁抽攱甯¢弻娑氫沪閸撗勫櫗缂備椒鑳舵晶妤呭Φ閸曨垰鍗抽柣鏂挎惈閳峰矂鎮楃憴鍕;闁告鍟块锝嗙鐎e灚鏅濋梺闈涚墕濞村倸危缁嬪簱鏀介柣妯虹仛閺嗏晛鈹戦鑺ュ唉鐎规洘鍔栫换婵嗩潩椤掍浇绶㈤梻浣瑰濞叉牠宕愯ぐ鎺撳亗婵炲棙鍔戞禍婊堟煛瀹ュ骸浜滃ù鐘崇矊闇夋繝濠傛噹椤g厧菐閸パ嶈含闁瑰磭濮甸敍鎰攽閸℃﹩鍞查梻鍌欑閻ゅ洭锝炴径鎰瀭闁秆勵殔閺勩儵鏌涢弴銊ョ仩缂佲偓閸愵喗鐓忓┑鐐戝啯鍣烽柛瀣р偓鏂ユ斀闁挎稑瀚禍濂告煕婵炲灝鈧繂鐣烽姀掳鍋呴柛鎰╁妿椤ρ冣攽閳藉棗鐏熼悹鈧敃鍌氬惞闁哄洢鍨洪崑锝夋煕閵夛絽濡块柕鍫濈摠娣囧﹪骞撻幒鏂库叺闂佸搫鏈ú婵堢不濞戙垹鍗抽柣鎴濇缂嶅矂姊绘担绋挎毐闁圭⒈鍋婇獮濠呯疀濞戞瑥浜楅棅顐㈡处閹尖晠鎮㈤崱娑欏仯濡わ附瀵ч鐘差熆瑜庡ú鐔煎蓟濞戙垹绫嶉柍褜鍓熼獮鎰板箮閽樺鎽曞┑鐐村灟閸ㄧ懓螞濡崵绠鹃柛鈩冪懃娴滄儳螖閺冨倻纾介柛灞剧懄缁佹澘顪冪€涙ɑ鍊愭鐐村姈缁绘繂顫濋鍌ゅ數闂備礁鎲℃笟妤呭垂閹惰姤鍎楁繛鍡樻尭缁犲綊鎮楀☉娅虫垹浜搁鐏荤懓饪伴崼銏㈡毇闂佸搫鏈粙鎴﹀煘閹达箑绀嬫い鎰╁灩琚橀梻鍌欑劍濡炲潡宕㈡禒瀣濡わ絽鍟粻鐔兼煙闂傚鍔嶉柛瀣儔閺屾盯顢曢敐鍥╃暭闂佽崵鍠嗛崝鎴濐潖濞差亜浼犻柛鏇㈡涧閸擃喚绱撴担钘夌厫鐎光偓缁嬫鍤曞┑鐘崇閸嬪嫰鏌i幘铏崳妞わ富鍙冮幃宄扳堪閸愵亞顔婇梺杞扮贰閸犳牠鍩ユ径鎰潊闁挎稑瀚獮鎰版⒒娴e憡鍟炲〒姘殜瀹曟澘螖閸涱厾锛欓梺瑙勫婢ф鎮″☉銏″€堕柣鎰邦杺閸ゆ瑥鈹戦鐓庘偓鍧楀蓟閻旂⒈鏁婇柛婵嗗閸嬫挸鈹戦崱娆愭闂佸湱鍎ら崹鐔肺i崼鐔稿弿婵°倐鍋撴俊顐f⒒濡叉劙鏁撻敓锟� ---闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚敐澶婄闁挎繂鎲涢幘缁樼厱濠电姴鍊归崑銉╂煛鐏炶濮傜€殿噮鍣e畷濂告偄閸涘⿴鍞堕梻鍌欒兌鏋い鎴濇楠炴劙宕滆閸ㄦ繃銇勯幘璺轰汗婵℃彃鐗婃穱濠囶敍濮橆厽鍎撶紓浣哄Ь椤曆囧煘閹达附鍊烽柛娆忣槴閺嬫瑦绻涚€涙ḿ鐭嬬紒顔芥崌楠炲啴鍨鹃弬銉︻潔闂侀潧楠忕槐鏇㈠储閸楃偐鏀介柣鎰綑閻忋儳鈧娲﹂崜鐔兼偘椤斿槈鐔沸ч崶锔剧泿闂備礁鎼崐鍦偓绗涘泚澶愬閳╁啫寮挎繝鐢靛Т閹冲繘顢旈悩缁樼厵闁荤喐婢橀顓炩攽閳╁啯鍊愬┑锛勫厴閺佸倿骞嗚缁嬪牓姊婚崒姘偓鐑芥嚄閸洖绠犻柟鎹愵嚙閸氬綊鏌″搴″箹缂佺媭鍨堕弻銊╂偆閸屾稑顏�
开发学院数据库DB2 利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL ... 阅读

利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

 2009-11-12 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鎯у⒔閹虫捇鈥旈崘顏佸亾閿濆簼绨绘い鎺嬪灪閵囧嫰骞囬姣挎捇鏌熸笟鍨妞ゎ偅绮撳畷鍗炍旈埀顒勭嵁婵犲嫮纾介柛灞捐壘閳ь剛鎳撻~婵嬪Ω閳轰胶鐤呯紓浣割儐椤戞瑩宕ョ€n喗鐓曟い鎰靛亝缁舵氨绱撻崘鈺傜婵﹤顭峰畷鎺戔枎閹搭厽袦婵犵數濮崑鎾绘⒑椤掆偓缁夌敻骞嗛悙鍝勭婵烇綆鍓欐俊鑲╃磼閹邦収娈滈柡灞糕偓鎰佸悑閹肩补鈧尙鏁栧┑鐐村灦閹稿摜绮旈悽绋课﹂柛鏇ㄥ灠閸愨偓濡炪倖鍔﹀鈧繛宀婁邯濮婅櫣绱掑Ο璇茶敿闂佺ǹ娴烽弫璇差嚕婵犳碍鏅插璺猴工瀹撳棝姊虹紒妯哄缂佷焦鎸冲畷鎴﹀箻鐠囧弶宓嶅銈嗘尰缁嬫垶绂嶉悙顒佸弿婵☆垳鍘ф禍楣冩倵濮樼偓瀚�闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鎯у⒔閹虫捇鈥旈崘顏佸亾閿濆簼绨奸柟鐧哥秮閺岋綁顢橀悙鎼闂侀潧妫欑敮鎺楋綖濠靛鏅查柛娑卞墮椤ユ艾鈹戞幊閸婃鎱ㄩ悜钘夌;婵炴垟鎳為崶顒佸仺缂佸瀵ч悗顒勬⒑閻熸澘鈷旂紒顕呭灦瀹曟垿骞囬悧鍫㈠幍缂傚倷鐒﹂敋缂佹う鍥ㄧ厓鐟滄粓宕滈敃鍌氱煑闁告劦鐓堝ḿ鏍煕濠靛棗鐝旂憸鏂跨暦閹偊妲炬繛瀵稿Т閵堢ǹ顫忛搹瑙勫珰闁肩⒈鍓涢澶愭⒑閻撳海绉虹紒鐘崇墵楠炲啯銈i崘鈺佲偓濠氭煢濡警妲奸柟鑺ユ礋濮婃椽妫冨☉杈€嗘繝纰樷偓铏枠鐎规洏鍨介幃浠嬪川婵炵偓瀚奸梺鑽ゅ枑閻熴儳鈧氨鍏樺畷顖濈疀濞戞瑧鍘遍梺缁樏壕顓熸櫠閻㈠憡鐓忛柛鈩冾殔閳ь剙婀辩紓鎾寸鐎n亜绐涙繝鐢靛Т鐎氼剟鐛崼銉︹拺缁绢厼鎳庨ˉ宥夋煙濞茶绨芥俊鍙夊姍瀵挳鎮㈤崫鍕ㄥ彏闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥囧弲闂侀潧鐗嗗ú鐘诲磻閹炬剚娼╂い鎰╁灩缁侇噣姊虹紒妯圭繁闁革綇缍侀悰顕€骞掗幊铏閸┾偓妞ゆ帒鍊绘稉宥夋煥濠靛棙顥犵紒鈾€鍋撻梻鍌氬€搁悧濠勭矙閹达箑姹叉繛鍡楃贩閻熸壋鍫柛顐犲灮閺嗩偊姊洪崫鍕効缂傚秳鐒﹂幈銊╁焵椤掑嫭鐓冮柟顖滃绾偓绻濋埀顒佹綇閵娧呭骄闂佸搫娲ㄩ崰鎾跺姬閳ь剙鈹戦鏂や緵闁告﹢绠栧畷銏ゆ偨閸涘ň鎷虹紓鍌欑劍閿氬┑顕嗙畵閺屾盯骞橀弶鎴濇懙闂佽鍠楄摫婵炵厧绻樻俊鎼佸Χ閸モ晝鏆伴梻鍌欑濠€杈╁垝椤栨粍鏆滈柣鎰摠濞呯姵绻涢幋鐐寸殤缁炬崘鍋愮槐鎾存媴鐠愵垳绱板┑鐐村絻椤曨參鍩€椤掑喚娼愭繛鍙夌墪閻g兘顢楅崘顏冪胺闂傚倷绀侀幉锟犲礉閺囥垹鐤柣妯款嚙缁€鍫熺節闂堟稓澧涚€规洖寮剁换娑㈠箣閻愩劎绱伴梺鍝勬濡鍩為幋锔藉亹閺夊牜鍋勯崢锟犳⒑鏉炴壆鍔嶉柣妤佺矌濡叉劙骞樼€涙ê顎撴繛瀵稿Т椤戝懘骞楅悽鍛娾拺闁革富鍘介崵鈧┑鐐茬湴閸婃繈骞冩ィ鍐╁€婚柦妯侯槺椤斿﹪姊虹憴鍕剹闁告ü绮欏畷鎾绘偨閸涘ň鎷洪梺鑽ゅ枑濠㈡﹢骞冩笟鈧弻锝夊箳閻愮數鏆ら梺璇″枟椤ㄥ﹪鐛弽銊﹀闁稿繐顦扮€氳棄鈹戦悙鑸靛涧缂佹彃娼″畷鏇㈠Χ婢跺﹤鎯為梺閫炲苯澧存慨濠冩そ楠炴牠鎮欏ù瀣壕闁哄稁鍘介崑瀣煟濡灝鍚圭€规挷绶氶悡顐﹀炊閵娧€濮囬梺鍝勬噺閹倿寮婚妸鈺傚亞闁稿本绋戦锟�濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻橀弻锝夊箣閿濆棭妫勯梺鍝勵儎缁舵岸寮诲☉妯锋婵鐗婇弫楣冩⒑閸涘﹦鎳冪紒缁樺灴婵$敻宕熼姘鳖啋闂佸憡顨堥崑鐔哥閼测晝纾藉ù锝呮惈椤庡矂鏌涢妸銉у煟鐎殿喛顕ч埥澶愬閻樼數鏉搁梻鍌氬€搁悧濠勭矙閹烘鍊堕柛顐犲劜閸婄敻鏌i悢鍝勵暭闁哥喓鍋熺槐鎺旀嫚閹绘帗娈绘繝纰夌磿閺佽鐣烽悢纰辨晬婵﹢纭搁崯瀣⒑鐠囨煡鍙勬繛浣冲洤绠烘繝濠傜墛閸嬧晛鈹戦崒姘暈闁抽攱鍨归惀顏堫敇閻愭潙顎涘┑鐐插悑閸旀牜鎹㈠☉銏″殤妞ゆ巻鍋撻柡瀣閵囧嫰顢曢姀銏㈩唺缂備浇椴哥敮鎺曠亽闂佸吋绁撮弲婊堝吹瀹€鍕拻濞撴埃鍋撻柍褜鍓涢崑娑㈡嚐椤栨稒娅犳い鏃囧亹閺嗗棝鏌ㄥ┑鍡欏闁告柨鐏氶妵鍕晜閻e苯寮ㄩ梺璇″櫙缁绘繃淇婇懜闈涚窞閻庯綆鍓欑敮楣冩⒒娴gǹ顥忛柛瀣噽閹广垽宕橀鑲╋紱濡炪倕绻愰幊鎰不閸撗€鍋撻悷鏉款棌闁哥姵娲滈懞杈ㄧ節濮橆剛鐣鹃梺缁樻煥閸氬鍩涢幋锔藉€甸柛锔诲幖鏍¢梺闈涙閸熸挳寮婚妶澶婄闁肩⒈鍓欓悡鐔兼倵鐟欏嫭绀冪紒璇茬墦瀵偊宕橀鑲╁姦濡炪倖甯掔€氀囧焵椤掍焦顥堢€规洘锕㈤、娆撳床婢诡垰娲﹂悡鏇㈡煃閳轰礁鏋ゆ繛鍫燂耿閺岋綁鎮㈢粙鍨潚濠殿喖锕ュ浠嬪箖閳╁啯鍎熼柍鈺佸暞閻︼綁姊绘担铏瑰笡闁绘娲熸俊鍓佺矙鐠恒劍娈鹃梺缁樺灦宀h法寮ч埀顒勬⒑閹肩偛鍔€闁告劑鍔庨妶顕€姊婚崒娆戠獢婵炰匠鍕垫闊洦娲橀~鏇㈡煛閸ャ儱鐏╅柛灞诲妽閵囧嫯绠涢幘璺侯杸闂佹娊鏀遍崹鍧楀蓟閻斿吋鍤冮柍杞版缁爼姊洪崨濠冣拹妞ゃ劌锕濠氭晸閻樻彃绐涘銈嗘閺侇喗鎱ㄩ崶鈺冪=濞达絿枪閳ь剙婀遍弫顕€鎮㈡俊鎾虫川閳ь剟娼ч幗婊呭婵傜ǹ绾ч柛顐g☉婵¤偐绱掑Δ浣侯暡缂佺粯鐩幃鈩冩償閿濆浂鍟嬮梻浣虹《閺備線宕滃┑瀣闁告稑鐡ㄩ悡銉╂倵閿濆懐浠涚紓宥嗩殜濮婂宕掑顑藉亾瀹勬噴褰掑炊瑜滃ù鏍煏婵炵偓娅嗛柛濠傛健閺屻劑寮撮悙娴嬪亾閸濄儳涓嶉柡灞诲劜閻撴洟鏌曟径妯烘灈濠⒀屽櫍閺岋紕鈧絺鏅濈粣鏃堟煛瀹€鈧崰鏍х暦濠婂棭妲鹃柣銏╁灡閻╊垶寮婚敓鐘插窛妞ゆ棁妫勯埀顒佸姍閺岋紕浠︾拠鎻掝潎闂佽鍠撻崐婵嗙暦閹烘垟妲堟慨妤€妫旂槐锟�闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鎯у⒔閹虫捇鈥旈崘顏佸亾閿濆簼绨绘い鎺嬪灪閵囧嫰骞囬姣挎捇鏌熸笟鍨妞ゎ偅绮撳畷鍗炍旈埀顒勭嵁婵犲嫮纾介柛灞捐壘閳ь剛鎳撻~婵嬪Ω閳轰胶鐤呯紓浣割儐椤戞瑩宕ョ€n喗鐓曟い鎰靛亝缁舵氨绱撻崘鈺傜婵﹤顭峰畷鎺戔枎閹搭厽袦婵犵數濮崑鎾绘⒑椤掆偓缁夌敻骞嗛悙鍝勭婵烇綆鍓欐俊鑲╃磼閹邦収娈滈柡灞糕偓鎰佸悑閹肩补鈧尙鏁栧┑鐐村灦閹稿摜绮旈悽绋课﹂柛鏇ㄥ灠閸愨偓濡炪倖鍔﹀鈧繛宀婁邯濮婅櫣绱掑Ο璇茶敿闂佺ǹ娴烽弫璇差嚕婵犳碍鏅插璺猴工瀹撳棝姊虹紒妯哄缂佷焦鎸冲畷鎴﹀箻鐠囧弶宓嶅銈嗘尰缁嬫垶绂嶉悙顒佸弿婵☆垳鍘ф禍楣冩倵濮樼偓瀚�  闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚敐澶婄闁挎繂鎲涢幘缁樼厱闁靛牆鎳庨顓㈡煛鐏炶鈧繂鐣烽锕€唯闁挎棁濮ら惁搴♀攽閻愬樊鍤熷┑顕€娼ч~婵嬪Ω瑜庨~鏇㈡煙閹规劦鍤欑痪鎯у悑缁绘盯宕卞Ο铏圭懆闂佸憡锕槐鏇犳閹惧鐟归柛銉戝嫮褰梻浣规偠閸斿矂鎮ラ崗闂寸箚闁圭虎鍠栫粈鍐┿亜閺冨倸甯剁紒鎰洴濮婃椽宕崟鍨ч梺鎼炲妼缂嶅﹤鐣烽姀鐘嗘椽顢旈崨顓涘亾閸偒娈介柣鎰皺娴犮垽鏌涢弮鈧喊宥夊Φ閸曨垱鏅滈悹鍥皺娴犳悂鎮楃憴鍕┛缂佺粯绻堥悰顔芥償閵婏箑娈熼梺闈涳紡閸愩劌顩梻鍌氬€搁オ鎾磻閸曨個娲晝閳ь剛鍙呴梺鍝勭Р閸斿孩鏅堕敓鐘斥拻闁稿本鐟︾粊鐗堛亜閺囧棗鎳夐崑鎾诲垂椤愩垺璇為悗瑙勬礃缁捇骞冮姀锛勯檮濠㈣泛顑囩粙渚€姊绘担鐟板姢缂佺粯鍔曢敃銏℃綇閳轰緡妫滈梺绋跨箻濡法鎹㈤崱妯镐簻闁哄秲鍔庨。鏌ユ煙椤栨氨澧涢柕鍥у椤㈡洟濮€閵忋垹濮辨繝娈垮枛閿曘儱顪冮挊澶屾殾闁绘垹鐡旈弫鍥ㄧ箾閹寸偟鎳冮柣婵嬩憾濮婄粯鎷呴崨闈涚秺椤㈡牠宕ㄩ鍥ㄧ☉閳规垹鈧綆浜為悾楣冩⒑闁偛鑻晶顖炴煏閸パ冾伂缂佺姵鐩獮妯尖偓鍨偠閸嬫劖绻濈喊妯活潑闁搞劍澹嗛埀顒佺濠㈡﹢锝炶箛鎾佹椽顢旈崟顏嗙倞闂備礁鎲″ú锕傚礈濮樿泛绠柛妤冨亹閺€浠嬫煟閹邦厼绲荤紒鐙欏啰鏆嗛柨婵嗘噺閸嬨儲顨ラ悙鏉戠伌濠殿喒鍋撻梺缁橈供閸嬪懘寮埀顒€鈹戦悩鍨毄濠殿喖顕埀顒佸嚬閸o絽顕i崼鏇炵濞达絽鍘滈幏娲⒑閸涘﹦绠撻悗姘煎幖椤斿繐鈹戦崱蹇旀杸濡炪倖姊归崕鎶藉储閹绢喗鐓欐い鏃囶嚙瀹撳棗鈹戦敍鍕幋闁糕晪绻濆畷鎺懳旀担鍓蹭紲濠电姷鏁搁崑鐘诲箵椤忓棗绶ゅù鐘差儏缁犺銇勯幇鈺佲偓鏍汲濠婂牊鍋i弶鐐村椤掔喖鏌i弬鎸庮棦闁哄矉缍侀幃銏犵暋閹殿喚娉块梻浣姐€€閸嬫捇鏌ゆ慨鎰偓妤冨婵傚憡鐓曢悘鐐靛亾閻ㄦ垹鈧稒绻傝灃婵°倕锕g花鐑芥煕濡も偓閸熷潡鎮鹃悜鑺ュ亗閹兼惌鍠楅崓鐢告⒑閹稿海绠撻柟鍐茬У缁旂喖寮撮姀鈾€鎷洪梺鍛婄箓鐎氼剟寮冲▎鎾寸厽婵°倐鍋撴俊顐g〒閸掓帡宕奸妷銉ь槰闂佸磭鎳撻妵妯艰姳婵犳碍顥婃い鎰╁灪閹兼劖绻涚€电ǹ鍘撮挊婵嬫煥閺囨浜鹃梻鍥ь槹缁绘繃绻濋崒婊冣叡闂佷紮绲惧浠嬪蓟閿涘嫪娌悹鍥ㄥ絻椤牓姊虹€圭媭娼愰柛銊ョ仢閻g兘宕¢悙鈺傤潔闂佺懓鍚€缁€浣圭閻愵兛绻嗛柕鍫濆€告禍鎯ь渻閵堝骸寮ㄩ柛搴☆煼绡撳〒姘e亾闁哄本鐩幃鈺佺暦閸パ€鎷版繝鐢靛Л閸嬫挸銆掑锝呬壕濠殿喖锕ㄥ▍锝囨閹烘嚦鐔煎即閻旈浼岄梺璇″枤閸忔ɑ淇婇悿顖fХ闂佺ǹ顑嗛幐鎼侊綖濠靛鍋傞幖娣灮娴滃墽绱撻崒娆戣窗闁哥姵姘ㄩ崚鎺楊敍閻愬弬褔鏌ㄥ┑鍡╂Ц缂佲偓閸愵喗鐓冮柛婵嗗閺嗘瑦顨ラ悙鑼濞e洤锕幃娆擃敂閸曘劌浜鹃柡宥庡幖缁€澶愭煙鏉堝墽鐣辩痪鎯х秺閺岋繝宕堕妷銉т患闂佸憡鍨规繛鈧鐐寸墪鑿愭い鎺嗗亾濠碘€茬矙閺岋綁骞樼捄鐑樼亪闂佺粯鎼╅崑濠傜暦閹偊妾ㄩ梺绋块缁绘﹢寮诲☉銏犵睄闁逞屽墰閸掓帡骞樼拠鑼舵憰闂佸搫娲㈤崹褰掓倷婵犲嫭鍠愮€广儱顦介弫鍌涖亜閹捐泛袥闁稿鎸搁埢鎾诲垂椤旂晫浜舵繝鐢靛仜閸氬鎮烽妸鈺傚€堕柟鐑橆殕閳锋垿鏌涘☉姗堝姛缂佺姵鎹囬幃妤€顫濋悡搴♀拤濡炪們鍊曢崐鍦崲濠靛牆鏋堝璺虹灱閿涚喖姊虹粙娆惧剱闁搞劌鐏濋悾鐑藉箛閺夎法顓洪梺鎸庢磵閸嬫捇鏌涢妸銉モ偓鍦崲濞戞﹩鍟呮い鏃囧吹閸戝綊姊虹粙娆惧劀缂佺粯绻堝璇差吋婢跺﹣绱堕梺鍛婃处閸撴瑥鈻嶉敐鍥╃=濞达絽鎼牎闂佺粯顨堟繛鈧€殿喛顕ч鍏煎緞婵犲嫬骞愬┑鐐舵彧缁蹭粙骞夐垾鏂ユ灁闁哄被鍎查埛鎴犵磼鐎n偄顕滈柟鐧哥秮閺屾盯鎮╁畷鍥р拰閻庢鍠栭…宄邦嚕閹绢喖顫呴柣姗€娼ч埀顒傚仱閹嘲饪伴崘顎倝鏌ゆウ鍧楀摵缂佺粯绻傞~婵嬵敇閻樻彃绠ラ梻鍌欑閹诧繝宕归鐐茬9闁哄稁鍋€閸嬫挸顫濋悙顒€顏�
核心提示:简介管理不同类型的数据库是大多数数据库管理员的一种工作方式,很少出现 DBA 只管理一组同类数据库的情形,利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务,在企业的数据中心,会有各种不同的后端存储库来存放数据,并从安装、系统结构(如内存和容器)、备份和恢复方法等方面进行

简介

管理不同类型的数据库是大多数数据库管理员的一种工作方式。很少出现 DBA 只管理一组同类数据库的情形。在企业的数据中心,会有各种不同的后端存储库来存放数据,比如数据库中的电子表格、图像、视频/音频形式的数据,而这些后端存储库包括 DB2 Universal Database™、Oracle、Microsoft® SQL Server、Informix®、Sybase 或者诸如 MySQL 之类的开放源码数据库。大多数公司要求 DBA 具有跨数据库管理这些不同的数据库的技能,对于企业数据中心而言,对各种数据源具有丰富知识的人才是不可或缺的。

本系列文章将帮助您根据现有的 MySQL DBA 技能学习 DB2 Express。本文是这一系列的第一部分,将带领您快速了解 DB2 Express,文中主要将介绍 DB2 Express 的特性和功能,以及与开放源代码数据库 MySQL 相比 DB2 Express 所具有的优势。

本文对一般性管理任务进行了比较,但并没有深入讨论可管理性、稳定性和可伸缩性的问题,也不会讨论两种数据库引擎的编写方式,或者优化程序的工作方式。本文的目的是通过概括开始了解技能转移过程,或者为那些希望进行这种比较的人描述一下这两种产品。

对于关心成本的入门级用户,IBM 提供了 DB2 Express 的免费版本,该版本称为 DB2 Express-C。DB2 Express-C 与 DB2 Express、Workgroup Edition 和 Enterprise Edition 具有相同的代码基础。随着业务的增长,客户往往转而采用 DB2 Workgroup 或 Enterprise,这些产品通过 Data Partitioning Feature (DPF) 和 High Availability Disaster Recovery (HADR) 提供了真正满足企业需求的高可用性和高性能。DB2 Express-C 适合 C/C++、Java™、.NET® 和 PHP 开发人员,可以免费 下载 使用。不过要注意的是,DB2 Express-C 有 2-WAY CPU 和 4GB RAM 的限制。关于不同版本的比较,请参阅 DB2 UDB 分布式平台的 比较表 来获得版本比较。

主题

本文包括以下内容:

安装

系统结构

可执行文件

数据库表的类型

数据库配置

图形用户界面(GUI)

命令行处理程序(CLP)

SQL 比较

授权和权限

锁定机制

PHP 开发支持

LOB 和视频/音频管理

数据类型

备份和恢复

下面我们来详细说明各个主题。

安装

首先来看看 MySQL 和 DB2 Universal Database Express 的安装步骤。两者的安装过程都很简单。

MySQL 安装

与 DB2 Express 相比,安装 MySQL 服务器的步骤略多一些(安装代码后还需要配置)。不过,两种数据库服务器都很容易安装。MySQL 和 DB2 Express 都允许在安装后使用 GUI 管理工具配置数据库。

关于 MySQL 安装程序的一点说明 —— 包含内容

对于 MySQL 5.0.18 Windows® 安装程序,服务器安装没有包含 GUI 管理程序或查询浏览器。安装 MySQL 服务器后,机器上将包括:

MySQL Command Line Client

MySQL Manual

MySQL Server Instance Configuration Wizard

如下面的 图 1 所示:


图 1. MySQL 安装内容
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

图片看不清楚?请点击这里查看原图(大图)。

要使用 GUI Administrator 和 Query Browser,则必须单独下载安装程序。要注意的是,不同平台需要下载不同的安装程序。而 DB2 Express 一次就安装了所有必需的管理工具和设施,无需另外下载。

DB2 Universal Database 安装

利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务DB2 Universal Database Express 安装非常简单,参照下列步骤即可。

在欢迎屏幕上单击 Install Product。

图 2. 欢迎屏幕
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

单击 Next。

图 3. 选择要安装的产品
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

单击 Next。

图 4. 安装向导
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

图片看不清楚?请点击这里查看原图(大图)。

接受许可协议,然后单击 Next。

图 5. 接受许可协议
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

图片看不清楚?请点击这里查看原图(大图)。

作为例子,我选择了 Typical。您还可以选择 Custom 或 Compact。然后单击 Next。

图 6. 安装选项 —— Typical、Compact 和 Custom
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

需要安装的驱动器和目录。可以保留默认值。

图 7. 安装目录
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

图片看不清楚?请点击这里查看原图(大图)。

输入 db2admin 口令。db2admin ID 是为 DB2 服务器管理创建的默认用户。

图 8. 用户信息
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

单击 Next。注意,在这里可以配置协议和启动选项。

图 9. 配置实例
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

图片看不清楚?请点击这里查看原图(大图)。

单击 Next开始安装。

图 10. 开始安装
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

图片看不清楚?请点击这里查看原图(大图)。

单击 Next。注意,在这里可以配置协议和启动选项。

图 11. 完成安装
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

完成安装后,DB2 Express 的安装布局如下表所示(概括性的)。默认的 DB2 Express 安装目录是 C:\Program Files\IBM\SQLLIB。下表只是 DB2 Express 在 Windows 平台上的布局,Linux® 和 UNIX® 具有不同的路径设置。

表 1. DB2 Express 安装布局
目录名内容
/adsm包括用于口令加密的 dsmapipw.exe
/BIN包含启动、停止和管理数据库所需的所有二进制文件
/bnd包含所有的绑定包
/conv包含代码页的转换表
/DB2DB2 实例相关文件,比如,其中包括 db2 日志文件 db2diag.log
/DB2DAS00包含 DB2 Admin Server- (DAS) 相关文件,如 dump 目录中的 db2dasdiag.log。如果有多个 DAS,该目录名将带有数字,如 DB2DAS01 等。通常一个 DAS 就足够用了
/java包含 JDBC™ 驱动程序
/samples包含大量实例代码
/TOOLS包含 DB2 工具的多数 JAR 文件
/tutorials包含各种教程

系统结构

本文中将讨论两种系统结构:

内存结构

容器

首先来看看 DB2 Express 主要内存布局的基本结构。关于内存管理的详细说明,请参阅 developerWorks 文章 “The DB2 UDB memory model: How DB2 uses memory”。

内存结构


图 12. DB2 Express 内存结构
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

各部分的功能如下:

Package Cache —— 用于存储静态和动态 SQL 语句的内存

Buffer Pool —— 用于在写入磁盘之前暂存数据的内存

Log Buffer —— 在日志写入磁盘前存储所有数据库更改的内存

容器

根据使用的表类型不同,MySQL 可以使用单个文件、多个文件或者表空间来存储数据。在这一节的最后,表 2 总结了 MySQL 和 DB2 Express 使用的容器。


图 13. MySQL 容器
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

与 MySQL 不同,DB2 Express 总是存储在表空间中。表空间是文件系统中的物理容器的逻辑表示。下面是表空间的一些特点:

一个数据库至少要有一个表空间。默认情况下,标准 DB2 Express 安装将创建三个表空间:

Syscatspace —— 存储系统目录信息

Tempspace1 —— 存储系统临时表。临时表空间可以是系统定义的,也可以是用户定义的。最好从系统临时表空间创建用户临时表空间

Userspace1 —— 存储系统临时表。临时表空间可以是系统定义的,也可以是用户定义的。最好从系统临时表空间创建用户临时表空间

物理文件系统中的 DB2 Express 容器布局如下。C:\DB2\ 是数据库管理的默认数据库路径。也可以使用命令 list active databases 找到数据库路径。DB2 数据库结构是按以下这种方式安排的,其中每一层分别表示:


图 14. DB2 Express 容器布局
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

Drive/Directory —— CREATE DATABASE 命令中指定的驱动器或目录

DB2 Instance Name —— DB2 Instance 所有者的名字

NODE0000 —— 数据库分区号,0 表示没有分区的数据库

SQL00001 —— 数据库 ID,从 1 开始编号

SQLOGDIR —— 数据库的默认日志目录

SQLT0000.0 —— 目录表空间,SYSCATSPACE

SQLT0001.0 —— 临时表空间,TEMPSPACE1

SQLT0002.0 —— 用户表空间,USERSPACE1

管理员可以随时创建更多的表空间,例如使用 清单 1 和 清单 2 中所示命令。(关于完整的 创建表空间的语法,请访问 Information Center。)


清单 1. 在 DB2 Express 中创建系统表空间
Create System Temporary Tablespace systemp1_space 
 managed by system    
 using ('c:\systemp1_space','d:\systemp1_space') 


清单 2. 在 DB2 Express 中创建用户表空间
Create User Temporary Tablespace usertemp1_space 
 managed by database  
 using (file 'c:\userdata1\usertemp1_space' 10000, 
              file 'd:\userdata2\usertemp1_space' 20000) 

可以将表分解到不同的表空间中。

视图、触发器和存储过程也可以保存在表空间中。

管理员可以根据需要创建任意多个表空间和任意多个容器。支持自动扩展特性。

表空间可以是系统管理的(SMS),也可以是数据库管理的(DMS)。

DB2 数据库管理员经常要决定容器是由系统管理,还是由数据库管理。这种决策由几方面因素决定,如可管理性、业务需求(如数据库的规模和增长速度)和性能问题。通常 SMS 更适合较小的环境,需要的时候,系统可以提供更多的空间。对于更繁琐庞大的环境,最好使用 DMS,因为管理员可通过自动扩展特性来分配空间。不过在一个数据库中结合使用两种方法的例子也不少见,比如把目录和临时表放在 SMS 中,而索引和数据则放在 DMS 中。

表 2 MySQL 和 DB2 Express 容器的差别。

表 2. 容器的区别
数据库表类型说明
MySQLMyISAM索引文件用 .MYI,数据文件用 .MYD。索引和数据分别使用一个文件。
MySQLInnonDB在路径参数 innodb_data_file_path 指定的表空间中存储数据。默认情况下该值为 ibdata1:10M:autoextend。可使用多个数据文件。
MySQLMerge.MRG 文件包含应该只作为一个表使用的表的名称,.FRM 包含表的定义。使用多个数据文件。
DB2 Express所有类型存储在可跨越多个磁盘的表空间中。有两种类型的容器:

System Managed (SMS) —— 操作系统文件管理

Database Managed (DMS) —— 数据库管理程序管理

要确定使用哪一种表空间,SMS 还是 DMS,请阅读 DB2 Information Center 上的 SMS 与DMS 的比较。

可执行文件

首先看一看 MySQL 中主要的可执行文件和 DB2 Express 中的对应文件。然后重点介绍后者特有的可执行文件。本文主要讨论 Windows 操作系统上的可执行文件。这两种数据库在 Linux 和 UNIX 上的可执行文件可能不一样。

表 3. MySQL 和 DB2 Express 中的可执行文件
MySQL 的可执行文件名DB2 Express 的可执行文件名说明
MySQLInstanceConfig.exeDB2 Control CenterMySQLInstanceConfig 用于配置实例。DB2 使用 Control Center 配置实例。请参阅本文中的 数据库配置 一节。
myisamchk.exe检查 MyISAM 表的完整性DB2 使用 Control Center 完成同样的检查。对于索引可使用 Index 窗口中的 Check Index,或者使用 Tablspace 窗口中的 Check Index。对于表,可以使用 CHECK 约束来确保完整性。 SET INTEGRITY 也用于表的完整性。比如通过对表执行 Control Center 操作可以设置表的完整性。

db2dart 工具可用于检查数据库的结构完整性。与 db2dart 类似的是 inspect。检查备份镜像的完整性使用 db2ckbkp 命令。要检查整个数据库的健康状况,可使用 Health Center GUI。

myisampack.exe压缩 MyISAM 表在创建表的语句中使用 VALUE COMPRESSION ,可以在列或表级别上使用节省空间的行格式来减少空间占用。需要使用 Backup & Restore 数据库 API 来提供压缩,从而减少空间。
mysql.exeMySQL 的 Windows 客户机DB2 Runtime Client —— 一种单独的产品,可访问远程 DB2 数据库单独安装。
mysqladmin.exeMySQL Admin 客户机 —— 使用该命令可以执行的管理任务包括:

创建数据库

删除数据库

刷新日志、表、状态

处理列表

关闭数据库

启动从数据库

停止从数据库

DB2 命令提示符基本上可用于客户机和管理任务。要访问 DB2 命令提示符,可切换到 All Programs -> IBM DB2 -> Command Line Tools。
mysqlbinlog.exeMysqlbinlog 至少有三种用途:

记录所有的数据库事务

备份和恢复

复制

DB2 Express 支持联机日志和存档日志。出于 MySQL 相同的目的,所有事务都被记录下来。DB2 Express 支持单个事务的无限多个活动日志,所以长期事务永远不会失败(只要物理磁盘空间足够)。支持的最大日志空间为 256 GB。

此外,默认情况下 DB2 把错误记录到 db2diag.log 中。可使用工具 db2diag 分析这个日志文件。根据严重程度,错误可分为以下级别:

Info

Warning

Error

Severe

Critical

Event

mysqlcheck.exe检查数据库是否健康,比如检查、修复、分析或优化表。比如 mysqlcheck -u root -p awtDB2 没有直接匹配的程序检查表错误。所有的表错误都被写入 db2diag.log 文件,用时间戳指向转储记录。这个转储文件不是为胆小的人准备的,它们是供 DB2 支持代表使用的。不过可以对表执行一些操作,比如:

Quiesce —— 比如,quiesce tablespaces for table <Schema Name>.<Table Name> Share|Intent to Update|Exclusive

Reorg —— 比如,reorg table <Schema Name>.<Table Name>

Reorg index —— 比如,reorg indexes all for table <Schema Name>.<Table Name> allow no access

Runstats —— 比如,runstats on table <Schema Name>.<Table Name> on all columns allow write access

Set Integriy —— 比如,set integrity for <Schema Name>.<Table Name> off no access cascade deferred

mysqld.exe运行 MySQL 服务器 —— 有很多选项(若想了解更多信息,请输入 mysqld --help --verbose)可使用 db2start 启动 DB2 Express 数据库实例。也可通过将 db2instance 环境参数设置为需要启动的实例来启动多个实例。停止实例使用 db2stop。

注意,启动和停止 DB2 实例需要 SYSADM、SYSCTRL 或 SYSMAINT 权限。

mysqldump.exe该工具导出表、表中的某些行、整个数据库或者一组数据库DB2 Export —— DB2 Express 支持导出四种格式的表或表中的某些行。受支持的四种文件格式为:

IXF —— 集成交换格式文件

ASC —— 不带分隔符的 ASCII 文件

DEL —— 带分隔符的 ASCII 文件

WSF —— Worksheet 格式的文件

导出操作很简单,比如要从 Employee 表导出数据:export to employee.del of del messages emp.log select * from allanwtham.employee。

mysqlimport.exe该工具用于在纯文本文件中导入数据 DB2 Import —— 支持与 DB2 Export 相同的四种格式
NALoadDB2 Load —— 向数据库中高速加载数据
NAAuditdb2audit —— 用于检查未知的或者意料之外的数据访问的审计设施
NAExplaindb2expln —— 解释静态 SQL 语句选择的访问计划
NAConfiguration Assistantdb2ca —— 配置远程访问
NAdb2adminDB2 Admin Server (DAS) —— 有关的管理任务

数据库表类型

MySQL 对不同的用途使用不同的表。可以在一个数据库中混合使用这些不同的表。具体使用哪种表取决于用户的需要。表类型如下(最常见的是 MyISAM 和 InnoDB):

SAM

SAM 是较早期的表类型。这种表类型主要用于支持遗留数据库。它已经被 MyISAM 表类型代替,并且计划不再支持这种表类型。

MyISAM

MyISAM 是默认的表类型。要在 MyISAM 中创建表,可以保留默认值或者用 ENGINE 关键字明确指定,比如:


清单 3. 使用 MyISAM 创建表
Create table employee ( 
 empno int not null auto_increment primary key, 
 firstnme varchar(30), 
 lastname varchar(30), 
 deptno int 
 ) engine=MYISAM; 

MyISAM 表类型是非事务安全的表类型。对于高度并发的多重读/写,不应该选择这种表类型。MyISAM 不能保证原子性、一致性、隔离和持久性 (ACID)。不过,MyISAM 允许进行压缩和全文搜索。对于 MyISAM 类型,索引存储在 .MYI (MyIndex) 文件中,数据本身存储在 MYD (MyData) 文件中。MyISAM 表类型没有表空间的概念 —— 所有的数据/索引都存储在文件中。检查/修复 MyISAM 使用工具 myisamchk,压缩表使用 myisampack。MyISAM 中只有一种锁定机制,即表级锁定,因此不适用于访问比较频繁的环境。

InnoDB

越来越多的企业需要使用这种表类型。InnoDB 是一种兼容 ACID 的表类型。InnoDB 表类型在表空间中存储数据和索引,允许使用不同文件系统中的多个表。最初由 InnoBase Oy 开发的这种表类型适合于快速、高性能、事务安全的环境。InnoDB 使用更小粒度的锁定机制 —— 行级别的锁定。详情请参阅 锁定机制 一节。

创建 InnoDB 类型的表要在 ENGINE 表创建语句选项中指定关键字 Innodb,请参阅下面的例子。


ENGINE
Create table employee ( 
 empno int not null auto_increment primary key, 
 firstnme varchar(30), 
 lastname varchar(30), 
 deptno int 
 ) engine=InnoDB; 

BerkeleyDB (BDB)

这种表类型的用途与 InnoDB 相同。由 Sleepycat 开发的这种表类型存储在 B 树中,它支持页级锁定。

Merge

Merge 类型是 MyISAM 的衍生物,用途是绕开单个巨大文件问题。它允许位于不同磁盘上的多个 MyISAM 文件根据创建表语句中的 MERGE 规范来执行查询。要插入合并表,则必须将 INSERT_METHOD 选项指定为 first 或 last。默认情况下只能执行 Select、Update 和 Delete。

Heap

将整个表保存在内存中。使用这种类型速度很快,但是一旦崩溃就会造成数据丢失。最好暂时性地使用这种类型。

利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务 DB2 Express 将数据存储在容器中,无论该容器是系统管理的容器,还是数据库管理的容器。默认情况下,在 DB2 Express 中创建的表与 ACID 兼容。没有用于创建与 ACID 不兼容的表的选项。创建表的语法非常类似。

比如要创建表 employee:


清单 5. 在 DB2 Express 中创建表
Create sequence sq1; 
Create table employee1 
  (empno int not null default next_value of sq1, 
  firstnme varchar(30), 
  lastname varchar(30), 
  deptno int, 
  primary key (empno)) 

ACID —— 定义
请参阅 ACID 的 wiki 定义。

原子性 —— 事务中的任务要么全部完成,要么全部不做。事务必须是完整的,否则必须取消(回滚)。

一致性 —— 每个事务必须保持数据库的完整性约束 —— 声明的一致性规则。不能存放矛盾的数据。

隔离 —— 两个同时执行的事务不能互相干扰。事务内部的中间结果对其他事务不可见。

持久性 —— 完成的事务不能再撤销或者丢弃结果。它们必须(比方说)在 DBMS 崩溃并重启后保持不变。

DB2 Express 支持四种表类型,即:

临时表 ——

也称为公用表表示,这种表是 SQL 语句执行期间存在的临时表。可以根据需要引用任意多次,不需要重新计算。可使用这种表类型代替视图。

类型化的表 ——

使用结构化类型定义的表。结构化类型是包含一系列属性的数据类型。

概括表 ——

定义从查询中派生的表。主要在数据仓库环境中使用。

物化查询表 ——

定义从多表查询中派生的表。主要用于数据仓库环境。

除了表以外,还有其他类型的数据库对象,如索引、函数、触发器和存储过程等,这些对象共同组成了实用的关系数据库。表 4 比较了两种数据库的这些对象:

表 4. 数据库对象的异同
对象名MySQL 中的可用对象DB2 Express 中的可用对象说明
用户定义表×两种类型的用户定义表

临时表(公用表表示)

类型化表

MySQL 中的派生表有点类似于 DB2 Express 临时表

用户定义函数两者都支持标量和列用户定义函数
用户定义数据类型×三种用户定义的数据类型 ——

显式类型

结构化类型

引用类型

存储过程DB2 Express 支持 SQL 和 Java 存储过程
视图MySQL 从版本 5 开始支持视图
可更新视图DB2 Express 还支持类型化视图
触发器MySQL 从版本 5 开始支持触发器
递归 SQL×与递归函数类似,DB2 Express 的递归 SQL 可递归地使用结果集来得到最终结果
序列×MySQL 本身不支持序列,但是可以 模拟一个序列

数据库配置

MySQL 中需要在配置文件 my.cnf 的 [mysqld] 节指定配置参数。Windows 系统上提供了多个配置样板,如 my-medium.ini,还提供了其他 my-xxx.ini 文件。MySQL 在 Windows 上提供了示例配置文件 *.ini。下面给出了 my-medium.ini 中的一节。注意,不需要取消所选相关表类型的注释。


清单 6. MySQL 示例配置文件
... 
# The MySQL server 
[mysqld] 
port = 3306 
socket = /tmp/mysql.sock 
skip-locking 
key_buffer = 16M 
max_allowed_packet = 1 M 
table_cache = 64 
sort_buffer_size = 512K 
net_buffer_length = 8K 
read_buffer_size = 256K 
read_rnd_buffer_size = 512K 
myisam_sort_buffer_size = 8M 
... 
# Uncomment the following if you are using InnoDB tables 
#innodb_data_home_dir = /usr/local/var/ 
#innodb_data_file_path = ibdata1:10M:autoextend 
#innodb_log_group_home_dir = /usr/local/var/ 
#innodb_log_arch_dir = /usr/local/var/ 
# You can set .._buffer_pool_size up to 50 - 80 % 
# of RAM but beware of setting memory usage too high 
#innodb_buffer_pool_size = 16M 
#innodb_additional_mem_pool_size = 2M 
# Set .._log_file_size to 25 % of buffer pool size 
#innodb_log_file_size = 5M 
#innodb_log_buffer_size = 8M 
#innodb_flush_log_at_trx_commit = 1 
#innodb_lock_wait_timeout = 50 

利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

对于 DB2 Express,可使用 Control Cenrter 或者命令行处理程序(CLP)获取和设置数据库或者实例的配置文件。要使用 Control Center 配置数据库,请右击选中的数据库并选择 Configure Parameters。


图 15. 右击配置参数
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

可以动态改变这些值(一些参数只有在数据库管理程序停止并重新启动后才生效)。配置参数可分为以下几类:

应用程序

环境

日志

维护

性能

恢复


图 16. DB2 Express 数据库配置参数
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

图片看不清楚?请点击这里查看原图(大图)。

也可用 CLP 查询和设置配置参数。更新数据库配置的语法如下:


清单 7. 更新 db 配置的语法
 
 >>-UPDATE--+-DATABASE-+--+-CONFIGURATION-+----------------------> 
      '-DB-------' +-CONFIG--------+ 
             '-CFG-----------' 
                  .----------------------. 
                  V           | 
    >--+---------------------+--USING----config-keyword value-+-----> 
    '-FOR--database-alias-' 
    .-IMMEDIATE-. 
    >--+-----------+----------------------------------------------->< 
    '-DEFERRED--' 

比方说,如果要查询管理服务器参数,可使用 db2 get admin cfg 命令。要获得数据库 SAMPLE 的 db 配置,则可以使用 db2 get db cfg for SAMPLE 命令。

因为 IBM 也在致力于 DB2 UDB 产品的自动化研究,DB2 UDB Express 通过 DB2 Control Center 提供了自动化特性。使用向导(如 Create Database with Automation、Design Advisor、Configuration Advisor、Configure Automatic Maintenance 等)是自动化常见管理任务所采用的步骤,这些管理任务包括备份、配置和数据库对象自动维护等。比如,管理员可使用 Configuration Advisor 配置数据库。这一特性就避免了管理员费尽心思地去寻找最适合数据库的配置参数。Configuration Advisor 能够建议最适用的配置参数。为了获得最优的数据库性能,建议管理员尽量使用该特性。

图形用户界面 (GUI)

GUI 管理不可避免将成为很多管理员的首选。GUI 不仅能够快捷方便地执行某些任务,而且可以在忘掉了命令语法(或者如果根本没有学习过这种命令)的时候提供帮助。通常,易用性是推动用户使用 GUI 管理工具的主要因素。

MySQL 提供的两种主要 GUI 是 MySQL Administration 和 Query Browser。那些原来管理 MySQL 的管理员并不是非常喜欢 GUI 管理。命令行通常仍然是他们的最爱。目前最新的 MySQL Administrator 是 1.1.6 版。图 17 中显示了 MySQL 的登陆页面:


图 17. MySQL Admin —— 登录
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

登录后就可以在 GUI Administrator 中执行下列任务(只是一部分):

服务控制 —— 启动和停止服务

启动参数 —— myISAM 和 InnoDB 的参数、缓冲区和缓存、日志文件、安全和网络设置

User Admin —— 为用户和组分配权限,口令管理

Health —— 内存和连接的健康性检查

备份和恢复


图 18. MySQL Admin —— 任务
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

也可使用 WAMP(目前为 1.6.0 版)提供的 phpMyAdmin。


利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

关于 DB2 Express GUI,有很多方面值得一说。所有的管理任务都可使用该 GUI 完成,其中包括一般管理、健康检查和设置等,如 图 19 所示:


图 19. DB2 Express GUI 管理 —— 不同的方面
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

在所有的管理 GUI 工具中,您可能会发现 DB2 Control Center 是最常用的。可以通过单击 Windows 桌面上右下角托盘上的绿色硬盘启动 DB2 Control Center:


图 20. DB2 Express GUI Administration - Control Center
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

DB2 Express Control Center 是与上下文有关的。右击一个项目会根据上下文产生不同的下拉菜单。比如,右击某个数据库会看到下列任务选项:


图 21. DB2 Express Control Center —— 与数据库有关的任务列表
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

DB2 Control Center 的一个优点是可使用 SHOW COMMAND 按钮查看对该任务等效的命令。有时候可以选择将命令保存到脚本中,让它在指定的时候运行。事实上,很多有用的特性这里没有提到,其中包括 Design Advisor 和 Configuration Advisor。这些特性将在后面的文章中介绍。

命令行处理程序

MySQL 提供了命令行控制台 (mysql.exe)。可以使用这个控制台执行管理任务。


图 22. MySQL 命令提示符
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

图片看不清楚?请点击这里查看原图(大图)。

利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

DB2 Express 提供了与 MySQL 类似的控制台。启动该控制台的一种方法是 All Programs -> IBM DB2 -> Command line tools -> Command Windows。

所有管理任务都可以在这个控制台中执行。


图 23. DB2 Express 命令提示符
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

图片看不清楚?请点击这里查看原图(大图)。

SQL 比较

必须承认,并非所有的 SQL 语句都能够真正从一个数据库移植到另一个数据库。对于将 SQL 从 MySQL 迁移到 DB2 Express 而言也是如此。本文将通过下面几个方面说明 SQL 语句的差别。这些只是为了缓解两种系统之间的区别、避免手足无措而进行的小小尝试。此外要注意的是,并不是 DB2 Express 支持的所有数据库特性目前都获得了 MySQL 的支持。比如,外键约束能力只能在为 MySQL 5.1 提供以下支持的情况下用于 InnoDN,如下所示:

适用于除 InnoDB 之外的所有表类型的外键

MyISAM 表的热备份

重命名数据库

列级约束

我们从以下角度看一看两者的异同:

Select 语句

标准 SQL 支持 DISTINCT、GROUP BY、ORDER BY 和 HAVING 这些关键字。MySQL 和 DB2 Express 都在这一点上提供了很好的支持。但是为了限制返回的结果集,MySQL 使用了关键字 LIMIT,而 DB2 Express 使用 FETCH FIRST n ROWS 来限制返回的结果集。如 图 24 中显示的示例 fetch:


图 24. 在 DB2 Express 中使用 Fetch n Rows
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

图片看不清楚?请点击这里查看原图(大图)。

MySQL 和 DB2 Express 都支持在 SQL 语句中使用 CASE 表达式进行条件检查。例如,可以指定符合特定条件的查询结果。下面的示例将根据收入对雇员进行分类:


清单 7. Set Transaction 的语法
Select empno, firstnme, lastname, 
  case 
   when integer (salary) > 40000 then 'High' 
   when integer (salary) > 30000 and integer (salary) < 40000 then 'Medium' 
   else 'Low' 
  end 
from employee 

此外,DB2 Express 还支持嵌套表表达式。嵌套表可以看成是在一个 SQL 语句中定义和使用的局部临时表。

MySQL 中的单值子查询 (single value subquery) 等同于 DB2 Express 中的标量全选择 (scalar full select)。

连接 —— 下表总结了 MySQL 和 DB2 Express 中的连接特性:

表 5. 连接类型
连接类型MySQLDB2 Express说明
内连接内连接表示存在于连接表中的行。传统上两者都对这种连接使用逗号。它是指定表的笛卡尔积。但在 MySQL 中也称为叉积。DB2 Express 不使用关键字 cross。
交叉连接与内连接相同。
左[外]连接左连接或左外连接表示匹配值和只出现在左表中的的值。比如在 MySQL 中,如果需要从 tableA 中选择所有不在 tableB 中的行,则使用的 SQL 语句是: select tableA.* from tableA left join tableB on tableA.id=tableB.id where tableB.id is null。
右[外]连接与左连接正好相反。表示连接表中出现的匹配值和那些仅在右表中出现的匹配值。
全[外]连接×全外连接表示连接表中出现的匹配值和那些仅在左表或右表中的某一个表中出现的匹配值。其使用具有惟一性。
直接连接×MySQL 中的 Straight join 等同于 join,只不过左表总是先于右表读取。虽然 DB2 Express 中没有使用这个关键字,但在 DB2 Express 可以完成同样的目标。
自然连接×MySQL 中的自然连接 相当于内连接。虽然 DB2 Express 中没有使用这个关键字,但在 DB2 Express 可以完成同样的目标。

可使用 GUI SQL Assist 指定连接类型。下面的例子说明如何使用 SQL Assist 设置连接选项。


图 25. 使用 SQL Assist 建立 DB2 连接
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务 

授权和权限

MySQL 中有两种级别的权限 —— 管理和用户。所有权限都可分别使用 GRANT 和 REVOKE 语句授予和收回。可以授予用户 create、select、update、delete、insert、execute、index 等权限,也可授予 alter、drop 和 shutdown 等系统权限。根用户在默认情况下具有下列权限:


图 26. MySQL 中的权限
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

DB2 Express 同时提供了授权(authorization)和权限(privileges)。授权是一组预定义的更高的管理权限,可以授予执行一般任务的用户或用户组,比如连接数据库、创建、撤销、备份和恢复数据库,而权限则包括用户权限和系统权限,通常用于对象操作。新安装的 DB2 Express 提供下列授权级别:

SYSADM - System Administration

SYSCONTROl - System Control

SYSMAINT - System Maintenance

DBADM - Database Administrator

虽然 SYSADM 具有最高的权限,但用户执行备份和恢复这类任务通常只需要 SYSMAINT 授权。因此,充分了解授权对为用户分配适当的权限非常重要。了解发出 get authorizations 命令需要什么权限,该命令用于查询系统编目表 SYSCAT.DBAUTH。图 27 显示了使用 get authorizations 命令的结果:


图 27. DB2 Express —— 当前用户的授权
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

DB2 Express 权限和 MySQL 非常类似。权限(包括用户和系统权限)可使用 GRANT 或 REVOKE 命令授予和收回。有三种类型的权限:

控制权限 —— 该权限通常保留给对象的创建者。这是所有者权限。比如,如果用户 A 创建了表 B,用户 A 就被自动授予表 B 的控制 权限。

一般权限 —— 该权限允许执行特定的任务。可通过明确或暗中授予该权限来对数据库对象执行 SELECT、UPDATE、DELETE 等任务。

暗含权限 —— 在将更高的权限授予用户时授予该权限。比如当用户执行一个包时,虽然没有明确授权,但为了使包能够成功执行,应立即自动授予隐含权限。

图 28 显示了一些可授予用户的权限。


图 28. DB2 Express —— 使用 Control Center 管理权限
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

注意,也可用 CLP 执行 GRANT 和 REVOKE 语句。

锁定机制

MySQL InnoDB 提供了事务安全的语句,支持标准 SQL-1992 中所述的四种隔离级别。为了达到事务安全,MySQL 实现了 ACID 的要求。默认情况下,MySQL 对所有事务使用 Repeatable Read 隔离级别。但可使用 Set Transaction 语句更改后续会话的隔离级别。也可在 SQL 语句中使用 SESSION 或 GLOBAL。SESSION 表示下一个链接将使用特定的隔离设置,而 GLOBAL 表示以后的所有连接都是某个隔离设置。Set Transaction 语法如 清单 8 中所示:


清单 8. Set Transaction 的语法
SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL 
  {READ UNCOMMITTED | READ COMMITTED 
  | REPEATABLE READ | SERIALIZABLE}   

针对受支持的四种隔离级别,表 6 列出了出现幻像读、脏读或不可重复读的可能性(从高到低)。

√ —— 会发生

× —— 不会发生

表 6. 隔离级别和读特征 —— 会或者不会
隔离级别幻像读不可重复读脏读
可序列化×××
可重复读××
读取提交的结果×
读取未提交的结果

利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

DB2 Express 提供了类似的隔离级别。按照从强到弱的次序分,DB2 Express 支持的四种隔离级别依次为:

可重复读 —— RR

读稳定 —— RS

游标可靠性 —— CS

未提交读 —— UR

每种隔离级别都提供了特定的事务安全,隔离级别的选择是根据更严格的隔离级别对性能的影响进行的一种权衡。比如,读取只读的查找表不需要可重复读级别,未提交读级别就足够了。嵌入式 SQL 语句的默认隔离级别为游标可靠性 (CS)。更改隔离级别的方法有两种(视情况而定):

在标准 DML 语句中可使用关键字 With 来更改级别。比如 select * from employee with UR。

如果使用命令行,那么可以输入 change isolation level 命令。

如果使用 DB2 调用级接口,那么可在 db2cli.ini 文件中指定隔离级别。

表 7 列出了 DB2 的隔离级别和读特征,按照从强到弱的顺序依次为:

√ —— 会发生

× —— 不会发生

表 7. 隔离级别和读特征 —— 会或者不会
隔离级别幻像读不可重复读脏读
可重复读(RR)×××
读稳定(RS)××
游标可靠性(CS)×
未提交读(UR)

DB2 Express 支持表空间和表的显式锁定。如果 DB2 发现锁定某一个表比锁定该表中多个行的代价要小,那么 DB2 Express 会提供锁扩展。Locklist 和 Maxlocks 这些参数会影响锁扩展的方式。

PHP 开发支持

随着 PHP 在 Web 开发平台上的应用越来越广泛,开发人员常常希望获得能够快速安装且功能强大的开发环境,以避免争议。MySQL 在分发包中提供了一种快速安装工具 WAMP(目前版本为 1.6.1)。IBM 和 Zend Core 共同提供了类似的 PHP 开发组合。


利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

Zend Core for IBM 是一种无缝集成、开箱即用、易于安装并且支持 PHP 的开发和生产环境。该产品包括与 IBM DB2 Universal Database 和 IBM Cloudscape® 的紧密集成、对 XML 和 Web 服务的本机支持、支持日渐广泛被采用的 Service Oriented Architectures (SOA)。Zend Core for IBM 为数据库驱动的应用程序提供了快速开发和部署的基础。通过提供一致的 API,它提供了从易于使用的轻量级 Cloudscape 数据库到战略数据库 DB2 的升级路径。

LOB、视频/音频管理

虽然目前数据管理领域中呼声最高的是企业内容管理(ECM)领域,但 MySQL 在很大程度上是一种结构化数据管理产品。ECM 用户必须设法找到支持 MySQL 作为后端系统的 ECM 处理程序。MySQL 使用 BLOB 数据类型系列处理非结构化数据。


利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

另一方面,IBM 提供了 DB2 Content Manager 作为结构化和非结构化数据的内容资料库。为了满足目前的随需应变业务要求 —— 80% 的数据都是非结构化形式的,人们认为企业内容管理(ECM)在企业环境中是不可或缺的。如果对企业内容¹管理(ECM)有正确的理解,那么您可能认为从头建立一个企业内容管理系统很简单。我们来看看一家典型企业中的各种数字内容、遇到的困难以及 IBM DB2 Content Manager 提供的丰富功能如何满足这些需要。

内容可能指:

发票、结算表、报告

传真和扫描的书面内容

SCM、CRM 和 ERP 数据

电子邮件和桌面文档

音频、视频和图片

Web 内容

客户经常面临的问题是数据使用不同的格式,存在于不同的位置。没有集中的资料库,用户就无法有效地共享数据,更不用说通过协作确保畅通的业务连续性了。无法使用业务过程工作流,用户就很难创建或者搜索 Web 内容。这是多数企业都会遇到的困境。

构建时要考虑可伸缩性,DB2 Content Manager 采用了一个三层的体系结构,其中包括 Library Server 中的几种索引和 Resource Manager 中的对象存储。灵活的用户授权许可允许为适应业务的需要部署任意多个 Resource Managers。比方说,纽约的总部可使用两个 Resource Manager,而西雅图、亚特兰大和范库弗各有一个 Resource Manager。为降低网络通信量,可以提供局域网缓冲。IBM DB2 Content Manager 支持层次化存储管理,可以按照适当的周期定期将对象迁移到外部设备上。比方说,可以在 DASD 上保存六个月后将对象迁移到外部磁盘上,保存三年后再迁移到磁带上保存七年。

IBM DB2 Content Manager 还提供了身份验证、权限和访问控制,保证用户和用户组操作的安全。从文档级动作,创建、读取、更新、删除、打印的细粒度权限和注释修改,到 Resource Manager 集合访问控制,IBM DB2 Content Manager 都可以保证正确实现访问和使用。用户可打开事件日志来进一步审计内容系统。

从内容的创建到管理和分发,IBM 生命期管理主要依赖于 IBM DB2 Content Manager 提供的丰富特性。下面是 IBM DB2 Content Manager 的一些特性:

即时扫描

成批装载不同格式的内容

通过 Windows 客户机、web 客户机和 portlet 提供了本机内容查看器

检入/检出

过程工作流(可用 GUI 工作流创建程序建立)

版本化

注释

LDAP 集成

事件日志(用户活动和管理活动)

与 SAP & Siebel 的集成

与记录管理(如 IBM DB2 Record Management)的集成,以确保符合规章

与客户现有业务线的集成

包括在应用程序内部或者其他 Web 服务中使用的 Web 服务接口

XML 模式映射

如果进行内部内容系统开发,IBM DB2 Express 会为此提供 LOB/CLOB 数据类型。

数据类型

MySQL 和 DB2 Express 具有类似的数据类型。要注意的是,DB2 Expess 同时支持内建数据类型和用户定义数据类型(前面已经提到)。关于 DB2 Express 数据类型如何组织的概述,请参见 图 29:


图 29. DB2 Express —— 数据类型层次结构
利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

在进行了上面的查看之后,现在让我们将 MySQL 数据类型映射到 DB2 Express 中的等效类型(或者最匹配的类型),然后比较以下三个主要种类。

数字

字符串

时间和日期

关于数据库对象的异同,请参阅 表 8。

备份和恢复

备份和恢复是在介质失效的情况下确保业务连续性的基本要求。MySQL 备份和恢复选项在很大程度上依赖于底层的表类型。比如 MyISAM 和 InnoDB 表类型都允许进行数据库冷备份。不过从 MySQL 4.0 版开始,还以商业附件的形式提供了 InnoDB 热备份(InnoDB 是 Oracle Corp. 的产品),但 MySQL 5.1 仍然不支持 MyISAM 的热备份。


利用 MySQL 技能学习 DB2 Express: DB2 与 MySQL 的管理任务和基本任务

DB2 Express 从一开始就提供了冷备份和热备份。所谓冷备份,就是当用户处于离线状态时,不访问正在备份的数据库。这就意味着,使用冷备份时,如果遇到介质失效的情况,上一次备份以后的数据将丢失。而热备份允许事务继续写入日志,无需关闭正在备份的数据库。通过适当的规划,热备份可以确保介质失效的情况下不损失数据。 24x7 环境需要这种备份。

DB2 Express 有两种记录法,即循环记录法和存档记录法。循环记录法(循环写入,写满后覆盖)可以进行冷备份,档案记录法(存档已经提交的内容)支持热备份。

选择冷备份还是热备份取决于在 db config 中设置的参数:

LOGFILSIZ —— 日志文件大小。总数为 4KB(默认 250)

LOGPRIMARY —— 主日志个数(模认为 3)

LOGSECOND —— 主日志填满时可以分配的次级日志个数。

NEWLOGPATH —— 更改后续日志文件存储的位置。只在数据库重新激活时生效。

MIRRORLOGPATH —— 写入日志的后备路径,以免单点失效。

OVERFLOWLOGPATH —— 指定前滚操作中的日志位置,以便在多个位置访问日志。

冷备份很简单。首先关闭数据库,然后发出备份命令,如 db2 backup database <db_name> to c:\backup。

热备份同样简单。首先打开日志保留参数,然后发出命令,如 db2 backup database online <db_name> to c:\backup。

冷备份和热备份都可以通过在 DB2 Express Control Center 中点击几下鼠标来完成。另外,DB2 Express 还提供了增量备份和 delta 备份。

增量备份 —— 备份最近一次成功的完全备份以后的所有更改。

Delta 备份 —— 备份上一次成功的完全备份、增量备份或 delta 备份以后的所有更改

关于备份和恢复问题,将在以后的文章进行更详细的讨论。

结束语

本文考察了 MySQL 和 DB2 Express 数据库服务器的某些方面,并从安装、系统结构(如内存和容器)、备份和恢复方法等方面进行了简单的比较。前面已经提到,本文的目的是让现在的 MySQL 数据库管理员对 DB2 Express 有一般性的了解。

Tags:利用 MySQL 技能

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接