2009년 12월 26일 토요일

start with, connect by

Connect by 계층적 쿼리는 오라클만이 가진 기능 중 하나로, 데이터를 선택하여 계층적인 순서 그대로 리턴하는데 사용된다.
예를 들면,  아래와 같이 직원 테이블이 있다고 생각 하자.

직원   직속상사      직급
--------------------
철수     순희         대리
순희     영희         과장
길동     순희         대리
영희     개똥         부장
개똥                    사장

기본적인 SQl을 사용하여 계층 관계를 표현하는것은 불가능하다. 하지만 재귀 PL/SQL 루틴connect by 를 사용한다면 표현이 가능하다.
재귀 PL/SQL은개발과 처리 과정에서 다소 많은 시간이 필요로 한다는 단점이 있으며, 변경사항이 있을 때 다른 저장 프로시저를 만들거나 보다 복잡하게 변경해야한다는 점도 무시 할수 없다.
이에 오라클에서는 connect by라는 확장된 select 구문을 지원한다.



기본형식

Select lpad(' ',(level-1)*2,' ')||직원 직원, 직급

  From 직원
Start With 직원 = '개똥'
Connect by 직속상사 = prior 직원

   직원      직급
-------------
개똥         사장
  영희       부장
    순희     과장
      철수   대리
      길동   대리

start with
select 구문의 start with 절은 계층 구조가 어떤 행에서 시작하는지 지정하는 기능을 한다.
정의 : start with <조건>
where 절의 내용으로 쓸 수 있는 조건이라면 start with로도 사용이 가능하며, 하나 이상의 조건을 결함하는 것도 가능하다.
 ex) start with 직원 ='개똥'and 직원 ='순희'
start with 적의 조건에 맞는 행은 결과셋의 루트 노드가 된다. 주의할점은 조건에 맞는 행이 한 번 이상 등장할 경우이다.
예를 들면 start with 직원 ='개똥'and 직원 ='순희' 사용하면 개똥 이 순희 하위에 있기 때문에 순희 트리가 두 번 만들어지게 된다.
(한번은 개똥의 하위에서, 그리고 한 번은 루트로서)

 

select lpad(' ',(level-1)*2,' ')||직원 직원, 직급
  from 직원
start with 직원 = '개똥' or 직원 ='순희'
connect by 직속상사 = prior 직원
   직원      직급

-------------
순희         과장
  철수       대리
 
길동       대리
개똥         사장
  영희       부장
   
순희     과장
      철수   대리
      길동   대리


같은 결과셋이 여러 번 만들어지는 것을 방지하기 위해서는 이러한 조건을 사용해서는 안 된다.

처음 쿼리의 예제에서 직원 ='개똥'이라는 조건을 사용했으며, 이는 회사의 가장 높은 사람을 의미하는 것으로 전체 직원에 대한 목록이 만들어 진다. 하지만 이러한 방법은 그다지 좋지 않다. 왜냐하면, 개똥이 테이블에서 빠져나간다면 새로운 쿼리를 작성하여 직속상사가 의 값이 NULL 인 직원으로 부터 루트 노드가 다시 시작되도록 해야할 것이다.


그러므로, 가능하면 보다 구체적인, 즉 결과셋의 양이 적은 조건을 사용하는 것이 바람직하다. 직원 테이블을 보면 개똥의 직속상사의 값이 NULL로 저장되어 있는데, 이는 개똥이라는 직원이 보고할 사람이 없음을, 즉 가장 최상의 간부임을 의미한다.

select lpad(' ',(level-1)*2,' ')||직원 직원, 직급
  from 직원
start with 직속상사 is null
connect by 직속상사 = prior 직원

   직원      직급
-------------
개똥         사장
  영희       부장
    순희     과장
      철수   대리
      길동   대리



Connect by Prior

connect by 절은 각 행이 어떻게 연결되는지를 오라클에게 알려주는 역할을 한다. 즉 계층 구조 내에서 각 행의 관계를 설정하는 것이다.
현재 행과 다른 행은 Prior라는 키워드를 통해 구별된다. Prior는 상위 행을 참조하는 것으로, 우리의 예제에서는 다음과 같이 사용되었다.
  connect by 직속상사 = prior 직원
