ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美一区二区三区少妇,久久免费福利,国产成人精彩在线视频九色http://www.aygfsteel.com/kxbin/category/49611.html成功留给有准备的äº?/description>zh-cnWed, 26 Sep 2012 23:46:34 GMTWed, 26 Sep 2012 23:46:34 GMT60使用INSERT语句向表中插入数据(MSSQLSERVER版)http://www.aygfsteel.com/kxbin/articles/387989.htmlkxbinkxbinTue, 18 Sep 2012 07:09:00 GMThttp://www.aygfsteel.com/kxbin/articles/387989.htmlhttp://www.aygfsteel.com/kxbin/comments/387989.htmlhttp://www.aygfsteel.com/kxbin/articles/387989.html#Feedback0http://www.aygfsteel.com/kxbin/comments/commentRss/387989.htmlhttp://www.aygfsteel.com/kxbin/services/trackbacks/387989.html阅读全文

]]>
oracle学习½W”è®°http://www.aygfsteel.com/kxbin/articles/384940.htmlkxbinkxbinMon, 06 Aug 2012 12:56:00 GMThttp://www.aygfsteel.com/kxbin/articles/384940.htmlhttp://www.aygfsteel.com/kxbin/comments/384940.htmlhttp://www.aygfsteel.com/kxbin/articles/384940.html#Feedback0http://www.aygfsteel.com/kxbin/comments/commentRss/384940.htmlhttp://www.aygfsteel.com/kxbin/services/trackbacks/384940.html2.oracle安装会自动生成sys用户和system用户。sys用户是超¾U§ç”¨æˆøP¼Œå…ähœ‰æœ€é«˜æƒé™ï¼Œå…ähœ‰sysdba角色。有create database的权限,该用户默认密码是manageråQ›system用户是管理操作员åQŒå…·æœ‰sysoper角色åQŒæ²¡æœ‰create database的权限,默认密码 change_on_install;å¯ÒŽ(gu¨©)•°æ®åº“的维护一般用system用户ž®±å¯ä»¥äº†ã€?br />3.sql*plus常用命ä×oåQ?br /> 1åQ‰è¿žæŽ¥å‘½ä»?br />    conn 用户å?密码@¾|‘络服务å?[as sysdba/sysoper]åQŒå½“用特权用戯‚ín份连接时åQŒå¿…™åÕd¸¦ä¸Šas sysdba或是as sysoper;
    disc[onnect]åQŒç”¨äºŽæ–­å¼€ä¸Žå½“前数据库的连接;
    passw[ord]åQŒç”¨äºŽä¿®æ”¹ç”¨æˆïLš„密码åQŒå¦‚果要想修改其他用æˆïLš„密码åQŒéœ€è¦ç”¨sys/systemç™Õd½•åQ?br />    show user 昄¡¤ºå½“前用户名;
    exit 断开与数据库的连接,同时退出;
 2åQ‰æ–‡ä»¶æ“ä½œå‘½ä»?br />    startå’Œ@åQŒè¿è¡Œsql脚本。例如:start d:\a.sql
    editåQŒç¼–辑指定的sql脚本
    spoolåQŒå°†sql*plus屏幕上的内容输出到指定文件中厅R€‚例å¦?spool d:\aa.sql åQŒåƈ输入 spool offã€?br /> 3åQ‰æ˜¾½Cºå’Œè®„¡½®çŽ¯å¢ƒå˜é‡
     linesizeåQŒè®¾¾|®æ˜¾½Cø™¡Œçš„宽度,默认æ˜?0个字½W¦ã€‚例如:show linesizeåQŒset linesize 90åQ?br />     pagesizeåQŒè®¾¾|®æ¯™å‰|˜¾½Cºçš„行数目,默认æ˜?4ã€?br />4.用户½Ž¡ç†
 1åQ‰åˆ›å»ºç”¨æˆ?create user xiaohuang identified by m123åQŒxiaohuang用户名,m123密码åQŒå¯†ç ä¸èƒ½ä»¥æ•°å­—开头。具有dbaçš„æƒé™æ‰èƒ½åˆ›å»ºç”¨æˆøP¼›
 2åQ‰ä¿®æ”¹å¯†ç ?如果¾l™è‡ªå·×ƒ¿®æ”¹å¯†ç ç›´æŽ¥ç”¨ password 用户名;如果¾l™åˆ«äºÞZ¿®æ”¹å¯†ç ?alter user xiaohuang indentified by m345åQŒå¿…™åÕd…·æœ‰dba权限的äh才能修改ã€?br /> 3åQ‰åˆ é™¤ç”¨æˆøP¼Œéœ€å…ähœ‰drop user 权限åQŒdrop user 用户å?cascade。cascade¾U§è”删除åQŒå¦‚果已¾låˆ›å»ø™¡¨åˆ™ä¸€òq¶åˆ é™¤ã€?br />5.权限½Ž¡ç†åˆ†äØ“¾pȝ»Ÿæƒé™å’Œå¯¹è±¡æƒé™?br /> 1åQ‰ç³»¾lŸæƒé™ï¼Œç”¨æˆ·å¯ÒŽ(gu¨©)•°æ®åº“的相å…Ïxƒé™ï¼ˆæ‰§è¡Œç‰¹å®š¾cÕdž‹sql命ä×o的权利,用于控制用户执行一个或一¾l„数据库操作。常见系¾lŸæƒé™åŒ…括create session ˜qžæŽ¥æ•°æ®åº“ï¼›create view 创徏视图åQ›create procedure 创徏˜q‡ç¨‹ã€å‡½æ•°ã€åŒ…åQ›create table 创徏表)åQ›æŸ¥è¯¢æ•°æ®å­—典视图system_privilege_mapåQŒèŽ·å¾—æƒé™ä¿¡æ¯ï¼›æ”¶å›ž¾pȝ»Ÿæƒé™ revoke create session from 用户å?åQŒæ”¶å›žç”¨æˆ·å1的连接数据库的权限;
 2åQ‰å¯¹è±¡æƒé™ï¼Œç”¨æˆ·å¯¹å…¶ä»–用æˆïLš„æ•°æ®å¯¹è±¡æ“ä½œçš„æƒé™ã€‚常见对象权限包括alter修改表结构;delete删除数据åQ›update修改数据åQ›select 查询数据åQ›insert插入数据åQ›index在表上徏立烦引;references 引用åQ›execute执行åQ?br />   å¯¹ç”¨æˆ¯‚®¿é—®æƒé™æ›´åŠ ç²¾¾l†æŽ§åˆ?grant update on emp(sal) to 用户名;回收权限revoke select on emp from 用户å?br /> 3åQ‰å¯¹è±¡æƒé™çš„ä¼ é€?grant select on emp to 用户å? with grant option
 4åQ‰ç³»¾lŸæƒé™çš„ä¼ é€?grant connect to 用户å? with admin option
6.角色åQŒä¸€¾l„权限的集合。分为预定义角色和自定义角色。徏立权限的½Ž¡ç†
 1åQ‰é¢„定义角色分类åQšdba拥有全部权限åQŒæ˜¯¾pȝ»Ÿæœ€é«˜æƒé™ï¼Œåªæœ‰dba才可以创建数据库¾l“æž„åQ›resource只可以创建实体,不可以创建数据库¾l“æž„åQ›connect可以ç™Õd½•oracleåQŒä¸å¯ä»¥åˆ›å¾å®žä½“åQŒä¹Ÿä¸å¯ä»¥åˆ›å»ºæ•°æ®åº“¾l“æž„ã€‚å¯¹äºŽæ™®é€šç”¨æˆøP¼ŒæŽˆäºˆconnectåQŒresource权限åQ›å¯¹äºŽdba½Ž¡ç†ç”¨æˆ·åQŒæŽˆäºˆconnectåQŒresourceåQŒdba权限ã€?br /> 2åQ‰è‡ªå®šä¹‰è§’色。徏立角è‰ÔŒ¼ˆä¸éªŒè¯ï¼‰åQŒå¦‚果角色是公用的角è‰ÔŒ¼Œå¯ä»¥é‡‡ç”¨ä¸éªŒè¯çš„æ–¹å¼å»ºç«‹è§’色 create role 角色å?not identified;建立角色(数据库验è¯?åQŒé‡‡ç”¨è¿™æ ïLš„æ–¹å¼åQŒè§’色名、口令存攑֜¨æ•°æ®åº“中。当‹È€‹z»è¯¥è§’色æ—Óž¼Œå¿…须提供口ä×o。在建立˜q™ç§è§’色æ—Óž¼Œéœ€è¦äؓ其提供口ä»?create role 角色å?identified by shunping.
  3åQ‰è‡ªå®šä¹‰è§’色授权åQŒå½“建立角色æ—Óž¼Œè§’色没有ä»ÖM½•权限åQ›ç»™è§’色授予权限和给用户授予权限没有太多区别åQŒä½†æ˜¯è¦æ³¨æ„åQŒç³»¾lŸæƒé™çš„unlimited tablespace和对象权限的with grant option 选项不能授予角色的。grant select on scott.emp to 角色名;grant create session to 角色å?with admin option;
  4)把角色赋¾l™ç”¨æˆ?grant 角色å?to 用户å?with admin option;
  5)删除角色 drop role 角色å?br />7.profile½Ž¡ç†ç”¨æˆ·å£ä×o
 1åQ‰profile是口令限åˆÓž¼Œèµ„源限制的命令集合,当徏立数据库æ—Óž¼Œoracle会自动徏立名¿UîCØ“defaultçš„profile。当建立用户没有指定profile选项åQŒé‚£oracle会将default分配¾l™ç”¨æˆ—÷€?br /> 2åQ‰è̎号锁定,指定该èÌŽæˆïL™»å½•时最多可以输入密码的‹Æ¡æ•°åQŒä¹Ÿå¯ä»¥æŒ‡å®šç”¨æˆ·é”å®šçš„æ—¶é—ß_¼ˆå¤©ï¼‰ä¸€èˆ¬ç”¨dbaçš„èín份去执行该命令;例如指定tea˜q™ä¸ªç”¨æˆ·æœ€å¤šåªèƒ½å°è¯?‹Æ¡ç™»å½•,锁定旉™—´ä¸?天。创建profileæ–‡äšgåQ?span style="color: red; ">create profile lock_account limit failed_login_attempts 3 password_lock_time 2; alter user tea profile lock_account.
 3åQ‰ç»™è´¦å·è§£é” alter user tea account unlockåQ?br /> 4åQ‰ç»ˆæ­¢å£ä»?br />      ä¸ÞZº†è®©ç”¨æˆ·å®šæœŸä¿®æ”¹å¯†ç å¯ä»¥ä‹É用终止口令的指ä×o来完成,同样˜q™ä¸ªå‘½ä×o也需要dbaíw«ä†¾æ¥æ“ä½œã€?br />      例如åQŒç»™ç”¨æˆ·tea创徏一个profileæ–‡äšgåQŒè¦æ±‚改用户每隔10å¤©è¦ä¿®æ”¹è‡ªå®¶çš„ç™»å½•å¯†ç ï¼Œå®½é™æœŸäØ“2天ã€?span style="color: red; ">create profile myprofile limit password_left_time 10 password_grace_time 2åQ›alter user tea profile myprofileã€?br /> 5åQ‰å£ä»¤åކå?br />     å¦‚果希望用户在修改密码时åQŒä¸èƒ½ä‹É用以前ä‹É用过的密码,可ä‹É用口令历åÔŒ¼Œ˜q™æ ·oraclež®×ƒ¼šž®†å£ä»¤ä¿®æ”¹çš„ä¿¡æ¯å­˜æ”¾åˆ°æ•°æ®å­—å…æ€¸­åQŒè¿™æ ·å½“用户修改密码æ—Óž¼Œoraclež®×ƒ¼šå¯ÒŽ(gu¨©)–°æ—§å¯†ç è¿›è¡Œæ¯”较,当发现新旧密码一æ äh—¶åQŒå°±æç¤ºç”¨æˆ·é‡æ–°è¾“入密码ã€?br />     ä¾‹å­åQ?span style="color: red; ">create profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10。password_reuse_time //指定口ä×o可重用时间即10天后ž®±å¯ä»¥é‡ç”¨ã€?br /> 6åQ‰åˆ é™¤profile drop profile password_history [cascade] ¾U§è”删除ã€?br />8.oracle数据¾cÕdž‹
   1.charåQŒå®šé•¿ï¼Œæœ€å¤?000字符åQŒæ±‰å­—占2个字½W¦ã€‚查询效率比varchar¾cÕdž‹åQ›æ’入的数据不èƒö则自动补全;
   2.varcharåQŒå˜é•¿ï¼Œæœ€å¤?000字符åQ?br />   3.clobåQŒå­—½W¦åž‹å¤§å¯¹è±¡ï¼Œæœ€å¤?GåQ?br />9.保存ç‚?
   1)savepoint aa 创徏保存点;
   2åQ‰rollback to aa 回滚。如果已¾læäº¤commitåQŒåˆ™ä¿å­˜ç‚¹ä¸å­˜åœ¨åQŒä¸èƒ½å†ä½¿ç”¨å›žæ»šã€‚rollback 回滚所有事åŠ?
