'개발'에 해당되는 글 57건

★ UNION

    UNION 구문은 첫번째 쿼리의 모든 행을 두번째 쿼리의 모든 행과 더하고,

    중복된 행을 제거한 후, 결과를 리턴한다.

   

    다음 예를 보면 첫번째 쿼리에서 EMPLOYEES_ID와 LAST_NAME에서 LAST_NAME 열이 A나 B로

    시작하는 직원 레코드를 얻고, 두번째 쿼리에서는 EMPLOYEES_ID와 LAST_NAME 열에서

    LAST_NAME 이 B나 C로 시작하는 직원 레코드를 얻었다.

 

    쉽게 알 수 있겠지만 B로 시작되는 LAST_NAME 열을 가지는 직원 레코드는 첫번재와 두번째

    쿼리 모두에서 선택되며, 중복되는 행들은 결과셋에서 제외된다.

 

EX>

    select employee_id, last_name

  2   from employees

  3 where last_name like 'A%'

  4     or  last_name like 'B%' 

  5  union

  6 select employee_id, last_name

  7   from employees

  8 where last_name like 'B%'

  9     or  last_name like 'C%'

 10 /

 

★ UNION ALL

    UNION ALL 구문은 UNION 구문과 매우 비슷하지만 중복되는 행을 제외시키지 않는다.

 

EX>

    select employee_id, last_name

  2   from employees

  3 where last_name like 'A%'

  4     or  last_name like 'B%' 

  5  union all

  6 select employee_id, last_name

  7   from employees

  8 where last_name like 'B%'

  9     or  last_name like 'C%'

 10 /

 

   

★ INTERSECT

   intersect 구문은 두 개의 쿼리를 받고 결과를 모은 다음, 두 결과셋에 모두 존재하는

   레코드만을 리턴한다. 첫번째  쿼리나 두번째 쿼리에서만 리턴된 행은 결과셋에 포함되지 않는다.

  

   앞에서와 같은 쿼리에 INTERSECT 구문을 이용하면 LAST_NAME이 B로 시작하는 직원

   레코드만이 리턴될 것임을 예상할 수 있다. 이것은 첫번째 쿼리나 두번째 쿼리에만 포함되는

   행들이 모두 결과셋에서 제거되기 때문이다.

 

EX>

    select employee_id, last_name

  2   from employees

  3 where last_name like 'A%'

  4     or  last_name like 'B%' 

  5  intersect

  6 select employee_id, last_name

  7   from employees

  8 where last_name like 'B%'

  9     or  last_name like 'C%'

 10 /

 

★ MINUS

   MINUS 집합 연산자는 첫번째 쿼리에서만 리턴되며, 두번째 쿼리에서는 리턴되지 않는

   레코드만을 리턴한다. 즉, 첫번째 쿼리에서 LAST_NAME이 A나 B로 시작하는 직원 레코드가

   리턴되고, 두번째 쿼리에서 LAST_NAME이 B나 C로 시작하는 직원 레코드가 리턴된다면,

   이 두 쿼리에 MINUS 연산자를 적용한 뒤에는 LAST_NAME이 A로 시작하는 직원 레코드를

   얻게 된다.

 

EX>

    select employee_id, last_name

  2   from employees

  3 where last_name like 'A%'

  4     or  last_name like 'B%' 

  5  minus

  6 select employee_id, last_name

  7   from employees

  8 where last_name like 'B%'

  9     or  last_name like 'C%'

 10 /


'개발 > ORCLE' 카테고리의 다른 글

오라클 OUTER JOIN  (0) 2008.10.24
오라클 Length, LengthB  (0) 2008.10.24
오라클 INDEX  (0) 2008.10.24
오라클 CASE  (0) 2008.10.24
오라클 반환형 함수  (0) 2008.10.23
블로그 이미지

쭈니후니

개발자로서 공부와 낚시를 좋아하는 한사람으로서의 추억을 담을 블로그입니다.

,