이는 "방금 전 행의 직원 값이 현재 행의 직속상사 값인 모든 행을 찾아라"라는 의미이다.
쉽게 말하면, 방금전에 살펴본 직원이 현재 직원의 상사가 되는 방식으로 리턴하라는 것이다.
다음 예제 코드를 보면, prior 부분이 = 기호를 사이에 두고 반대편으로 건너갔는데, 결과는 다음과 같이 트리를 거슬러 내려가는 것이 아니라, 거슬러 올라가는 방식으로 리턴되었다.

select lpad(' ',(level-1)*2,' ')||직원 직원, 직급
  from 직원
start with 직원 ='철수'
connect by prior 직속상사 = 직원


   직원      직급
-------------
철수         대리
  순희       과장
    영희     부장
      개똥   사장



이 쿼리에서는 철수가 루트 노드이며, 그의 상사가 오히려 아래에 표현되어 있다. 그 이유는 " 방금 전 행의 직속상사 값이 현재 행의 직원 값인 모든 행을 찾아라"라고 선언했기 때문이다. 이와 같이 prior 키워드를 등호의 반대편으로 넣어도 오류가 발생하지 않고, 전혀 다른 결과가 얻어짐을 알 수 있다.

prior 키워드는 또한 이전 행의 열을 참조하기 위해 다음과 같이 select 절 내에서 사용 될 수도 있다.

select lpad(' ',(level-1)*2,' ')||직원 직원, prior 직원 상사,직급
  from 직원
start with 직원 ='철수'
connect by prior 직속상사 = 직원

   직원      상사   직급
-------------------
철수                   대리
  순희       철수   과장
    영희     순희   부장
      개똥   영희   사장

여기서는 직원과 직속상사의 이름을 동시에 선택하였는데, 사실 두 값은 같은 행에 존재하는 것이 아니기 때문에 평범한 방법으로는 이와 같은 결과를 얻을 수 없다. 그래서 예제에서는 두 행을 동시 접근하여 각각 값을 얻어낸 것이다.



Level
level은 오라클에서 실행되는 모든 쿼리 내에서 사용 가능한 가상-열로서, 트리 내에서 어떤 단계(level)에 있는지를 나타내는 정수값이다.
계층적인 쿼리가 아니라면 다음과 같이 모든 값이 0, 즉 같은 단계를 가질 것이다.


select 직원,level
  from 직원


 직원  level
-----------
 철수     0
 순희     0
 길동     0
 영희     0
 개똥     0

한편, 계층적 쿼리에서는 level의 값을 통해 트리에서의 위치를 확인할 수 있다. 루트 노드의 level 값이 1이다.

select lpad(' ',(level-1)*2,' ')||직원 직원,직급,level
  from 직원
start with 직속상사 is null
connect by prior 직원 = 직속상사


   직원      직급   level
-------------------
개똥         사장      1
  영희       부장      2
    순희     과장      3
      철수   대리      4
      길동   대리      4


트리를 한 단계씩 거슬러 내려갈 때마다 값이 1씩 증가함을 알 수 있다.

level은 여러 가지 면에서 아주 유용하다. 먼저, 다음과 같이 각 항목을 출력할 때 앞에 붙는 공백의 양을 조절하여 계층적인 형식을 한눈에 알아볼 수 있도록 하는 것이 가능하다.

 select lpad(' ',(level-1)*2,' ')||직원 직원

또한, level 값이 3까지인 내용만을 출력하라. 등의 명령도 가능하다.

select lpad(' ',(level-1)*2,' ')||직원 직원,직급,level
  from 직원
start with 직속상사 is null
connect by prior 직원 = 직속상사 and level <=3


   직원      직급   level
-------------------
개똥         사장      1
  영희       부장      2
    순희     과장      3


철수와 길동의 경우는 level 값이 4이기 때문에 출력되지 않았다.
level <=3 이라는 조건을 where 절이 아닌 connect by 절에 넣은 것에 주의해야한다.  어떤 곳에 넣어도 결과는 같지만, where 절에 넣으면 전체 트리를 구성한 후에 다시 선택하는 반면, connect by 절에 넣으면 이 조건을 사용해서 트리를 구성하기 때문에 보다 효과적이라고 할 수 있다.



Order siblings by

