1. 숫자함수

ABS(n) : ABS함수는 절대값을 계산하는 함수입니다. 
CEIL(n) : CEIL함수는 주어진 값보다는 크지만 가장 근접하는 최소값을 구하는 함수입니다.
EXP(n) : EXP함수는 주어진 값의 e의 승수를 나타냅니다.  e는 2.171828183..입니다.
FLOOR(n) : FLOOR함수는 주어진 값보다 작거나 같은 최대 정수값을 구하는 함수입니다. (CEIL 함수와 비교해 보세요. )

LN(n) : LN함수는 주어진 값의 자연로그 값을 반환합니다.
MOD(m, n) : MOD함수는 m을 n으로 나누어 남은 값을 반환한다. n이 0일 경우 m을 반환합니다.
POWER(m, n) : POWER함수는 m의 n승 값을 계산합니다.
ROUND(n, [m]) : ROUND함수는 n값의 반올림을 하는 함수로 m은 소숫점 아래 자릿수를 나타낸다.

SIGN(n) : SIGN함수는 n<0일 경우 -1DFM N=0일 경우 0을 N>0일 경우 1을 반환합니다.
SQRT(n) : SQRT함수는 n값의 루트값을 계산한다. n은 양수여야 합니다.
TRUNC(n, m) : TRUNC함수는 n값을 m 소숫점 자리로 반내림한 값을 반환합니다. (ROUND 함수와 비교해 보세요.)


 

2. 문자열 처리함수

CONCAT(char1, char2) : CONCAT 함수는 Concatenation의 약자로 두 문자를 결합하는 역할을 합니다. "||" 연산자와 같은 역할을 합니다.
INITCAP(char) : 주어진 문자열의 첫 번째 문자를 대문자로 변환시켜 줍니다.
LOWER(char) : 문자열을 소문자로 변환 시켜 줍니다.
UPPER(char) : 문자열을 대문자로 변환 시켜 줍니다.
LPAD(char1, n [,char2]) :왼쪽에 문자열을 끼어 놓는 역할을 합니다. n은 반환되는 문자열의 전체 길이를 나타내며, char1의 문자열이 n보다 클 경우 char1을 n개 문자열 만큼 반환합니다.
RPAD(char1, n [,char2]) : LPAD와 반대로 오른쪽에 문자열을 끼어 놓는 역할을 합니다.

SUBSTR(char, m ,[n]) : SUBSTR함수를 이용하여 m 번째 자리부터 길이가 n개인 문자열을 반환한 합니다. m이 음수일 경우에는 뒤에서 M번째 문자부터 반대 방향으로 n개의 문자를 반환합니다.
LENGTH(char1) : 문자열의 길이를 리턴 합니다.
REPLACE(char1, str1, str2) : REPLACE는 문자열의 특정 문자를 다른 문자로 변환 합니다.

INSTR : 문자열이 포함되어 있는지를 조사하여 문자열의 위치를 반환합니다. 지정한 문자열이 발견되지 않으면 0이 반환 됩니다.
TRIM : 특정한 문자를 제거 합니다. 제거할 문자를 입력하지 않으면 기본적으로 공백이 제거 됩니다.  리턴값의 데이터타입은 VARCHAR2 입니다.
 
 -- 두개의 문자를 연결한다.
SQL>SELECT CONCAT('Oracle', ' Korea') NAME FROM dual;

-- 문자좌측에 *를 붙인다. 문자 길이는 10개로 제한
SQL>SELECT LPAD('JUNG-SICK', 10, '*') NAME FROM dual;

-- 문자우측에 *를 붙인다. 문자 길이는 11개로 제한
SQL>SELECT RPAD('JUNG-SICK', 11, '*') NAME FROM dual;

-- 앞에서부터, 뒤에서부터 예제...
SQL>SELECT SUBSTR('JUNG-SICK', 3, 3) NAME FROM dual;
SQL>SELECT SUBSTR('JUNG-SICK', -3, 3) NAME FROM dual;

-- 문자의 길이를 구함
SQL>SELECT LENGTH('JUNG-SICK') TEST FROM dual;

-- 대소문자 구별합니닷!!
SQL>SELECT REPLACE('JACK and JUE','J','BL') "Changes" FROM dual;
SQL>SELECT REPLACE('JACK and JUE','j','BL') "Changes" FROM dual;

-- 지정한 문자 OK가 발견되지 않아서 0이 반환 됩니다.
SQL>SELECT INSTR('CORPORATE FLOOR','OK')  "Instring" FROM dual;

-- OR이 있는 위치 2를 반환 합니다. 왼쪽부터 비교를 한다는 것을 알 수 있습니다.
SQL>SELECT INSTR('CORPORATE FLOOR','OR')  "Instring" FROM dual;

-- 0을 제거 합니다.
SQL>SELECT TRIM(0 FROM 0009872348900)  "TRIM Example" FROM dual;

-- 어떤 문자도 입력하지 않으면 기본적으로 공백이 제거 됩니다. 
-- TRIM을 사용한 위에 예제와 사용하지 않은 아래 예제의 결과 값이 다르게 나오는 것을 알 수 있습니다.
-- NVL(a,b) 함수는 a가 NULL일 경우 b로 바꿔주는 함수입니다.
SQL>SELECT NVL(TRIM ('  '),'공백')  "TRIM Example"  FROM dual;
 


3. 날짜 처리함수

LAST_DAY(d) : LAST_DAY함수는 달의 마지막 날의 날짜를 반환합니다.
ADD_MONTHS(a, b) : ADD_MONTHS 함수는 a의 날짜에 b의 달을 더한 값을 반환 합니다.
MONTH_BETWEEN(a1, a2) : MONTH_BETWEEN은 a1과 a2 사이의 달의 수를 NUMBER형 타입으로 반환 합니다.
ROUND(d[,F]) : ROUND 함수는 F에 지정된 단위로 반올림 합니다. F가 연도라면 연도 단위로 반올림 합니다.

 -- 오늘과 이달의 마지막날 반환
SQL>SELECT SYSDATE TODAY, LAST_DAY(SYSDATE) LASTDAY FROM dual;

-- 오늘에서 3개월을 더한 후, RRRR/MM/DD 형식으로 반환
SQL>SELECT TO_CAHR(ADD_MONTHS(SYSDATE,3),'YYYY/MM/DD') "date" FROM dual;

-- 두 날짜 사이의 개월수를 반환
SQL>SELECT MONTHS_BETWEEN(TO_DATE('2000/06/05') , TO_DATE('2000/09/23')) "Date" FROM dual;

