오라클 데이터타입, ROWID, 문자데이터 비교 방법, 문자상수(리터럴)와 CHAR, VARCHAR2 비교방법, WHERE절의 NUMBER, VARCHAR2 비교
http://ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=608
3.4 데이터 타입(Data Type)
CHAR(size)특징
Size로 지정된 길이 보다 작은 데이터 입력시 나머지는 공백(Blank)로 채우며 NULL을 허용하는 칼럼이라면 값이 들어오지 않으면 NULL값이 입력된다. 길이가 고정된 데이터 처리용.
VARCHAR2(size)특징
Size로 지정된 길이 보다 적은 데이터 입력시 빈 공간은 NULL 처리됨. NULL을 허용하는 칼럼이라면 값이 들어오지 않으면 NULL값이 입력된다. 길이가 가변적인 데이터 처리에 용이하다.
문자데이터 비교 방법
CHAR vs CHAR : 길이를 동일하게 맞춘 후 두 문자열을 비교한다.
CHAR vs VARCHAR2 : 타입을 일치시키지 않고 길이가 짧은 문자열까지만 비교, 결국 긴 문자열이 크다.
VARCHAR2 vs VARCHAR2 : 서로 다른 문자가 나올 때 까지 비교하고 길이가 짧은 문자열까지만 비교, 결국 긴 문자열이 크다.
문자상수(리터럴)와 CHAR, VARCHAR2 비교방법
기본적으로 문자상수는 비교대상 컬럼의 데이터 타입으로 내부적으로 변환되어 비교된다.
문자상수 vs CHAR : 문자상수를 CHAR형으로 변환 후 비교
문자상수 vs VARCHAR2 : 문자상수를 VARCHAR2형으로 변환 후 비교
WHERE절의 NUMBER, VARCHAR2 비교
WHERE절에 비교되는 칼럼이 숫자, 문자인 경우 숫자를 기준으로 자동 형 변환 된다는 사실을 기억하자. NUMBER, VARCHAR2 자동 형변환에 따른 인덱스의 사용 유무에 대해 알아야 하는데 WHERE절의 비교대상 컬럼의 데이터 타입이 다르면 NUMBER형으로 자동 형 변환된다.
ROWID PseudoColumn : 테이블의 레코드(행, ROW, RECORD)를 유일하게 구별하는 행의 주소 값으로 테이블에 행이 삽입되면 자동으로 생성된다. 테이블의 행을 액세스하기 위한 가장 빠른 방법으로 사용자 임의로 변경은 불가능 하며 10 bytes로 구성된다.
ROWID는 의사칼럼으로 DB저장되어 있지는 않지만 SELECT, WHERE절에 사용될 수 있고 INSERT, UPDATE, DELETE등 으로 변경할 수는 없다.
유일한 주소값이지만 테이블의 PK(Primary Key) 처럼 사용될 수는 없다. 삭제 후 다시 동일한 레코드를 입력한다고 했을 때 ROWID는 변경되며 레코드를 삭제했다면 삭제된 레코드의 ROWID는 나중에 입력되는 다른 레코드에 부여될 수 있다.
댓글 없음:
댓글 쓰기