Session은 사용자와 컴퓨터 또는 두 대의 컴퓨터간의 활성화된 접속을 의미하며, 이런 세션에 관한 모든 것을 처리하는 것이 바로 Session 객체입니다. 이전 강좌에서 살펴본 Application 객체가 응용 프로그램(웹 사이트)의 전체를 지배하며, Application 변수는 누구나 접근, 수정이 가능하다면, Session은 클라이언트마다 각각 할당되는 고유의 것으로 생각하면 됩니다.

일단 Session 객체 사용에 대한 자세한 내용에 대해서는 IIS 5.0 설명서의 세션 관리를 참고하도록 하겠습니다.

 

▶ 세션 관리

성공적인 웹 응용 프로그램 개발에 있어 어려운 과제 중 하나는 사용자가 응용 프로그램의 여러 페이지 간을 이동할 때 방문, 또는 세션에 대한 사용자 정보를 유지 관리하는 것입니다. HTTP는 상태를 구별하지 않는 프로토콜이며 이것은 웹 서버가 페이지에 대한 각 HTTP 요청을 독립 요청으로 취급한다는 의미입니다. 즉, 이전 요청이 발생한 지불과 몇 초 후에 현재 요청이 발생하더라도 서버에는 이전 요청에 대한 정보가 남지 않습니다. 이전 요청을 기억하지 못하는 것은 온라인 카탈로그와 같이 사용자가 카탈로그의 여러 페이지 간을 이동하는 동안 선택한 카탈로그 항목을 추적할 필
요가 있는 응용 프로그램을 쓰기 어렵다는 것을 의미합니다.

 

ASP는 세션 정보 관리 문제에 대한 유일한 솔루션을 제공합니다. 서버에 의해 생성된 특정 사용자 ID와 ASP Session 개체를 사용하여 방문한 각 사용자를 식별하는 지능적인 응용 프로그램을 만들고 정보를 수집하면 응용 프로그램은 이러한 정보를 사용하여 사용자 기본 설정과 선택을 추적할 수 있습니다.

 

▶ 중요

ASP는 사용자 브라우저에 저장된 작은 파일인 HTTP 쿠키를 사용하여 사용자 ID를 할당합니다. 따라서 쿠키를 지원하지 않는 브라우저용 응용 프로그램을 만들거나 고객이 쿠키를 거부하도록 브라우저를 설정한다면 APS의 세션 관리 기능을 사용하지 말아야 합니다.

위의 설명대로 비연결 지향적인 HTTP 프로토콜의 ASP 기반 애플리케이션에서도 Session 객체를 사용하면 특정 사용자 세션에 필요한 정보를 저장할 수 있습니다.
또한, 이렇게 Session 객체에 저장된 변수는 사용자가 응용 프로그램(웹 사이트)에서 페이지 사이를 이동할 때 버려지지 않는 특징이 있습니다. 즉, 이들 Session 객체는 사용자가 웹 서버와 연결이 지속되는 동안 계속 유지됩니다.
일반적으로 세션은 응용 프로그램에서 아직 세션을 가지고 있지 않은 사용자가 웹 페이지를 요청하면 웹 서버는 자동으로 Session 객체를 작성하며, 서버에서 세션이 만료되거나 중단될 때 Session 객체를 없앱니다.
주의할 점은 사용자가 브라우저를 닫는다고 해서 Session이 끝나는 것이 아닙니다. 현재의 브라우저를 종료하고 다른 브라우저를 실행한 경우에만 세션이 종료됩니다. 세션종료에 대해서는 다시 살펴보도록 하겠습니다.

그리고, 위의 설명에서도 [중요] 표시가 되어 있지만, 세션은 쿠키의 일종이며, ASP에서는 클라이언트 브라우저에 저장된 작은 쿠키를 사용하여 그 사용자에게 고유한 Session ID를 할당하기 때문에 쿠키를 지원하지 않는 브라우저인 경우 또는, 클라이언트가 쿠키를 거부하도록 브라우저를 설정한 경우라면 ASP의 세션기능을 사용할 수 없습니다.