-- '1998/09/11' 의 년도인 1998을 반환
SQL>SELECT ROUND(TO_DATE('1998/09/11'), 'YEAR') FROM dual;
 


4. 변환함수

TO_CHAR : TO_CHAR함수는 DATE형, NUMBER형을 VARCHAR2형으로 바꿔줍니다.
TO_DATE : TO_DATE함수는 CHAR, VARCHAR2형을 DATE 타입으로 변환합니다.
TO_NUMBER : TO_NUMBER함수는 CHAR, VARCHAR2의 데이터 타입을 숫자형식으로 변환합니다.
 
-- 오늘의 월만 반환
SQL>SELECT TO_CHAR(sysdate, 'MONTH') CHARTEST FROM dual;

-- 문자형이 날짜형으로 변환
SQL>SELECT TO_DATE('2000/06/16','YYYY/MM/DD') FROM dual;

-- '1210616'의 문자열이 숫자형으로 변환
SQL>SELECT TO_NUMBER('1210616') FROM dual;
 


1. 기타함수

NVL
- NVL 함수는 NULL값을 다른 값으로 바꿀 때 쓰입니다.
- 모든 데이터 타입에 적용 가능합니다.
- 전환되는 값의 데이터 타입을 일치시켜야 합니다.

DECODE
- DECODE 함수는 데이터 들을 다른 값으로 바꾸어 줍니다.
- 형식 DECODE(VALUE, IF1, THEN1, IF2, THEN2...)
- VALUE 값이 IF1일경우에 THEN1값으로 바꾸어 주고 VALUE값이 IF2일경우에는 THEN2값으로 바꾸어 줍니다.

DUMP : DUMP는 바이트 크기와 해당 데이터 타입 코드를 반환합니다.
GREATEST : GREATEST함수는 검색값 중에서 가장 큰 값을 반환 합니다.
LEAST : LEAST함수는 GREATEST함수와 반대로 가장 작은 값을 반환합니다.

UID : 현재 사용자의 유일한 ID번호를 반환 합니다.
USER : 현재 오라클을 사용하는 사용자를 VARCHAR2형식으로 반환 합니다.

USERENV : USERENV 함수는 현재 세션의 환경 정보를 반환합니다.
  - ENTRYID : 사용 가능한 Auditing entry Identifier를 반환합니다.
  - LABEL : 현재 세션의 Label을 반환합니다.
  - LANGUAGE : 현재 세션에서 사용중인 언어와 테리토리 값을 반환합니다.
  - SESSIONID : Auditing(감사) Session ID를 반환 합니다.
  - TERMINAL : 현재 세션 터미널의 OS ID를 반환 합니다.

VSIZE : 해당 문자의 BYTE수를 반환 합니다. 해당 문자가 NULL이면 NULL값이 반환 됩니다.
 
-- 컬럼 comm의 값이 NULL일 경우, 0을 반환합니다.
SQL>SELECT empno, NVL(comm, 0) FROM emp WHERE deptno = 30;

-- 컬럼 deptno의 값이 10이며 'ACCOUNTING'으로
-- 컬럼 deptno의 값이 20이며 'RESEARCH'으로
-- 컬럼 deptno의 값이 30이며 'SALES'으로
-- 컬럼 deptno의 값이 40이며 'OPERATIONS'으로
SQL>SELECT deptno, DECODE(deptno, 10 , 'ACCOUNTING', 20 , 'RESEARCH', 30 , 'SALES', 40 , 'OPERATIONS') FROM emp;

-- 만약에 16대신 8을 넣으면 8진수로, 10를 넣으면 10진수로 변환이 됩니다.
-- 16, 10, 8, 17이 올수 있는데요 17은 단일 문자열을 반환합니다.
-- 결과값 중, Len은 ename의 해당 byte수 입니다.
SQL>SELECT ename, DUMP(ename, 16) "16진수" FROM emp WHERE ename = 'ALLEN'

-- 가장 큰수/가장 작은수 반환
SQL>SELECT GREATEST(10, 100, 5, -7) FROM dual;
SQL>SELECT LEAST(10, 100, 5, -7) FROM dual;

-- 현재 사용자의 이름과 ID값을 반환
SQL> SELECT USER, UID FROM DUAL;

-- 현재 세션의 환경정보를 반환
SQL> SELECT USERENV('LANGUAGE') FROM dual;

-- 현재 문자의 byte 수를 반환
SQL> SELECT VSIZE(ename), ename FROM emp  WHERE deptno = 30;

Posted by 나비:D
:

Posted by 나비:D
:

[MSSQL] 커서 사용

2007. 12. 5. 15:26

-- 커서를 돌릴 Select 문
declare Inout_Cursor_ItemCode_sub CURSOR
   FOR   select InoutNo, InoutGubun, InoutSerNo,
                CalcInOutQty, InOutPrice, InoutAmnt
         from   mmInoutItem
         where  SiteCode  = @SiteCode
           and  WhCode    = @WhCode
    and  InvStatus = @InvStatus
    and  ItemCode  = @ItemCode
    and  ((InoutDate > @InoutDate) or (InoutDate = @InoutDate and ItemDaySerno > @ItemDaySerno))
        order by InoutDate, ItemDaySerNo

--커서를 열어서 한 Row 씩 값을 받기 위함.
--여기서 받는 변수들은 별도로 선언을 해줘야 함.
   open Inout_Cursor_ItemCode_sub
   fetch next from Inout_Cursor_ItemCode_sub into @InoutNo_c, @InoutGubun_c, @InoutSerNo_c, @CalcInOutQty_c, @InOutPrice_c, @InoutAmnt_c
   
--커서를 돌림.
   WHILE @@FETCH_STATUS = 0
   BEGIN
   set @OhQty_c    = @OhQty_O
   set @OhAmnt_c   = @OhAmnt_O
   set @OhPrice_c  = @OhPrice_O
   
    update mmInoutItem
    set    OhQty   = @OhQty_O,
           OhPrice = @OhPrice_O,
           OhAmnt  = @OhAmnt_O
     where SiteCode   = @SiteCode
       and InoutNo    = @InoutNo_c
       and InoutGubun = @InoutGubun_c
       and InoutSerNo = @InoutSerNo_c

   FETCH NEXT from Inout_Cursor_ItemCode_sub into @InoutNo_c, @InoutGubun_c, @InoutSerNo_c, @CalcInOutQty_c, @InOutPrice_c, @InoutAmnt_c

--커서 닫음  
   END
   close Inout_Cursor_ItemCode_sub
   deallocate Inout_Cursor_ItemCode_sub