10.删除数据
   1åQ‰delete from student。删除所有记录,表结构还在,写日志,可以恢复的。速度慢;
   2åQ‰drop table student。删除表的结构和数据åQ?br />   3åQ‰truncate table student 删除表中的所有记录,表结构还在,不写日志åQŒæ— æ³•找回删除的记录åQŒé€Ÿåº¦å¿«ï¼›
11.只读事务
    指只允许执行查询的操作,而不允许执行ä»ÖM½•å…¶ä»–dml操作的事务。ä‹É用只è¯ÖMº‹åŠ¡å¯ä»¥ç¡®ä¿ç”¨æˆ·åªèƒ½å–å¾—æŸæ—‰™—´ç‚¹çš„æ•°æ® set transaction read onlyã€?br />12.sys用户和system用户区别
  1åQ‰å­˜å‚¨çš„æ•°æ®çš„重要性不同ã€?br />     sys:所有oracleçš„æ•°æ®å­—å…¸çš„åŸø™¡¨å’Œè§†å›ùNƒ½å­˜æ”¾åœ¨sys用户中,˜q™äº›åŸø™¡¨å’Œè§†å›‘Ö¯¹äºŽoracle的运行时臛_…³é‡è¦åQŒç”±æ•°æ®åº“自å·Þq»´æŠ¤ï¼Œä»ÖM½•用户都不能手动更攏V€‚sys用户拥有dbaåQŒsysdbaåQŒsysoper角色或权限,是oracle权限最高用戗÷€?br />     systemåQšç”¨äºŽå­˜æ”¾æ¬¡ä¸€¾U§çš„内部数据åQŒå¦‚oracle的一些特性或工具的管理信息。system用户拥有dbaåQŒsysdba角色或系¾lŸæƒé™ã€?br />  2åQ‰æƒé™çš„不同
     sys用户必须以as sysdba或assysoper形式ç™Õd½•åQŒä¸èƒ½ä»¥normal方式ç™Õd½•数据库ã€?br />     system如果正常ç™Õd½•åQŒå®ƒå…¶å®žž®±æ˜¯ä¸€ä¸ªæ™®é€šçš„dba用户åQŒä½†æ˜¯å¦‚果以as sysdbaç™Õd½•åQŒå…¶¾l“果实际上它是作为sys用户ç™Õd½•çš„ã€?br />13.sysdbaå’Œsysoper权限区别
   ¾pȝ»Ÿæƒé™        sysdba                                               sysoper
                       startupåQˆå¯åŠ¨æ•°æ®åº“åQ?                         startup 
                       ShutdownåQˆå…³é—­æ•°æ®åº“åQ?                     shutdown
                       alter database open/mount/backup     alter database open/mount/backup
                       æ”¹å˜å­—符é›?                                          不能
                       create database                                  ä¸èƒ½åˆ›å¾æ•°æ®åº?/span>
    区别             drop database                                     不能删除数据åº?/span>
                       create spfile                                        create spfile
                       alter database archivelogåQˆå½’档日志)  alter database archivelog
                       alter database recover(恢复数据åº?      åªèƒ½å®Œå…¨æ¢å¤,不能执行不完全恢å¤?/span>
                       æ‹¥æœ‰ restricted sessionåQˆä¼šè¯é™åˆÓž¼‰       拥有restricted session权限
                       å¯ä»¥è®©ç”¨æˆ·ä½œä¸ºsys用户˜qžæŽ¥                    å¯ä»¥˜q›è¡Œä¸€äº›åŸºæœ¬çš„æ“ä½œåQ?br />                                                                                 ä½†ä¸èƒ½æŸ¥çœ‹ç”¨æˆäh•°æ?/span>
                       ç™Õd½•之后用户是sys                                ç™Õd½•之后用户public
14.逻辑备䆾
    é€»è¾‘备䆾是指使用工具exportž®†æ•°æ®å¯¹è±¡çš„¾l“构和数据导出到文äšg的过½E‹ï¼Œé€»è¾‘恢复是指当数据库对象被误操作而损坏后使用工具import利用备䆾的文件把数据对象导入到数据库的过½E‹ã€‚物理备份即可在数据库open的状态下˜q›è¡Œä¹Ÿå¯åœ¨å…³é—­æ•°æ®åº“˜q›è¡ŒåQŒä½†æ˜¯é€»è¾‘备䆾和恢复只能在open的状态下˜q›è¡Œã€?br />15.oracle导出åQŒåˆ†ä¸ºå¯¼å‡ø™¡¨åQŒå¯¼å‡ºæ–¹æ¡ˆï¼Œå¯¼å‡ºæ•°æ®åº“方式ã€?br />     å¯¼å‡ºä½¿ç”¨exp命ä×o来完成,该命令常用的选项有:
      useridåQšç”¨äºŽæŒ‡å®šæ‰§è¡Œå¯¼å‡ºæ“ä½œçš„用户名,口ä×oåQŒè¿žæŽ¥å­—½W¦ä¸²åQ?br />      tablesåQšç”¨äºŽæŒ‡å®šæ‰§è¡Œå¯¼å‡ºæ“ä½œçš„表;
      owneråQšç”¨äºŽæŒ‡å®šæ‰§è¡Œå¯¼å‡ºæ“ä½œçš„æ–ÒŽ(gu¨©)¡ˆåQ?br />      full=y:用于指定执行导出操作的数据库åQ?br />      inctypeåQšç”¨äºŽæŒ‡å®šæ‰§è¡Œå¯¼å‡ºæ“ä½œçš„增量¾cÕdž‹
      rowsåQšç”¨äºŽæŒ‡å®šæ‰§è¡Œå¯¼å‡ºæ“ä½œæ˜¯å¦è¦å¯¼å‡ºè¡¨ä¸­çš„æ•°æ®ï¼›rows=nåªå¯¼å‡ø™¡¨çš„结æž?br />      fileåQšç”¨äºŽæŒ‡å®šå¯¼å‡ºæ–‡ä»¶åã€?br />16.导出è¡?需要切换到oracle安装目录下的bin目录
   1åQ‰å¯¼å‡ø™‡ªå·Þqš„è¡?exp userid=scott/tiger@oracle tables=(emp) file=d:\e1.dmp
   2)导出其他æ–ÒŽ(gu¨©)¡ˆçš„表。如果用戯‚¦å¯¼å‡ºå…¶ä»–æ–ÒŽ(gu¨©)¡ˆçš„表åQŒåˆ™éœ€è¦dba的权限或是exp_full_database的权限,比如systemž®±å¯ä»¥å¯¼å‡ºscott的表。exp userid=system/manager@oracle tables=(scott.emp) file=d:\e2.dmp
   3åQ‰å¯¼å‡ø™¡¨çš„结æž?  exp userid=scott/tiger@oracle tables=(emp) file=d:\e3.dmp rows=n
   4)使用直接导出方式 exp userid=scott/tiger@oracle tables=(emp) file=d:\e3.dmp direct=yåQŒè¿™¿Uæ–¹å¼æ¯”默认的常规方式速度要快åQŒå½“数据量大æ—Óž¼Œå¯ä»¥è€ƒè™‘使用˜q™æ ·çš„æ–¹å¼ï¼Œ˜q™æ—¶éœ€è¦æ•°æ®åº“的字½W¦é›†è¦ä¸Žå®¢æˆ·ç«¯å­—½W¦é›†å®Œå…¨ä¸€è‡ß_¼Œå¦åˆ™ä¼šæŠ¥é”™ã€?br />17.oracle导出æ–ÒŽ(gu¨©)¡ˆåQŒå¯¼å‡ºæ–¹æ¡ˆæ˜¯æŒ‡ä‹É用export工具导出一个方案或是多个方案中的所有对象(表,索引åQŒçº¦æ?..åQ‰å’Œæ•°æ®ã€‚åÆˆå­˜åˆ°æ–‡äšgä¸?br />  1åQ‰å¯¼å‡ø™‡ªå·Þqš„æ–ÒŽ(gu¨©)¡ˆ exp scott/tiger@oracle owner=scott file=d:\scott.dmp
  2)导出其他æ–ÒŽ(gu¨©)¡ˆ 如果用户要导出其他方案,则需要dba的权限或是exp_full_database的权限,例如system用户ž®±å¯ä»¥å¯¼å‡ÞZ“Q何方案ã€?exp system/manager@oracle owner=(system,scott) file=d:\system.dmpã€?br />18.oracle导出数据åº?br />  1åQ‰å¯¼å‡ºæ•°æ®åº“是是指利用export导出所有数据库中的对象及数据,要求改用户具有dba的权限或是exp_full_database权限ã€?exp userid=system/manager@oracle full=y inctype=complete file=x.dmpã€‚æ³¨æ„ï¼šå› äØ“æ•°æ®é‡å¤§åQŒæ‰€ä»¥å¥½ç”¨çš„æ—‰™—´ä¼šè¾ƒé•ѝ€?br />19.导入åQŒå¯¼å…¥å°±æ˜¯ä‹É用工具importž®†æ–‡ä»¶ä¸­çš„对象和数据导入到数据库中,但是导入要ä‹É用文件必™åÀL˜¯exportæ‰€åˆ°å¤„çš„æ–‡ä»¶ã€‚ä¸Žå¯¼å‡ºç›æ€¼¼åQŒå¯¼å…¥ä¹Ÿåˆ†äؓ导入表,导入æ–ÒŽ(gu¨©)¡ˆåQŒå¯¼å…¥æ•°æ®åº“三种方式ã€?br />    useridåQšç”¨äºŽæŒ‡å®šæ‰§è¡Œå¯¼å…¥æ“ä½œçš„用户名,口ä×oåQŒè¿žæŽ¥å­—½W¦ä¸²åQ?br />    tablesåQšç”¨äºŽæŒ‡å®šæ‰§è¡Œå¯¼å…¥æ“ä½œçš„表;
    fromuseråQšç”¨äºŽæŒ‡å®šæºç”¨æˆ·åQ?br />    touseråQšç”¨äºŽæŒ‡å®šç›®æ ‡ç”¨æˆøP¼›
    fileåQšç”¨äºŽæŒ‡å®šå¯¼å…¥æ–‡ä»¶ååQ?br />    full=y:用于指定执行导入整个文äšg
    inctypeåQšç”¨äºŽæŒ‡å®šæ‰§è¡Œå¯¼å…¥æ“ä½œçš„增量¾cÕdž‹
    rowsåQšæŒ‡å®šæ˜¯å¦åˆ°å¯¼å…¥è¡¨è¡ŒåQˆæ•°æ®ï¼‰
    ignoreåQšå¦‚果表存在åQŒåˆ™åªå¯¼å…¥æ•°æ?br />20.oracle导入è¡?br />  1åQ‰å¯¼å…¥è‡ªå·Þp¡¨ imp userid=scott/tiger@oracle tables=(emp) file=d:\e.dmp
  2åQ‰å¯¼å…¥è¡¨åˆ°å…¶å®ƒç”¨æˆ?要求该用户具有dba的权限,或是imp_full_database
        imp userid=system/manager@oracle tables=(emp) file=d:/e.dmp touser=scott
   3åQ‰å¯¼å…¥è¡¨çš„结构(只导入表的结构而不导入数据åQ?br />        imp userid=scott/tiger@oracle tables=(emp) file=d:/e.dmp rows=n
   4åQ‰å¯¼å…¥æ•°æ?如果对象åQˆå¦‚比表åQ‰å·²¾lå­˜åœ¨å¯ä»¥åªå¯¼å…¥è¡¨çš„æ•°æ®
        imp userid=scott/tiger@oracle tables=(emp) file=d:\e.dmp ignore=y
21.oracle导入æ–ÒŽ(gu¨©)¡ˆ
  1åQ‰å¯¼å…¥è‡ªíw«çš„æ–ÒŽ(gu¨©)¡ˆ imp userid=scott/tiger file=d:\e.dmp
  2åQ‰å¯¼å…¥å…¶å®ƒæ–¹æ¡ˆï¼ˆè¦æ±‚该用户具有dba的权限或是imp_full_database权限åQ?br />       imp userid=system/manager file=d:\e.dmp fromuser=system touser=scott
22.oracle导入数据库,在默认情况下åQŒå½“导入数据库时åQŒä¼šå¯¼å…¥æ‰€æœ‰å¯¹è±¡ç»“构和数据ã€?br />    imp userid=system/manager@oracle full=y file=d:\e.dmp
23.数据字典和动态性能视图
  1åQ‰æ•°æ®å­—典是oracle数据库中最重要的组成部分,它提供了数据的一些系¾lŸä¿¡æ¯ï¼›è®°å½•了数据的¾pȝ»Ÿä¿¡æ¯åQŒå®ƒæ˜¯åªè¯»è¡¨å’Œè§†å›„¡š„集合åQŒæ•°æ®å­—å…¸çš„æ‰€æœ‰è€…äØ“sys用户åQŒç”¨æˆ·åªèƒ½åœ¨æ•°æ®å­—典上执行查询操作,而其¾l´æŠ¤å’Œä¿®æ”¹ç”±¾pȝ»Ÿè‡ªåŠ¨å®Œæˆã€?br />  2åQ‰åŠ¨æ€æ€§èƒ½è§†å›¾è®°è²äº†ä¾‹½E‹å¯åŠ¨åŽçš„ç›¸å…³ä¿¡æ¯ã€?br />  3åQ‰æ•°æ®å­—典包括数据字典基表和数据字典视图åQŒå…¶ä¸­åŸºè¡¨å­˜å‚¨æ•°æ®åº“çš„åŸºæœ¬ä¿¡æ¯ï¼Œæ™®é€šç”¨æˆ·ä¸èƒ½ç›´æŽ¥è®¿é—®æ•°æ®å­—å…¸çš„åŸø™¡¨åQŒæ•°æ®å­—典视图是åŸÞZºŽæ•°æ®å­—å…¸åŸø™¡¨æ‰€å»ºç«‹çš„视图,普通用户可以通过查询数据字典视图取得¾pȝ»Ÿä¿¡æ¯ã€‚数据字典视图主要包括:user_xxx,all_xxx,dba_xxx三种¾cÕdž‹ã€?br />  4åQ‰user_tablesåQŒç”¨äºŽæ˜¾½Cºå½“前用æˆäh‰€æ‹¥æœ‰çš„æ‰€æœ‰è¡¨åQŒå®ƒåªè¿”回用æˆäh‰€å¯¹åº”æ–ÒŽ(gu¨©)¡ˆçš„æ‰€æœ‰è¡¨ã€‚例如:select table_name from user_tables;
   5)all_tablesåQŒç”¨äºŽæ˜¾½Cºå½“前用户可以访问的所有表åQŒå®ƒä¸ä»…会返回当前用æˆäh–¹æ¡ˆçš„æ‰€æœ‰è¡¨åQŒè¿˜ä¼šè¿”回当前用户可以访问的其他æ–ÒŽ(gu¨©)¡ˆçš„表åQ?br />   6åQ‰dba_tablesåQŒå®ƒä¼šæ˜¾½Cºæ‰€æœ‰æ–¹æ¡ˆæ‹¥æœ‰çš„æ•°æ®åº“表åQŒä½†æ˜¯æŸ¥è¯¢è¿™¿Uæ•°æ®åº“字典视图åQŒè¦æ±‚用户必™åÀL˜¯dba角色或是有select_any_table¾pȝ»Ÿæƒé™ã€‚例如:当用system用户查询数据字典视图dba_tablesæ—Óž¼Œä¼šè¿”回system,sys,scott...æ–ÒŽ(gu¨©)¡ˆæ‰€å¯¹åº”的数据库表ã€?br />24.oracle用户名,权限åQŒè§’è‰?br />    在徏立用æˆäh—¶åQŒoracle会把用户的信息存攑ֈ°æ•°æ®å­—典中,当给用户授予权限或是角色æ—Óž¼Œoracle会将权限和角色的信息存放到数据字ŒDüc€‚通过查询