단, 세션값은 서버에 저장이 되어지는 반면, 쿠키는 클라이언트에 저장되는 차이가 있다는 점에 염두해 두어야 합니다.


이제 Session 객체에서 제공하는 컬렉션, 메소드, 이벤트 들을 하나하나 알아보도록 하지요.

 


종  류

설   명

컬렉션

 Contents

스크립트 명령을 통해 Session에 추가된 모든 항목을 포함

 StaticObjects

<OBJECT> 태그와 지정된 세션 영역으로 작성된 개체를 포함

속 성

 CodePage

기호 매핑에 사용되는 코드 페이지

 LCID

로케일 식별자

 SessionID

사용자에 대한 세션 ID를 반환

 Timeout

응용 프로그램의 세션 상태에 대한 시간 제한 값(분으로 표시)

메서드
 Abandon Session 개체를 없애고 리소스를 해제
 Contents.Remove Contents 컬렉션에서 항목을 삭제
 Contents.RemoveAll Contents 컬렉션에서 모든 항목을 삭제
이벤트
 Session_OnStart

이벤트용 스크립트는 Global.asa 파일에서 선언,
이들 이벤트와 Global.asa 파일에 대한 내용은 [Global.asa 파일 참조] 강좌 참고

 Session_OnEnd

세션의 시작과 종료

Session이 시작될 경우는 Application에 접속하는 순간 즉, 브라우저가 웹 서버에 처음 페이지를 요구했을 때 입니다. 이렇게 세션이 시작되는 순간 ASP는 global.asa에 있는 Session_OnStart 이벤트에 있는 스크립트를 시작합니다. 만약 정의된 스크립트가 없다면 아무것도 실행하지 않습니다.

종료는 다음과 같은 경우에 해당합니다.

  • 다른 페이지로의 이동없이 한 페이지에만 머물러 Session.Timeout(디폴드로 20분)이 초과한 경우
  • Session.Abandon 메서드가 호출된 경우
  • 사용자가 브라우저를 닫고 다른 브라우저를 실행한 경우
  • Global.asa 파일을 편집한 후 저장했을 경우
  • Web Server가 종료된 경우

참고로, 세션 시간 제한이 너무 길어지면 세션을 너무 많이 열게 되어 서버의 메모리 리소스가 낭비될 수 있다고 IIS 5.0 설명서에 기술되어 있더군요.

 

Session 개체에서 데이터 저장 및 제거

각각의 사용자 세션에서 사용해야 할 값들은 대개 Session 변수로 저장해 두고 이용합니다. 즉, 사용자마다의 고유한 값을 Session 객체에 저장할 수 있습니다. 이렇게 Session 객체에 저장된 정보는 세션 전체에서 사용할 수 있으며 세션 영역을 가집니다. 다음은 두 종류의 변수 저장 예를 보여 줍니다.

<%
Session("FirstName") = "Jeff"
Session("LastName") = "Smith"
%>


또한, 객체 인스턴스를 Session 객체에 저장할 수 있습니다. IIS 5.0 설명서에는 다음과 같이 기술되어 있습니다.

개체를 Session 개체에 저장하고 기본 스크립트 언어로 VBScript를 사용하는 경우에는 Set 키워드를 사용해야 합니다. 다음 스크립트를 참고하십시오.

<% Set Session("Obj1") = Server.CreateObject("MyComponent.class1") %>

후속 웹 페이지에서 MyComponent.class1에 의해 제공된 메서드와 속성을 호출하기 위해 다음 명령을 사용합니다.

<% Session("Obj1").MyMethod %>

또는 개체의 로컬 사본을 추출하는 다음과 같은 명령을 사용합니다.

<%
Set MyLocalObj1 = Session("Obj1")
MyLocalObj1.MyObjMethod
%>


세션 영역을 가진 개체를 만드는 다른 방법은 Global.asa 파일에서 <OBJECT> 태그를 사용하는 것입니다. 그러나 Session 개체에 기본 제공 개체를 저장할 수는 없습니다. 예를 들어, 아래의 각 줄은 오류를 반환합니다.