계층적쿼리에서 order by로 정렬을 하려고 하면 트리를 만든 다음에 다시 정렬을 하기 때문에 계층적인 순서가 엉커버린다.
이러한 결과를 피하기 위해서 9i 부터 siblings by 절을 사용하면 각 계층내의 데이터만을 정렬시킬수 있다.

select lpad(' ',(level-1)*2,' ')||직원 직원, 직급
  from 직원
start with 직원 = '개똥'
connect by 직속상사 = prior 직원
order by 직원

   직원     직급
-------------
      길동   대리
      철수   대리
    순희     과장
  영희       부장
개똥         사장

-> 계층을 만든후에 직원이름을 기준으로 정렬된다.

select lpad(' ',(level-1)*2,' ')||직원 직원, 직급
  from 직원
start with 직원 = '개똥'
connect by 직속상사 = prior 직원
order siblings by 직원


   직원     직급
-------------
개똥       사장
  영희     부장
    순희   과장
      길동 대리
      철수 대리

  -> 길동과 철수가 같은 level이기 때문에 정렬이 된다.


Sys_connect_by_path()

9i부터 사용되는 함수로써 계층적인 쿼리를 실행할 때 이 함수를 사용하면 루트에서 끝 노드까지 전체 경로를 리턴할 수 있게 해준다.

형식 : Sys_connect_by_path( <열>,<분리문자> )

select lpad(' ',(level-1)*2,' ')||직원 직원, 직급,Sys_connect_by_path(직원,'-') 경로
  from 직원
start with 직원 = '개똥'
connect by 직속상사 = prior 직원
order siblings by 직원

   직원       직급               경로
----------------------------------
개똥         사장     -개똥
  영희       부장     -개똥-영희
    순희     과장     -개똥-영희-순희
      길동   대리     -개똥-영희-순희-길동
      철수   대리     -개똥-영희-순희-철수

[출처] connect by|작성자 늙지아나

2009년 12월 24일 목요일

Event.keyCode

event.keyCode의 값은 key event에 따라 그 값이 변한다.

흔히 알고 있는 keyCode 값은 onKeyDown 이나 onKeyUp Event 를 통해 추출할 수 있는 값들이고,
이 외에 onKeyPress 를 이용했을 경우에는 keyCode값이 달라진다.