Posted by 나비:D
:

SQL Server 서비스 팩 버전과 에디션 확인

 

이 문서에서는 현재 SQL Server 버전 번호와 해당 제품 또는 서비스 팩(SP) 수준을 확인하는 방법을 설명합니다. 또한 SQL Server 7.0이나 SQL Server 2000을 사용 중인 경우 특정 에디션을 확인하는 방법도 설명합니다.

 

http://support.microsoft.com/default.aspx?scid=kb;ko;321185

Posted by 나비:D
:
출처 : MSDN 도움말
RAW[('ElementName')]

쿼리 결과를 사용하여 결과 집합의 각 행을 요소 태그로 <row /> 일반 식별자를 갖는 XML 요소로 변환합니다. 이 지시어를 사용하는 경우 필요에 따라 행 요소에 대한 이름을 지정할 수 있습니다. 결과 XML은 각 행에 대해 행 요소가 생성될 때 지정된 ElementName을 사용합니다. 자세한 내용은 RAW 모드 사용새 FOR XML 기능을 참조하십시오.

AUTO

단순하게 중첩된 XML 트리로 쿼리 결과를 반환합니다. 최소한 한 개의 열이 SELECT 절에 나열되는 FROM 절의 각 테이블은 XML 요소로 표시됩니다. SELECT 절에 나열되는 열은 해당 요소의 특성에 매핑됩니다. 자세한 내용은 AUTO 모드 사용새 FOR XML 기능을 참조하십시오.

EXPLICIT

결과 XML 트리 형태가 명시적으로 정의되도록 지정합니다. 쿼리는 이 모드를 사용하여 원하는 중첩에 대한 추가 정보가 명시적으로 지정되도록 특정 방식으로 작성되어야 합니다. 자세한 내용은 EXPLICIT 모드 사용새 FOR XML 기능을 참조하십시오.

PATH

요소와 특성을 혼합하고 추가 중첩을 사용하여 복잡한 속성을 나타내는 보다 간단한 방법을 제공합니다. FOR XML EXPLICIT 모드 쿼리를 사용하여 행 집합에서 이러한 종류의 XML을 구성할 수 있지만 PATH 모드는 복잡할 수도 있는 EXPLICIT 모드 쿼리 대신 훨씬 간단한 방법을 제공합니다. XML 유형 인스턴스를 반환하는 중첩 FOR XML 쿼리 및 TYPE 지시어 작성 기능과 함께 PATH 모드를 사용하면 보다 간편하게 쿼리를 작성할 수 있습니다. 이 모드는 대부분의 EXPLICIT 모드 쿼리 작성을 대신할 방법을 제공합니다. 기본적으로 PATH 모드는 결과 집합의 각 행에 대한 <row> 요소 래퍼를 생성합니다. 필요에 따라 요소 이름을 지정할 수 있습니다. 요소 이름을 지정한 경우 지정된 이름이 래퍼 요소 이름으로 사용됩니다. 빈 문자열(FOR XML PATH (''))을 제공하면 래퍼 요소가 생성되지 않습니다. 자세한 내용은 PATH 모드 사용를 참조하십시오.

XMLDATA

인라인 XDR(XML-Data Reduced) 스키마가 반환되어야 함을 지정합니다. 스키마는 인라인 스키마로 문서 앞에 놓이게 됩니다. 작업 예제의 경우 RAW 모드 사용를 참조하십시오.

XMLSCHEMA

인라인 W3C XML 스키마(XSD)를 반환합니다. 이 지시어를 지정할 때 필요에 따라 대상 네임스페이스 URI를 지정할 수 있습니다. 이렇게 하면 스키마에 지정된 네임스페이스를 반환합니다. 자세한 내용은 인라인 XSD 스키마 생성을 참조하십시오. 작업 예제의 경우 RAW 모드 사용를 참조하십시오.

ELEMENTS

ELEMENTS 옵션이 지정되면 열이 하위 요소로 반환됩니다. 그렇지 않은 경우에는 XML 특성에 매핑됩니다. 이 옵션은 RAW, AUTO 및 PATH 모드에서만 지원됩니다. 이 지시어를 사용하는 경우 필요에 따라 XSINIL 또는 ABSENT를 지정할 수 있습니다. XSINIL은 True로 설정된 xsi:nil 특성이 있는 요소가 NULL 열 값에 대해 생성되도록 지정합니다. 기본적으로 또는 ABSENT가 ELEMENTS와 함께 지정된 경우 요소가 NULL 값에 대해 생성되지 않습니다. 작업 예제의 경우 RAW 모드 사용AUTO 모드 사용를 참조하십시오.

BINARY BASE64

BINARY Base64 옵션이 지정되면 쿼리에서 반환되는 이진 데이터가 모두 base64 인코딩 형식으로 표시됩니다. RAW와 EXPLICIT 모드를 사용하여 이진 데이터를 검색하려면 이 옵션을 지정해야 합니다. AUTO 모드에서 이진 데이터는 기본적으로 참조로 반환됩니다. 작업 예제의 경우 RAW 모드 사용를 참조하십시오.

TYPE

쿼리가 결과를 xml 형식으로 반환하도록 지정합니다. 자세한 내용은 FOR XML 쿼리의 TYPE 지시어를 참조하십시오.

ROOT [('RootName')]

단일 최상위 요소가 결과 XML에 추가되도록 지정합니다. 필요에 따라 생성할 루트 요소 이름을 지정할 수 있습니다. 기본값은 "root"입니다.

Posted by 나비:D
:

머..여러 방법이 있겠지만..


날짜 형식이 2000-01-01 00: 00: 00.000 이래 나오는데..


이걸 내 입맛에 맛게 바꾸기!!



cast(datepart(mm,b_date) as varchar(10))


의 방법으로 원하는 날짜의 형식중 일부분만 뽑아와서 연결


cast(datepart(mm,b_date) as varchar(10)) + '-' +

cast(datepart(dd,b_date) as varchar(10)) + '  ' +

cast(datepart(yyyy, b_date) as varchar(10))


결과


01-01 2000


응용하면 여러가지 원하는 형태의 날짜로 출력 가능


select 문에 들어가면...


select

          cast(datepart(mm,b_date) as varchar(10)) + '-' +

          cast(datepart(dd,b_date) as varchar(10)) + '  ' +

          cast(datepart(yyyy, b_date) as varchar(10))

      as b_date

from

      bbs

where

      b_idx='100010'

Posted by 나비:D
:

CommandType 속성

CommandType 속성은 Command 개체의 형식을 나타내며, 다음 표의 값을 지정할 수 있다.