<%
Set Session("var1") = Session
Set Session("var2") = Request
Set Session("var3") = Response
Set Session("var4") = Server
Set Session("var5") = Application
%>


예제
아래 코드는 세션 변수 name에 문자열 MyName을, 세션 변수 year에 값을, myObj 변수에 some.Obj 구성 요소의 인스턴스를 할당합니다.


<%
Session("name") = "MyName"
Session("year") = 96
Set Session("myObj" = Server.CreateObject("someObj")
%>


위에서 살펴보았듯이 Session 객체에 개체 인스턴스를 저장할 수도 있지만 이렇게 하면 서버 성능이 저하됩니다.

참고로, Session 객체에서 사용자의 기본 설정을 저장한 다음, 이 기본 설정에 의해 사용자에게 반환할 페이지를 결정할 수 있습니다. 예를 들어, 사용자가 웹 사이트의 첫 번째 페이지에 있는 내용의 텍스트 버전만 지정한 다음, 이 사이트에서 해당 사용자가 방문한 모든 다른 페이지에 이 선택 사항을 적용하도록 할 수 있습니다.

<% If Session("Page") = "Low" Then %>
이것은 페이지의 텍스트 버전입니다.
<% Else %>
이것은 페이지의 멀티미디어 버전입니다.
<% End If %>




지금까지 Session 객체에 특정 값을 저장할 수 있음을 살펴보았습니다. 이제 이렇게 값을 저장할 수도 있는 반면에 저장된 항목을 삭제하는 방법에 대해 알아보도록 하죠. IIS 5.0 설명서에는 다음과 같이 기술되어 있습니다.


예를 들어, 온라인 상점을 방문하는 사용자가 마음을 바꾼다든지, 구입한 물건 목록을 취소한다든지, 완전히 다른 제품을 선택하기로 결정하는 일은 자주 발생하는 일입니다. 이러한 경우에 적절하지 않은 값을 삭제하면 Session 개체를 쉽게 업데이트할 수 있습니다.

 

Session 개체의 Contents 컬렉션에는 세션에 대해서 저장된(HTML <OBJECT> 태그를 사용하지 않고 저장된) 모든 변수가 포함되어 있습니다. Contents 컬렉션의 Remove 메서드를 사용하면 세션 상태에 추가된 변수에 대한 참조를 선택적으로 제거할 수 있습니다. 다음 스크립트는 Remove 메서드를 사용하여 항목을 제거하는 방법, 즉 이 경우에는 Session 개체에서 사용자 할인 정보
를 제거하는 방법을 보여 줍니다.


<%
If Session.Contents("Purchamnt") <= 75 then
Session.Contents.Remove("Discount")
End If
%>


또한, Contents 컬렉션의 RemoveAll 메서드를 사용하여 세션에 저장된 모든 변수를 완전히 제거할 수도 있습니다.

<% Session.Content.RemoveAll() %>



Timeout Property & Abandon Method

세션 연결을 끊는 방법에는 두 가지가 있습니다. Timeout 프로퍼티를 사용할 수 있으며, Abandon 메소드를 호출해서 세션 연결을 끊을 수도 있습니다. 먼저, Timeout 프로퍼티에 대해 알아보죠. Timeout 프로퍼티는 Session 객체에 지정된 제한 시간을 분 단위로 지정합니다. 사용자가 이렇게 지정한 제한 시간 내에 페이지를 새로 고치거나 요청하지 않으면 세션은 끝납니다.

<% Session.Timeout = 20 %>

위에 예에서는 서버가 자동으로 종료되기 전에 세션이 상태로 남아 있을 수 있는 시간(분)으로 20분을 지정하였습니다. Abandon 메소드는 Session 객체에 저장된 모든 객체를 삭제하고 리소스를 해제합니다. 이 Abandon 메서드를 명시적으로 호출하지 않으면 세션이 시간 초과될 때 서버가 이들 객체를 삭제합니다.

<% Session.Abondon %>

Abondon 메소드에는 한가지 주의할 점이 있습니다. 다음에 기술되어 있는 IIS 5.0 설명서의 내용을 살펴보죠.
Abandon 메소드를 호출하면 현재 페이지의 모든 스크립트 명령이 처리될 때까지는 실제로 삭제되지 않습니다.  즉, Abandon 메소드를 호출한 페이지에서는 Session 개체에 저장된 변수에 액세스할 수는 있지만 후속 웹 페이지에 있는 이 변수에는 액세스할 수 없다는 의미입니다.

예를 들면 다음 스크립트에서 세 번째 줄은 Mary 값을 인쇄합니다. 그 이유는 서버가 스크립트 처리를 끝낼 때까지는 Session 객체가 없어지지 않기 때문입니다.


<%
Session.Abandon
Session("MyName") = "Mary"
Reponse.Write(Session("MyName"))
%>


만일 후속 웹 페이지에서 MyName 변수에 액세스하면 이 변수는 비어 있습니다. 그 이유는 위 예제가 포함된 페이지가 다 처리되었을 때 MyName이 이전 Session 개체와 함께 없어졌기 때문입니다. 참고로, 한 세션을 취소한 후에 다음 웹 페이지를 열면 서버는 Session 객체를 새로 작성합니다. 이렇게 새로 작성된 Session 객체에 변수와 객체를 저장할 수 있습니다.


'개발 > ASP' 카테고리의 다른 글

iis6/ii7 디버깅 오류표시방법  (0) 2013.08.02
ASP에서 DB값 NULL 체크 하는 방법  (0) 2012.06.19
ASP 파일 이동&삭제  (0) 2012.03.28
블로그 이미지

쭈니후니

개발자로서 공부와 낚시를 좋아하는 한사람으로서의 추억을 담을 블로그입니다.

,

오라클 INDEX

개발/ORCLE 2008. 10. 24. 10:07

네이버 joypheonix님 블로그에서 퍼옴

---------------------인덱스  확인----------------------------------
SELECT index_name, table_owner, table_name, column_name
FROM   dba_ind_columns
WHERE index_owner = 'EDU_USER' and table_name='TCM_WAREHOUSING'
ORDER BY index_name, column_position;

--TCM_WAREHOUSING_PK EDU_USER TCM_WAREHOUSING WHYEARMON
--TCM_WAREHOUSING_PK EDU_USER TCM_WAREHOUSING SEQ   

SELECT    ic.index_name, ic.column_name,
                   ic.column_position, ix.uniqueness
 FROM       user_indexes ix, user_ind_columns ic
 WHERE     ic.index_name = ix.index_name
 AND          ix.table_name = 'TCM_WAREHOUSING'


--TCM_WAREHOUSING_PK WHYEARMON 1 UNIQUE
--TCM_WAREHOUSING_PK SEQ 2 UNIQUE

 

 

 

 

 

1. 기본적으로 primary key나 unique생성시에는 자동적으로

    index가 생성된다.

 

2. index 생성하기

    create table it(
    no number,
    bigo varchar2(30) constraint it_bigo_uk unique

    using index(create index i_it_bigo on it(bigo)

                  tablespace indx));

 

3. CREATE INDEX idx_emp ON tb_emp (empno);

    -->tb_emp 테이블에 empno 컬럼을 이용하여 idx_emp를 생성한다.

 

3_1. CREATE INDEX idx_emp ON tb_emp (empno desc);

    -->tb_emp 테이블에 empno 컬럼을 이용하여 역순으로 정렬하는 idx_emp를 생성한다.

 

 

4. 삭제: DROP INDEX 인덱스명

 

 

5.

* 인덱스가 무시되는 경우
인덱스의 유무를 탐지할 수 있는 단순 열에 대해 적용되어야만 인덱스의 장점이 활용된다. 즉 substr이나 || 와 같은 함수에 의해 변형되어 있다면 오라클은 인덱스를 사용하지 않는다. 그러나 min과 max도 열 자체와 함께 사용된다면 인덱스의 장점을 활용할 수 있다. 또한 클러스터 인덱스를 제외하고는 null인 열은 인덱스 상에 나타나지 않는다. 하나 이상의 열에 대해 지정된 인덱스는 전체 열 중에 어느 하나라도 null이 아니면 엔트리를 가진다. 모든 열이 null이면 인덱스에 이와 관련된 엔트리는 생기지 않는다.
--> where ~~ is null 등과 같은 sql문에는 적합하지 않다.
--> 컬럼에 null값이 들어가있는 컬럼은 인덱스로 사용하기 불가능 하다???
 
 
 

 

 --index의 사용유무 확인하기

 

1. @C:\oracle\ora92\rdbms\admin\utlxplan.sql

2. @C:\oracle\ora92\sqlplus\admin\plustrce.sql

3. create public synonym plan_table for sys.plan_table;

 

4. ora602에게 권한을 부여

    grant plustrace to ora602;

 

5. grant select, insert, update, delete on plan_table to ora602;

 

6. ora602에 접속

 

7. set autotrace on

 

8. select 컬럼 실행

 

9. 사용이 끝난 후엔 set autotrace off

 

 

 
--------------------------------------------------------------------------------
--                                              16장 인덱스                     
--------------------------------------------------------------------------------
-- SQL 명령문의 처리 속도를 향상시키기 위해서 컬럼에 대해 생성하는 오라클객체   
--------------------------------------------------------------------------------
-- 인덱스를 사용해야 하는 경우                                                                          --
--      1.테이블에 행의 수가 많을때                                                                      --
--      2.조건절인 WHERE 문에 해당 컬럼이 많이 사용될 때                                     --
--      3.검색 결과가 데이터의 2% ~ 4% 정도 일 때                                                --
--      4.JOIN에 자주 사용되는 컬럼                                                                     --
--      5.NULL을 포함하는 컬럼이 많은 경우                                                          --
--                                                                                                                  --
-- 인덱스를 사용하지 말아야 하는 경우                                                                --
--      1.테이블에 행의 수가 적을 때                                                                     --
--      2.WHERE 문에 해당 컬럼이 자주 사용되지 않을 때                                        --
--      3.검색 결과가 전체 데이터의 10% ~ 15% 이상 높을 때                                   --
--      4.테이블에 DML 작업이 많은 경우                                                              --
--        즉, 입력 수정 삭제 등이 자주 일어 날 때                                                    --
--------------------------------------------------------------------------------

-- 인덱스 생성/제거와 인첵스 정보 조회
CREATE TABLE E2
AS
SELECT *
  FROM EMP;

INSERT INTO E2 SELECT * FROM E2;

    -- 시간 체크
    SQL> SET TIMING ON
    SQL> SELECT DISTINCT EMPNO, ENAME FROM E2 WHERE ENAME = 'SCOTT';

         EMPNO ENAME
    ---------- ----------
          7788 SCOTT

    Elapsed: 00:00:00.80

CREATE INDEX IDX_E2_ENAME
ON E2(ENAME);
    -- 인덱스 생성후 시간 체크
    SQL> SET TIMING ON
    SQL> SELECT DISTINCT EMPNO, ENAME FROM E2 WHERE ENAME = 'SCOTT';

         EMPNO ENAME
    ---------- ----------
          7788 SCOTT

    Elapsed: 00:00:00.37 -->> 인덱스 속도가 줄었음.
   
-- 인덱스 생성 유무 확인 데이터 딕셔너리(USER_INDEXES, USER_IND_COLUMNS(컬럼명확인))
SELECT INDEX_NAME, TABLE_NAME
  FROM USER_INDEXES
 WHERE TABLE_NAME IN('EMP','DEPT','E2');
 
SELECT INDEX_NAME, TABLE_NAME, COLUMN_NAME
  FROM USER_IND_COLUMNS
 WHERE TABLE_NAME IN('EMP','DEPT','E2');
 
-- 인덱스 제거
DROP INDEX IDX_E2_ENAME;

-- 인덱스 재생성
SQL> SET TIMING ON
SQL> ALTER INDEX IDX_E2_DEPTNO REBUILD;

-- 인덱스의 종류
    -- 1.고유 인덱스(Unique Index)           : 유일한 값을 갖는 컬럼에 대해서 생성하는 인덱스
    -- 2.비고유 인덱스(NonUnique Index)   : 중복된 데이터를 갖는 컬럼에 대해서 생성하는 인덱스
    -- 3.단일 인덱스(Single Index)            : 한 개의 컬럼으로 구성한 인덱스
    -- 4.결합 인덱스(Composite Index)      : 두 개 이상의 컬럼으로 구성한 인덱스
    -- 5.함수 기반 인덱스(Function Based Index)

CREATE TABLE D2
AS
SELECT *
  FROM DEPT;
-- 고유 인덱스
CREATE UNIQUE INDEX IDX_D2_DEPTNO
ON D2(DEPTNO);
-- 비고유 인덱스
CREATE INDEX IDX_D2_LOC
ON D2(LOC);
-- 결합 인덱스
CREATE INDEX IDX_D2_COM
ON D2(DEPTNO, DNAME);
   
    SELECT INDEX_NAME, TABLE_NAME, COLUMN_NAME
      FROM USER_IND_COLUMNS
     WHERE TABLE_NAME ='D2';

-- 함수 기반 인덱스
CREATE TABLE E3
AS
SELECT *
  FROM EMP;

CREATE INDEX IDX_E3_ANNSAL
ON E3(SAL*12);

    SELECT INDEX_NAME, TABLE_NAME, COLUMN_NAME
      FROM USER_IND_COLUMNS
     WHERE TABLE_NAME ='E3';

 

------사용법-----------

select /*+ INDEX (A UI_TEMP ) */ --> 테이블명 한칸띄고 인덱스명 (INDEX_desc-->인덱스를 꺼꾸로 탐)
    name, se_code, dt
from temp A
where chk = 0 and rownum = 1

'개발 > ORCLE' 카테고리의 다른 글

오라클 Length, LengthB  (0) 2008.10.24
오라클 UNION & UNION ALL & INTERSECT & MINUS  (0) 2008.10.24
오라클 CASE  (0) 2008.10.24
오라클 반환형 함수  (0) 2008.10.23
오라클 NVL  (0) 2008.10.23
블로그 이미지

쭈니후니

개발자로서 공부와 낚시를 좋아하는 한사람으로서의 추억을 담을 블로그입니다.

,

오라클 CASE

개발/ORCLE 2008. 10. 24. 08:22
SELECT
(CASE COLUMVALUE
WHEN 'A'
THEN '1'
WHEN 'B'
THEN '2'
END)
FROM TEST

DECODE랑 거의 같은역할을 하고 있다고 보면됩니다.
이 CASE문을 DECODE로 바꾼다면..

DECODE(COLUMVALUE, 'A','1', 'B', '2')

'개발 > ORCLE' 카테고리의 다른 글

오라클 UNION & UNION ALL & INTERSECT & MINUS  (0) 2008.10.24
오라클 INDEX  (0) 2008.10.24
오라클 반환형 함수  (0) 2008.10.23
오라클 NVL  (0) 2008.10.23
오라클 DECODE  (0) 2008.10.23
블로그 이미지

쭈니후니

개발자로서 공부와 낚시를 좋아하는 한사람으로서의 추억을 담을 블로그입니다.

,
TO_CHAR : 숫자나 날짜를 문자열로 변환

EX) TO_CHAR (SYSDATE, 'yyyymmdd')