dba_users可以昄¡¤ºæ‰€æœ‰æ•°æ®åº“用户的详¾l†ä¿¡æ¯ï¼›é€šè¿‡æŸ¥è¯¢æ•°æ®å­—典视图dba_sys_privsåQŒå¯ä»¥æ˜¾½Cºç”¨æˆäh‰€æ‹¥æœ‰çš„ç³»¾lŸæƒé™ï¼›é€šè¿‡æŸ¥è¯¢æ•°æ®å­—典视图dba_tab_privs可以昄¡¤ºç”¨æˆ·å…ähœ‰çš„对象权限;通过查询数据字典视图dba_col_privs可以昄¡¤ºç”¨æˆ·å…ähœ‰çš„列权限åQ›é€šè¿‡æŸ¥è¯¢æ•°æ®å­—典视图dba_role_privs可以昄¡¤ºç”¨æˆ·æ‰€å…ähœ‰çš„è§’è‰ÔŒ¼›é€šè¿‡æŸ¥è¯¢æ‰€æœ‰çš„角色dba_rolesåQ›æŸ¥è¯¢æ•°æ®åº“的表½Iºé—´dba_tablespacesåQ›ç®€åŒ–权限的½Ž¡ç†ã€?br />25.如何查询一个角è‰ÔŒ¼ŒåŒ…括的权é™?br />    1åQ‰ä¸€ä¸ªè§’色包含的¾pȝ»Ÿæƒé™ select * from dba_sys_privs where grantee='CONNECT' 或è€?select * from role_sys_privs where role='CONNECT'
    2)一个角色包含的对象权限 select * from dba_tab_privs where grantee='CONNECT'
26.查询某个用户å…ähœ‰æ€Žæ ·çš„è§’è‰?br />    select * from dba_role_privs where grantee='用户å?
27.昄¡¤ºå½“前用户可以讉K—®çš„æ‰€æœ‰æ•°æ®å­—典视å›?br />     select * from dict where comments like '%grant%';
28.昄¡¤ºå½“前数据库的全称
     select * from global_name;
