레이블이 컬럼이름변경인 게시물을 표시합니다. 모든 게시물 표시
레이블이 컬럼이름변경인 게시물을 표시합니다. 모든 게시물 표시

2013년 8월 9일 금요일

[오라클자바커뮤니티, 닷넷강좌, 자바교육].NET CLR(Common Language Runtime)

마이크로소프트 닷넷기반의 C#으로 프로그래밍을 하기 위해서는 우선 그 환경(닷넷 프레임웍)에 대해 이해가 우선 해야 합니다. 그래서오늘은 CLR(Common Language Runtime)이라는 것에 대해 알아보도록 하겠습니다.


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)  




CLR은 하부구조로 OS를 가지며 OS 위에서 닷넷 Application을 실행 할 수 있게 해주는 아주아주 중요한 것입니다. 이것때문에 닷넷 환경하에서 어떠한 언어로 개발하든지 컴파일된 파일은 같은 모양을 가지며 결국 이 컴파일된 파일들은 CLR 위에서 여러가지 라이브러리등을 참고해서 실행 하게 되는 겁니다. 자바라는 언어로 본다면 자바가상머신(JVM) 이라고 보시면 됩니다. 자바에서도 이 JVM때문에 플랫폼 독립적인 자바의 특징, 어떠한 OS 기반위에라도 JVM만 있으면 자바프로그램이 동작하는 것이 가능 했던 겁니다.
아래에서 닷넷 환경 하에서 프로그램이 실행되는 형태를 보도록 하겟습니다. 자바에서는 .java 파일이 .class 파일로 바뀌고 이것이 JVM에 로딩되어 실행되는 구조이죠, 그런다음 JVM에서는 자바바이트 코드를 하나씩 해당 OS의 기계어(Native Code)로 번역을 하는 겁니다. 물론 번역을 그때그때 하면 JIT(Just-In-Time) 이라고 하고 병목현상이 일어날것





CLR에 대해 간단히 설명드리면 아래와 같습니다.
? The CLR defines the Common Type System (CTS)
? All languages built on the CLR use the CTS

? Types are divided into two categories
1. Value types:
- Relatively simple types
- Typically allocated on the stack
2. Reference types:
- More complex types
- Allocated on the heap
- Destroyed through garbage collection
CLR은 CTS라는 것을 정의하는데 무엇인고 하니 C#이든 VB.Net이든 동일한 형태의 데이터 타입을 사용하는 겁니다. 예를들면 System.Int32라는 Class는 int형을 이야기 하는데
(int i=0; 또는 System.Int32 i=0; 둘다 같은 의미 입니다.)
C#이나 VB.Net등 어떠한 닷넷 언어에서든 공통으로 사용한다는 이야기 입니다. 과게에 C언어에서 Int형은 2바이트 또는 4바이트로 고정된것은 아니었습니다. 즉 32비트가 1워드이면 4바이트, 16비트가 1워드이면 2바이트 등으로 타입이 고정되지 않아 타입 안정성이 떨어 졌으니까요. 그래서 닷넷은 공용의 데이터 타입을 정의한거죠...물론 일반적인 원시데이터 타입(int, float, long등)은 Value Type이라고 하여 Stack에 저장되고 객체등은 Reference Type이라고 새서 Heap에 저장 됩니다.
CTS의 구조를 아래에서 보도록 하죠^^; (Value-Type이든 Reference Type이든 모드 객체 입니다. 위에서 말씀드린것과 같이 int 형은 System.Int32라는 클래스 타입이죠)



오늘 자바에서의 JVM과 같은 닷넷에서의 CLR에 대해 살펴 보았습니다. 어렵게 보일지는 모르지만 자바의 특을 어느정도 이해하고 계신다면 닷넷은 껌입니다. 항상 자바+알파 이니까요... 또한 CLR은 BCL(BAse Class Library)라고 해서 닷넷에서 사용되는 1000여가지의 클래스를 지웝합니다. 즉 C#이든 VB.Net이든 이 클래스는 똑같이 가져다 쓸수 있고 이름또한 같이 사용한다는 이야기 입니다. 아래의 예를 비교해 보세요...(결국 같은 Class를 이용하는 겁니다. 참 공부하기 편하죠^^;)