만약 날짜가 2008년 10월 23일이면 뒤에 'yyyymmdd' 형식대로 20081023 이렇게 변환을 시켜줍니다.

TO_NUMBER : 문자를 숫자로 변환

TO_DATE : 문자를 날자로 변환

EX)TO_DATE('10 September 2008','dd Month YYYY') 

문자스트링을 TO_NUMBER와 TO_DATE를 써서 숫자형식으로 변환할수 있다.

YYYY : 4자리 연도표시
YY : 2자리 연도표시
Month : 월을 알파벳으로 스펠링
MON : 월의 알파벳 약어
MM : 월을 2자리로 숫자로 표시
DAY : 일에 해당하는 요일
DY : 일에 해당하는 요일 약어
DDD,DD,D : 연도, 월, 일 중의 날짜를 숫자로 표시
HH, HH24 : (1-12) , (0-23)중의 시간을 표시
MI : 분을 표시
SS : 초를 표시
AM(A.P), PM(P.M) : 오전인지 오후인지를 표시 
 

'개발 > ORCLE' 카테고리의 다른 글

오라클 UNION & UNION ALL & INTERSECT & MINUS  (0) 2008.10.24
오라클 INDEX  (0) 2008.10.24
오라클 CASE  (0) 2008.10.24
오라클 NVL  (0) 2008.10.23
오라클 DECODE  (0) 2008.10.23
블로그 이미지