key
press
key
down
key
up
Esc 27(IE만) 27 27
F1 - 112 -
F2 - 113 113
F3 - 114 114
F4 - 115 115
F5 - 116 116
F6 - 117 -
F7 - 118 118
F8 - 119 119
F9 - 120 120
F10 - 121 121
F11 - 122 122
F12 - 123 123
key
press
key
down
key
up
1 49 49 49
2 50 50 50
3 51 51 51
4 52 52 52
5 53 53 53
6 54 54 54
7 55 55 55
8 56 56 56
9 57 57 57
0 48 48 48
key
press
key
down
key
up
~ 126 192 192
! 33 49 49
@ 64 50 50
# 35 51 51
$ 36 52 52
% 37 53 53
^ 94 54 54
& 38 55 55
* 42 56 56
( 40 57 57
) 41 48 48
_ 95 189 189
+ 43 187 187
| 124 220 220
` 96 192 192
- 45 189 189
= 61 187 187
92 220 220
{ 123 219 219
[ 91 219 219
} 125 221 221
] 93 221 221
: 58 186 186
; 59 186 186
" 34 222 222
' 39 222 222
< 60 188 188
> 62 190 190
? 63 191 191
, 44 188 188
. 46 190 190
/ 47 191 191
key
press
key
down
key
up
PrintScreen - - 44
(IE외)
ScrollLock - 145 145
Pause - 19 19
BackSpace - 8 8
Tab - 9 -
CapsLock - 20 20
Enter 13 13 13
Shift - 16 16
Left Ctrl - 17 17
Left
WindowMenu
- 91 91
Left Alt - 18 18
한자 - 25 -
SpaceBar 32 32 32
한/영 - 229 -
Right Alt - 229 21
Right
WindowMenu
- 92 92
Context Menu - 93 93
Right Ctrl - 25 25
Insert - 45 45
Home - 36 36
PageUp - 33 33
Delete - 46 46
End - 35 35
PageDown - 34 34
NumLock - 144 144
key
press
key
down
key
up
Up(↑) - 38 38
Left(←) - 37 37
Down(↓) - 40 40
Right(→) - 39 39
NumPad key
press
key
down
key
up
/ 47 111 111
* 42 106 106
- 45 109 109
7 55 103 103
8 56 104 104
9 57 105 105
+ 43 107 107
4 52 100 100
5 53 101 101
6 54 102 102
1 49 97 97
2 50 98 98
3 51 99 99
0 48 96 96
. 46 110 110
Enter 13 13 13
Home - 36 36
Up(↑) - 38 38
PageUp - 33 33
Left(←) - 37 37
Clear - 12 12
Right(→) - 39 39
End - 35 35
Down(↓) - 40 40
PageDown - 34 34
Insert - 45 45
Delete - 46 46
key
press
key
down
key
up
a 97 65 65
A 65 65 65
b 98 66 66
B 66 66 66
c 99 67 67
C 67 67 67
d 100 68 68
D 68 68 68
e 101 69 69
E 69 69 69
f 102 70 70
F 70 70 70
g 103 71 71
G 71 71 71
h 104 72 72
H 72 72 72
i 105 73 73
I 73 73 73
j 106 74 74
J 74 74 74
k 107 75 75
K 75 75 75
l 108 76 76
L 76 76 76
m 109 77 77
M 77 77 77
n 110 78 78
N 78 78 78
o 111 79 79
O 79 79 79
p 112 80 80
P 80 80 80
q 113 81 81
Q 81 81 81
r 114 82 82
R 82 82 82
s 115 83 83
S 83 83 83
t 116 84 84
T 84 84 84
u 117 85 85
U 85 85 85
v 118 86 86
V 86 86 86
w 119 87 87
W 87 87 87
x 120 88 88
X 88 88 88
y 121 89 89
Y 89 89 89
z 122 90 90
Z 90 90 90
출처 :

2009년 12월 23일 수요일

FCKeditor2.2 설치 및 설정 ASP버전

FCKEditor 다운로드 : http://www.fckeditor.net/

  업로드파일 경로설정

  /FCKeditor/editor/filemanager/browser/default/connectors/asp/config.asp

  ConfigUserFilesPath = "/UserFiles/"
  ConfigIsEnabled = False 을 True 로 설정


 

 

fckconfig.js의 설정

   - 에디터에서 엔터칠때 한줄만 내려가게 하려면 주석을 풀면됨

   FCKConfig.UseBROnCarriageReturn = true ; // IE only

   - 폰트 크기 부분에 나타나는 내용 변경

   FCKConfig.FontSizes  = '1/8pt;2/10pt;3/12pt;4/14pt;5/18pt;6/24pt;7/36pt';

   - 기본 언어 한글로 변경

   FCKConfig.DefaultLanguage  = 'ko';

   -입력한 스크립트가 임의로 재정렬되지 않도록 아래 부분의 주석 처리 제거

   (언어별 주석체크해제)

   FCKConfig.ProtectedSource.Add( /<script-x[\s\S]*?\/script-x>/gi ) ; // <SCRIPT-x>

   FCKConfig.ProtectedSource.Add( /<%[\s\S]*?%>/g ) ; // ASP

   FCKConfig.ProtectedSource.Add( /<\?[\s\S]*?\?>/g ) ; // PHP

   FCKConfig.ProtectedSource.Add( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi ) ; // ASP.Net

- 폰트 순서 바꿈

  FCKConfig.FontNames  = ';굴림;굴림체;궁서;궁서체;돋움;돋움체;바탕;바탕체;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;

 

에디터 적용 페이지에서------------------------------------

  Dim oFCKeditor
  Set oFCKeditor = New FCKeditor
  oFCKeditor.BasePath = "/FCKeditor/"
  oFCKeditor.Value = ""
  oFCKeditor.Config("UseBROnCarriageReturn") = True
  oFCKeditor.Create "FCKeditor1"

 

값을 전송받은 페이지에서------------------------------------

   - replace함수를 써서 " -> '  으로 변환한다.
   content = replace(Request.Form("FCKeditor1"),"""","'")

 

  - 전송받은 페이지에서 한글깨짐 처리방법

    <%@ CodePage='949'  Language="VBScript-x"%>

 

  이미지업로드시 한글파일깨짐방지---------------------------------

  html 페이지에...
  <meta http-equiv="Content-Language" content="ko">
  <meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
  asp 페이지에...
  Session.CodePage = 949
  Response.ChaRset = "euc-kr"

 

  클래스 파일의 인클루드
  <!--#include virtual="/FCKeditor/fckeditor.asp"-->
  <!--#include file="./FCKeditor/fckeditor.asp"-->

 

  한글을 위해 utf8지움 두줄 삭제

  <%@ CodePage=65001 Language="VBScript-x"%>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

 

  submit시 내용체크 펑션

function isNull( s ) { 
  if( s == null ) return true;

  var result = s.replace(/(^\s*)|(\s*$)/g, "");

  if( result )
    return false;
  else
    return true;
}


function sendit(it) {
  var s = FCKeditor1___Frame.document.eEditorArea.document.body.innerText;

  if(isNull(s)) {
    alert("내용을 입력하세요");
    FCKeditor1___Frame.focus();
    return false;
  }
  document.form.submit.disabled = true;
}

 

<form name="form" method="post" action="query_ok.asp" target="_blank" onsubmit="return sendit(this);">
<input type="submit" name="submit" value="submit">
</form>

 

에디터에서 기본 폰트를 변경

FCKeditor/editor/css/fck_editorarea.css 파일 안의

Body 부분 font-family 순서와 종류를 바꿈

body
{
 font-family: 굴림;굴림체;궁서;궁서체;돋움;돋움체;바탕;바탕체;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana;
 font-size: 12px;
 padding: 5px 5px 5px 5px;
 margin: 0px;
 border-style: none;
 background-color: #ffffff;
}

 

출처 : 홈피디자인닷컴

vb 에서 keycode상수

vb 에서 keycode상수

keycode 상수

vbKeyLButton 0x1 왼쪽 마우스 단추
vbKeyRButton 0x2 오른쪽 마우스 단추
vbKeyCancel 0x3 CANCEL키
vbKeyMButton 0x4 가운데 마우스 단추
vbKeyBack 0x8 백스페이스키
vbKeyTab 0x9 Tab키
vbKeyClear 0xC CLEAR키
vbKeyReturn 0xD Enter키
vbKeyShift 0x10 SHIFT키
vbKeyControl 0x11 CTRL키
vbKeyMenu 0x12 MENU키
vbKeyPause 0x13 PAUSE키
vbKeyCapital 0x14 CAPS LOCK키
vbKeyEscape 0x1B ESC키
vbKeySpace 0x20 스페이스키
vbKeyPageUp 0x21 PAGE UP키
vbKeyPageDown 0x22 PAGE DOWN키
vbKeyEnd 0x23 END키
vbKeyHome 0x24 HOME키
vbKeyLeft 0x25 왼쪽 화살표키
vbKeyUp 0x26 위쪽 화살표키
vbKeyRight 0x27 오른쪽 화살표키
vbKeyDown 0x28 아래쪽 화살표키
vbKeySelect 0x29 SELECT키
vbKeyPrint 0x2A PRINT SCREEN키
vbKeyExecute 0x2B 실행키
vbKeySnapshot 0x2C 스냅샷키
vbKeyInsert 0x2D INSERT키
vbKeyDelete 0x2E DELETE키
vbKeyHelp 0x2F HELP키
vbKeyNumlock 0x90 NUM LOCK키
A키에서 Z키는 ASCII의 A에서 Z와 동일합니다.

상수 값 설명
vbKeyA 65 A키
vbKeyB 66 B키
vbKeyC 67 C키
vbKeyD 68 D키
vbKeyE 69 E키
vbKeyF 70 F키
vbKeyG 71 G키
vbKeyH 72 H키
vbKeyI 73 I키
vbKeyJ 74 J키
vbKeyK 75 K키
vbKeyL 76 L키
vbKeyM 77 M키
vbKeyN 78 N키
vbKeyO 79 O키
vbKeyP 80 P키
vbKeyQ 81 Q키
vbKeyR 82 R키
vbKeyS 83 S키
vbKeyT 84 T키
vbKeyU 85 U키
vbKeyV 86 V키
vbKeyW 87 W키
vbKeyX 88 X키
vbKeyY 89 Y키
vbKeyZ 90 Z키
0키에서 9키는 ASCII의 0에서 9와 동일합니다.

상수 값 설명

vbKey0 48 0키
vbKey1 49 1키
vbKey2 50 2키
vbKey3 51 3키
vbKey4 52 4키
vbKey5 53 5키
vbKey6 54 6키
vbKey7 55 7키
vbKey8 56 8키
vbKey9 57 9키
다음의 상수들은 숫자키 모음의 키들을 나타냅니다.

상수 값 설명
vbKeyNumpad0 0x60 0키
vbKeyNumpad1 0x61 1키
vbKeyNumpad2 0x62 2키
vbKeyNumpad3 0x63 3키
vbKeyNumpad4 0x64 4키
vbKeyNumpad5 0x65 5키
vbKeyNumpad6 0x66 6키
vbKeyNumpad7 0x67 7키
vbKeyNumpad8 0x68 8키
vbKeyNumpad9 0x69 9키
vbKeyMultiply 0x6A 곱하기 기호(*)키
vbKeyAdd 0x6B 더하기 기호(+)키
vbKeySeparator 0x6C Enter키
vbKeySubtract 0x6D 빼기 기호(?)키
vbKeyDecimal 0x6E 소수점(.)키
vbKeyDivide 0x6F 나누기 기호(/)키
다음의 상수들은 기능키를 나타냅니다.

상수 값 설명

vbKeyF1 0x70 F1키
vbKeyF2 0x71 F2키
vbKeyF3 0x72 F3키
vbKeyF4 0x73 F4키
vbKeyF5 0x74 F5키
vbKeyF6 0x75 F6키
vbKeyF7 0x76 F7키
vbKeyF8 0x77 F8키
vbKeyF9 0x78 F9키
vbKeyF10 0x79 F10키
vbKeyF11 0x7A F11키
vbKeyF12 0x7B F12키
vbKeyF13 0x7C F13키
vbKeyF14 0x7D F14키
vbKeyF15 0x7E F15키
vbKeyF16 0x7F F16키
-----------------------------------------------------
Keycode list
Backspace: 8 Keypad Enter: 13 Shift: 16 Ctrl: 17
Alt: 18 Pause: 19 Cap Lock: 20 Escape: 27 Space: 32
Page Up: 33 Page Down: 34 End: 35 Home: 36
Insert: 45
Delete: 46
): 48
!: 49
@: 50
#: 51
$: 52
^: 54
&: 55
*: 56
(: 57
A: 65
B: 66
C: 67
D: 68
E: 69
F: 70
G: 71
H: 72
I: 73
J: 74
K: 75
L: 76
M: 77
N: 78
O: 79
P: 80
Q: 81
R: 82
S: 83
T: 84
U: 85
V: 86
W: 87
X: 88
Y: 89
Z: 90
Win Flag: 91
Menu: 93
Keypad 0: 96
Keypad 1: 97
Keypad 2: 98
Keypad 3: 99
Keypad 4: 100
Keypad 5: 101
Keypad 6: 102
Keypad 7: 103
Keypad 8: 104
Keypad 9: 105
Keypad *: 106
Keypad +: 107
Keypad -: 109
Keypad /: 111
Num Lock: 144
F1: 112
F2: 113
F3: 114
F4: 115
F5: 116
F6: 117
F7: 118
F8: 119
F9: 120
F10: 121
F11: 122
F12: 123
Scroll Lock: 145
:: 186
=: 187
<: 188
-: 189
>: 190
?: 191
~: 192
[: 219
: 220
]: 221
": 222

출처 : 악어의 시즌2

2009년 12월 18일 금요일

오라클 10g 함수

출처 : 백승민님 홈페이지 中

 

SQL Functions 

 

1. 수치함수
2. 문자값을 반환하는 문자 함수
3. NLS 문자 함수
4. 수치값을 반환하는 문자함수
5. 일시 함수
6. 일반적인 비교 함수
7. 변환 함수
8. LARGE OBJECT(LOB) 함수
9. 수집 함수
10. 계층 함수
11. XML 함수
12. 인코딩 함수와 디코딩 함수
13. NULL 함수
14. 환경 함수 와 식별자 함수
15. 집계 함수
16. 분석 함수
17. Object 참조 함수
18. 모델 함수
19. 기타 단일행 함수


펼쳐두기..