2021년 11월 14일 일요일

[동영상]오라클 NLS 파라미터(ORACLE NLS PARAMETER), NLS_DATE_FORMAT,NLS_LANG,NLS_LANGUAGE ​

[동영상]오라클 NLS 파라미터(ORACLE NLS PARAMETER), NLS_DATE_FORMAT,NLS_LANG,NLS_LANGUAGE


오라클 NLS Parameters

NLS(National Language Support)는 언어 지원과 관련된 파라미터를 지칭하며

SQL*PLUS등에서 확인 하려면 다음과 같이 조회한다.

SQL> show parameter nls

NAME TYPE VALUE

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

nls_calendar string //sysdate등에서 보이는 캘린더 데이터 포맷

nls_comp string BINARY //where절, PL/SQL안의 NLS데이터 비교 방법

nls_currency string

nls_date_format string

nls_date_language string

nls_dual_currency string

nls_iso_currency string

nls_language string AMERICAN

nls_length_semantics string BYTE

nls_nchar_conv_excp string FALSE

nls_numeric_characters string

nls_sort string

nls_territory string AMERICA

nls_time_format string

nls_time_tz_format string

nls_timestamp_format string

nls_timestamp_tz_format string

NLS_DATE_FORMAT이란?

테이블의 날짜형 칼럼에 값을 입력 시 DATE형으로 만들어 입력을 하거나 NLS_DATE_FORMAT에 맞는 문자열이라면 문자열로 입력이 가능하다. 가끔 날짜형에 문자를 넣을 때 FORMAT이 맞지 않아 애로사항이 있을 수 있으니 NLS_DATE_FORMAT 값을 알고 그 형식대로 문자열을 입력하면 된다.

실제 날짜 표기(TO_CHAR, TO_DATE 실행시) “월요일”, “MON” 으로 표시를 좌우하는 NLS_DATE_FORMAT 값은 NLS_LANGUAGE 을 따른다.

NLS_DATE_FORMAT은 현재 시스템의 기본 날짜 입출력 형태를 지정하는 파라미터 이며 TO_CHAR, TO_DATE 함수의 기본 DATE FORMAT이다.

SQL> select * from nls_session_parameters

2 where parameter = 'NLS_DATE_FORMAT';

PARAMETER VALUE

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

NLS_DATE_FORMAT RR/MM/DD

SQL> select sysdate from dual;

SYSDATE

--------

16/09/07

SQL> create table datetest (

2 mydate date

3 );

테이블이 생성되었습니다.

SQL> insert into datetest values ('16/10/01');

1 개의 행이 만들어졌습니다.

SQL> insert into datetest values ('16-10-02');

1 개의 행이 만들어졌습니다.

SQL> insert into datetest values ('20161003');

1 개의 행이 만들어졌습니다.

SQL> insert into datetest values ('161004');

1 개의 행이 만들어졌습니다.

SQL> insert into datetest values ('10-06-2016');

insert into datetest values ('10-06-2016')

*

1행에 오류:

ORA-01830: 날짜 형식의 지정에 불필요한 데이터가 포함되어 있습니다

SQL> select * from datetest;

MYDATE

--------

16/10/01

……

-- NLS_DATE_FORMAT에 맞지 않는 문자열이라면 DATE형으로 형변환해서 입력하면 된다.

SQL> insert into datetest values (to_date('10-06-2016','dd-mm-yyyy'));

1 개의 행이 만들어졌습니다.

SQL> select * from datetest;

MYDATE

--------

16/10/01

……

16/10/06

-- NLS_DATE_FORMAT을 변경하여 현재 시스템의 날짜 입출력 포맷을 바꾸자.

SQL> alter session set nls_date_format='yyyy.mm.dd';

세션이 변경되었습니다.

SQL> select * from datetest;

MYDATE

----------

16.10.01

……

16.10.06

-- NLS_LANGUAGE값을 한국어로 바꾸자. NLS_DATE_FORMAT은 NLS_LANGUAGE값을 따른다.

SQL> alter session set nls_language='KOREAN';

세션이 변경되었습니다.

-- 요일을 단축형과 전체표기 방식으로 표시

SQL> SELECT TO_CHAR(sysdate,'DAY'), TO_CHAR(sysdate,'DY') from DUAL;