쭈니후니

개발자로서 공부와 낚시를 좋아하는 한사람으로서의 추억을 담을 블로그입니다.

,

오라클 NVL

개발/ORCLE 2008. 10. 23. 16:29
NVL(컬럼명, 넣고자하는글,숫자 등등)

EX)NVL(TEST, '눌이었네')

TEST
=====
테스트중입니다.
눌이었네 <<< NULL값이 이었을경우

즉 TEST라는 컬럼에 NULL값이 있으면 '눌이었네'가 대신 들어가게 하는 함수입니다^^

'개발 > ORCLE' 카테고리의 다른 글

오라클 UNION & UNION ALL & INTERSECT & MINUS  (0) 2008.10.24
오라클 INDEX  (0) 2008.10.24
오라클 CASE  (0) 2008.10.24
오라클 반환형 함수  (0) 2008.10.23
오라클 DECODE  (0) 2008.10.23
블로그 이미지

쭈니후니

개발자로서 공부와 낚시를 좋아하는 한사람으로서의 추억을 담을 블로그입니다.

,

오라클 DECODE

개발/ORCLE 2008. 10. 23. 16:14

. 이론 : DECODE(VAL2,0,D1, D2)  이것은 IF THEN ELSE문 이라고 생각하시면됩니다.

2. 해석 : VAL2컬럼이 0일경우 D1을 실행하고 그렇지안을경우 D2를 실행하라.....

