1) 鎵鏈夌殑“瀵硅薄”閮藉湪瀹冭嚜宸辯殑table涓紝娌℃湁鍐椾綑銆?br>2) 鏁版嵁搴撻氬父鐢盓-R鍥劇敓鎴愩?br>3) 綆媧侊紝鏇存柊灞炴ч氬父鍙渶瑕佹洿鏂板緢灝戠殑璁板綍銆?br>4) Join鎿嶄綔姣旇緝鑰楁椂銆?br>5) Select錛宻ort浼樺寲鎺柦姣旇緝灝戙?br>6) 閫傜敤浜嶰LTP搴旂敤銆?br>闈炴爣鍑嗗寲鐨勭壒鐐癸細
1) 鍦ㄤ竴寮犺〃涓瓨鍌ㄥ緢澶氭暟鎹紝鏁版嵁鍐椾綑銆?br>2) 鏇存柊鏁版嵁寮閿寰堝ぇ錛屾洿鏂頒竴涓睘鎬у彲鑳戒細鏇存柊寰堝琛紝寰堝璁板綍銆?br>3) 鍦ㄥ垹闄ゆ暟鎹槸鏈夊彲鑳戒涪澶辨暟鎹?br>4) Select錛宱rder鏈夊緢澶氫紭鍖栫殑閫夋嫨銆?br>5) 閫傜敤浜嶥SS搴旂敤銆?br>
1) 瀵筄LTP浣跨敤鏍囧噯鍖栵紝瀵笵SS浣跨敤闈炴爣鍑嗗寲2.1.2 鏁版嵁綾誨瀷
2) 浣跨敤鐗╁寲瑙嗗浘銆侻ySQL涓嶇洿鎺ユ敮鎸佽鏁版嵁搴撶壒鎬э紝浣嗘槸鍙互鐢∕yISAM琛ㄤ唬鏇褲?br>3) 鍐椾綑涓浜涙暟鎹湪琛ㄦ牸涓紝渚嬪灝唕ef_id鍜宯ame瀛樺湪鍚屼竴寮犺〃涓備絾鏄娉ㄦ剰鏇存柊闂銆?br>4) 瀵逛簬涓浜涚畝鍗曠殑瀵硅薄錛岀洿鎺ヤ嬌鐢╲alue浣滀負寤恒備緥濡侷P address絳?br>5) Reference by PRIMARY/UNIQUE KEY銆侻ySQL鍙互浼樺寲榪欑鎿嶄綔錛屼緥濡傦細
java 浠g爜
- select city_name
- from city,state
- where state_id=state.id and state.code=‘CA’” converted to “select city_name from city where state_id=12
1) 浣跨敤姝g‘鍚堥傜殑綾誨瀷錛屼笉瑕佸皢鏁板瓧瀛樺偍涓哄瓧絎︿覆銆?br>2) 灝藉彲鑳藉湴浣跨敤鏈鏈夋晥(鏈灝?鐨勬暟鎹被鍨嬨侻ySQL鏈夊緢澶氳妭鐪佺鐩樼┖闂村拰鍐呭瓨鐨勪笓涓氬寲綾誨瀷銆?br>3) 灝藉彲鑳戒嬌鐢ㄨ緝灝忕殑鏁存暟綾誨瀷浣胯〃鏇村皬銆備緥濡傦紝MEDIUMINT緇忓父姣擨NT濂戒竴浜涳紝鍥犱負MEDIUMINT鍒椾嬌鐢ㄧ殑絀洪棿瑕佸皯25%銆?br>4) 濡傛灉鍙兘錛屽0鏄庡垪涓篘OT NULL銆傚畠浣夸換浣曚簨鎯呮洿蹇屼笖姣忓垪鍙互鑺傜渷涓浣嶃傛敞鎰忓鏋滃湪搴旂敤紼嬪簭涓‘瀹為渶瑕丯ULL錛屽簲璇ユ鏃犵枒闂嬌鐢ㄥ畠錛屽彧鏄伩鍏?榛樿鍦板湪鎵鏈夊垪涓婃湁瀹冦?br>5) 瀵逛簬MyISAM琛紝濡傛灉娌℃湁浠諱綍鍙橀暱鍒?VARCHAR銆乀EXT鎴朆LOB鍒?錛屼嬌鐢ㄥ浐瀹氬昂瀵哥殑璁板綍鏍煎紡銆傝繖姣旇緝蹇絾鏄笉騫稿湴鍙兘浼氭氮璐逛竴浜涚┖闂淬傚嵆浣夸綘宸茬粡鐢–REATE閫夐」璁¬ARCHAR鍒?span class=hilite1>ROW_FORMAT=fixed錛屼篃鍙互鎻愮ず鎯充嬌鐢ㄥ浐瀹氶暱搴︾殑琛屻?br>6) 浣跨敤sample character set錛屼緥濡俵atin1銆傚敖閲忓皯浣跨敤utf-8錛屽洜涓簎tf-8鍗犵敤鐨勭┖闂存槸latin1鐨?鍊嶃傚彲浠ュ湪涓嶉渶瑕佷嬌鐢╱tf-8鐨勫瓧孌典笂闈嬌鐢╨atin1錛屼緥濡俶ail錛寀rl絳夈?br>
1) MySQL鍙細浣跨敤鍓嶇紑錛屼緥濡俴ey(a, b) …where b=5 灝嗕嬌鐢ㄤ笉鍒扮儲寮曘?br>2) 瑕侀夋嫨鎬х殑浣跨敤绱㈠紩銆傚湪鍙樺寲寰堝皯鐨勫垪涓婁嬌鐢ㄧ儲寮曞茍涓嶆槸寰堝ソ錛屼緥濡傛у埆鍒椼?br>3) 鍦║nique鍒椾笂瀹氫箟Unique index銆?br>4) 閬垮厤寤虹珛浣跨敤涓嶅埌鐨勭儲寮曘?br>5) 鍦˙tree index涓紙InnoDB浣跨敤Btree錛夛紝鍙互鍦ㄩ渶瑕佹帓搴忕殑鍒椾笂寤虹珛绱㈠紩銆?br>6) 閬垮厤閲嶅鐨勭儲寮曘?br>7) 閬垮厤鍦ㄥ凡鏈夌儲寮曠殑鍓嶇紑涓婂緩绔嬬儲寮曘備緥濡傦細濡傛灉瀛樺湪index錛坅錛宐錛夊垯鍘繪帀index錛坅錛夈?br>8) 鎺у埗鍗曚釜绱㈠紩鐨勯暱搴︺備嬌鐢╧ey錛坣ame錛?錛夛級鍦ㄦ暟鎹殑鍓嶉潰鍑犱釜瀛楃寤虹珛绱㈠紩銆?br>9) 瓚婃槸鐭殑閿艱秺濂斤紝鏈濂戒嬌鐢╥nteger銆?br>10) 鍦ㄦ煡璇腑瑕佷嬌鐢ㄥ埌绱㈠紩錛堜嬌鐢╡xplain鏌ョ湅錛夛紝鍙互鍑忓皯璇葷鐩樼殑嬈℃暟錛屽姞閫熻鍙栨暟鎹?br>11) 鐩歌繎鐨勯敭鍊兼瘮闅忔満濂姐侫uto_increment灝辨瘮uuid濂姐?br>12) Optimize table鍙互鍘嬬緝鍜屾帓搴廼ndex錛屾敞鎰忎笉瑕侀綣佽繍琛屻?br>13) Analyze table鍙互鏇存柊鏁版嵁銆?br>2.2 Designing queries
1) 鍦ㄦ湁index鐨勬儏鍐典笅錛屽敖閲忎繚璇佹煡璇嬌鐢ㄤ簡姝g‘鐨刬ndex銆傚彲浠ヤ嬌鐢‥XPLAIN select …鏌ョ湅緇撴灉錛屽垎鏋愭煡璇€?br>2) 鏌ヨ鏃朵嬌鐢ㄥ尮閰嶇殑綾誨瀷銆備緥濡俿elect * from a where id=5錛?濡傛灉榪欓噷id鏄瓧絎︾被鍨嬶紝鍚屾椂鏈塱ndex錛岃繖鏉℃煡璇㈠垯浣跨敤涓嶅埌index錛屼細鍋氬叏琛ㄦ壂鎻忥紝閫熷害浼氬緢鎱€傛紜殑搴旇鏄?… where id=”5” 錛屽姞涓婂紩鍙瘋〃鏄庣被鍨嬫槸瀛楃銆?br>3) 浣跨敤--log-slow-queries –long-query-time=2鏌ョ湅鏌ヨ姣旇緝鎱㈢殑璇彞銆傜劧鍚庝嬌鐢╡xplain鍒嗘瀽鏌ヨ錛屽仛鍑轟紭鍖栥?br>3. 鏈嶅姟鍣ㄧ浼樺寲
--character-set錛氬鏋滄槸鍗曚竴璇█浣跨敤綆鍗曠殑character set渚嬪latin1銆傚敖閲忓皯鐢║tf-8錛寀tf-8鍗犵敤絀洪棿杈冨銆?br>--memlock錛氶攣瀹歁ySQL鍙兘榪愯鍦ㄥ唴瀛樹腑錛岄伩鍏峴wapping錛屼絾鏄鏋滃唴瀛樹笉澶熸椂鏈夊彲鑳藉嚭鐜伴敊璇?br>--max_allowed_packet錛氳瓚沖澶э紝浠ラ傚簲姣旇緝澶х殑SQL鏌ヨ錛屽鎬ц兘娌℃湁澶ぇ褰卞搷錛屼富瑕佹槸閬垮厤鍑虹幇packet閿欒銆?br>--max_connections錛歴erver鍏佽鐨勬渶澶ц繛鎺ャ傚お澶х殑璇濅細鍑虹幇out of memory銆?br>--table_cache錛歁ySQL鍦ㄥ悓涓鏃墮棿淇濇寔鎵撳紑鐨則able鐨勬暟閲忋傛墦寮table寮閿姣旇緝澶с備竴鑸緗負512銆?br>--query_cache_size錛?鐢ㄤ簬緙撳瓨鏌ヨ鐨勫唴瀛樺ぇ灝忋?br>--datadir錛歮ysql瀛樻斁鏁版嵁鐨勬牴鐩綍錛屽拰瀹夎鏂囦歡鍒嗗紑鍦ㄤ笉鍚岀殑紓佺洏鍙互鎻愰珮涓鐐規ц兘銆?br>4. 瀛樺偍寮曟搸浼樺寲
1) 涓嶆敮鎸佷簨鍔★紝瀹曟満浼氱牬鍧忚〃4.1.1.2 Typical MyISAM usages
2) 浣跨敤杈冨皬鐨勫唴瀛樺拰紓佺洏絀洪棿
3) 鍩轟簬琛ㄧ殑閿侊紝騫跺彂鏇存柊鏁版嵁浼氬嚭鐜頒弗閲嶆ц兘闂
4) MySQL鍙紦瀛業ndex錛屾暟鎹敱OS緙撳瓨
1) 鏃ュ織緋葷粺4.1.2 MyISAM浼樺寲瑕佺偣
2) 鍙鎴栬呯粷澶ч儴鍒嗘槸璇繪搷浣滅殑搴旂敤
3) 鍏ㄨ〃鎵弿
4) 鎵歸噺瀵煎叆鏁版嵁
5) 娌℃湁浜嬪姟鐨勪綆騫跺彂璇?鍐?br>
1) 澹版槑鍒椾負NOT NULL錛屽彲浠ュ噺灝戠鐩樺瓨鍌ㄣ?br>2) 浣跨敤optimize table鍋氱鐗囨暣鐞嗭紝鍥炴敹絀洪棽絀洪棿銆傛敞鎰忎粎浠呭湪闈炲父澶х殑鏁版嵁鍙樺寲鍚庤繍琛屻?br>3) Deleting/updating/adding澶ч噺鏁版嵁鐨勬椂鍊欑姝嬌鐢╥ndex銆備嬌鐢ˋLTER TABLE t DISABLE KEYS銆?br>4) 璁劇疆myisam_max_[extra]_sort_file_size瓚沖澶э紝鍙互鏄捐憲鎻愰珮repair table鐨勯熷害銆?br>4.1.3 MyISAM Table Locks
1) 閬垮厤騫跺彂insert錛寀pdate銆?br>2) 鍙互浣跨敤insert delayed錛屼絾鏄湁鍙兘涓㈠け鏁版嵁銆?br>3) 浼樺寲鏌ヨ璇彞銆?br>4) 姘村鉤鍒嗗尯銆?br>5) 鍨傜洿鍒嗗尯銆?br>6) 濡傛灉閮戒笉璧蜂綔鐢紝浣跨敤InnoDB銆?br>4.1.4 MyISAM Key Cache
1) 璁劇疆key_buffer_size variable銆侻yISAN鏈涓昏鐨刢ache璁劇疆錛岀敤浜庣紦瀛楳yISAM琛ㄦ牸鐨刬ndex鏁版嵁錛岃鍙傛暟鍙MyISAM鏈夊獎鍝嶃傞氬父鍦ㄥ彧浣跨敤MyISAM鐨凷erver涓緗?5-33%鐨勫唴瀛樺ぇ灝忋?br>2) 鍙互浣跨敤鍑犱釜涓嶅悓鐨凨ey Caches錛堝涓浜沨ot data錛夈?br>a) SET GLOBAL test.key_buffer_size=512*1024;2) Preload index鍒癈ache涓彲浠ユ彁楂樻煡璇㈤熷害銆傚洜涓簆reloading index鏄『搴忕殑錛屾墍浠ラ潪甯稿揩銆?br>
b) CACHE INDEX t1.i1, t2.i1, t3 IN test;a) LOAD INDEX INTO CACHE t1, t2 IGNORE LEAVES錛?br>
1) 鏀寔浜嬪姟錛孉CID錛屽閿?br>2) Row level locks銆?4.2.1.2 InnoDB Good For
3) 鏀寔涓嶅悓鐨勯殧紱葷駭鍒?br>4) 鍜孧yISAM鐩告瘮闇瑕佽緝澶氱殑鍐呭瓨鍜岀鐩樼┖闂淬?br>5) 娌℃湁閿帇緙┿?br>6) 鏁版嵁鍜岀儲寮曢兘緙撳瓨鍦ㄥ唴瀛榟ash琛ㄤ腑銆?br>
1) 闇瑕佷簨鍔$殑搴旂敤銆?br>2) 楂樺茍鍙戠殑搴旂敤銆?br>3) 鑷姩鎭㈠銆?br>4) 杈冨揩閫熺殑鍩轟簬涓婚敭鐨勬搷浣溿?br>4.2.2 InnoDB浼樺寲瑕佺偣
1) 灝介噺浣跨敤short錛宨nteger鐨勪富閿?br>2) Load/Insert鏁版嵁鏃舵寜涓婚敭欏哄簭銆傚鏋滄暟鎹病鏈夋寜涓婚敭鎺掑簭錛屽厛鎺掑簭鐒跺悗鍐嶈繘琛屾暟鎹簱鎿嶄綔銆?br>3) 鍦↙oad鏁版嵁鏄負璁劇疆SET UNIQUE_CHECKS=0錛孲ET FOREIGN_KEY_CHECKS=0錛屽彲浠ラ伩鍏嶅閿拰鍞竴鎬х害鏉熸鏌ョ殑寮閿銆?br>4) 浣跨敤prefix keys銆傚洜涓篒nnoDB娌℃湁key鍘嬬緝鍔熻兘銆?br>4.2.3 InnoDB鏈嶅姟鍣ㄧ璁懼畾
innodb_buffer_pool_size錛氳繖鏄疘nnoDB鏈閲嶈鐨勮緗紝瀵笽nnoDB鎬ц兘鏈夊喅瀹氭х殑褰卞搷銆傞粯璁ょ殑璁劇疆鍙湁8M錛屾墍浠ラ粯璁ょ殑鏁版嵁搴撹緗笅闈nnoDB鎬ц兘寰堝樊銆傚湪鍙湁InnoDB瀛樺偍寮曟搸鐨勬暟鎹簱鏈嶅姟鍣ㄤ笂闈紝鍙互璁劇疆60-80%鐨勫唴瀛樸傛洿綺劇‘涓鐐癸紝鍦ㄥ唴瀛樺閲忓厑璁哥殑鎯呭喌涓嬮潰璁劇疆姣擨nnoDB tablespaces澶?0%鐨勫唴瀛樺ぇ灝忋?br>5. 緙撳瓨
innodb_data_file_path錛氭寚瀹氳〃鏁版嵁鍜岀儲寮曞瓨鍌ㄧ殑絀洪棿錛屽彲浠ユ槸涓涓垨鑰呭涓枃浠躲傛渶鍚庝竴涓暟鎹枃浠跺繀欏繪槸鑷姩鎵╁厖鐨勶紝涔熷彧鏈夋渶鍚庝竴涓枃浠跺厑璁歌嚜鍔ㄦ墿鍏呫傝繖鏍鳳紝褰撶┖闂寸敤瀹屽悗錛岃嚜鍔ㄦ墿鍏呮暟鎹枃浠跺氨浼氳嚜鍔ㄥ闀匡紙浠?MB涓哄崟浣嶏級浠ュ綰抽澶栫殑鏁版嵁銆備緥濡傦細 innodb_data_file_path=/disk1/ibdata1:900M;/disk2/ibdata2:50M:autoextend涓や釜鏁版嵁鏂囦歡鏀懼湪涓嶅悓鐨勭鐩樹笂銆傛暟鎹鍏堟斁鍦╥bdata1涓紝褰撹揪鍒?00M浠ュ悗錛屾暟鎹氨鏀懼湪ibdata2涓備竴鏃﹁揪鍒?0MB錛宨bdata2灝嗕互8MB涓哄崟浣嶈嚜鍔ㄥ闀褲傚鏋滅鐩樻弧浜嗭紝闇瑕佸湪鍙﹀鐨勭鐩樹笂闈㈠鍔犱竴涓暟鎹枃浠躲?br>
innodb_data_home_dir錛氭斁緗〃絀洪棿鏁版嵁鐨勭洰褰曪紝榛樿鍦╩ysql鐨勬暟鎹洰褰曪紝璁劇疆鍒板拰MySQL瀹夎鏂囦歡涓嶅悓鐨勫垎鍖哄彲浠ユ彁楂樻ц兘銆?br>
innodb_log_file_size錛氳鍙傛暟鍐沖畾浜唕ecovery speed銆傚お澶х殑璇漴ecovery灝變細姣旇緝鎱紝澶皬浜嗗獎鍝嶆煡璇㈡ц兘錛屼竴鑸彇256M鍙互鍏奸【鎬ц兘鍜宺ecovery鐨勯熷害
銆?br>innodb_log_buffer_size錛氱鐩橀熷害鏄緢鎱㈢殑錛岀洿鎺ュ皢log鍐欓亾紓佺洏浼氬獎鍝岻nnoDB鐨勬ц兘錛岃鍙傛暟璁懼畾浜唋og buffer鐨勫ぇ灝忥紝涓鑸?M銆傚鏋滄湁澶х殑blob鎿嶄綔錛屽彲浠ラ傚綋澧炲ぇ銆?br>
innodb_flush_logs_at_trx_commit=2錛?璇ュ弬鏁拌瀹氫簡浜嬪姟鎻愪氦鏃跺唴瀛樹腑log淇℃伅鐨勫鐞嗐?br>1) =1鏃訛紝鍦ㄦ瘡涓簨鍔℃彁浜ゆ椂錛屾棩蹇楃紦鍐茶鍐欏埌鏃ュ織鏂囦歡錛屽鏃ュ織鏂囦歡鍋氬埌紓佺洏鎿嶄綔鐨勫埛鏂般俆ruly ACID銆傞熷害鎱€?br>2) =2鏃訛紝鍦ㄦ瘡涓簨鍔℃彁浜ゆ椂錛屾棩蹇楃紦鍐茶鍐欏埌鏂囦歡錛屼絾涓嶅鏃ュ織鏂囦歡鍋氬埌紓佺洏鎿嶄綔鐨勫埛鏂般傚彧鏈夋搷浣滅郴緇熷穿婧冩垨鎺夌數鎵嶄細鍒犻櫎鏈鍚庝竴縐掔殑浜嬪姟錛屼笉鐒朵笉浼氫涪澶變簨鍔°?br>3) =0鏃訛紝 鏃ュ織緙撳啿姣忕涓嬈″湴琚啓鍒版棩蹇楁枃浠訛紝騫朵笖瀵規棩蹇楁枃浠跺仛鍒扮鐩樻搷浣滅殑鍒鋒柊銆備換浣昺ysqld榪涚▼鐨勫穿婧冧細鍒犻櫎宕╂簝鍓嶆渶鍚庝竴縐掔殑浜嬪姟innodb_file_per_table錛氬彲浠ュ瓨鍌ㄦ瘡涓狪nnoDB琛ㄥ拰瀹冪殑绱㈠紩鍦ㄥ畠鑷繁鐨勬枃浠朵腑銆?br>
transaction-isolation=READ-COMITTED: 濡傛灉搴旂敤紼嬪簭鍙互榪愯鍦≧EAD-COMMITED闅旂綰у埆錛屽仛姝よ瀹氫細鏈変竴瀹氱殑鎬ц兘鎻愬崌銆?br>
innodb_flush_method錛?璁劇疆InnoDB鍚屾IO鐨勬柟寮忥細
1) Default – 浣跨敤fsync錛堬級銆?br>2) O_SYNC 浠ync妯″紡鎵撳紑鏂囦歡錛岄氬父姣旇緝鎱€?br>3) O_DIRECT錛屽湪Linux涓婁嬌鐢―irect IO銆傚彲浠ユ樉钁楁彁楂橀熷害錛岀壒鍒槸鍦≧AID緋葷粺涓娿傞伩鍏嶉澶栫殑鏁版嵁澶嶅埗鍜宒ouble buffering錛坢ysql buffering 鍜孫S buffering錛夈?br>innodb_thread_concurrency錛?InnoDB kernel鏈澶х殑綰跨▼鏁般?br>1) 鏈灝戣緗負(num_disks+num_cpus)*2銆?br>2) 鍙互閫氳繃璁劇疆鎴?000鏉ョ姝㈣繖涓檺鍒?br>
鍊?
銆銆銆 渚嬪瓙1銆佸拰UNITS鍚堢敤錛屾寚瀹氭棩鏈熸垨鏃墮棿鍗曚綅(year,month,day,hour,minute,seond,fraction)錛?
銆銆銆銆銆銆銆let tmp_date = today + 3 UNITS day
銆銆銆 渚嬪瓙2銆乴et tmp_date = MDY(10,30,2002)銆銆-- 2002-10-30
銆銆銆 渚嬪瓙3銆乴et tmp_date = today + interval(7) day to day銆--褰撳墠鏃墮棿鍔犱笂7澶╋紱
銆銆銆銆銆銆銆娉細璇ュ姛鑳戒笌1鐩鎬技錛?
銆銆銆 渚嬪瓙4銆丒XTEND杞崲鏃ユ湡鎴栨棩鏈熸椂闂村?
銆銆銆銆銆銆銆let tmp_inthour = extend(datetime1,hour to hour)
銆 3銆佷唬鏁板嚱鏁?
銆銆銆1錛堿BS(COLNAME/EXPRESSION)錛氥銆銆銆銆銆 鍙栫粷瀵瑰?
銆銆銆2錛塎OD錛圕OLNAME/EXPRESSION錛孌IVISOR錛夈銆榪斿洖闄や互闄ゆ暟鍚庣殑妯★紙浣欐暟錛?
銆銆銆3錛塒OW錛圕OLNAME/EXPRESSION錛孍XPONENT錛夈 榪斿洖涓涓肩殑鎸囨暟鍐?
銆銆銆銆 渚嬪瓙錛歭et tmp_float = pow(2,3)銆--8.00000000
銆銆銆4錛塕OOT錛圕OLNAME/EXPRESSION錛孾index]錛夈 榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忕殑鏍瑰?
銆銆銆5錛塖QRT錛圕OLNAME/EXPRESSION錛夈銆銆銆銆銆榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忕殑騫蟲柟鏍瑰?
銆銆銆6錛塕OUND錛圕OLNAME/EXPRESSION錛孾factor]錛?榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忕殑鍦嗘暣鍖栧?
銆銆銆7錛塗RUNC錛圕OLNAME/EXPRESSION錛孾factor]錛?榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忕殑鎴熬鍊?
銆銆銆銆 璇存槑錛氫笂涓よ呬腑FACTOR鎸囧畾灝忔暟浣嶆暟錛岃嫢涓嶆寚瀹氾紝鍒欎負0錛涜嫢涓鴻礋鏁幫紝鍒欐暣鍖栧埌灝忔暟鐐瑰乏杈癸紱
銆銆銆銆 娉細ROUND鏄湪鎸囧畾浣嶄笂榪涜4鑸?鍏ワ紱TRUNC鏄湪鎸囧畾浣嶄笂鐩存帴鎴柇錛?
銆銆銆銆銆let tmp_float = round(4.555,2) --4.56
銆銆銆銆銆let tmp_float = trunc(4.555,2) --4.55
銆 4銆佹寚鏁頒笌瀵規暟鍑芥暟
銆銆銆1錛塃XP錛圕OLNAME/EXPRESSION錛夈銆銆銆榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忕殑鎸囨暟鍊?
銆銆銆2錛塋OGN錛圕OLNAME/EXPRESSION錛夈銆銆 榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忕殑鑷劧瀵規暟鍊?
銆銆銆3錛塋OG10錛圕OLNAME/EXPRESSION錛夈銆銆榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忕殑搴曟暟浣?0鐨勫鏁板?
銆 5銆佷笁瑙掑嚱鏁?
銆銆銆1錛塁OS錛圧ADIAN EXPRESSION錛夈銆銆銆銆榪斿洖鎸囧畾寮у害琛ㄨ揪寮忕殑浣欏雞鍊?
銆銆銆2錛塖IN錛圧ADIAN EXPRESSION錛夈銆銆銆銆姝e雞
銆銆銆3錛塗AN錛圧ADIAN EXPRESSION錛夈銆銆銆銆姝e垏
銆銆銆4錛堿COS錛圧ADIAN EXPRESSION錛夈銆銆銆 鍙嶄綑寮?
銆銆銆5錛堿SIN錛圧ADIAN EXPRESSION錛夈銆銆銆 鍙嶆寮?
銆銆銆6錛堿TAN錛圧ADIAN EXPRESSION錛夈銆銆銆 鍙嶆鍒?
銆銆銆7錛堿TAN2錛圶錛孻錛夈銆銆銆銆銆銆銆銆銆 榪斿洖鍧愭爣錛圶錛孻錛夌殑鏋佸潗鏍囪搴︾粍浠?
銆 6銆佺粺璁″嚱鏁?
銆銆銆1錛塕ANGE錛圕OLNAME錛夈銆銆 榪斿洖鎸囧畾鍒楃殑鏈澶у間笌鏈灝忓間箣宸?= MAX錛圕OLNAME錛?MIN
錛圕OLNAME錛?
銆銆銆2錛塚ARIANCE錛圕OLNAME錛夈銆榪斿洖鎸囧畾鍒楃殑鏍鋒湰鏂瑰樊錛?
銆銆銆3錛塖TDEV錛圕OLNAME錛夈銆銆 榪斿洖鎸囧畾鍒楃殑鏍囧噯鍋忓樊錛?
銆 7銆佸叾浠栧嚱鏁?
銆銆銆1錛塙SER銆銆銆銆銆銆銆銆銆銆銆銆銆銆榪斿洖褰撳墠鐢ㄦ埛鍚?
銆銆銆2錛塇EX錛圕OLNAME/EXPRESSION錛夈銆銆 榪斿洖鎸囧畾鍒楁垨琛ㄨ揪寮忕殑鍗佸叚榪涘埗鍊?
銆銆銆3錛塋ENGTH錛圕OLNAME/EXPRESSION錛夈銆榪斿洖鎸囧畾瀛楃鍒楁垨琛ㄨ揪寮忕殑闀垮害
銆銆銆4錛塗RIM錛圕OLNAME/EXPRESSION錛夈銆銆鍒犻櫎鎸囧畾鍒楁垨琛ㄨ揪寮忓墠鍚庣殑瀛楃
銆銆銆5錛塁OLNAME/EXPRESSION || COLNAME/EXPRESSION銆榪斿洖騫跺湪涓璧風殑瀛楃錛?
浜屻両DS鍐呴儴鍑芥暟
銆 1銆丏BSERVERNAME銆銆銆榪斿洖鏁版嵁搴撴湇鍔″櫒鍚嶃let tmp_char=DBSERVERNAME
銆 2銆丼ITENAME銆銆銆銆銆榪斿洖鏁版嵁搴撴湇鍔″櫒鍚嶃let tmp_char=SITENAME
銆銆銆璇存槑錛氫袱鑰呭姛鑳界浉鍚岋紱
銆 3銆丏BINFO錛堚楽PECIAL_KEYWORD')銆銆銆榪斿洖鍙叧閿瓧鍊?
銆銆銆渚嬪瓙1錛氳繑鍥炴暟鎹腑姣忎釜琛ㄧ殑DBSPACE鍚嶇О
銆銆銆銆 select dbinfo('dbspace',partnum),tabname from systables
銆銆銆銆銆where tabid>99 and tabtype='T'銆(OK)
銆銆銆渚嬪瓙2錛氳繑鍥炰換浣曡〃涓彃鍏ョ殑鏈鍚庝竴涓猄ERIAL鍊?
銆銆銆銆銆select dbinfo('sqlca.sqlerrd1') from systables where tabid = 1
銆銆銆渚嬪瓙3錛氳繑鍥炴渶鍚庝竴涓猄ELECT錛孖NSERT錛孶PDATE錛孌ELETE鎴朎XECUTE PROCEDURE璇彞澶勭悊鐨勮鏁幫紱
銆銆銆銆銆select dbinfo('sqlca.sqlerrd2') from systables where tabid=1;
聽
One of the more difficult concepts in Informix's handling of date and time values concerns the use of the variables in arithmetic or relational expressions. You can add or subtract DATE and DATETIME variables from each other. You can add or subtract an INTERVAL to a DATE or DATETIME. Table 1 shows the results of different types of operations on DATE and DATETIME values.
Table 1. Operations on DATE and DATETIME Variables
First Operand |
Operation |
Second Operand |
Result |
DATE |
- |
DATETIME |
INTERVAL |
DATETIME |
- |
DATE |
INTERVAL |
DATE |
+- |
INTERVAL |
DATETIME |
DATETIME |
- |
DATETIME |
INTERVAL |
DATETIME |
+- |
INTERVAL |
DATETIME |
INTERVAL |
+ |
DATETIME |
DATETIME |
INTERVAL |
+- |
INTERVAL |
INTERVAL |
DATETIME |
- |
CURRENT |
INTERVAL |
CURRENT |
- |
DATETIME |
INTERVAL |
INTERVAL |
+ |
CURRENT |
DATETIME |
CURRENT |
+- |
INTERVAL |
DATETIME |
DATETIME |
+- |
UNITS |
DATETIME |
INTERVAL |
+- |
UNITS |
INTERVAL |
INTERVAL |
*/ |
NUMBER |
INTERVAL |
Notice that it's always okay to subtract one DATE or DATETIME value from another, as shown here: In such a case, the result is always an INTERVAL variable. It would make no sense to add two DATE or DATETIME values together. What could such an addition represent? When working with INTERVAL values, sometimes it is necessary to specify the precision with which you are dealing. For example, suppose you have the following field defined: To add 10 days to the lead time you could use a SQL statement like this: You could achieve the same results using the UNITS keyword: Like most other programming languages, SQL often allows you to achieve the same ends with different statements. Sometimes the choice is one of personal style. Other times, one format fits in better with a structured style of code writing than another format does. There are several built-in functions that affect date and time calculations. They can apply to either DATE or DATETIME values, with some exceptions. The TODAY function returns a DATE data value representing the current date. For example, you could execute a SQL function like this: The CURRENT function is similar to the TODAY function, except it returns a DATETIME value. Without specific qualifiers, the default is YEAR to FRACTION(3). You can change the precision by using the same YEAR to FRACTION qualifiers as you use for DATETIMES. Thus, this would be legal: The DATE function takes as input a non-DATE value such as CHAR, DATETIME, or INTEGER and returns the corresponding DATE value. For example, the following SQL translates a CHARACTER value to a DATE: This function returns an integer representing the day of the month. Here's an example: This performs like the DAY function except it returns an integer between 1 and 12 representing the month: This returns an integer representing the day of the week, with 0 being Sunday and 6 being Saturday: This function is like the ones above, only it returns a four-digit integer representing the year. This function allows you to use different precisions in a DATETIME than you have specified in the declaration of the variable. It uses the same FIRST to LAST syntax as the DATETIME variables. This function is used to adjust the precision of a DATETIME variable to match the precision of an INTERVAL that you are using in a calculation. If the INTERVAL value has fields that are not part of the DATETIME value that you are using in a calculation, use the EXTEND function to adjust the precision of the DATETIME. EXTEND can either increase or decrease the precision of a DATETIME, depending upon the FIRST and LAST values. Suppose myvariable is declared as DATETIME YEAR to DAY. If you want to add or subtract an INTERVAL defined as MINUTE, you first have to extend the DATETIME as follows: The resulting value will be DATETIME YEAR to MINUTE. The MDY function converts three-integer values into a DATE format. The first integer is the month and must evaluate to an integer in the range 1鈥?2. The second integer is the day and must evaluate to a number in the range from 1 to however many days are in the particular month (28鈥?1). The third expression is the year and must be a four-digit integer. Thus, the following MDY functions would each be valid: returns a DATE of "07/01/50" returns a DATE equal to the first day of the current month in the current year Informix has extensive capabilities for manipulating dates and times, which can make for long and complex SQL statements. Using the three time-related data types and the time-related functions and keywords, you can accomplish almost any type of manipulation of time data. Unfortunately, getting there may be cryptic and painful. If you regularly do extensive date and time manipulation, you should understand all of the intricacies of these data structures.
Have fun!聽CURRENT - "07/01/1950" = INTERVAL (my age)
"12/25/2000" 鈥?CURRENT = INTERVAL (how long till Xmas?)
UNITS Keyword
lead_time INTERVAL DAY to DAY
SELECT lead_time + INTERVAL(10) DAY to DAY
FROM orders
SELECT lead_time + 10 UNITS DAY
FROM orders
Functions
TODAY
UPDATE member SET change_date = TODAY
WHER member_number = 12345
CURRENT
SELECT * from member
WHERE elapsed_time < CURRENT YEAR to DAY
DATE
SELECT * from member
WHERE enrollment_date > DATE('01/01/99')
DAY
SELECT * from member
WHERE DAY(enrollment_date) > DAY(CURRENT)
MONTH
SELECT * from member
WHERE enrollment_date > MONTH('01/01/99')
WEEKDAY
SELECT * from member
WHERE WEEKDAY(enrollment_date) > WEEKDAY(CURRENT)
YEAR
EXTEND
SELECT EXTEND(myvariable, YEAR to MINUTE) 鈥?
INTERVAL(5) MINUTE to MINUTE
FROM member
MDY
MDY(7,1,1950)
MDY(MONTH(TODAY), 1, YEAR(TODAY))
聽