29.
查询该用æˆäh‹¥æœ‰å“ªäº›çƒ¦å¼?/span>

  select index_name from user_indexes;

  查询该用æˆäh‹¥æœ‰å“ªäº›è§†å›?/p>

  select view_name from user_views;

  查询该用æˆäh‹¥æœ‰å“ªäº›æ•°æ®åº“对象,对象包括表、视图、存储过½E‹ã€è§¦å‘器、包、烦引、序列、JAVAæ–‡äšg½{‰ã€?/p>

  select object_name from user_objects;

  主要描述当前用户的信息,主要包括当前用户名、帐户id、帐æˆïLŠ¶æ€ã€è¡¨½Iºé—´åã€åˆ›å»ºæ—¶é—´ç­‰ã€?/p>

  select * from user_users;
30.æ•°æ®å­—å…¸åˆ†äØ“é™æ€æ•°æ®å­—å…¸å’ŒåŠ¨æ€æ•°æ®å­—å…¸ã€?br />  1åQ‰é™æ€æ•°æ®å­—典:主要是在用户讉K—®æ•°æ®å­—典时不会发生改变的。主要由表和视图¾l„成åQ?br />  2åQ‰åŠ¨æ€æ•°æ®å­—å…¸ï¼šæ˜¯ä¾èµ–æ•°æ®åº“˜qè¡Œçš„æ€§èƒ½çš„,反映数据˜qè¡Œçš„一些内在信息。oracle中这些动态性能视图都是以v$开头的视图åQ?br />  3åQ?span style="font-size: 14px; line-height: 25px; ">v$access

  该视图显½Cºæ•°æ®åº“中锁定的数据库对象以及访问这些对象的会话对象åQˆsession对象åQ‰ã€?/p>

  select * from v$access

  v$session

  该视囑ֈ—出当前会话的详细信息ã€?/p>

  v$active_instance

  该视图主要描˜q°å½“前数据库下的‹zÕdŠ¨çš„å®žä¾‹çš„ä¿¡æ¯ã€‚ä¾ç„¶å¯ä»¥ä‹É用select语句来观察该信息ã€?/p>

  v$context

  该视囑ֈ—出当前会话的属性信息。比如命名空间、属性值等
31.oracle表空间和数据文äšg
   1åQ‰è¡¨½Iºé—´æ˜¯æ•°æ®åº“的逻辑¾l„成部分。从物理上讲åQŒæ•°æ®åº“数据存放在数据文件中åQ›ä»Žé€»è¾‘上讲åQŒæ•°æ®åº“则存攑֜¨è¡¨ç©ºé—´ä¸­åQŒè¡¨½Iºé—´ç”׃¸€ä¸ªæˆ–多个数据文äšg¾l„成ã€?br />   2åQ‰oracle中逻辑¾l“构包括表空间、段、区、块。数据库ç”Þp¡¨½Iºé—´æž„成åQŒè€Œè¡¨½Iºé—´ç”±æ®µæž„成åQŒè€Œæ®µç”±åŒºæž„成åQŒè€ŒåŒºåˆæ˜¯ç”±oracle块构成,提高数据库的效率ã€?br />   3åQ‰è¡¨½Iºé—´ç”¨äºŽä»Žé€»è¾‘上组¾l‡æ•°æ®åº“的数据。数据库逻辑上是ç”׃¸€ä¸ªæˆ–多个表空间组成。通过表空间可以达åˆîC»¥ä¸‹ä½œç”¨ï¼šæŽ§åˆ¶æ•°æ®åº“占有的¼‚ç›˜½Iºé—´åQ›dba可以ž®†ä¸åŒæ•°æ®ç±»åž‹éƒ¨¾|²åˆ°ä¸åŒçš„位¾|®ï¼Œ˜q™æ ·æœ‰åˆ©äºŽæé«˜I(y¨¨)/O性能åQŒåŒæ—¶åˆ©äºŽå¤‡ä»½å’Œæ¢å¤½{‰ç®¡ç†æ“ä½œã€?br />32.½Ž¡ç†è¡¨ç©ºé—´å’Œæ•°æ®æ–‡äšg
   1åQ‰å¾ç«‹è¡¨½Iºé—´
     å»ºç«‹è¡¨ç©ºé—´æ˜¯ä½¿ç”¨create tablespace命ä×o完成åQŒéœ€è¦æ³¨æ„æ˜¯åQŒä¸€èˆ¬æƒ…况下åQŒå¾ç«‹è¡¨½Iºé—´æ˜¯ç‰¹æƒç”¨æˆähˆ–是dba来执行的åQŒå¦‚æžœç”¨å…¶ä»–ç”¨æˆ·æ¥åˆ›å»ø™¡¨½Iºé—´åQŒåˆ™ç”¨æˆ·å¿…须要具有create tablespace 的系¾lŸæƒé™ã€?br />   2åQ‰åˆ›å»ºæ•°æ®è¡¨½Iºé—´
     åœ¨å¾ç«‹æ•°æ®åº“后,ä¸ÞZ¾¿äºŽç®¡ç†è¡¨åQŒæœ€å¥½å¾ç«‹è‡ªå·Þqš„表空é—?create tablespace data01 datafile 'd:\test\data01.dbf' size 20m uniform size 128k。在执行完命令后åQŒä¼šå»ºç«‹åç§°ä¸ºdata01的表½Iºé—´åQŒåÆˆä¸ø™¯¥è¡¨ç©ºé—´å¾ç«‹å¿UîCØ“data01.dbf的数据文ä»Óž¼ŒåŒºçš„大小128k
    3åQ‰ä‹É用数据表½Iºé—´
      create table mypart (deptno number(3),dname varchar2(14)) tablespace data01;
    4åQ‰æ”¹å˜è¡¨½Iºé—´çš„状æ€?br />      当徏立表½Iºé—´æ—Óž¼Œè¡¨ç©ºé—´å¤„于联机的åQˆonlineåQ‰çŠ¶æ€ï¼Œæ­¤æ—¶è¯¥è¡¨½Iºé—´æ˜¯å¯ä»¥è®¿é—®çš„åQŒåƈ且该表空间是可以è¯Õd†™çš„。但是在˜q›è¡Œ¾pȝ»Ÿ¾l´æŠ¤æˆ–是数据库维护时åQŒå¯èƒ½éœ€è¦æ”¹å˜è¡¨½Iºé—´çš„状态,一般由ç‰ÒŽ(gu¨©)ƒç”¨æˆ·æˆ–是dba来操作ã€?br />    5åQ‰ä‹É表空间脱æœ?alter tablespace users offline;
    6åQ‰ä‹É表空间联æœ?alter tablespace users online;
    7åQ‰åªè¯»è¡¨½Iºé—´ 当徏立表½Iºé—´æ—Óž¼Œè¡¨ç©ºé—´å¯ä»¥è¯»å†™ï¼Œå¦‚果不希望在该表½Iºé—´ä¸Šæ‰§è¡ŒupdateåQŒdeleteåQŒinsert操作åQŒé‚£ä¹ˆå¯ä»¥å°†è¡¨ç©ºé—´ä¿®æ”¹äؓ只读 allter tablespace read only或è€?read write ã€?br />    8åQ‰çŸ¥é“表½Iºé—´åï¼Œæ˜„¡¤ºè¯¥è¡¨½Iºé—´åŒ…括的所有表 select * from all_tables where tablespace_name='表空间名'
    9åQ‰çŸ¥é“表名,查看该表属于那个表空é—?select * from user_tables where table_name='emp'ã€?br />    10åQ‰åˆ é™¤è¡¨½Iºé—´ 
      drop tablespace '表空间名' including contents and datafiles;
      说明åQšincluding contents表示删除表空间时åQŒåˆ é™¤è¯¥½Iºé—´çš„æ‰€æœ‰æ•°æ®åº“对象åQŒè€Œdatafiles 表示ž®†æ•°æ®åº“æ–‡äšg也删除ã€?br />33.oracle 扩展表空间的方式
   1åQ‰å¢žåŠ æ•°æ®æ–‡ä»?alter tablespace data01 add datafile 'd:\test\data01.dbf' size 20m;
   2åQ‰å¢žå‡æ•°æ®æ–‡ä»¶çš„大小 alter database datafile 'd:\test\data01.dbf' resize 20m;注意是数据文件的大小不要­‘…过500m;
   3åQ‰è®¾¾|®æ–‡ä»¶çš„自动增长 alter database datafile 'd:\test\data01.dbf' autoextend on next 10m maxsize 500m;
34.oracle¿UÕdŠ¨æ•°æ®æ–‡äšg
    如果数据文äšg所在的¼‚ç›˜æŸåæ—Óž¼Œè¯¥æ•°æ®æ–‡ä»¶å°†ä¸èƒ½å†ä‹É用,ä¸ÞZº†èƒ½å¤Ÿé‡æ–°ä½¿ç”¨åQŒéœ€è¦å°†˜q™äº›æ–‡äšg的副本移动到其它的磁盘,然后恢复。下面以¿UÕdŠ¨æ•°æ®æ–‡äšgsp01.dbfä¸ÞZ¾‹æ¥è¯´æ˜Žï¼š
   1åQ‰ç¡®å®šæ•°æ®æ–‡ä»¶æ‰€åœ¨çš„表空é—?select tablespace_name from dba_data_files where file_name='d:\test\sp01.dbf';
   2åQ‰ä‹É表空间脱æœ?alter tablespace sp01 offline;
   3åQ‰ä‹É用命令移动数据文件到指定的目标位¾|?host move d:\test\sp01.dbf c:\test\sp01.dbf
   4åQ‰æ‰§è¡Œalter tablespace 命ä×o
     åœ¨ç‰©ç†ä¸Š¿UÕdŠ¨äº†æ•°æ®åŽåQŒè¿˜å¿…须执行alter tablespace 命ä×oå¯ÒŽ(gu¨©)•°æ®åº“æ–‡äšg˜q›è¡Œé€»è¾‘修改ã€?alter tablespace sp02 rename datafile 'd:\test\sp01.dbf' to 'c:\test\sp01.dbf';
   5åQ‰ä‹É得表½Iºé—´è”机
     åœ¨ç§»åŠ¨äº†æ•°æ®æ–‡äšg后,ä¸ÞZº†ä½¿ç”¨æˆ·å¯ä»¥è®¿é—®è¯¥è¡¨ç©ºé—ß_¼Œå¿…é¡»ž®†å…¶è½¬å˜ä¸ºonline状æ€?alter tablespace data01 online;
35.索引
   ç”¨äºŽåŠ é€Ÿæ•°æ®å­˜å–çš„æ•°æ®å¯¹è±¡ã€‚åˆç†çš„ä½¿ç”¨ç´¢å¼•å¯ä»¥å¤§å¤§é™ä½ŽI/O‹Æ¡æ•°åQŒä»Žè€Œæé«˜æ•°æ®è®¿é—®æ€§èƒ½ã€?br />36.昄¡¤ºè§’色信息
 1åQ‰æ˜¾½Cºæ‰€æœ‰è§’色信æ?select * from dba_roles;
 2åQ‰æ˜¾½Cø™§’色所å…ähœ‰çš„ç³»¾lŸæƒé™?select * from role_sys_privs;
 3åQ‰æ˜¾½Cø™§’色具有的对象权限 select * from dba_tab_privs;
 4åQ‰æ˜¾½Cºç”¨æˆ·å…·æœ‰çš„角色及默认角艌Ӏ‚当以用æˆïLš„íw«ä†¾˜qžæŽ¥åˆ°æ•°æ®åº“æ—Óž¼Œoracle会自动的‹È€‹z»é»˜è®¤çš„角色åQŒé€šè¿‡æŸ¥è¯¢æ•°æ®å­—典视图dba_role_privs可以昄¡¤ºæŸä¸ªç”¨æˆ·å…ähœ‰çš„æ‰€æœ‰è§’色及当前默认角色ã€?br />37.oracle¾_„¡»†è®‰K—®æŽ§åˆ¶
  是指用户可以使用函数、策略实现更加细微的安全讉K—®æŽ§åˆ¶ã€‚如果ä‹É用精¾l†è®¿é—®æŽ§åˆÓž¼Œåˆ™å½“在客æˆïL«¯å‘出sql语句(select,insert,update,delete),oracle会自动在sql语句后追加谓è¯?where 子句)åQŒåƈ执行新的sql语句。通过˜q™æ ·çš„æŽ§åˆÓž¼Œå¯ä»¥ä½¿å¾—不同的数据库用户在访问相同表æ—Óž¼Œ˜q”回不同的数据信息ã€?br />38.pl/sqlåQˆprocedural language/sqlåQ‰æ˜¯oracle在标准的sql语言上的扩展。pl/sql不仅允许嵌入sql语言åQŒè¿˜å¯ä»¥å®šä¹‰å˜é‡å’Œå¸¸é‡ï¼Œå…è®¸ä½¿ç”¨æ¡äšg语句和åó@环语句,允许使用例外处理各种错误åQŒè¿™æ ·ä‹É得它的功能变得更加强大ã€?br /> 1)作用。提高应用程序的˜qè¡Œæ€§èƒ½åQ›æ¨¡å—化得设计思想åQ›å‡ž®‘网¾lœä¼ è¾“量åQ›æé«˜å®‰å…¨æ€§ï¼›ä¸èƒöåQšç§»æ¤æ€§ä¸å¥½ï¼›
39.执行½Ž€å•çš„pl/sqlå?br /> set serveroutput on -- 打开输出选项
 begin
    dbms_output.put_line('hello'); -- 是oracle所提供的包
 end;
40.pl/sql½CÞZ¾‹
 declare
    v_ename varchar2(5); -- 定义字符串变é‡?br /> begin  
    select ename into v_ename from emp where empno=&no;
    dbms_output.put_line('');
 end;
  -- 表示要接收从控制台输入的变量
41.˜q‡ç¨‹
  ˜q‡ç¨‹ç”¨äºŽæ‰§è¡Œç‰¹å®šçš„æ“ä½œï¼Œæ—¢å¯ä»¥åˆ¶å®šè¾“入参敎ͼŒä¹Ÿå¯ä»¥åˆ¶å®šè¾“出参数。通过在过½E‹ä¸­ä½¿ç”¨è¾“入参数åQŒå¯ä»¥å°†æ•°æ®ä¼ é€’到执行部分åQ›é€šè¿‡ä½¿ç”¨è¾“出参数åQŒå¯ä»¥å°†æ‰§è¡Œéƒ¨åˆ†çš„æ•°æ®ä¼ é€’到应用环境。在sqlplus中可以ä‹É用create procedure命ä×o建立˜q‡ç¨‹ã€?br />42. 函数
  函数用于˜q”回特定的数据,当徏立函数时åQŒåœ¨å‡½æ•°å¤´éƒ¨å¿…须包含return 子句åQŒè€Œåœ¨å‡½æ•°ä½“内必须包含return语句˜q”回的数据。create function来徏立函数ã€?br />43. åŒ?br /> åŒ…用于在逻辑上组合过½E‹å’Œå‡½æ•°åQŒå®ƒç”±åŒ…规范和包体两部分¾l„成ã€?br /> 1åQ‰å¯ä»¥ä‹Éç”?create package 命ä×o来创建包ã€?br />     create package sp_package is
            procedure update_sal(name varchar2,newsal number);
            function annual_income(name varchar2) return number;
     end;
 2åQ‰å¾ç«‹åŒ…体可以ä‹É用create package body