3. 문법 : DECODE(대상 컬럼명, 조건값, 참이면 실행, 해당안되면 출력)

EX) DECODE(TEST, '테스트', 'Y', 'N')

TEST                TEST
====                ====
테스트               Y
테스트     ==>       Y
NO                   N
NO                   N
                

뭐 이런식으로 출력될겁니다
그 컬럼에 테스트라는 글자가 적혀 있다면 Y로 실행되고 그외글자가 있다면 N으로 실행되게 되는겁니다.

쉽게말해 IF THEN ELSE 문과 같다고 보면되죠^^

저렇게 기본으로 간단하게 넣을 수도 있지만..
예를들어

EX) DECODE(TEST, '테스트', 'Y', '코딩중', 'N', 'S')

테스트면 Y가 출력되는데 코딩중이라는말이 뜨면 N 이고 아니면 S
이런식으로 계속 계속 추가를 할수 있습니다.

'개발 > ORCLE' 카테고리의 다른 글

오라클 UNION & UNION ALL & INTERSECT & MINUS  (0) 2008.10.24
오라클 INDEX  (0) 2008.10.24
오라클 CASE  (0) 2008.10.24
오라클 반환형 함수  (0) 2008.10.23
오라클 NVL  (0) 2008.10.23
블로그 이미지

쭈니후니

개발자로서 공부와 낚시를 좋아하는 한사람으로서의 추억을 담을 블로그입니다.

,