TO_CHAR(S TO_C

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

화요일 화

SQL> alter session set nls_language='AMERICAN';

Session altered.

SQL> SELECT TO_CHAR(sysdate,'DAY'), TO_CHAR(sysdate,'DY') from DUAL;

TO_CHAR(SYSDA TO_CHA

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

TUESDAY TUE

-- 월을 단축/축약형태로 표시(한글로 월표시는 단축형과 전체표기방식으로 표시하는 것이 같다.)

SQL> alter session set nls_date_format = 'YYYY-MON-DD';

세션이 변경되었습니다.

SQL> select hiredate from emp where rownum < 3;

HIREDATE

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

1980-12월-17

1981-2월 -20

-- 월을 전체표기 방식으로 표시하자.

SQL> alter session set nls_date_format = 'YYYY-MONTH-DD';

세션이 변경되었습니다.

SQL> select hiredate from emp where rownum < 3;

HIREDATE

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

1980-12월-17

1981-2월 -20

SQL> alter session set nls_language='AMERICAN';

Session altered.

-- 요일을 단축형과 전체표기 방식으로 표시

SQL> SELECT TO_CHAR(sysdate,'DAY'), TO_CHAR(sysdate,'DY') from DUAL;

TO_CHAR(SYSDA TO_CHA

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

SUNDAY SUN

-- 영문의 경우 단축형과 전체표기 방식이 다르다. 단축형은 3글자만 표시한다.

SQL> alter session set nls_date_format = 'YYYY-MON-DD';

Session altered.

SQL> select hiredate from emp where rownum < 3;

HIREDATE

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

1980-DEC-17

1981-FEB-20

SQL> alter session set nls_date_format = 'YYYY-MONTH-DD';

Session altered.

SQL> select hiredate from emp where rownum < 3;

HIREDATE

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

1980-DECEMBER -17

1981-FEBRUARY -20

NLS_LANG, NLS_LANGUAGE, NLS_TERRITORY

NLS_LANG : 오라클 데이터베이스의 환경변수 값이 아니라 사용자 환경을 Oracle DB 알려주는 역할을 하는 환경변수.

NLS_LANG = [언어]_[영역].[문자셋]

<language>_<Territory>.<client characterset>

예) AMERICAN_AMERICA.KO16KSC5601, AMERICAN_AMERICA.UTF8, KOREAN_KOREA.KO16KSC5601

언어 :현재 사용자가 사용하는 언어적 특성을 결정짓는 값

문자셋, 정렬방식, 날짜 표기에 사용되는 기호(년/월/일, YYYY/MM/DD)

Default 값은 AMERICAN 이다.

실제 날짜 표기(TO_CHAR,TO_DATE 실행시 - 월요일, MON 으로 표시를 좌우하는 NLS_DATE_FORMAT 값은 NLS_LANGUAGE 을 따른다.

영역 :현재 사용자 언어의 영역의 특성을 결정짓는 값

Language 값만 설정하면, Language 값을 따른다. ( KOREAN ==> KOREA )

문자셋 :현재 사용자의 시스템이 인식할 수 있는 문자셋의 값

만약에 Windows Client에서 한국어 환경을 사용하는 경우 NLS_LANG 값을′KOREAN_KOREA.KO16MSWIN949′로

유닉스 Client에서 한국어를 입출력한다면 다음과 같이 NLS_LANG을 ′KOREAN_KOREA.KO16KSC5601′로 설정 할 수 있다.

https://www.youtube.com/watch?v=ap8cmyRED7s&list=PLxU-iZCqT52Dlz0zGgFiq1mBz21arFUHS&index=10

[동영상]오라클 상관서브쿼리(Correlated Sub Query)

 [동영상]오라클 상관서브쿼리(Correlated Sub Query)


서브 쿼리와 메인쿼리간에 서로 상관 참조하는 쿼리로 Inner Query에서 Outer Query의 어떤 컬럼을 이용하는 경우다. 일반적인 Query는 서브 쿼리의 결과를 메인에서는 단순히 이용만 하지만(이때 서브쿼리는 제공자로서의 역할을 한다) 상관 서브 쿼리에서는 서브 쿼리가 메인 쿼리의 값을 이용하여 값을 구하면 그 값을 다시 메인 쿼리에서 이용하는 구조이므로 서브쿼리는 값을 확인하는 확인자 역할을 하게된다.



(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...