44.触发å™?br /> æ˜¯æŒ‡éšå«çš„æ‰§è¡Œçš„存储˜q‡ç¨‹ã€‚当定义触发器时åQŒå¿…™å»è¦æŒ‡å®šè§¦å‘的时间和触发的操作。常用的触发事äšg包括insertåQŒupdateåQŒdelete语句åQŒè€Œè§¦å‘操作实际就是一个pl/sql块。可以ä‹É用create trigger来徏立触发器ã€?/p>

]]>
通过yum安装mysqlhttp://www.aygfsteel.com/kxbin/articles/383492.htmlkxbinkxbinThu, 19 Jul 2012 03:11:00 GMThttp://www.aygfsteel.com/kxbin/articles/383492.htmlhttp://www.aygfsteel.com/kxbin/comments/383492.htmlhttp://www.aygfsteel.com/kxbin/articles/383492.html#Feedback0http://www.aygfsteel.com/kxbin/comments/commentRss/383492.htmlhttp://www.aygfsteel.com/kxbin/services/trackbacks/383492.html1. 安装mysql

    1.1 执行安装

          $sudo yum -y install mysql-server

    1.2 æ³¨æ„

          mysqlå’Œmysql-serveræœ‰åŒºåˆ«ï¼Œåªéœ€ä½œäØ“clientåQŒæ‰§è¡Œyum install mysql.

 

2. 服务和配¾|?/p>

    2.1 开机启åŠ?/p>

          $ sudo /sbin/chkconfig --add mysqld

          $ sudo /sbin/chkconfig mysqld on   

          $ sudo /sbin/service mysqld start

    2.2 讄¡½®root密码

          $sudo mysqladmin -u root password '1234'

 