상수 설명
adCmdUnspecified -1 CommandType 인수를 지정하지 않는다.
adCmdUnknown 8 디폴트 값, Command 개체의 타입을 알 수 없음으로 지정한다.
adCmdText 1 명령어 또는 저장 프로시저를 텍스트로 지정한다.
adCmdTable 2 테이블을 지정한다(내부적으로 생성된 SQL 문장에 의해서 필드가 생성된다).
adCmdStoredProc 4 저장 프로시저를 지정한다.
adCmdFile 256 Persisted Recordset 개체의 파일명을 지정한다.
adCmdTableDirect 512 테이블을 지정한다(모든 필드가 생성된다).

CommandType 속성의 값이 디폴트 값인 adCmdUnknown일 경우에는 CommandText 속성이 SQL 문장인지, 저장 프로시저인지, 테이블의 이름인지를 결정하기 위해서 ADO는 Provider를 호출하게 되고, CommandType 속성을 정확하게 지정한 경우 보다 Command 개체가 수행하기 위해 부하가 더 걸리게 된다.
그렇기 때문에 CommandType 속성을 정확하게 지정하고 사용하면 디폴트 값을 사용하는 것보다 빠른 속도로 명령을 실행하게 된다.
CommandType 속성에 지정한 값과 실제 실행에 사용될 명령의 형식이 맞지 않을 경우에는 Execte 메서드를 사용할 때 오류가 발생하게 된다.

Execute 메서드를 사용할 때 함께 사용할 수 있는 옵션으로 adExecuteNoRecords가 있다. 이 옵션은 명령 또는 저장 프로시저가 반환 값을 가지지 않을 경우에 지정한다.

adExecuteNoRecords 상수는 최소한의 내부 프로세스만을 거치기 때문에 속도는 빠른 반면에 항상 adCmdText 또는 adCmdStoredProc 상수와 함께 사용해야 한다.

[예제]

다음 예제는 CommandType 속성을 adCmdText로 지정해서 Command 개체를 수행하는 예이다.

Private Sub cmdCommandType_Click()
   Dim adoCn As New ADODB.Connection
   Dim adoCmd As New ADODB.Command
   Dim strConn As String

   strConn = "Provider=sqloledb;" & _
         "Data Source=(local);Initial Catalog=Pubs;User ID=sa;Password=; "

   adoCn.Open strConn

   Set adoCmd.ActiveConnection = adoCn

   adoCmd.CommandText = "Update Authors Set au_lname = 'Chris' " & _
         " Where au_id = '172-32-1176'"

   adoCmd.CommandType = adCmdText

   adoCmd.Execute

   Set adoCmd = Nothing

   adoCn.Close
   Set adoCn = Nothing
End Sub

Posted by 나비:D
:

MS-SQL DATEADD 함수

2007. 12. 5. 15:21

DATEADD

지정한 날짜에 시간 간격을 더하여 새 datetime 값을 반환합니다.

구문

DATEADD ( datepart , number, date )

인수

datepart

새 값을 반환할 날짜 부분을 지정하는 매개 변수입니다.  다음은 Microsoft® SQL Server™에서 인식하는 날짜 부분과 약어입니다.

날짜 부분 약어
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms

number

datepart에 더해지는 값입니다. 정수가 아닌 값을 지정하면 값의 소수 부분이 무시됩니다. 예를 들어 datepartday, number1.75를 지정한 경우, date는 1만큼 증가합니다.

date

날짜 형식에서 datetime이나 smalldatetime 값이나 문자열을 반환하는 식입니다.  날짜 지정에 대한 자세한 내용은 datetime 및 smalldatetime을 참조하십시오.

연도의 마지막 두 자리 숫자만 지정할 경우 two digit year cutoff 구성 옵션 값의 마지막 두 자리 숫자보다 작거나 같은 값은 구분 기준 연도와 같은 세기에 해당합니다.  이 옵션 값의 마지막 두 자리 숫자보다 큰 값은 구분 기준 연도보다 이전 세기에 해당합니다.  예를 들어, two digit year cutoff가 2049(기본값)일 경우 49는 2049년으로 해석되고 2050은 1950년으로 해석됩니다. 이러한 애매함을 피하기 위해 네 자리 연도를 사용하십시오.

반환 형식

datetime을 반환하지만 date 인수가 smalldatetime일 경우에는 smalldatetime을 반환합니다.

예제

다음은 pubs 데이터베이스의 titles 테이블에 대해 시간 프레임의 목록을 인쇄하는 예제입니다.  다음 시간 프레임은 기존 출판 날짜에 21일을 더한 날짜를 나타냅니다.

USE pubs
GO
SELECT DATEADD(day, 21, pubdate) AS timeframe
FROM titles
GO

결과 집합은 다음과 같습니다.

timeframe                                              
--------------------------
1991-07-03 00:00:00.000
1991-06-30 00:00:00.000
1991-07-21 00:00:00.000
1991-07-13 00:00:00.000
1991-06-30 00:00:00.000
1991-07-09 00:00:00.000
2000-08-21 02:22:04.830
1991-07-21 00:00:00.000
1994-07-03 00:00:00.000
2000-08-21 02:22:04.863
1991-11-11 00:00:00.000
1991-07-06 00:00:00.000
1991-10-26 00:00:00.000
1991-07-03 00:00:00.000
1991-07-03 00:00:00.000
1991-11-11 00:00:00.000
1991-07-03 00:00:00.000
1991-07-03 00:00:00.000

(18  적용됨)
Posted by 나비:D
:

select getdate()
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 1), 1), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 2), 2), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 3), 3), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 4), 4), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 5), 5), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 6), 6), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 7), 7), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 8), 8), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 9), 9), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 10), 10), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 11), 11), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 12), 12), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 13), 13), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 14), 14), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 20), 20), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 21), 21), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 22), 22), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 23), 23), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 24), 24), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 25), 25), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 100), 100), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 101), 101), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 102), 102), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 103), 103), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 104), 104), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 105), 105), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 106), 106), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 107), 107), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 108), 108), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 109), 109), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 110), 110), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 111), 111), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 112), 112), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 113), 113), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 114), 114), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 120), 120), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 121), 121), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 130), 130), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 131), 131), 20)

 


※ 모양은 쿼리 분석기로 실행해보세요 -0-

Posted by 나비:D
:

/*************************************************************

 

             오라클 SQL & SQL*PLUS & PL/SQL Syntax 정리

 

**************************************************************/


               ----------------------------------------------------

            -       * syntax 기호                                    -

               -                                                                           -

               -         [] : 대괄호 안의 내용이 생략가능                     -

               -          | : 또는                                                      -

               -        {} : 중괄호 안의 내용이 하나 이상 올 수 있다.     -

               -        ... : 앞 표기와 같은 형식으로 더 올 수 있다.        -

               -          , : 구분자                                                    -

               ----------------------------------------------------




/***********************************************************************

  SQL, SQL*PLUS

************************************************************************/



* SELECT
SELECT [DISTINCT] {*, COLUMN [ALIAS], . . .}
FROM TABLE_NAME
[WHERE CONDITION]
[ORDER BY {COLUMN, EXPRESSION} [ASC|DESC]];


* 비교연산자

= : 같다.

> : 보다 크다.

>= : 보다 크거나 같다.

< : 보다 작다.

<= : 보다 작거나 같다.

<>, !=, ^= : 같지 않다.

NOT Column_name = : 같지 않다.

NOT Column_name > : 보다 크지 않다.


* SQL연산자

between a and b : a와 b 사이에 있다. (a, b값 포함)

in (list) : list의 값 중 어느 하나와 일치한다.

like : 문자형태와 일치한다. (%, _ 사용)

        %는 값이 없거나 하나이상, _는 하나의 문자

in null : null 값을 가졌다.

not between a and b : a와 b사이에 있지 않다. (a, b값 포함하지 않음)

not in (list) : list의 값과 일치하지 않는다.

not like : 문자 형태와 일치하지 않는다.

not is null : null 값을 갖지 않는다.


* 논리연산자

and : 양쪽 컴포넌트의 조건이 true이면 true를 리턴

or : 한쪽 컴포넌트의 조건만이 true이면 true를 리턴

not : 이후의 조건이 false이면 true를 리턴


* 우선순위 규칙

1) 괄호

2) 수치연산자 > 결합연산자 > 비교연산자

3) is[not] null, like, [not] in > [not] between

4) not > and > or


* 문자형 함수

1) 변환함수

lower : 알파벳값을 소문자로 변환

  syntax -> lower(column|expression)

upper : 알파벳 값을 대문자로 변환

  syntax -> upper(column|expression)

initcap : 첫번째 글자만 대문자로 변환

  syntax -> initcap(column|expression)

2) 문자조작함수

concat : 두 문자열을 연결(합성)       

  syntax -> concat(column1|expression1, column2|expression2)

substr : 문자열 중 특정 문자 또는 문자열의 일부분을 선택       

  syntax -> substr(column|expression,m,[,n])

length : 문자열의 길이를 구함       

  syntax -> length(column|expression)

instr : 명명된 문자의 위치를 구함       

  syntax -> instr(column|expression,m[,n])

lpad : 왼쪽 문자자리 채움       

  syntax -> lpad(column|expression,n,'string')

rpad : 오른쪽 문자자리 채움       

  syntax -> rpad(column|expression,n,'string')

ltrim : 왼쪽 문자를 지움       

  syntax -> ltrim(column1|expression1, 'string')

rtrim : 오른쪽 문자를 지움       

  syntax -> rtrim(column1|expression1, 'string')

translate : 특정 문자열을 대체       

  syntax -> translate(column1|expression1, 'string1', 'string2')

replace : 특정 문자열을 대신       

  syntax -> replace(column1|expression1, 'string1', 'string2')


* 숫자형 함수

round : 숫자를 반올림

  syntax -> round(column1|expression1, n)

trunc : 숫자를 절삭

  syntax -> trunc(column1|expression1, n)

mod : 나머지를 구함

  syntax -> mod(column1|expression1, n)

power : 거듭제곱

  syntax -> power(column1|expression1, n)

sqrt : 제곱근

  syntax -> sqrt(column1|expression, n)

sign : 양수, 음수, 0인지를 구분

  syntax -> sign(column1|expression1)

chr : ascii값에 해당하는 문자를 구함

  syntax -> chr(column1|expression1)


* 날짜연산

date + number : 결과는 date : 일수를 날짜에 더함

date - number : 결과는 date : 날짜에서 일수를 뺌

date - date : 결과는 일수(숫자) : 어떤 날짜에서 다른 날짜를 뺌

date + number/24 : 결과는 date : 시간을 날짜에 더함


* 날짜함수

months_between : 두 날짜사이의 월수를 계산

  syntax -> months_between(date1, date2)

add_months : 월을 날짜에 더함

  syntax -> add_months(date1, n)

next_day : 명시된 날짜로부터 다음 요일에 대한 날짜를 나타냄

  syntax -> next_day(date1, 'string'|n)

last_day : 월의 마지막 날을 계산

  syntax -> last_day(date1)

round : 날짜를 반올림

  syntax -> round(date1 [,fmt]) -> fmt는 'month', 'year'

trunc : 날짜를 절삭

  syntax -> trunc(date1 [,fmt])


* 암시적 형변환 (Oracle서버가 자동형변환)

  varchar2 or char -> number

  varchar2 or char -> date

  number -> varchar2

  date -> varchar2


* 변환함수

to_char : 숫자나 문자값을 지정한 형식의 varchar2문자열로 변환

  syntax1 -> to_char(date, 'fmt') : 날짜를 문자로

  syntax2 -> to_char(number, 'fmt') : 숫자값을 문자로

to_number : 숫자를 포함하는 문자열을 숫자로 변환

  syntax -> to_number(char) : 숫자를 포함하는 문자열을 숫자로 변환

to_date : 날짜를 나타내는 문자열을 명시된 날짜로 변환

  syntax -> to_date(char [,'fmt']) : 날짜를 나타내는 문자열을 명시된 날짜로 변환


* 날짜 형식

scc or cc : 세기(BC날짜에는 -를 붙임)

years indates yyyy of syyyy : 년(BC날짜에는 -를 붙임)

yyy or yy or y : 년의 마지막 3, 2 또는 1자리 수

y,yyy : 콤마가 있는 년

|yyy,|yy,|y,| : ISO표준에 바탕을 둔 4, 3, 2또는 1자리 수

syser or year : 문자고 표현된 년(BC날짜에는 _S를 붙임)

bc or ad : bc/ad 지시자

b.c or a.d : .이 있는 bc/ad지시자

q : 년의 4분의 1

mm : 두자리 값의 월

month : 9자리를 위해 공백을 추가한 월이름

mon : 세자리의 약어로 된 월이름

rm : 로마숫자 월

ww or w : 년이나 월의 주

ddd or dd or d : 년, 월 또는 주의 일

day : 9자리를 위해 공백을 추가한 요일 이름

