æè“v索引,应该ä¸ä¼š(x¨¬)感到陌生,若说它就是目å½?/span>,大概都知é“了,æ•°æ®åº“çš„ç´¢å¼•ä¸Žä¹¦çš„ç›®å½•å¾ˆç›æ€¼¼,都å«index.书的内容相当于数æ®åº“表ä¸çš„æ•°æ?/span>,ä¹?/span>的目录通过™åëŠ æŒ‡å‘书的内容,åŒæ ·,索引也记录了表ä¸çš„关键å€?/span>,æä¾›äº†æŒ‡å‘表ä¸è¡Œçš„æŒ‡é’?/span>.书的目录使读者很快的扑ֈ°æƒ³çœ‹çš„内å®?/span>,而ä¸å¿…翻看书的æ¯ä¸€™å?/span>,索引使得数æ®åº“应用程åºèƒ½å¤Ÿä¸æ‰«æå…¨è¡¨è€Œæ‰¾åˆ°æƒ³è¦çš„æ•°æ®.
ç´¢å¼•æ˜¯ä¸æ˜¯å¤šå¤šç›Šå–?/span>?
索引å¯ä»¥åˆ›å¾åœ¨ä¸€åˆ—或多列的组åˆä¸Š,也å¯ä»¥åœ¨æ•°æ®åº“表的多个列上å¾ç«‹ä¸åŒçš„索引,但这些列应该是ç»å¸æ€½œä¸ºæŸ¥è¯¢æ¡ä»¶çš„åˆ?/span>.éœ€è¦æŒ‡å‡ºçš„æ˜?/span>,òq¶ä¸æ˜¯è¡¨ä¸Šçš„索引‘Šå¤š‘Šå¥½,在数æ®åº“设计˜q‡ç¨‹ä¸ï¼Œ˜q˜æ˜¯éœ€è¦äØ“(f¨´)表选择一些åˆé€‚的索引。宾~ºå‹¿çƒ‚,˜q™æ˜¯å»ºç«‹ç´¢å¼•时的一个具体选择。在ç†è®ºä¸Šï¼Œè™½ç„¶ä¸€ä¸ªè¡¨å¯ä»¥è®„¡½®æ— é™çš„烦引,ä½?/span>表ä¸çš„烦引越多,¾l´æŠ¤ç´¢å¼•所需è¦çš„开销也就‘Šå¤§ã€‚æ¯å½“æ•°æ®è¡¨ä¸è®°å½•æœ‰å¢žåŠ ã€åˆ é™¤ã€æ›´æ–°å˜åŒ–的时候,数æ®åº“ç³»¾lŸéƒ½éœ€è¦å¯¹æ‰€æœ‰çƒ¦å¼•进行更新ã€?/span>
索引的分¾c?/p>
索引å¯ä»¥åˆ†äØ“(f¨´)三类:èšé›†ç´¢å¼•(clustered index),éžèšé›†çƒ¦å¼?/span>,唯一性烦å¼?/span>(unique index).æ ÒŽ(gu¨©)®ç´¢å¼•å—æ®µ¾l„æˆåˆæœ‰å¤åˆç´¢å¼•的说æ³?/span>,å¤åˆç´¢å¼•å¯ä»¥æ˜¯å”¯ä¸€ç´¢å¼•也å¯ä»¥ä¸æ˜¯å”¯ä¸€ç´¢å¼•.一个表上最多创å»ÞZ¸€ä¸ªèšé›†çƒ¦å¼•å’Œ249个éžèšé›†ç´¢å¼•.
创å¾ç´¢å¼•çš„æ¡ä»?/p>
åQ?åQ‰äØ“(f¨´)¾l常出现在关键å—orderbyã€group byã€distinctåŽé¢çš„å—ŒDµï¼Œå»ºç«‹ç´¢å¼•ã€?/p>
åQ?åQ‰åœ¨union½{‰é›†åˆæ“作的¾l“果集嗌Dµä¸ŠåQŒå¾ç«‹çƒ¦å¼•ã€?/p>
åQ?åQ‰äØ“(f¨´)¾l常用作查询选择的嗌Dµï¼Œå»ºç«‹ç´¢å¼•ã€?/p>
åQ?åQ‰åœ¨¾l常用作表连接的属性上åQŒå¾ç«‹çƒ¦å¼•ã€?/p>
åQ?åQ‰è€ƒè™‘使用索引覆盖。对数æ®å¾ˆå°‘被更新的表,如果用户¾lå¸¸åªæŸ¥è¯¢å…¶ä¸çš„å‡ ä¸ªå—æ®µåQŒå¯ä»¥è€ƒè™‘åœ¨è¿™å‡ ä¸ªå—æ®µä¸Šå¾ç«‹çƒ¦å¼•ï¼Œä»Žè€Œå°†è¡¨çš„æ‰«ææ”¹å˜ä¸ºçƒ¦å¼•的扫æã€?/p>
创å¾ç´¢å¼•çš„é™åˆ?/p>
åQ?åQ‰é™åˆ¶çƒ¦å¼•æ•°ç›®ã€?/p>
(2)å”¯ä¸€æ€§å¤ªå·®çš„å—æ®µä¸é€‚åˆå•独创å¾ç´¢å¼•åQ?/p>
(3)更新频ç¹çš„å—ŒDµä¸é€‚åˆåˆ›å¾ç´¢å¼•åQ?/p>
(4)ä¸ä¼š(x¨¬)åšäØ“(f¨´)查询æ¡äšg的嗌Dµä¸åˆ›å¾ç´¢å¼•
å˜å‚¨˜q‡ç¨‹æ˜¯ä»¥ä¸€ä¸ªåå—å˜å‚¨åœ¨æ•°æ®åº“ä¸çš?/span>,¾l过预编译的T_SQLè¯å¥é›†åˆ,å¯ä»¥ç‹¬ç«‹æ‰§è¡Œæˆ–通过应用½E‹åºçš„è°ƒç”¨æ¥æ‰§è¡Œ.
触å‘器是ä¸ç”±ç”¨æˆ·ç›´æŽ¥è°ƒç”¨çš?/span>,è€Œæ˜¯åœ¨å¯¹è¡¨æˆ–è§†å›¾ä¸æ•°æ®è¿›è¡?/span>update,insert或è€?/span>deleteæ“作时自动执è¡?/span>.一个表或视囑֯以有多个触å‘å™?/span>,æ¯ä¸ªè§¦å‘器å¯ä»¥åŒ…å«å¤æ‚çš„SQLè¯å¥.æ•°æ®åº“表之间的引用完整性约æ?/span>,除了å¯ä»¥é‡‡ç”¨ä¸»é”®å’Œå¤–键的对应¾U¦æŸæ¥å®žçŽîC¹‹å¤?/span>,˜q˜å¯ä»¥ä‹É用触å‘器,ä»Žè€Œå®žçŽ°æ›´å¤æ‚的用户定义完整性约æ?/span>.
˜q™ä¸ªå‡½æ•°ä¸€èˆ¬æŽ¥æ”¶å—½W¦ä½œä¸ºå‚敎ͼŒòq¶ä¸”å¯ä»¥˜q”回å—符或数å?/span>
其䏿œ€å¸¸ç”¨æœ‰ä»¥ä¸‹ä¸¤ä¸ªå‡½æ•?/span>
1.CONCAT函数
主è¦ç”¨äºŽå—符串的˜qžæŽ¥åQŒå…·ä½“è¯æ³•如ä¸?/span>
CONCATåQˆc1,c2åQ?/span>
æŽ¥æ”¶ä¸¤ä¸ªå‚æ•°åQŒå°†½W¬äºŒä¸ªå‚数连接到½W¬ä¸€ä¸ªå‚数的末尾åQŒå‡å¦‚ç¬¬äºŒä¸ªå‚æ•°æ˜¯NULLåQ?/span>
åˆ™å‡½æ•°è¿”å›žç¬¬ä¸€ä¸ªå‚æ•ŽÍ¼Œå‡å¦‚½W¬ä¸€ä¸ªå‚数是NULLåQŒåˆ™å‚æ•°˜q”回½W¬äºŒä¸ªå‚敎ͼŒ
å‡å¦‚éƒ½äØ“(f¨´)NULLåQŒåˆ™å‡½æ•°˜q”回NULL
为商å“äh(hu¨¢n)æ ¼æ·»åŠ å…ƒå•ä½½CÞZ¾‹å¦‚下åQ?br />
2.NVL函数
˜q™ä¸ªå‡½æ•°ä¸»è¦ç”¨äºŽå‡½æ•°æ›¿æ¢
NVL(e1,e2)
æŽ¥æ”¶ä¸¤ä¸ªå‚æ•°åQŒå‡å¦‚ç¬¬ä¸€ä¸ªå‚æ•îC¸ä¸ºNULLæ—Óž¼Œå‡½æ•°˜q”回½W¬ä¸€ä¸ªå‚敎ͼŒ
å‡å¦‚½W¬ä¸€ä¸ªå‚æ•îCØ“(f¨´)NULLæ—Óž¼Œå‡½æ•°˜q”回½W¬äºŒä¸ªå‚æ•?/span>
具体的ä‹É用示例如下:(x¨¬)
查询商å“表的相关信æ¯åQŒå¯¹æ²¡æœ‰è¯¦ç»†ä»‹ç»çš„商å“默认设¾|®æ˜¾½C?#8220;æš‚æ— è¯¦ç»†æè¿°”
å¯ä‹Éç”¨æš‚æ— è¯¦¾l†æ˜q°æ¥ä»£æ›¿NULL
å—符常用函数˜q˜æœ‰å¾ˆå¤šåQŒå¸Œæœ›å¤§å®¶èƒ½åœ¨æˆ‘的基¼‹€ä¸Šè¯„è®ø™¡¥å…?/span>
å¯ä»¥æŠŠSQLè¯è¨€çœ‹æˆæ˜¯å®¢æˆïL(f¨¥ng)«¯ä¸ŽæœåŠ¡å™¨ç«¯æ²Ÿé€šçš„ä¸€ä¸ªå·¥å…øP¼Œç”¨æ¥å˜å–åQŒæŸ¥è¯¢å’Œæ›´æ–°åQŒå…³¾pÀL•°æ®åº“¾pÈ»Ÿ
Insertè¯å¥
INSERTè¯å¥çš„è¯æ³•结构如下:(x¨¬)
tableå€¼çš„æ˜¯è¦æ’入数æ®çš„表的表å,ColumnæŒ‡çš„æ˜¯è¦æ’入数æ®çš„列å,ValueæŒ‡çš„æ˜¯è¦æ’入的具体数æ®å€?/span>
例如往ä¼?x¨¬)å‘˜è¡¨ä¸æ’入一个新的会(x¨¬)员数æ®ï¼Œå¯ä»¥˜q™æ ·æ·ÕdŠ åQ?/span>
å‰è€…的优点是å¯ä»¥æŒ‡å®šå“ªäº›å—ŒD‰|·»åŠ å“ªäº›æ•°æ®ï¼Œ¾~ºç‚¹æ˜¯è¡¨ååŽé¢çš„ž®æ‹¬å·ä¸çš„å—ŒDµå需è¦å’ŒValue值相对照
åŽè€…的优点是书写简å•,¾~ºç‚¹æ˜¯è¦æŠŠæ‰€æœ‰çš„å—æ®µéƒ½åœ¨Valueä¸è¿›è¡Œèµ‹å€?/span>
å½“éœ€è¦æ’入数æ®åŒ…嫿œ‰½Iºå€¼çš„æ—¶å€™ï¼Œä¸€èˆ¬ä‹É用第一¿Uæ–¹æ³•ï¼Œè€Œç¬¬äºŒç§æ–ÒŽ(gu¨©)³•˜q›è¡Œæ’入需è¦ä‹É用NULL关键å—进行填å…?/span>
å‡å¦‚æ’入的数æ®åŒ…嫿—¶é—ß_(d¨¢)¼Œè€Œä¸”æ—‰™—´æ˜¯å½“å‰çš„æ—‰™—´åQ?/span>
å‡å¦‚æ’入的是旉™—´åQŒåƈ且时间是æŸä¸ªå…·ä½“的时é—ß_(d¨¢)¼Œæˆ‘们å¯ä»¥ž®†ä¸Š˜q°çš„è¯å¥˜q›è¡Œä¿®æ”¹å¦‚下åQ?/span>
以上æ“作的都是å•行的数æ®åQŒè€Œä¸‹é¢çš„æ“ä½œæ˜¯å¤šè¡Œçš„æ•°æ®
æ’入多行数殽CÞZ¾‹å¦‚下åQ?br />
UPDATEè¯å¥
UPDATEè¯å¥¾l“构如下åQ?/span>
如åˆå§‹åŒ–所有会(x¨¬)员密ç :(x¨¬)
按æ¡ä»¶æ›´æ–ŽÍ¼š(x¨¬)
åšæ›´æ–°æ“作的时候,W(xu¨¦)HEREæ¡äšg一般选择¾cÖM¼¼ä¸»é”®˜q™æ ·æœ‰å”¯ä¸€æ€§çº¦æŸçš„å—æ®µåQŒé™¤éžç‰¹ŒDŠæƒ…况,
å¦åˆ™çš„è¯ä¼?x¨¬)引èµäh„想ä¸åˆ°çš„误æ“作,比如更新用户表时以nameä½œäØ“(f¨´)æ¡äšgçš„è¯åQŒå°±å分å±é™©åQ?/span>
å› äØ“(f¨´)åå—æ˜¯å¯ä»¥é‡å¤çš„
Selectè¯å¥
我们å¯ÒŽ(gu¨©)•°æ®åº“åšå¾—最多的æ“ä½œæ˜¯æ•°æ®æ£€ç´?/span>
selectè¯å¥ž®±æ˜¾å¾—æžå…‰™‡è¦?/span>
其䏿œ€½Ž€å•的查询实例如下åQ?/span>
*指的是所有列
而查询所有VIPæ•°æ®å¦‚下åQ?/span>
查询两个æ¡äšgåŒæ—¶æˆç«‹çš„示例如下:(x¨¬)
查询两个æ¡äšgæˆç«‹å…¶ä¸ä¸€ä¸ªï¼Œ½CÞZ¾‹å¦‚下åQ?/span>
查询æ¡äšg为空的示例如下:(x¨¬)
å½“è¦æŸ¥è¯¢ä¼?x¨¬)å‘˜ä¸æ‰€æœ‰å§“æŽçš„ä¼?x¨¬)员æ—Óž¼Œéœ€è¦ç”¨åˆ°æ¨¡¾pŠæŸ¥è¯¢ï¼š(x¨¬)
% 能匹�到多个嗽W?/span>
_ 能ä“Qæ„匹é…å•个嗽W?/span>
查询商å“表ä¸ä»äh ¼åœ?00-400ä¹‹é—´çš„å•†å“æ•°æ?
而查询会(x¨¬)员表ä¸å¼ ä¸‰ã€æŽå››ã€çŽ‹äº”çš„ä¿¡æ¯æ–ÒŽ(gu¨©)³•如下åQ?/span>
ä½¿ç”¨åˆ«åæŸ¥è¯¢åQ?/span>
其䏿Ÿ¥è¯¢ä¸å¯èƒ½éœ€è¦å¯¹æŸ¥è¯¢çš„结果进行排åºï¼Œå…¶ç»“构如下:(x¨¬)
查询商å“表,按上架时间进行排åºï¼š(x¨¬)
如果惛_Ž»æŽ‰æŸ¥è¯¢ç»“æžœä¸çš„é‡å¤æ•°æ®ï¼Œå¯ä»¥ä½¿ç”¨Distinction关键å—,如下
Deleteè¯å¥
è¯æ³•¾l“构如下
å…¶ä¸çš„table å’?condition在上é¢å·²¾l有æåŠ(qi¨¢ng)
åˆ é™¤½CÞZ¾‹å¦‚下
在实际æ“ä½œä¸æˆ‘们应该使用å‡åˆ 除,ž®±æ˜¯å†å¢žåŠ ä¸€ä¸ªçŠ¶æ€ï¼ˆä¸€èˆ¬äØ“(f¨´)statusåQ‰çš„å—æ®µ
åœ¨åˆ é™¤é”™è¯¯ä¹‹åŽï¼Œæˆ‘们å¯ä»¥ç”?ROLLBACKæ¥å›žæ»šäº‹åŠ?/span>
在tmpç›®å½•ä¸‹é¢æœ‰ä¸€ä¸ªa.txtæ–‡äšgåQŒæˆ‘们通过ls -l命ä×o(h¨´)å¯ä»¥æŸ¥çœ‹å…¶è¯¦¾l†ä¿¡æ¯ï¼š(x¨¬)
-åQšè¡¨½Cºæ™®é€šæ–‡ä»Óž¼Œd:表示目录文äšgåQŒl:链接文äšg,b:讑֤‡æ–‡äšgä¸å¯ä»¥ä¾›å˜å‚¨çš„æŽ¥å£è®¾å¤?c:讑֤‡æ–‡äšgä¸ä¸²è¡Œç«¯å£è®¾å¤‡å¦‚键盘ã€?/p>
ç”׃ºŽæœ€å‰é¢æ˜?åQ𿉀以a.txt是普通文件ã€?/p>
å†çœ‹ rw-r--r--部分åQŒæˆ‘们将其分ä¸ÞZ¸‰¾l„,分别对应文äšg所有者,文äšg所属组åQŒå…¶ä»–用æˆïL(f¨¥ng)š„æƒé™.
å…¶ä¸r代表è¯Õd–æƒé™åQŒw:代表写æƒé™ï¼ŒxåQšä»£è¡¨æ‰§è¡Œæƒé™?˜q™é‡Œæ²¡å‡ºçŽ?,-åQšä»£è¡¨æ²¡æœ‰æŸ¿Uæƒé™ã€?/p>
那对上é¢çš„æƒé™çš„解释ž®±æ˜¯åQ?/p>
owner:å¯ä»¥è¯Õd’Œå†™ï¼Œä¸èƒ½æ‰§è¡Œ
group:å¯ä»¥è¯Õd–ä¸èƒ½å†™ï¼Œä¸èƒ½æ‰§è¡Œ
other:å¯ä»¥è¯Õd–åQŒä¸èƒ½å†™åQŒä¸èƒ½æ‰§è¡?/p>
½W¬ä¸€ä¸ªroot代表文äšg所有者,½W¬äºŒä¸ªroot代表文äšg所属组
那么现在我如果想修改文äšg所有者,文äšg所属组åQŒæ–‡ä»¶æƒé™è¯¥æ€Žä¹ˆåšï¼Œè¯ïL(f¨¥ng)‘ô¾lå‘下阅读:(x¨¬)
chgrp:修改用户所属组åQŒchownåQšä¿®æ”ÒŽ(gu¨©)–‡ä»¶æ‰€æœ‰è€…,chmod:修改文äšgæƒé™
å‡è®¾æˆ‘çš„¾pÈ»Ÿä¸åˆä¸€ä¸ªå«gavin的组(通过/etc/group查看)
如上图,通过chgrp命ä×o(h¨´)ž®†è¯¥æ–‡äšgçš„group修改ä¸ÞZº†gavin
下é¢ä¿®æ”¹å…¶æ‰€æœ‰è€…:(x¨¬)
修改其æƒé™ï¼š(x¨¬)
chmod 777 a.txt ˜q™ä¸ª777代表什ä¹?
在linuxä¸ä‹É用数å—代表æƒé™ï¼š(x¨¬)
r:4 w:2 x:1
r-- =4+0+0=4;
rw- =4+2+0=6;
rwx =4+2+1=7
ç›æ€¿¡å†™åˆ°˜q™é‡Œå¤§å®¶éƒ½åº”该明白了å§ã€?/p>
æƒé™å¯¹äºŽæ–‡äšg和文件夹的æ„义是ä¸ä¸€æ ïL(f¨¥ng)š„åQ?/p>
对于文äšgåQ?/p>
r:代表å¯ä»¥è¯Õd–æ–‡äšg的内容,w:代表å¯ä»¥ä¿®æ”¹æ–‡äšg的内容,x:å¯ä»¥æ‰§è¡Œ˜q™ä¸ªæ–‡äšg
对于文äšg夹:(x¨¬)
r:å¯ä»¥èŽ·å–æ–‡äšg夹ä¸åˆå“ªäº›æ–‡ä»Óž¼Œw:å¯ä»¥æ·ÕdŠ å’Œåˆ é™¤æ–‡ä»¶å¤¹ä¸çš„内容åQŒx:å¯ä»¥˜q›å…¥æ–‡äšg夹,
如果æŸä¸ªè§’色对于一个文件夹的æƒé™æ˜¯rw-;
那么他仅仅å¯ä»¥ä‹É用lsèŽ·å–æ–‡äšg夹ä¸çš„内容,但是ä¸å¯ä»¥ä‹É用cd˜q›å…¥è¯¥æ–‡ä»¶å¤¹ã€?/p>
æ–‡äšgçš„æƒé™å‘Šä¸€ŒDµè½åQŒçŽ°åœ¨æ¥çœ‹çœ‹linuxä¸çš„那些常è§ç›®å½•ä¸çš„内容åQ?/p>
/bin ¾pÈ»Ÿæœ‰å¾ˆå¤šæ”¾¾|®æ‰§è¡Œæ–‡ä»¶çš„目录åQŒä½†æ˜?bin比较ç‰ÒŽ(gu¨©)®ŠåQŒå› ä¸?bin攄¡½®çš„æ˜¯åœ¨å•用户¾l´æŠ¤æ¨¡å¼ä¸‹è¿˜èƒ½å¤Ÿè¢«æ“作的命ä×o(h¨´)åQŒåœ¨/bin下é¢çš„命令å¯ä»¥è¢«root和一般è̎户ä‹É用,如:(x¨¬)cat,chmod,chown,data,mv,mkdir,cp ,bash½{‰å¸¸ç”¨å‘½ä»¤ã€?/p>
/boot ä¸»è¦æ”„¡½®å¼€æœÞZ‹É用到的文ä»?/p>
/dev 在linux¾pÈ»Ÿä¸ä“Q何设备与接å£è®‘Ö¤‡éƒ½æ˜¯ä»¥æ–‡ä»¶çš„å½¢å¼å˜åœ¨äºŽè¿™ä¸ªç›®å½•当ä¸ï¼Œä½ åªè¦è®¿é—®æŸä¸ªæ–‡ä»¶å°±ç›¸å½“于访问该讑֤‡
/etc ¾pÈ»Ÿçš„主è¦é…¾|®æ–‡ä»¶å‡ 乎都在这个文件夹¾c…R€?/p>
/home ˜q™æ˜¯¾pÈ»Ÿé»˜è®¤çš„用户主文äšgå¤?/p>
/lib ¾pÈ»Ÿçš„函数库éžå¸¸å¤šï¼Œäº?lib攄¡½®çš„æ˜¯å¼€æœÞZ¼š(x¨¬)使用到的函数åº?/p>
/mnt å¦‚æžœä½ æƒ³ä¸´æ—¶æŒ‚åœ¨ä¸€äº›å¤–éƒ¨è®¾å¤‡ï¼ˆå…‰ç›˜åQ‰ä¸€èˆ¬å¾è®®æ”¾¾|®åˆ°˜q™ä¸ªç›®å½•ã€?/p>
/opt ˜q™æ˜¯¾l™ç¬¬ä¸‰æ–¹è½¯äšg攄¡½®çš„ç›®å½?/p>
/root ¾pÈ»Ÿ½Ž¡ç†å‘˜çš„ä¸ÀL–‡ä»¶å¤¹
/tmp ˜q™æ˜¯è®©ä¸€èˆ¬ç”¨æˆähˆ–者æ£åœ¨æ‰§è¡Œçš„½E‹åºæ”„¡½®æ–‡äšg的地方,˜q™ä¸ªç›®å½•是ä“Q何äh都å¯ä»¥è®¿é—®çš„åQŒæ‰€ä»¥ä½ 需è¦å®šæœŸæ¸…ç†ä¸€ä¸‹ï¼Œå½“ç„¶é‡è¦æ•°æ®æ—¶ä¸èƒ½æ”¾åˆ°è¿™é‡Œæ¥çš„ã€?/p>
关于文äšgæƒé™çš„æœ€åŽä¸€ç‚¹å°±æ˜¯ï¼š(x¨¬)æ–‡äšg默认æƒé™umask
现在我们已ç»çŸ¥é“å¦‚ä½•æ–°å¾æˆ–者改å˜ä¸€ä¸ªç›®å½•的属性了åQŒä¸˜q‡ä½ 知é“å½“ä½ æ–°å¾ä¸€ä¸ªæ–°çš„æ–‡ä»¶æˆ–则目录是åQŒå®ƒçš„默认æƒé™æ˜¯ä»€ä¹ˆå—åQŸé‚£ž®±æ˜¯äºŽumask˜q™ä¸œè¥¿æœ‰å…³äº†åQŒé‚£ä¹ˆumask是在æžä»€ä¹ˆå‘¢åQŒåŸºæœ¬ä¸ŠåQŒumaskž®±æ˜¯åˆ¶å®šç›®å‰ç”¨æˆ·åœ¨æ–°å»ºæ–‡ä»¶æˆ–目录的时候æƒé™çš„默认å€û|¼Œå¦‚果获得或设¾|®umaskåQŒæ–¹æ³•如下:(x¨¬)
#umask 或则 umask -S
(四使•ŽÍ¼Œ½W¬ä¸€ä½æˆ‘们先ä¸ç®¡åQŒè¡¨½Cºç‰¹ŒDŠæƒé™ï¼Œæˆ‘们从第二ä½å¼€å§‹çœ‹èµ?
在默认æƒé™ä¸ŠåQŒæ–‡ä»¶å’Œç›®å½•是ä¸ä¸€æ ïL(f¨¥ng)š„åQŒå¯¹äºŽä¸€ä¸ªç›®å½•,xæƒé™æ˜¯éžå¸”R‡è¦çš„ åQŒè€Œå¯¹äºŽä¸€ä¸ªæ–‡ä»Óž¼Œxæƒé™åœ¨é»˜è®¤æ˜¯ä¸åº”è¯¥æœ‰çš„ï¼Œå› äØ“(f¨´)æ–‡äšg大多是用æ¥å˜å‚¨æ•°æ®çš„åQŒæ‰€ä»¥åœ¨linuxä¸ï¼Œæ–‡äšg的默认æƒé™æ˜¯666,目录的默认æƒé™æ˜¯777
è¦æ³¨æ„的是umask的分数指的是“默认值需è¦å‰ªæŽ‰çš„æƒé™”,
所以新建文件时æƒé™åQšrw--r--r--
æ–°å¾ç›®å½•åQšr-xr-xr-x
---å•行函数对å•行æ“ä½?/span>
---æ¯è¡Œ˜q”回一个结æž?/span>
---有å¯èƒ½è¿”回å€ég¸ŽåŽŸå‚æ•°æ•°æ®ç±»åž‹ä¸ä¸€è‡?转æ¢å‡½æ•°)
---å•行函数å¯ä»¥å†™åœ¨SELECT,WHERE,ORDER BYåå¥ä¸?/span>
---æœ‰äº›å‡½æ•°æ²¡æœ‰å‚æ•°åQŒæœ‰äº›å‡½æ•°æœ‰ä¸€ä¸ªæˆ–å¤šä¸ªå‚æ•°
---函数å¯ä»¥åµŒå¥—
分类åQ?/span>å—符函数åQŒæ•°å—函敎ͼŒæ—¥æœŸå‡½æ•°åQŒè{æ¢å‡½æ•ŽÍ¼Œé€šç”¨å‡½æ•°
äº?å—符函数
1.½Ž€ä»?/span>
定义åQ?/span>ä¸»è¦æŒ‡å‚数类型是å—符型,ä¸åŒå‡½æ•°˜q”回值å¯èƒ½æ˜¯å—符或数å—ç±»åž?/span>
<1>.LOWERåQšå…¨ž®å†™
LOWER('SQL Course')——>sql course
<2>.UPPERåQšå…¨å¤§å†™
UPPER('SQL Course')——>SQL COURSE
<3>.INITCAPåQšé¦–å—æ¯å¤§å†™
INITCAP('SQL Course')——>Sql course
<4>.CONCATåQšå—½W¦ä¸²˜qžæŽ¥
CONCAT('Good','String')——>GoodString
<5>.SUBSTRåQšå—½W¦ä¸²æˆªå–
SUBSTR('String',1,3)——>Str
<6>.LENGTHåQšè¿”回嗽W¦ä¸²é•¿åº¦
LENGTH('String')——>6
<7>.INSTRåQšè¿”回一个嗽W¦ä¸²åœ¨å¦ä¸€ä¸ªå—½W¦ä¸²ä¸çš„ä½ç½®
INSTR('String','r')——>3
<8>.LPADåQšå·¦å¡«å……
LPAD(sal,10,'*')——>******5000
<9>.RPADåQšå³å¡«å……
RPAD(sal,10,'*')——>5000******
<10>.TRIMåQšåŽ»æŽ‰å·¦å³ä¸¤è¾ÒŽ(gu¨©)Œ‡å®šå—½W?/span>
TRIM('S' FROM 'SSMITH')——>MITH
<11>.REPLACE:替æ¢å—符ä¸?/span>
REPLACE('abc','b','d')——>adc
ä¸?æ•°å—函数
<1>.ROUND:å››èˆäº”入函数
ROUND(12.3)——>12
ROUND(12.5)——>13
<2>.TRUNC:截æ–函数
TRUNC(65.654,0)——>65
TRUNC(65.654,-1)——>60
<3>.MOD:å–余函数
MOD(10,12)——>10
MOD(7,12)——>7
MOD(10,4)——>2
�日期函数
<1>.SYSDATE:˜q”回¾pÈ»Ÿæ—¥æœŸ
<2>.MONTHS_BETWEEN:˜q”回两个日期间隔的月æ•?/span>
select months_between('02-2�06','02-2�06') from dual;
<3>.ADD_MONTHS:在指定日期基¼‹€ä¸ŠåŠ ä¸Šç›¸åº”çš„æœˆæ•°
select add_months('02-2�06',8) from dual;
<4>.NEXT_DAY:˜q”回æŸä¸€æ—¥æœŸçš„下一个指定日æœ?/span>
select next_day('1-2�12','星期一') next_day from dual;
<5>.LAST_DAY:˜q”回指定日期当月最åŽä¸€å¤©çš„æ—¥æœŸ
select last_day('1-2�12') last_day from dual;
<6>.ROUND(date[,'fmt'])å¯ÒŽ(gu¨©)—¥æœŸè¿›è¡ŒæŒ‡å®šæ ¼å¼çš„å››èˆäº”å…¥æ“作åQŒæŒ‰ç…§YEARã€MONTHã€DAY½{‰è¿›è¡Œå››èˆäº”å…?/span>
SELECT employee_id, hire_date, ROUND(hire_date, 'MONTH') FROM employees WHERE SUBSTR(hire_date,-2,2)='98';
<7>.TRUNC(date[,'fmt'])å¯ÒŽ(gu¨©)—¥æœŸè¿›è¡ŒæŒ‡å®šæ ¼å¼çš„æˆªæ–æ“作。按ç…?nbsp;YEARã€MONTHã€DAY½{‰è¿›è¡Œæˆªæ–?/span>
SELECT employee_id, hire_date, TRUNC(hire_date, 'MONTH') FROM employees WHERE SUBSTR(hire_date,-2,2)='98';
<8>.EXTRACTåQšè¿”回从日期¾cÕdž‹ä¸å–å‡ºæŒ‡å®šå¹´ã€æœˆã€æ—¥
SELECT last_name, hire_date, EXTRACT (MONTH FROM HIRE_DATE) MONTH FROM employees WHERE department_id = 90;
äº?转æ¢å‡½æ•°
---通常在嗽W¦ç±»åž‹ã€æ—¥æœŸç±»åž‹ã€æ•°å—类型之间进行显性è{æ¢ã€?/span>
<1>.TO_CHAR(date|number|'fmt'):把日期类åž?æ•°å—¾cÕdž‹çš„表辑ּ或列转æ¢ä¸ºå—½W¦ç±»åž?/span>
--‘fmt’:æŒ‡çš„æ˜¯éœ€è¦æ˜¾½Cºçš„æ ¼å¼åQŒéœ€è¦å†™åœ¨å•引å·ä¸ï¼Œòq¶ä¸”是大ž®å†™æ•感åQŒå¯åŒ…å«ä»ÖM½•æœ‰æ•ˆçš„æ—¥æœŸæ ¼å¼?/span>
å¸¸ç”¨æ—¥æœŸæ ¼å¼åQ?/span>
---YYYYåQ?使•°å—表½Cºå¹´ä»? ---DY:星期的英文å‰ä¸‰ä½å—æ¯
---YYåQšä¸¤ä½æ•°å—å¹´ä»½ï¼Œä½†æ˜¯æ— ä¸–¾Uªè{æ? ---DAY:星期的英文拼å†?/span>
---RRåQ?使•°å—表½Cºå¹´ä»½ï¼Œæœ‰ä¸–¾Uªè{æ? ---DåQšæ•°å—表½CÞZ¸€æ˜ŸæœŸçš„ç¬¬å‡ å¤©åQŒæ˜ŸæœŸå¤©æ˜¯ä¸€å‘¨çš„½W¬ä¸€å¤?/span>
---YEAR:òq´ä†¾çš„英文拼å†? ---DDåQšæ•°å—表½CÞZ¸€ä¸ªæœˆä¸çš„½W¬å‡ å¤?/span>
---MMåQšä¸¤ä½æ•°å—表½Cºæœˆä»? ---DDDåQšæ•°å—表½CÞZ¸€òq´ä¸çš„ç¬¬å‡ å¤©
---MONTH:月䆾英文拼写 ---AM或PMåQšä¸Šä¸‹åˆè¡¨ç¤º
---HH 或HH12或HH24åQšæ•°å—表½Cºå°æ—? ---MIåQšæ•°å—表½Cºåˆ†é’?
HH12代表12ž®æ—¶è®¡æ—¶,HH24代表24ž®æ—¶è®¡æ—¶ ---SSåQšæ•°å—表½Cºç§’åQ?/span>
ç‰ÒŽ(gu¨©)®Šæ ¼å¼åQ?/span>
THåQšæ˜¾½Cºæ•°å—表½Cºçš„è‹±æ–‡åºæ•°è¯ï¼Œå¦‚:(x¨¬)DDTH昄¡¤ºå¤©æ•°çš„åºæ•°è¯
SPåQšæ˜¾½Cºæ•°å—表½Cºçš„æ‹¼å†™
SPTHåQšæ˜¾½Cºæ•°å—表½Cºçš„åºæ•°è¯çš„æ‹¼å†™
select to_char(sysdate,’ddspth’) from dual;
“å—符ä¸?#8221;:å¦‚åœ¨æ ¼å¼ä¸æ˜¾½Cºå—½W¦ä¸²åQŒéœ€è¦ä¸¤ç«¯åŠ åŒå¼•å?br /> select to_char(sysdate,’dd “of” month ‘) from dual;
æ•°å—到嗽W¦åž‹è½¬æ¢åQ?/span>
˜q›è¡Œæ•°å—¾cÕdž‹åˆ°å—½W¦åž‹è½¬æ¢åQŒæ ¼å¼ä¸çš„宽度一定覑…过实际列宽度,å¦åˆ™ä¼?x¨¬)显½CÞZØ“(f¨´)###
-- 9åQšä¸€ä½æ•°å?br />-- 0åQšä¸€ä½æ•°å—或å‰?br />-- $åQšæ˜¾½CÞZØ“(f¨´)¾ŸŽå…ƒ½W?br />-- LåQšæ˜¾½CºæŒ‰ç…§åŒºåŸ?br />-- .åQšå°æ•°ç‚¹
-- ,åQšåƒä½åˆ†å‰²ç¬¦
select to_char(9832, '$9,999.00') from dual;
<2>.TO_NUMBER(char[,’fmt’]): 把嗽W¦ç±»åž‹åˆ—或表辑ּ转æ¢ä¸ºæ•°å—ç±»åž?/span>
select to_number('9832', 9999) from dual;
<3>.TO_DATE(char[,‘fmt’]): 把嗽W¦ç±»åž‹åˆ—或表辑ּ转æ¢ä¸ºæ—¥æœŸç±»åž?/span>
select to_date('20120304', 'yy-mm-dd') from dual;
�通用函数
<1>NVL(表达å¼?åQŒè¡¨è¾‘Ö¼2)函数åQšè¯¥å‡½æ•°åŠŸèƒ½æ˜¯ç©ºå€ÆD{æ¢ï¼ŒæŠŠç©ºå€ÆD{æ¢äØ“(f¨´)å…¶ä»–å€û|¼Œè§£å†³½Iºå€¼é—®é¢˜ã€‚如果表辑ּ1为空åQŒåˆ™è¡¨è¾¾å¼?ž®±æ˜¯è¦è{æ¢æˆçš„倹{€?/span>
注æ„åQšæ•°æ®æ ¼å¼å¯ä»¥æ˜¯æ—¥æœŸã€å—½W¦ã€æ•°å—,ä½?span style="color: #ff0000; ">数殾cÕdž‹å¿…须匚w…
select nvl(null,1) from dual;
select nvl(2,1) from dual;
<2>.NVL2(表达å¼?, 表达å¼?, 表达å¼?)函数åQšè¯¥å‡½æ•°æ˜¯å¯¹½W¬ä¸€ä¸ªå‚æ•°è¿›è¡Œæ£€æŸ¥ã€‚å¦‚æžœç¬¬ä¸€ä¸ªå‚æ•îC¸ä¸ºç©ºåQŒåˆ™è¾“出½W¬äºŒä¸ªå‚敎ͼŒå¦‚æžœ½W¬ä¸€ä¸ªå‚æ•îCØ“(f¨´)½Iºï¼Œåˆ™è¾“å‡ÞZ½Žä¸‰ä¸ªå‚æ•°åQ?span style="color: #cc0000; ">表达å¼?å¯ä»¥ä¸ÞZ“Q何数æ®ç±»åž?/span>ã€?/span>
select nvl2(null,1,2) from dual;
select nvl2(3,1,2) from dual;
<3>.NULLIF(表达å¼?åQŒè¡¨è¾‘Ö¼2)函数åQšè¯¥å‡½æ•°ä¸»è¦å®Œæˆä¸¤ä¸ªå‚æ•°çš„æ¯”è¾ƒã€‚å½“ä¸¤ä¸ªå‚æ•°ä¸ç›¸½{‰æ—¶åQŒè¿”回值是½W¬ä¸€ä¸ªå‚æ•°å€û|¼›å½“ä¸¤ä¸ªå‚æ•°ç›¸½{‰æ—¶åQŒè¿”回值是½Iºå€¹{€?/span>
select nullif(1,1) from dual;
˜q”回值是åQ?img src="http://my.csdn.net/uploads/201208/01/1343792513_7008.png" alt="" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; border-image: initial; " />䏿˜¯null;
select nullif(1,2) from dual;
<4>.COALESCE(表达å¼?, 表达å¼?, ... 表达å¼n)函数åQšè¯¥å‡½æ•°æ˜¯å¯¹NVL函数的扩展。COALESCE函数功能是返回第一个ä¸ä¸ºç©ºçš„傿•ŽÍ¼Œå‚数个数ä¸å—é™åˆ¶ã€?/span>
select coalesce(null,null,0,1) from dual;
<5>.CASE表达å¼?/span>åQ?/span>
SELECT last_name, commission_pct,
(CASE commission_pct
WHEN 0.1 THEN 'ä½?
WHEN 0.2 THEN '�
WHEN 0.3 THEN 'é«?
ELSE 'æ—?
END) Commission
FROM employees
WHERE commission_pct IS NOT NULL
ORDER BY last_name;
<6>.DECODE函数åQ?/span>
DECODE(å—æ®µ|表达å¼? æ¡äšg1,¾l“æžœ1[,æ¡äšg2,¾l“æžœ2…åQŒ][,¾~ºçœå€¼])
select last_name, commission_pct,decode( commission_pct,0.1,'�,0.2,'�,0.3 , '�,'�) commission
from employees where commission_pct is not null orderbylast_name;