3. ˜qžæŽ¥mysql

    $mysql -h localhost -uroot -p1234

 



]]>
linux下自动备份mysql数据åº?/title><link>http://www.aygfsteel.com/kxbin/articles/371783.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Tue, 13 Mar 2012 02:37:00 GMT</pubDate><guid>http://www.aygfsteel.com/kxbin/articles/371783.html</guid><wfw:comment>http://www.aygfsteel.com/kxbin/comments/371783.html</wfw:comment><comments>http://www.aygfsteel.com/kxbin/articles/371783.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/kxbin/comments/commentRss/371783.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/kxbin/services/trackbacks/371783.html</trackback:ping><description><![CDATA[1.创徏database.shæ–‡äšgåQŒå†…容如下:<br />  #!/bin/sh<div>backupDate=`date +"%Y-%m-%d %H:%M:%S"`</div><div>mysqldump -uroot -proot tm>/test/database/tm$backupDate.sql<br />2.创徏ä»ÕdŠ¡è®¡åˆ’</div>  [root@localhost] crontab -e<br />  59 23 * * * /test/database/database.sh<img src ="http://www.aygfsteel.com/kxbin/aggbug/371783.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/kxbin/" target="_blank">kxbin</a> 2012-03-13 10:37 <a href="http://www.aygfsteel.com/kxbin/articles/371783.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mysql性能优化åQˆè{åQ?/title><link>http://www.aygfsteel.com/kxbin/articles/371649.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Sat, 10 Mar 2012 14:17:00 GMT</pubDate><guid>http://www.aygfsteel.com/kxbin/articles/371649.html</guid><wfw:comment>http://www.aygfsteel.com/kxbin/comments/371649.html</wfw:comment><comments>http://www.aygfsteel.com/kxbin/articles/371649.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/kxbin/comments/commentRss/371649.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/kxbin/services/trackbacks/371649.html</trackback:ping><description><![CDATA[<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">mysql> <span style="color: #0000ff; ">select * from abc_number_prop where number_id in (select number_id from abc_number_phone where phone = '82306839');</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="color: #ff0000; ">ä¸ÞZº†èŠ‚çœ½‹‡å¹…åQŒçœç•¥äº†è¾“出内容åQŒä¸‹åŒã€?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">67 rows in set (12.00 sec)</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">只有67行数据返回,却花äº?2¿U’,而系¾lŸä¸­å¯èƒ½åŒæ—¶ä¼šæœ‰å¾ˆå¤š˜q™æ ·çš„æŸ¥è¯¢ï¼Œ¾pȝ»Ÿè‚¯å®šæ‰›ä¸ä½ã€‚用desc看一ä¸?注:explain也可)</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">mysql> <span style="color: #0000ff; ">desc select * from abc_number_prop where number_id in (select number_id from abc_number_phone where phone = '82306839'); </span><br />+----+--------------------+------------------+--------+-----------------+-------+---------+------------+---------+--------------------------+<br />| id | select_type        | table            | type   | possible_keys   | key   | key_len | ref        | rows    | Extra                    |<br />+----+--------------------+------------------+--------+-----------------+-------+---------+------------+---------+--------------------------+<br />|  1 | PRIMARY            | abc_number_prop  | ALL    | NULL            | NULL  | NULL    | NULL       | <strong style="font-weight: bold; ">2679838</strong> | Using where              |<br />|  2 | DEPENDENT SUBQUERY | abc_number_phone | eq_ref | phone,number_id | phone | 70      | const,func |     <strong style="font-weight: bold; ">  1</strong> | Using where; Using index |<br />+----+--------------------+------------------+--------+-----------------+-------+---------+------------+---------+--------------------------+<br />2 rows in set (0.00 sec)</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">从上面的信息可以看出åQŒåœ¨æ‰§è¡Œæ­¤æŸ¥è¯¢æ—¶ä¼šæ‰«æä¸¤ç™‘Ö¤šä¸‡è¡ŒåQŒéš¾é“是没有创徏索引吗,看一ä¸?/p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">mysql> <span style="color: #0000ff; ">show index from abc_number_phone; </span><br />+------------------+------------+-------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+<br />| Table            | Non_unique | Key_name    | Seq_in_index | Column_name     | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |<br />+------------------+------------+-------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+<br />| abc_number_phone |          0 | PRIMARY     |            1 | number_phone_id | A         |       36879 |     NULL | NULL   |      | BTREE      |         |               |<br />| abc_number_phone |          0 | phone       |            1 | phone           | A         |       36879 |     NULL | NULL   |      | BTREE      |         |               |<br />| abc_number_phone |          0 | phone       |            2 | number_id       | A         |       36879 |     NULL | NULL   |      | BTREE      |         |               |<br /><strong style="font-weight: bold; ">| abc_number_phone |          1 | number_id   |            1 | number_id       | A         |       36879 |     NULL | NULL   |      | BTREE      |         |               |</strong> <br />| abc_number_phone |          1 | created_by  |            1 | created_by      | A         |       36879 |     NULL | NULL   |      | BTREE      |         |               |<br />| abc_number_phone |          1 | modified_by |            1 | modified_by     | A         |       36879 |     NULL | NULL   | YES  | BTREE      |         |               |<br />+------------------+------------+-------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+<br />6 rows in set (0.06 sec)<br /><br />mysql> <span style="color: #0000ff; ">show index from abc_number_prop;</span> <br />+-----------------+------------+-------------+--------------+----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+<br />| Table           | Non_unique | Key_name    | Seq_in_index | Column_name    | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |<br />+-----------------+------------+-------------+--------------+----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+<br />| abc_number_prop |          0 | PRIMARY     |            1 | number_prop_id | A         |      311268 |     NULL | NULL   |      | BTREE      |         |               |<br /><strong style="font-weight: bold; ">| abc_number_prop |          1 | number_id   |            1 | number_id      | A         |      311268 |     NULL | NULL   |      | BTREE      |         |               |</strong> <br />| abc_number_prop |          1 | created_by  |            1 | created_by     | A         |      311268 |     NULL | NULL   |      | BTREE      |         |               |<br />| abc_number_prop |          1 | modified_by |            1 | modified_by    | A         |      311268 |     NULL | NULL   | YES  | BTREE      |         |               |<br />+-----------------+------------+-------------+--------------+----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+<br />4 rows in set (0.15 sec)</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">从上面的输出可以看出åQŒè¿™ä¸¤å¼ è¡¨åœ¨number_id字段上创å»ÞZº†ç´¢å¼•çš„ã€?/p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">看看子查询本íw«æœ‰æ²¡æœ‰é—®é¢˜ã€?/p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">mysql> <span style="color: #0000ff; ">desc select number_id from abc_number_phone where phone = '82306839'; </span><br />+----+-------------+------------------+------+---------------+-------+---------+-------+------+--------------------------+<br />| id | select_type | table            | type | possible_keys | key   | key_len | ref   | rows | Extra                    |<br />+----+-------------+------------------+------+---------------+-------+---------+-------+------+--------------------------+<br />|  1 | SIMPLE      | abc_number_phone | ref  | phone         | phone | 66      | const | <strong style="font-weight: bold; ">   6</strong> | Using where; Using index |<br />+----+-------------+------------------+------+---------------+-------+---------+-------+------+--------------------------+<br />1 row in set (0.00 sec)</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">没有问题åQŒåªéœ€è¦æ‰«æå‡ è¡Œæ•°æ®ï¼Œç´¢å¼•起作用了。查询出来看çœ?/p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">mysql> <span style="color: #0000ff; ">select number_id from abc_number_phone where phone = '82306839'; </span><br />+-----------+<br />| number_id |<br />+-----------+<br />|      8585 |<br />|     10720 |<br />|    148644 |<br />|    151307 |<br />|    170691 |<br />|    221897 |<br />+-----------+<br />6 rows in set (0.00 sec)</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">直接把子查询得到的数据放åˆîC¸Šé¢çš„æŸ¥è¯¢ä¸?/p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">mysql> <span style="color: #0000ff; ">select * from abc_number_prop where number_id in (8585, 10720, 148644, 151307, 170691, 221897);</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">67 rows in set (0.03 sec)</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">速度也快åQŒçœ‹æ¥MySQL在处理子查询的时候是不够好。我在MySQL 5.1.42 å’?MySQL 5.5.19 都进行了ž®è¯•åQŒéƒ½æœ‰è¿™ä¸ªé—®é¢˜ã€?/p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">搜烦了一下网¾lœï¼Œå‘现很多人都遇到˜q‡è¿™ä¸ªé—®é¢˜ï¼š</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">参考资æ–?åQšä‹É用连接(JOINåQ‰æ¥ä»£æ›¿å­æŸ¥è¯?Sub-Queries) mysql优化¾pÕdˆ—记录<br />http://blog.csdn.net/hongsejiaozhu/article/details/1876181<br />参考资æ–?åQšç½‘站开发日è®?14)-MYSQL子查询和嵌套查询优化<br />http://dodomail.iteye.com/blog/250199</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">æ ÒŽ(gu¨©)®¾|‘上˜q™äº›èµ„料的徏议,改用join来试试ã€?/p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><strong style="font-weight: bold; ">修改前:select * from abc_number_prop where number_id in (select number_id from abc_number_phone where phone = '82306839');</strong></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><strong style="font-weight: bold; ">修改后:select a.* from abc_number_prop a inner join abc_number_phone b on a.number_id = b.number_id where phone = '82306839';</strong></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">mysql> <span style="color: #0000ff; ">select a.* from abc_number_prop a inner join abc_number_phone b on a.number_id = b.number_id where phone = '82306839';</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">67 rows in set (0.00 sec)</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">效果不错åQŒæŸ¥è¯¢æ‰€ç”¨æ—¶é—´å‡ ä¹ŽäØ“0。看一下MySQL是怎么执行˜q™ä¸ªæŸ¥è¯¢çš?/p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">mysql> <span style="color: #0000ff; ">desc select a.* from abc_number_prop a inner join abc_number_phone b on a.number_id = b.number_id where phone = '82306839';</span> <br />+----+-------------+-------+------+-----------------+-----------+---------+-----------------+------+--------------------------+<br />| id | select_type | table | type | possible_keys   | key       | key_len | ref             | rows | Extra                    |<br />+----+-------------+-------+------+-----------------+-----------+---------+-----------------+------+--------------------------+<br />|  1 | SIMPLE      | b     | ref  | phone,number_id | phone     | 66      | const           |   <strong style="font-weight: bold; "> 6</strong> | Using where; Using index |<br />|  1 | SIMPLE      | a     | ref  | number_id       | number_id | 4       | eap.b.number_id |    <strong style="font-weight: bold; ">3 </strong>|                          |<br />+----+-------------+-------+------+-----------------+-----------+---------+-----------------+------+--------------------------+<br />2 rows in set (0.00 sec)</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><strong style="font-weight: bold; ">ž®ç»“åQšå½“子查询速度慢时åQŒå¯ç”¨JOIN来改写一下该查询来进行优化ã€?/strong></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">¾|‘上也有文章è¯ß_¼Œä½¿ç”¨JOIN语句的查询不一定æ€ÀL¯”使用子查询的语句快ã€?/p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">参考资æ–?åQšæ”¹å˜äº†å¯¹Mysql子查询的看法<br />http://hi.baidu.com/yzx110/blog/item/e694f536f92075360b55a92b.html</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">正好手头有本《高性能MySQL》,¾˜»é˜…了一下,½W?.4èŠ?#8220;MySQL查询优化器的限制”4.4.1ž®èŠ‚“å…Œ™”子查è¯?#8221;正好讲到˜q™ä¸ªé—®é¢˜ã€?/p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">MySQL有时优化子查询很差,特别是在WHERE从句中的IN()子查询。像上面我碰到的情况åQŒå…¶å®žæˆ‘的想法是MySQL会把</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><strong style="font-weight: bold; ">select * from abc_number_prop where number_id in (select number_id from abc_number_phone where phone = '82306839');</strong></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">变成下面的样å­?/p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">select * from abc_number_prop where number_id in (8585, 10720, 148644, 151307, 170691, 221897);</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">但不òq¸çš„æ˜¯ï¼Œå®žé™…情况正好相反。MySQL试图让它和外面的表äñ”生联¾pÀL¥“帮助”优化查询åQŒå®ƒè®¤äؓ下面的exists形式更有效率</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><strong style="font-weight: bold; ">select * from abc_number_prop where exists (select * from abc_number_phone where phone = '</strong><strong style="font-weight: bold; ">82306839'</strong> <strong style="font-weight: bold; ">and number_id = abc_number_prop.number_id);<br /></strong></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">mysql> <span style="color: #0000ff; ">select * from abc_number_prop where exists (select * from abc_number_phone where phone = '82306839' and number_id = abc_number_prop.number_id);</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">67 rows in set (10.89 sec)</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">mysql> <span style="color: #0000ff; ">desc select * from abc_number_prop where exists (select * from abc_number_phone where phone = '82306839' and number_id = abc_number_prop.number_id); </span><br />+----+--------------------+------------------+--------+-----------------+-------+---------+-------------------------------------+---------+--------------------------+<br />| id | select_type        | table            | type   | possible_keys   | key   | key_len | ref                                 | rows    | Extra                    |<br />+----+--------------------+------------------+--------+-----------------+-------+---------+-------------------------------------+---------+--------------------------+<br />|  1 | PRIMARY            | abc_number_prop  | ALL    | NULL            | NULL  | NULL    | NULL                                |<strong style="font-weight: bold; ">2660707 </strong>| Using where              |<br />|  2 | DEPENDENT SUBQUERY | abc_number_phone | eq_ref | phone,number_id | phone | 70      | const,eap.abc_number_prop.number_id |       <strong style="font-weight: bold; ">1 </strong>| Using where; Using index |<br />+----+--------------------+------------------+--------+-----------------+-------+---------+-------------------------------------+---------+--------------------------+<br />2 rows in set (0.01 sec)</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">˜q™ç§in子查询的形式åQŒåœ¨å¤–部表(比如上面的abc_number_propåQ‰æ•°æ®é‡è¾ƒå¤§çš„æ—¶å€™æ•ˆçŽ‡æ˜¯å¾ˆå·®çš„ã€‚ï¼ˆå¦‚æžœå¯¹äºŽè¾ƒå°çš„è¡¨åQŒä¸ä¼šé€ æˆæ˜¾è‘—地媄响)</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">文中说到<strong style="font-weight: bold; ">一¿Uä¼˜åŒ–方式就是,手工ž®†in里面的子查询查询出来åQŒç„¶åŽå†æ‹ÆD£…执行</strong> åQŒè¿™åœ¨ç¨‹åºä¸­æ˜¯å¯è¡Œçš„ã€?/p><img src ="http://www.aygfsteel.com/kxbin/aggbug/371649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/kxbin/" target="_blank">kxbin</a> 2012-03-10 22:17 <a href="http://www.aygfsteel.com/kxbin/articles/371649.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux¾pȝ»Ÿä¸‹MYSQL备䆾与恢å¤?/title><link>http://www.aygfsteel.com/kxbin/articles/368352.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Wed, 11 Jan 2012 09:12:00 GMT</pubDate><guid>http://www.aygfsteel.com/kxbin/articles/368352.html</guid><wfw:comment>http://www.aygfsteel.com/kxbin/comments/368352.html</wfw:comment><comments>http://www.aygfsteel.com/kxbin/articles/368352.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/kxbin/comments/commentRss/368352.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/kxbin/services/trackbacks/368352.html</trackback:ping><description><![CDATA[<div><div>本文介绍了linux下如何备份与恢复mysql数据库ã€?/div> <div></div> <div>数据库备份是非常重要的。如果定期做好备份,˜q™æ ·ž®±å¯ä»¥åœ¨å‘生¾pȝ»Ÿå´©æºƒæ—¶æ¢å¤æ•°æ®åˆ°æœ€åŽä¸€‹Æ¡æ­£å¸¸çš„状态,把损失减ž®åˆ°æœ€ž®‘ã€?/div> <div></div> <div>一、 用命令实现备ä»?/div> <div></div> <div>MySQLl提供了一个mysqldump命ä×oåQŒæˆ‘们可以用它进行数据备份ã€?/div> <div></div> <div>按提½Cø™¾“入密码,˜q™å°±æŠŠtm数据库所有的表结构和# mysqldump -u root -p tm > tm_050519.sql数据备䆾到tm_050519.sqläº†ï¼Œå› äØ“è¦æ€»è¿›è¡Œå¤‡ä»½å·¥ä½œï¼Œå¦‚æžœæ•°æ®é‡å¤§ä¼šå ç”¨å¾ˆå¤§ç©ºé—ß_¼Œ˜q™æ—¶å¯ä»¥åˆ©ç”¨gzip压羃数据åQŒå‘½ä»¤å¦‚下:</div> <div><pre># mysqldump -u root -p tm | gzip > tm_050519.sql.gz</pre></div> <div></div> <div>¾pȝ»Ÿå´©æºƒåQŒé‡å»ºç³»¾lŸæ—¶åQŒå¯ä»¥è¿™æ äh¢å¤æ•°æ®ï¼š</div> <div><pre># mysqldump -u root -p tm < tm_050519.sql</pre></div> <div></div> <div>从压¾~©æ–‡ä»¶ç›´æŽ¥æ¢å¤ï¼š</div> <div><pre>#gzip < tm_050519.sql.gz | mysqldump -u root -p tm</pre></div> <div></div> <div>当然åQŒæœ‰å¾ˆå¤šMySQL工具提供更直观的备䆾恢复功能åQŒæ¯”如用phpMyAdminž®±å¾ˆæ–¹ä¾¿ã€‚但我认为,mysqldump是最基本、最通用的ã€?/div> <div></div> <div>二、利用crontabåQŒç³»¾lŸæ¯å¤©å®šæ—¶å¤‡ä»½mysql数据åº?/div> <div></div> <div>利用¾pȝ»Ÿcrontab来定时执行备份文ä»Óž¼ŒæŒ‰æ—¥æœŸå¯¹å¤‡ä†¾¾l“æžœ˜q›è¡Œä¿å­˜åQŒè¾¾åˆ°å¤‡ä»½çš„目的ã€?/div> <div></div> <div>1、创å»ÞZ¿å­˜å¤‡ä»½æ–‡ä»¶çš„路径/var/backup/mysqlbak</div> <div><pre># mkdir -p /var/backup/mysqlbak</pre></div> <div></div> <div>2、创å»?usr/sbin/bakmysqlæ–‡äšg</div> <div></div> <div>#vi /usr/sbin/bakmysql.sh</div> <div><pre>#!/bin/bash # mysql备䆾脚本 cd /var/backup/mysqlbak/ dateDIR=`date +"%y-%m-%d"` mkdir -p $dateDIR/data for i in `/usr/local/www/mysql/bin/mysql -uroot -plin31415926 -e "show databases" | grep -v "Database" | grep -v "information_schema"` do /usr/local/www/mysql/bin/mysqldump -uroot -plin31415926 $i | gzip > /var/backup/mysqlbak/$dateDIR/${i}_${dateDIR}.gz done</pre></div> <div></div> <div>3、修æ”ÒŽ(gu¨©)–‡ä»¶å±žæ€§ï¼Œä½¿å…¶å¯æ‰§è¡?/div> <div><pre># chmod +x /usr/sbin/bakmysql</pre></div> <div></div> <div>4、修æ”?etc/crontab</div> <div><pre># crontab -e 在下面添åŠ?01 3 * * * root /usr/sbin/bakmysql</pre></div></div><img src ="http://www.aygfsteel.com/kxbin/aggbug/368352.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/kxbin/" target="_blank">kxbin</a> 2012-01-11 17:12 <a href="http://www.aygfsteel.com/kxbin/articles/368352.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在linux下安装mysqlhttp://www.aygfsteel.com/kxbin/articles/368347.htmlkxbinkxbinWed, 11 Jan 2012 08:37:00 GMThttp://www.aygfsteel.com/kxbin/articles/368347.htmlhttp://www.aygfsteel.com/kxbin/comments/368347.htmlhttp://www.aygfsteel.com/kxbin/articles/368347.html#Feedback0http://www.aygfsteel.com/kxbin/comments/commentRss/368347.htmlhttp://www.aygfsteel.com/kxbin/services/trackbacks/368347.html

一.下蝲mysql-5.1.45.tar.gz
http://dev.mysql.com/downloads
或其它地方下�/p>