dy : 세자리 약어로 된 요일 이름

j : Jilian day (bc4713년 12월 31일 이후의 요일 수)


* 시간형식

am or pm : 정오 지시자

a.m or p.m : .이 있는 정오 지시자

hh or hh12 or hh24 : 하루 중 시간(1-12, 0-23)

mi : 분(0-59)

ss : 초(0-59)

sssss : 자정 이후의 초(0-86399)

/ . , : 사용 문자가 결과에 다시 나타남

"문자" : 인용부호내의 문자(들)가 결과에 출력


* 숫자에 영향을 주는 접미사

th : 서수(ddth -> 4th)

sp : 명시한 수(ddsp -> four)

spth or thsp : 명시한 서수(ddspth -> fourth)


* 숫자형식

9 : 9의 수는 출력폭을 지정

0 : 맨 앞에 0을 출력

$ : $ 기호

L : 지역 화폐기호

. : 명시한 위치에 소수점

, : 명시한 위치에 콤마

mi : 우측에 마이너스 기호(음수 값)

pr : 음수를 ()로 묶음

eeee : 과학적인 부호 표기

v : 10을 n번 곱함

b : 0을 0아닌 공백으로 출력


* 기타함수

case, decode : case나 if-then-else-end if 문장의 조건적 조회

1) case

  syntax -> case expr when 조건 then 반환값

                               [when 조건 then 반환값]

                                ...

                               else 반환값

                 end

2) decode

  syntax -> decode(col|expr, search1, result1[,search2, result2, ...][,default])


* 중첩함수 : 여러 단일행함수의 중첩

  syntax -> f3(f2(f1()))


* 그룹함수

avg(distinct|all|n) : null값을 제외한 n개 행의 평균값

count(distinct|all|expr|*) : null이 아닌 행의 개수

max(distinct|all|expr) : 최대값

min(distinct|all|expr) : 최소값

stddev(distinct|all|n) : null값을 제외한 n의 표준편차

sum(distinct|all|n) : null값을 제외한 n의 합계

variance(distinct|all|n) : null값을 제외한 n의 분산


* 그룹함수

  syntax : select group_function(column) [,group_function(column)...]

              from table_name

              [where condition]

              [ order by column]


* 그룹핑

  syntax : select group_function(column) [,group_function(column)...]

              from table_name

              [where condition]

              [group by group_by_expression]

              [having group_condition]

              [ order by column]


* 조인

1) cartesian join : 모든 가능한 행들의 조인 (결과가 의미없는 경우가 대부분)

2) equi join(inner join) : 조인 조건이 정확히 일치하는 경우 사용 (일반적으로 PK, FK사용)

  syntax : select table1.column1 [,table2.column2, ...]

              from table1, table2

              where table1.column1 = table2.column2;

3) non-equi join : 조인 조건이 정확히 일치하지 않는 경우에 사용

4) outer join : 조인 조건이 정확히 일치하지 않는 경우에도 모든 행들을 출력

                    조인시킬 값이 없는 쪽에 (+)연산자 적용

  syntax : select table1.column1 [,table2.column2, ...]

              from table1, table2

              where table1.column1 = table2.column2(+);

5) self join : 하나의 테이블에서 행들을 조인하고자 할 경우에 사용


* SET연산자

  syntax : select *|column1[,column2, column3, ...]

              from table1

              ...

             set operator

              select *|column1[,column2, column3, ...]

              from table2

              ...

             [order by column|expression];

1) union : 각 결과의 합 (합집합:중복되는 값은 한번만 출력)

2) union all : 각 결과의 합 (합집합:중복되는 값 그대로 출력)

3) intersect : 각 결과의 중복되는 부분만 출력 (교집합)

4) minus : 첫번째 결과에서 두번째 결과를 뺌 (차집합)


* 서브쿼리

  syntax : select select_list

              from table

              where expression

              operator

              (select select_list

              from table

              where expression)


* 서브쿼리에서의 연산자(operator)

1) in : 2개 이상의 값을 리턴하는 서브쿼리에 대해 비교연산자를

         기술하면 에러가 발생. 이런 경우 서브쿼리에서 리턴된 목록의

         각각과 비교하여 쿼리를 수행하는 연산자

2) any : 서브쿼리에서 리턴된 목록의 각각의 값과 비교

3) all : 서브쿼리에서 리턴된 목록의 모든 값과 비교

4) exists: 서브쿼리에서 적어도 1개의 행을 리턴하면 논리식은 참


* 다중열 서브쿼리

  syntax : select *|column1[,column2, ...]

              from table

              where (column1, column2 ...)

              in

              (select column1, column2, ...

              from table

              where condition);


* SQL*PLUS 명령어

a[ppend] text : 현재 편집라인의 끝에 text를 추가

c[hange]/old/new:현재 편집 라인의 old문자를 new문자로 바꿈

del [n] : n라인을 삭제

i[nput] [text] : 현재 편집 라인 다음에 라인을 추가하여 text를 추가

l[ist] [n] : SQL문장을 보여주고, 편집 라인을 이동

n text : n번재 라인을 text로 바꿈

r[un] : buffer에 있는 명령어를 실행한다.(/와 동일)

edit [filename[.ext]] : 지정된 파일의 내용이나 버퍼의 내용을 운영체제의

                               문자편집기로 불러온다.

sav[e] [filename[.ext]] [rep[lace] | app[end]]

 : SQL버퍼의 내용을 파일에 저장하고 기존 파일에 추가하기 위해서 append를,

   기존 파일에 중복해서 쓰려면 replace를 사용한다. 기본적인 파일 확장자는 sql이다.

sta[rt] [filename[.ext]] : 지정된 파일을 수행한다. start라는 명열 대신에 @를

                                   사용할 수 있다. 파일 확장자가 .sql이 아니면 파일 확장자를 명시

get [filename[.ext]] : SQL버퍼에 파일의 내용을 기록한다. 파일명의 기본적인 확장자는

                               .lis또는 .lst이다

spo[ol] [filename[.ext]] [off | out] : SQL*PLUS의 내용을 파일에 저장

host : sql*plus안에서 호스트 운영체제의 명령어를 실행한다.

! : 운영체제 shell로 나들이

!vi file_name.sql : file_name.sql을 vi편집기로 부름 (unix)


* set : sql*plus의 환경설정

  syntax : set 시스템변수 값

- 앞 숫자는 기본값

array[size] {20|n} : 데이터베이스 데이터 패치의 크기를 설정

colsep { | text} : 열 사이에 출력되는 문자를 설정 (디폴트:공백하나)