C# .Net 에서 MDB에 접근할려면 아래와 같이 합니다.

string CnString ="Data Source=student.mdb; Provider=Microsoft.Jet.OLEDB.4.0;"; OleDbConnection objConnection = new OleDbConnection (CnString);
objConnection.Open();
한편 VB.Net에서는
dim strConnection = "Data Source=student.mdb; Provider=Microsoft.Jet.OLEDB.4.0;"
dim objConnection as new OLEDBConnection(strConnection)
objConnection.open()







2013년 7월 30일 화요일

[오라클교육,자바교육,오라클자바교육]Column Name & Constraints rename 이름 변경(오라클 컬럼이름, 제약조건 이름 변경)

테이블이나 인덱스의 이름을 변경하는 것은 오라클 9iR2 이전에도 가능했지만 9iR2에서는 테이블의 컬럼 명 또는 제약조건의 이름을 변경하는 것이 가능해 졌습니다.



오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷  실무전문 강의)



SQL> create table test (
  2  c1 varchar2(4) not null,
  3  c2 number(10)  not null
  4  );

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

프라이머리 키를 추가 합니다. 이때 C1컬럼에 대해 인덱스가 생성 됩니다.

SQL> alter table test add (constraint pk_test
  2                        primary key (c1));

테이블이 변경되었습니다.

SQL> desc test;
 이름                                      ?      유형
 ----------------------------------------- -------- --------------

 C1                                        NOT NULL VARCHAR2(4)
 C2                                        NOT NULL NUMBER(10)

사용자의 제약 조건을 확인 할  수 있는 USER_CONSTRAINTS VIEW를 통해 TEST 테이블에 제약조건의 타입이 P 인것 즉 Primary Key인 제약조건을 검색 합니다. 제약조건에는 NOT NULL, UNIQUE, CHECK, PRIMARY KEY등 테이블의 컬럼에 제약을 가하는 조건을 말합니다.

SQL> select constraint_name
  2  from   user_constraints
  3  where  table_name = 'TEST'
  4  and    constraint_type = 'P';

CONSTRAINT_NAME
------------------------------
PK_TEST

이번에는 TEST 테이블에 생성되어 있는 인덱스를 확인 합니다. 위에서 C1 컬럼을 Primary Key로 설정하여 저절로 이 컬럼에 대한 인덱스가 생성되어 있습니다.

SQL> select index_name,
  2         column_name
  3  from   user_ind_columns
  4  where  table_name = 'TEST';

INDEX_NAME           COLUMN_NAME
------------------------------------

PK_TEST                     C1

우선 테이블의 이름을 바꾸어 봅니다. 이 기능은 오라클의 이전 버전에서도 되는 기능 입니다

SQL> alter table test rename to test1;

테이블이 변경되었습니다.

이번에는 컬럼명을 바꾸어 보죠^^

SQL> alter table test1 rename column c1 to code;

테이블이 변경되었습니다.

Primary Ket 제약 조건의 이름을 변경 합니다.

SQL> alter table test1 rename constraint pk_test to pk_test1;

테이블이 변경되었습니다.

이번에는 Primary Key에 걸린 인덱스의 이름을 바꿉니다.

SQL> alter index pk_test rename to pk_test1;

인덱스가 변경되었습니다.

위에서 변경한 내역에 대해 확인해 보겠습니다

SQL> select constraint_name
  2  from   user_constraints
  3  where  table_name = 'TEST1'
  4  and    constraint_type = 'P';

CONSTRAINT_NAME
------------------------------
PK_TEST1

SQL> select index_name,
  2         column_name
  3  from   user_ind_columns
  4  where  table_name = 'TEST1';

INDEX_NAME             COLUMN_NAME
---------------------------------------------

PK_TEST1                    CODE

[출처]오라클자바커뮤니티