äº?æ·ÕdŠ mysql用户及mysql用户¾l„,òq¶æŠŠmysql用户攑ֈ°mysql用户¾l„中
useradd mysql
½{‰ä¸Žç”¨ä¸‹é¢ä¸¤æ¡å‘½ä»¤ï¼š
groupadd mysql
useradd -g mysql mysql

ä¸?上传åˆ?usr/local/src下(方便½Ž¡ç†åQ‰è§£åދ安è£?br />[root@localhost src]# tar -zxvf mysql-5.1.45.tar.gz
[root@localhost src]# cd mysql-5.1.45

1.¾~–译
[root@localhost mysql-5.1.45]# ./configure --prefix=/usr/local/mysql --with-charset=gbk --with-collation=gbk_chinese_ci --with-extra-charsets=all --with-named-curses-libs=/usr/lib/libncurses.so.5
2.安装
[root@localhost mysql-5.1.45]# make && make install (˜q™ä¸ªæ—‰™—´æ¯”较é•?

3.ž®†mysql加入到系¾lŸå˜é‡pathä¸?br />ž®?usr/local/mysql/bin 加入到path中,˜q™æ ·åœ¨shell里就可以˜qè¡Œmysql相关的命令ã€?br />[root@localhost mysql-5.1.45]# vi /etc/profile
加入
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH

如果同时安装tomcat可以采用下面的方�br />export TOMCAT_HOME=/home/coomix/apache-tomcat-5.5.27
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:TOMCAT_HOME/bin:$PATH

[root@localhost mysql-5.1.45]# source /etc/profile 佉K…¾|®æ–‡ä»¶ç«‹å³ç”Ÿæ•?/p>

4.˜q›å…¥åˆ°mysqlæ–‡äšg夹下åQŒåˆå§‹åŒ–mysql表格åQŒå®‰è£?mysql 默认数据åº?
[root@localhost mysql-5.1.45]# cd /usr/local/mysql/
[root@localhost mysql]# ls
bin docs include lib libexec mysql-test share sql-bench
[root@localhost mysql]# mysql_install_db --user=mysql

5.修改目录权限
[root@localhost mysql]# chown -R root:mysql .
[root@localhost mysql]# chown -R mysql var
[root@localhost mysql]# chgrp -R mysql .

6.修改配置åQŒå°†mysql加入¾pȝ»ŸæœåŠ¡åQ?
[root@localhost mysql]# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
[root@localhost mysql]# cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost mysql]# chkconfig --add mysqld

 

7.启动mysql
[root@localhost mysql]# service mysqld
Usage: /etc/init.d/mysqld {start|stop|restart|reload|force-reload|status} [ MySQL server options ]
[root@localhost mysql]# service mysqld start
Starting MySQL.                                            [¼‹®å®š]
[root@localhost mysql]#

8.使用mysqlåQŒé»˜è®¤root用户是没有密码的
[root@localhost mysql]# cd bin
[root@localhost bin]# ./mysql -u root -p
Enter password: 直接按回�br />Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.45-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

9.修改root密码
[root@localhost bin]# mysqladmin -u root password 'root'
[root@localhost bin]# mysqladmin -u root -h host_name password 'root'
mysqladmin: connect to server at 'host_name' failed
error: 'Unknown MySQL server host 'host_name' (1)'
Check that mysqld is running on host_name and that the port is 3306.
You can check this by doing 'telnet host_name 3306'
[root@localhost bin]# ./mysql -u root -p
Enter password: 输入root
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.01 sec)

mysql> use mysql;
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
23 rows in set (0.00 sec)

mysql> quit
Bye
[root@localhost bin]#


附:[root@localhost mysql]# mysql_install_db --user=mysql执行后的昄¡¤ºåQ?br />Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'

Alternatively you can run:
/usr/local/mysql/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/local/mysql/mysql-test ; perl mysql-test-run.pl



]]>
Linux下安装mysqlhttp://www.aygfsteel.com/kxbin/articles/368125.htmlkxbinkxbinMon, 09 Jan 2012 03:33:00 GMThttp://www.aygfsteel.com/kxbin/articles/368125.htmlhttp://www.aygfsteel.com/kxbin/comments/368125.htmlhttp://www.aygfsteel.com/kxbin/articles/368125.html#Feedback0http://www.aygfsteel.com/kxbin/comments/commentRss/368125.htmlhttp://www.aygfsteel.com/kxbin/services/trackbacks/368125.html# tar -zxvf mysql-5.0.45.tar.gz -C /usr/src/
# cd /usr/src/mysql-5.0.45
# ./configure --prefix=/usr/local/mysql --with-charset=gbk --localstatedir=/usr/local/mysql/data
# make
# make install
# groupadd mysql
# useradd mysql -g mysql
# cd /usr/local/mysql/bin
# ./mysql_install_db --user=mysql
# cd /usr/local/mysql
# chown -R root .
# chown -R mysql data
# chown -R mysql data/ .
# chown -R mysql data/mysql/ .
# chgrp -R mysql .
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
# netstat -tnl |grep 3306
# /usr/local/mysql/bin/mysql -uroot -p
# show database;
# /usr/local/mysql/bin/mysqladmin -uroot password 6220104
# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
# cd /etc/init.d/
# chmod +x mysqld
# chkconfig mysqld
# chkconfig --add mysqld
# chkconfig --level 345 mysqld on
# service mysqld stop
# cp /usr/local/mysql/bin/* /usr/bin/
到此mysql-5.0.45 安装完成åQ?

]]>
关于 No operations allowed after connection closed.错误http://www.aygfsteel.com/kxbin/articles/365775.htmlkxbinkxbinWed, 07 Dec 2011 08:24:00 GMThttp://www.aygfsteel.com/kxbin/articles/365775.htmlhttp://www.aygfsteel.com/kxbin/comments/365775.htmlhttp://www.aygfsteel.com/kxbin/articles/365775.html#Feedback0http://www.aygfsteel.com/kxbin/comments/commentRss/365775.htmlhttp://www.aygfsteel.com/kxbin/services/trackbacks/365775.html

ERROR - No operations allowed after connection closed.
2011-12-07 11:36:09 - ERROR - query failed
org.hibernate.exception.JDBCConnectionException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2148)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
at org.hibernate.loader.Loader.list(Loader.java:2024)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
分析åQŒå‡ºçŽ°è¿™¿Uå¼‚常的原因是:
Mysql服务器默认的“wait_timeout”æ˜?ž®æ—¶åQŒä¹Ÿž®±æ˜¯è¯´ä¸€ä¸ªconnection½Iºé—²­‘…过8个小æ—Óž¼ŒMysqlž®†è‡ªåŠ¨æ–­å¼€è¯¥connection。这ž®±æ˜¯é—®é¢˜çš„æ‰€åœ¨ï¼Œåœ¨C3P0 pools中的connections如果½Iºé—²­‘…过8ž®æ—¶åQŒmysqlž®†å…¶æ–­å¼€åQŒè€ŒC3P0òq¶ä¸çŸ¥é“该connection已经失效åQŒå¦‚果这时有Clientè¯äh±‚connectionåQŒC3P0ž®†è¯¥å¤±æ•ˆçš„Connection提供¾l™ClientåQŒå°†ä¼šé€ æˆä¸Šé¢çš„异常ã€?/div>
a)解决的方法有3¿Uï¼š
    增加wait_timeout的时间ã€?/div>
    减少Connection pools中connectionçš„lifetimeã€?/div>
    ‹¹‹è¯•Connection pools中connection的有效性ã€?/div>
b)具体解决æ–ÒŽ(gu¨©)¡ˆåQ?br />   1、换一下JDBC驱动åQŒJDBC3.1.0-alpha及以前版本会出现此问题,下蝲新的JDBC驱动
  2、ä‹É用hibernate配置åQ?/div>
使用hibernateåQ?nbsp;
<property name="connection.autoReconnect">true</property>  <!--˜q™ä¸ªæ˜¯æœ€ä¸»è¦çš?-> 
<property name="connection.autoReconnectForPools">true</property> 
<property name="connection.is-connection-validation-required">true</property> 
加入以上propertyåQŒå¯è§£å†³æ­¤é—®é¢˜ï¼Œå¦‚果未ä‹É用hibernate½{‰æŒä¹…化½Ž¡ç†æ¡†æž¶åQŒå¯åœ¨mysqlçš„url中加入autoReconnect=trueåQŒè¿™æ ·å°±å¯ä»¥è§£å†³ã€?/div>
原因很简单。在å¯ÒŽ(gu¨©)•°æ®åº“操作¾l“束后关闭连接是正确的做法,没什么大问题。至于出玎ͼšNo operations allowed after connection closed。这æ ïLš„问题原因只有一个,你这里和数据库的˜qžæŽ¥Connection是一个Static的,½E‹åºå…׃ín˜q™ä¸€ä¸ªConnection。所以第一‹Æ¡å¯¹æ•°æ®åº“操作没问题åQŒå½“把Connection关闭后,½W¬äºŒ‹Æ¡è¿˜æƒÏx“ä½œæ•°æ®åº“æ—¶Connection肯定不存在了ã€?/div>


]]>mysql恢复/备䆾命ä×ohttp://www.aygfsteel.com/kxbin/articles/364683.htmlkxbinkxbinThu, 24 Nov 2011 00:05:00 GMThttp://www.aygfsteel.com/kxbin/articles/364683.htmlhttp://www.aygfsteel.com/kxbin/comments/364683.htmlhttp://www.aygfsteel.com/kxbin/articles/364683.html#Feedback0http://www.aygfsteel.com/kxbin/comments/commentRss/364683.htmlhttp://www.aygfsteel.com/kxbin/services/trackbacks/364683.html
1.备䆾命ä×o
mysqldump -u root -p --default-character-set=utf8 itsm>itsm.sql 
2.恢复命ä×o
mysql -uroot -p --default-character-set=utf8 itsm<e:\pole.sql


]]>ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cross ' at line 1 问题http://www.aygfsteel.com/kxbin/articles/364608.htmlkxbinkxbinWed, 23 Nov 2011 00:58:00 GMThttp://www.aygfsteel.com/kxbin/articles/364608.htmlhttp://www.aygfsteel.com/kxbin/comments/364608.htmlhttp://www.aygfsteel.com/kxbin/articles/364608.html#Feedback0http://www.aygfsteel.com/kxbin/comments/commentRss/364608.htmlhttp://www.aygfsteel.com/kxbin/services/trackbacks/364608.html阅读全文

]]>
数据库的定时备䆾http://www.aygfsteel.com/kxbin/articles/360346.htmlkxbinkxbinMon, 10 Oct 2011 01:46:00 GMThttp://www.aygfsteel.com/kxbin/articles/360346.htmlhttp://www.aygfsteel.com/kxbin/comments/360346.htmlhttp://www.aygfsteel.com/kxbin/articles/360346.html#Feedback0http://www.aygfsteel.com/kxbin/comments/commentRss/360346.htmlhttp://www.aygfsteel.com/kxbin/services/trackbacks/360346.html
@echo off 
rem  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
rem  ┣----------------------提示:-----------------------------------┫
rem  ┣--该批处理为数据库备䆾操作文äšg.-------------------------------┫
rem  ┣--ç”׃ºŽsqlserver自带备䆾½{–ç•¥,无需使用批处ç?-------------------┫
rem  ┣--所以对应数据库¾cÕdž‹ä»…包涵oracle,mysql两种.-------------------┫
rem  ┣--存放目录格式如d:\backup\crmnew------------------------------┫
rem  ┣--盘符下一¾U§äØ“æ€È›®å½•的文äšg夹名 例如backup---------------------┫
rem  ┣--二çñ”ä¸ÞZ‹É用该数据库的™å¹ç›®åç§° 例如crmnew---------------------┫
rem  ┣--执行环境为windows server 2003-------------------------------┫
rem  ┣--¾~–写è€?CWCA-研发éƒ?刘洋-2011-7-25---------------------------┫
rem  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
rem ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
rem   ----------------------初始讄¡½®™å?---------------------------
rem   讄¡½®™å¹ç›®åº“备份文件存放根目录-脚本自动创徏
set   bak_dir=d:\databak
rem   讄¡½®™å¹ç›®åç§°
set   project_name=cwcanew
rem   选择备䆾数据所使用的压¾~©èÊYä»?/div>
set   compressFile=c:\uncompress\WinRAR\Rar.exe
rem   讄¡½®æ•°æ®åº“çš„¾cÕdž‹,仅支持oracleå’Œmysql
set   db_type=oracle
rem   讄¡½®ç™»é™†ç›®çš„æ•°æ®åº“的标识,oracle为sid,mysql为库å?/div>
set   db_name=oracle
rem   讄¡½®ç™»é™†ç›®çš„æ•°æ®åº“的用户å?/div>
set   db_user=****
rem   讄¡½®ç™»é™†ç›®çš„æ•°æ®åº“的用户密码
set   db_pwd=****
rem   讄¡½®å¤‡ä†¾å‘¨æœŸ,1为按天备ä»?7为按周备ä»?/div>
set   bak_cycle=1
rem   讄¡½®æ¯ä¸ªå¤‡ä†¾æ–‡äšg的保留天æ•?ä¸?则表½CÞZ¸åˆ é™¤åŽ†å²æ–‡äšg
set   keep_days=0
rem ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
rem ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
rem   ----------------------可选设¾|®é¡¹----------------------------
rem   获取当天为星期几
set   pweek=%date:~-1%
rem   讄¡½®å•个备䆾文äšgå?此处æŒ?™å¹ç›®åç§°_日期"命名-ä¾?crmnew_20110101 -廸™®®ä¸è¦æ›´æ”¹
set   filename=%project_name%_%Date:~0,4%òq?Date:~5,2%æœ?Date:~8,2%æ—?/div>
rem ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
rem ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
rem   ----------------------------------------执行代码区域----------------------------------------
if not exist %bak_dir%\%project_name% mkdir %bak_dir%\%project_name%
set   bakfile=%bak_dir%\%project_name%\%filename%
set   filesuffix=
      if %db_type% equ oracle set filesuffix=dmp
      if %db_type% equ mysql set filesuffix=sql
      if %bak_cycle% equ 7 (
       if %pweek% equ æ—?goto backup
       goto end
      ) 
      if %bak_cycle% equ 1 goto backup
      goto end
      :backup
      if %db_type% equ oracle goto backup_oracle
      if %db_type% equ mysql goto backup_mysql
      goto end
      :backup_oracle
      exp %db_user%/%db_pwd%@%db_name% file=%bakfile%.%filesuffix%
      goto compress
      :backup_mysql
      mysqldump -u%db_user% -p%db_pwd% %db_name% > %bakfile%.%filesuffix%
      goto compress
      :compress
      %compressFile% a %bakfile%.rar %bakfile%.%filesuffix%
      goto delete_source
      :delete_source
      del %bakfile%.%filesuffix%
      goto delete_history
      :delete_history
      if %keep_days% neq 0 forfiles /p %bak_dir%\%project_name%\ /d -%keep_days% /c "cmd /c echo deleting @file ... && del /f @path"
      goto end
      :end
set   bak_dir=
set   project_name=
set   compressFile=
set   db_type=
set   db_name=
set   db_user=
set   db_pwd=
set   bak_cycle=
set   keep_days=
set   pweek=
set   filename=
set   bakfile=
set   filesuffix=
rem ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
pause


]]>‹¹‹è¯•数据库的默认最大连接数http://www.aygfsteel.com/kxbin/articles/358775.htmlkxbinkxbinFri, 16 Sep 2011 03:00:00 GMThttp://www.aygfsteel.com/kxbin/articles/358775.htmlhttp://www.aygfsteel.com/kxbin/comments/358775.htmlhttp://www.aygfsteel.com/kxbin/articles/358775.html#Feedback0http://www.aygfsteel.com/kxbin/comments/commentRss/358775.htmlhttp://www.aygfsteel.com/kxbin/services/trackbacks/358775.html
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
 * ‹¹‹è¯•的最大连接数
 * oracle的默认连接数ä¸?35
 * Mysql的默认连接数ä¸?00
 * @author kxbin
 * 
 */