feed[back] {6|off|on} : 질의가 최소한 n개이어야 row의 수를 출력

hea[ding] {off|on} : 열의 heading을 출력할지의 여부 결정

lin[esize] {80|n} : 라인당 문자의 수

long {80|n} : long값을 출력하기 위해 최대 폭을 설정

pages[ize] {24|n} : page당 line수를 지정

pau[se] {off|on|text} : 화면제어를 함

term[out] {off|on} : 결과를 화면에 출력할지의 여부를 결정

col[umn] [column_option] : 열 포맷을 제어

    syntax : col[umn] [{column|alias} [option]]

    option : cle[ar] : 어떤 열의 형식을 해제

               for[mat] format : 열 데이터의 디스플레이를 변경

               hea[ding] text : 열 헤딩을 설정, 수직 바(|)는 헤딩 라인을 한줄 띄움

               jus[tify] [align] : 열 heading을 정렬(좌, 우, 중간)

              nopri[nt] : 열을 숨김

              nul[l] text : null일때 디스플레이할 텍스트 명시

              pri[nt] : 열을 보여줌

              tru[ncated] : 디스플레이 되는 첫번째 라인의 마지막 문자열을 절삭

              wra[pped] : 문자열이 끝나면 다음 라인으로 이동

tti[tle] [text|off|on] : 리포트의 머리말을 명시

bti[tle] [text|off|on] : 리포트의 꼬리말을 명시

bre[ak] [on report_element] : 중복값을 제거하고 라인 피드로 행들을 단락지음

                                           -> 해제시 clear break

  syntax : break on column[|alias|row] [skip n|dup|page] on ... [on report]

              page : break값이 변경될 대 새로운 page로 skip

              skip n : break값이 변경될 때 n만큼 줄을 skip(column, row, page, report)

              duplicate : 중복되는 값을 출력

compute : SQL*PLUS명령어를 이용하여 요약된 계산을 한다.

              해제시 -> clear compute

  syntax : compute function of compute_column on break_column

              function : count, num, max, min, sum, avg, std, var중 하나

             compute_column : 계산에 사용되는 column이나 식

             break_column : break명령으로 기술된 column


* 치환변수

& : 리턴되는 데이터를 동적으로 제한, 변수를 인식


* 사용자 변수 정의

1) define variable = value : char데이터형 사용자 변수를 생성하고 값을 할당

2) define variable : 변수, 변수 값, 변수 데이터형을 출력

3) define : 값과 데이터형을 가진 모든 데이터형을 출력

4) accept : 사용자 입력 라인을 읽고 그것을 변수에 저장

    syntax : accept variable [datatype] [for[mat] format] [prompt text] [hide]

                variable : 값을 저장하는 변수의 이름

                              존재하지 않으면 SQL*PLUS가 그것을 생성하여 사용

                datatype : number, char 또는 date, char는 최대 길이 240바이트

                               date는 형식 모델을 다시 검사하고 데이터형은 char

                format : 형식 모델을 명시(예:a10, 9,999)

                text : 사용자가 값을 입력하기 전에 값을 출력

                hide : 사용자 입력을 숨긴다.(예:패스워드)


* 오라클 객체

1) table : 행과 열로 구성된 기본적인 저장 구조

2) view : 하나 이상의 테이블에서 데이터의 부분집합을 논리적으로 표현

3) sequence : 고유한 번호를 자동으로 발생시키는 객체로 주로 PK값 생성에 사용

4) index : 질의(select) 성능을 향상시키기 위하여 사용하는 물리적인 저장 구조

5) synonym : 객체에 대한 이름을 부여


* 테이블 생성

  syntax : create table [schema.]table_name

                       (column datatype [default expr] [column_constraint],

                       ...

                       [table_constraint]);


* 오라클 data type

varchar2(n) : 가변길이 문자 데이터 (1~4000byte)

char(n) : 고정 길이 문자 데이터 (1~2000byte)

number(p, s) : 전체 p자리 중 소수점 이하 s자리 (p:1~38, s:-84~127)

date : 7byte(bc4712년 1월1일부터 ad9999년 12월 31일)

long :가변길이 문자 데이터 (1~2Gbyte)

clob : 단일 바이트 가변 길이 문자 데이터 (1~4Gbyte)

raw(n) : n byte의 원시 이진 데이터 (1~2000)

long raw : 가변 길이 원시 이진 데이터 (1~2Gbyte)

blob : 가변 길이 이진 데이터 (1~4Gbyte)

bfile : 가변 길이 외부 파일에 저장된 이진 데이터 (1~4Gbyte)


* constraints (제약)

- primary key(pk) : 유일하게 테이블의 각행을 식별 (not null과 unique 동시 만족)

- foreign key(fk) : 열과 참조된 열 사이의 외래키 관계를 적용하고 설정합니다.

- unique key(uk) : 테이블의 모든 행을 유일하게 하는 값을 가진 열 (null을 허용)

- not null(nn) : 열은 null값을 포함할 수 없습니다.

- check(ck) : 참이어야 하는 조건을 지정함(대부분 업무 규칙을 설정)

1) column level

  syntax : column datatype [constraint constraint_name] constraint_type

2) table level

  syntax : column datatype,

              ...

              [constraint constraint_name] unique(column1[,column2...])


* subquery를 사용한 테이블 생성

  syntax : create table table_name [column1[,column2...]] as subquery