class testMaxConn {
int count = 0; // ˜qžæŽ¥æ•?/div>
Connection[] conn = new Connection[1000];
Statement[] stmt = new Statement[1000];
ResultSet[] rs = new ResultSet[1000];
/**
* 数据库连接方法(oracleåQ?/div>
*/
public void testOracleMaxConn() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url = "jdbc:oracle:thin:@localhost:1521:compare";
for (count = 0; count < 135; count++) {
conn[count] = DriverManager.getConnection(url,"nxcompare", "64compare");
stmt[count] = conn[count].createStatement();
rs[count] = stmt[count].executeQuery("SELECT * FROM users");
System.out.print(count + "\t");
}
} catch (SQLException ex1) {
System.out.println("\n" + ex1.toString());
} catch (InstantiationException ex2) {
System.out.println("\n" + ex2.toString());
} catch (ClassNotFoundException ex3) {
System.out.println("\n" + ex3.toString());
} catch (IllegalAccessException ex4) {
System.out.println("\n" + ex4.toString());
} finally {
try {
System.out.println("\n¾pȝ»Ÿæ‰“开的连接数"+ count--+ " oracle connections.\nè¯ähŒ‰å›žèžR按钮åQŒè¿›è¡Œå…³é—?);
System.in.read();
System.out.println("\né—­å…³˜qžæŽ¥:");
for (; count >= 0; count--) {
rs[count].close();
stmt[count].close();
conn[count].close();
System.out.print(count + "\t");
}
} catch (SQLException ex) {
System.out.println("\n 关闭˜qžæŽ¥å‡ºçްSQLExceptionåQ?+ ex.toString());
} catch (IOException io_ex) {
System.out.println("\n 关闭˜qžæŽ¥å‡ºçްIOExceptionåQ?+ io_ex.toString());
}
}
}
/**
* 数据库连接方法(MysqlåQ?/div>
*/
public void testMysqlMaxConn() {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url = "jdbc:mysql://localhost:3306/tm?useUnicode=true&characterEncoding=GBK";
for (count = 0; count < 100; count++) {
conn[count] = DriverManager.getConnection(url,"root", "root");
stmt[count] = conn[count].createStatement();
rs[count] = stmt[count].executeQuery("SELECT * FROM userinfo");
System.out.print(count + "\t");
}
} catch (SQLException ex1) {
System.out.println("\n" + ex1.toString());
} catch (InstantiationException ex2) {
System.out.println("\n" + ex2.toString());
} catch (ClassNotFoundException ex3) {
System.out.println("\n" + ex3.toString());
} catch (IllegalAccessException ex4) {
System.out.println("\n" + ex4.toString());
} finally {
try {
System.out.println("\n¾pȝ»Ÿæ‰“开的连接数"+ count--+ " MYSQL connections.\nè¯ähŒ‰å›žèžR按钮åQŒè¿›è¡Œå…³é—?);
System.in.read();
System.out.println("\né—­å…³˜qžæŽ¥:");
for (; count >= 0; count--) {
rs[count].close();
stmt[count].close();
conn[count].close();
System.out.print(count + "\t");
}
} catch (SQLException ex) {
System.out.println("\n 关闭˜qžæŽ¥å‡ºçްSQLExceptionåQ?+ ex.toString());
} catch (IOException io_ex) {
System.out.println("\n 关闭˜qžæŽ¥å‡ºçްIOExceptionåQ?+ io_ex.toString());
}
}
}
/**
* ‹¹‹è¯•æ–ÒŽ(gu¨©)³•
* @param args
* @throws Exception
*/
public static void main(String args[]) throws Exception {
// new testMaxConn().testOracleMaxConn(); //‹¹‹è¯•Oracle默认最大连接数135
new testMaxConn().testMysqlMaxConn(); //‹¹‹è¯•MYSQLåQŒé»˜è®¤æœ€å¤§è¿žæŽ¥æ•°100
}
}


]]>mysql中文ä¹Þq è§£å†³æ–ÒŽ(gu¨©)³•http://www.aygfsteel.com/kxbin/articles/358626.htmlkxbinkxbinWed, 14 Sep 2011 08:30:00 GMThttp://www.aygfsteel.com/kxbin/articles/358626.htmlhttp://www.aygfsteel.com/kxbin/comments/358626.htmlhttp://www.aygfsteel.com/kxbin/articles/358626.html#Feedback0http://www.aygfsteel.com/kxbin/comments/commentRss/358626.htmlhttp://www.aygfsteel.com/kxbin/services/trackbacks/358626.html
ä¹Þq é—®é¢˜è§£å†³
my.ini中的default-character-set = gb2312 
然后 String url = "jdbc:mysql://localhost:3306/LibraryManagementSystem?useUnicode=true&characterEncoding=GB2312"; 
在hibernateçš„äØ•ç é—®é¢?/div>
<property name="connection.url">
   jdbc:mysql://localhost:3306/hibernate?useUnicode=true&amp;characterEncoding=UTF-8
</property>


]]>
æ‰¹å¤„ç†æ‰§è¡Œåˆ›å»ø™¡¨½Iºé—´å’Œè¡¨MYSQLhttp://www.aygfsteel.com/kxbin/articles/358624.htmlkxbinkxbinWed, 14 Sep 2011 08:25:00 GMThttp://www.aygfsteel.com/kxbin/articles/358624.htmlhttp://www.aygfsteel.com/kxbin/comments/358624.htmlhttp://www.aygfsteel.com/kxbin/articles/358624.html#Feedback0http://www.aygfsteel.com/kxbin/comments/commentRss/358624.htmlhttp://www.aygfsteel.com/kxbin/services/trackbacks/358624.html1。徏立一个batæ–‡äšgåQŒå†…容如下:
@echo off
"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql.exe" -h localhost --user=root --password=root --port=3306 mysql < tm.sql > d:/tm.log
echo 数据库和表创建成功,ç™Õd½•的初始用户名:adminåQ›å¯†ç ?admin;用户¾cÕdž‹ä¸ºï¼š½Ž¡ç†å‘?/div>
echo è¯ähŒ‰ä»ÀL„é”®é€€å‡?..........!
pause>nul
2。徏立一个sqlæ–‡äšgåQŒå†…容如下: 
-- 如果已经存在数据库,则删�/div>
DROP database IF EXISTS `tm`;
create   database   tm   default   character   set   gbk;
USE tm;
set names gbk; 
-- 1 用户账号½Ž¡ç† ==============================================================
create table userInfo 
(
   id                   int                            not null,
   userName             varchar(20), -- 用户å?/div>
   password             varchar(20), -- 密码
   level                varchar(10), -- ¾U§åˆ«
   remark               varchar(100), -- 备注
   createDate           datetime,   -- 创徏旉™—´
   deleteFlag           varchar(1), -- 是否删除(Y删除,N正常)
   constraint PK_USERINFO primary key clustered (id)
);
-- 默认æ·ÕdŠ ä¸€ä¸ªç”¨æˆ?/div>
insert into userInfo values(1,'admin','admin','½Ž¡ç†å‘?,'',now(),'N');


]]> Ö÷Õ¾Ö©Öë³ØÄ£°å£º Áú¿ÚÊÐ| Äþ¹úÊÐ| áÔÃ÷ÏØ| ÄþµÂÊÐ| ºº´¨ÊÐ| ±¦·áÏØ| ÆÁÄÏÏØ| ¾ÅÁú³ÇÇø| ¹¤²¼½­´ïÏØ| °²ÐÂÏØ| äÒÔ´ÏØ| µ¤ÑôÊÐ| Ì«°×ÏØ| ÊÙÄþÏØ| ͨ»¯ÊÐ| ¹ãººÊÐ| ̨ÍåÊ¡| »ôÁÖ¹ùÀÕÊÐ| ÄáÄ¾ÏØ| ÃñºÍ| ÉÜÐËÏØ| ÄÏÖ£ÏØ| ãòË®ÏØ| ´¾»¯ÏØ| ¶þÊÖ·¿| ×ÛÒÕ| ÅìºþÏØ| °¢¿ËËÕÊÐ| кÍÏØ| Ôó¿âÏØ| °×ÒøÊÐ| ɽ¶«| ÏØ¼¶ÊÐ| ÉñÅ©¼ÜÁÖÇø| È«½·ÏØ| ºÍÌïÊÐ| »áÍ¬ÏØ| ·áÌ¨Çø| Ã÷Ë®ÏØ| éŽ­ÏØ| ¾²º£ÏØ|