* 테이블 수정 (add 열추가, modify 열수정, drop 열삭제)

  syntax : alter table table_name

              add (column datatype [default expr]

              [,column datatype [default expr]...]


* 제약조건 수정 (add 제약추가, drop 제약삭제) : 제약변경은 못함

  syntax : alter table table_name

              add [constraint constraint_name] constraint_type (column);

  - add자리에 disable, enable로 제약조건활성화 결정할 수 있다.


* 객체 이름 변경

  syntax : rename old_name to new_name


* truncate table (테이블 비움:롤백불가)

  syntax : truncate table table_name


* 테이블에 주석문 추가

  syntax : comment on table table_name | column table.column is 'text';


* 테이블 삭제

  syntax : drop table table_name


* DML

insert : 테이블에 새로운 행 추가

  syntax : insert into table_name [(column1[, column2, ...])]

              values (value1[, value2 ...]);

update : 테이블의 행 내용을 변경

  syntax : update table_name

              set column1 = value1 [,column2 = value2, ...]

              [where condition];

delete : 테이블의 행 삭제

  syntax : delete [from] table_name

              [where condition];

merge : 행이 존재하면 update, 새로운 행이면 insert

           merge into table_name as table_alias

           using (table/view/sub_query) as alias

           on (join condition)

           when matched then

                    update set

                    col1 = col1_val1, col2 = col2.val2

           when not matched then

                    insert (column_list) values (column_values);

commit : 저장되지 않은 모든 변경 사항을 Database에 저장

  syntax : commit;

savepoint : savepoint 설정

  syntax : savepoint name;

rollback : 저장되지 않은 모든 변경 사항을 취소

  syntax : rollback [to savepoint name]


* sequence (nextval, currval 사용)

  syntax : create sequence sequence_name

                        [increment by n]

                        [start witn n]

                        [{maxvalue n | nomaxvalue}]

                        [{minvalue n | nominvalue}]

                        [{cycle | nocycle}]

                        [{cache | nocache}]

  - sequence_name : sequence의 이름입니다.

  - increment by n : 정수 값인n으로 sequence번호 사시의 간격을 지정.

                            이 절이 생략되면 sequence는 1씩 증가.

  - start with n : 생성하기 위해 첫번째 sequence를 지정.

                       이 절이 생략되면 sequence는 1로 시작.

  - maxvalue n : sequence를 생성할 수 있는 최대 값을 지정.

  - nomaxvalue : 오름차순용 10^27 최대값과 내림차순용 -1의 최소값을 지정.

  - minvalue n : 최소 sequence를 지정.

  - nominvalue : 오름차순용 1과 내림차순용 -(10^26)의 최소값을 지정

  - cycle | nocycle : 최대 도는 최소갑에 도달한 후에 계속 값을 생성할지의

                             여부를 지정, nocycle이 디폴트.

  - cache | nocache : 얼마나 많은 값이 메모리에 오라클 서버가 미리 할당하고

                                유지하는가를 지정. 디폴트로 오라클 서버는 20을 cache


* sequence 수정

  syntax : alter sequence sequence_name

              ... (생성과 같다)


* sequence 제거

  syntax : drop sequence sequence_name


* view 생성 (simple view)

  syntax : create [or replace] [force|noforce] view view_name [(alias[,alias, ...])]

              as subquery

              [with check option [constraint constraint_name]]

              [with read only]

  - or replace : 이미 존재한다면 다시 생성한다.

  - force : base table유무에 관계없이 view를 만든다.

  - noforce : 기본 테이블이 존재할 경우에만 view를 생성한다.

  - view_name : view의 이름

  - alias : subquery를 통해 선택된 값에 대한 컬럼명이 된다.

  - subquery : select 문장을 기술한다.

  - with check option : view에 의해 엑세스 될 수 있는 행만이 입력, 갱신될 수 있다.

  - constraint : check option 제약 조건에 대해 지정된 이름이다.

  - with read only : 이 view에서 DML이 수행될 수 없도록 한다.


* view 생성 (complex view)

  syntax : create [or replace] [force|noforce] view view_name [(alias[,alias, ...])]

              as subquery

              [with check option [constraint constraint_name]]

              [with read only]            

  - complex view에서는 둘이상의 테이블이 조인되어 view에 나타난다.


* view 제거

  syntax : drop view view_name;


* inline view : from절에 subquery를 사용


* top-n analysis

  syntax : select [column_list], rownum

              from (select [column_list] from table order by top-n_column)

              where rownum <= n;


* index 종류

  - unique index : 지정된 열의 값이 고유함을 보장

  - non-unique index : 데이터를 검색할 때 가장 빠른 결과를 보장

  - single column index : 하나의 열만 인덱스에 존재

  - composite index : 여러 열을 결합하여 하나의 인덱스를 생성(16개의 열까지)


* index 생성 (사용자정의)

  syntax : create index index_name

              on table_name (column1[,column2, ...]);


* index 제거

  syntax : drop index index_name;


* synonym 생성

  syntax : create [public] synonym synonym_name

              for object_name;


* synonym 제거

  syntax : drop [public] synonym synonym_name;


* user 생성

  syntax : create user user_name

              idntified by password;


* 권한부여

  syntax : grant system_privilege1[,system_privilege2, ...]

              to user_name1[,user_name2, ...]

              [with admin option]

  - with admin option을 주면 부여받은 권한을 다시 부여할 수 있다.


* 권한제거

  syntax : revoke system_privilege1[,system_privilege2, ...] | role1[,role2, ...]

              from {user1[,user2, ...] | role1[,role2 ...] | public};


* Role 생성 : Role은 권한(privilege의 모임)

  syntax : create role role_name;


* Role 부여

  syntax : grant role_name to user_name;




/***********************************************************************

  PL/SQL

************************************************************************/


* 기본구조

  declare : 실행부에서 참조할 모든 변수, 상수, 커서, exception을 선언

       variables, cursor, user_defined, exception

  begin : 데이터베이스의 데이터를 처리할 sql문과 pl/sql블록을 기술

       sql, pl/sql statements;

  exception : 실행부에서 에러가 발생했을때 수행될 문장을 기술

       actions to perform wher erros occur

  end;


* anonymous

syntax : [declare]

            begin

                   statements;

                   statements;

                   statements;

            [exception]

            end;


* procedure

syntax : create procedure procedure_name

            is

            begin

                   statements;

                   statements;

            [exception]

            end;


* function

syntax : create function function_name

            return datatype

            is

            begin

                  statements;

                  statements;

                  return value;

            [exception]

            end;


* Data Dictionary 조회

select * from system_privilege_map;

select * from table_privilege_map;

select * from role_sys_privs;

select * from user_free_space;

- 현재 세션을 이루고 있는 사용자가 소유하고 있는 테이블

select table_name, tablespace_name from user_tables;

- 현재 세션을 이루고 있는 사용자가 소유한 모든 객체

select object_name, object_type, timestamp from user_objects;

- 현재 세션을 이루고 있는 사용자가 소유한 테이블, 뷰, 동의어, 시퀀스 조회

select * from user_catalog;

- 현재 세션을 이루고 있는 사용자가 소유하고 있는 시퀀스 조회

select sequence_name, min_value, max_value, increment_by, last_number

from user_sequences;

- 현재 세션을 이루고 있는 사용자가 소유한 view를 조회하시오.

select * from user_views;

- object권한의 종류 확인

select * from table_privilege_map;

Posted by 나비:D
:

BLOG main image
by 나비:D

공지사항

카테고리

분류 전체보기 (278)
Programming? (0)
---------------------------.. (0)
나비의삽질 (5)
Application (177)
SQL (51)
Web (27)
etc. (14)
Omnia (0)
---------------------------.. (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

달력

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Total :
Today : Yesterday :