'ALL_TAB_COLUMNS'에 해당되는 글 1

  1. 2008.07.25 [Oracle] 오라클 테이블 정보 보기 및 수정 1

일단 주석의 추가는 아래와 같이 한다.
테이블의 경우는 comment on table [테이블명] is '주석';
컬럼의 경우는 comment on column [테이블명].[컬럼명] is '주석';
[본인작성]


자 그러면 이제 쿼리를 통해서 테이블의 정보를 보려면 어떻게 하는지 알아봅시다~

1.....
오라클 테이블및 컬럼 주석 보는 SQL문


select
    *
from
(
    select
         a.table_name    as "컬럼명"
        ,a.comments      as "주석명"
        ,'테이블'        as "타입"
        ,0               as "길이"
        ,0               as column_id
    from all_tab_comments a
    where a.table_name = #테이블명#
    and a.table_type = 'TABLE'

    UNION ALL
    select
         a.column_name   as "컬럼명"
        ,b.comments      as "주석명"
        ,a.data_type     as "타입"
        ,a.data_length   as "길이"
        ,a.column_id     as column_id
    from user_tab_columns a, all_col_comments b
    where a.table_name = b.table_name
    and a.column_name = b.column_name
    and a.table_name = #테이블명#
)
order by column_id

[출처]
http://link.allblog.net/6297539/http://blog.empas.com/dpme93/24308893


2.....
--------------------------------------------------------------------

질문 :
all_objects 안에 테이블과 프로시저 함수 기타등등이 들어가있는데 제가 알고싶은건 해당 테이블의 not null 과 데이터 타입 , 데이터 길이, commnet 를 알고싶습니다.
이를 참조하려면 어느테이블에 연결해야하는지 궁금합니다.

답변 1
ALL_CONSTRAINTS
ALL_TAB_COLUMNS
ALL_TAB_COMMENTS

답변 2
select * from dict 해서
where comments like '%찾을내용%'
하시면, 모르시는 내용이 있을 때 내용 찾는게 도움이 될겁니다.
dictonary 검색해보는 쎈스~

[출처]
http://www.oracleclub.com/article/18610


3.....
--------------------------------------------------------------------

ALTER TABLE에는 다음 세가지 형식이 있습니다.

ALTER TABLE table_name ADD ( ... ) ;
ALTER TABLE table_name MODIFY( ... ) ;
ALTER TABLE table_name DROP PRIMARYKEY ;


1. 필드 추가

ALTER TABLE table_name ADD ( ... ) ;

# ALTER TABLE diary ADD addr char(20);
diary 테이블에 속성이 char(20)인 'addr' 칼럼 추가

# ALTER TABLE diary ADD addr char(20) AFTER d;
diary 테이블에 속성이 char(20)인 'addr' 칼럼을 'd' 칼럼 뒤에 추가

# ALTER TABLE diary ADD INDEX (d), ADD PRIMARY KEY (a);
컬럼 d에 새로운 인텍스를 생성 컬럼 a에 primary key 생성.

# ALTER TABLE diary ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD INDEX (c);
diary 테이블에 c라는 컬럼을 새로 생성시키는데
INT (INTEGER) : 정수
UNSIGNED : 양수
NOT NULL : 아무데이타가 없으면 '0'
AUTO_INCREMENT : 데이타가 자동적으로 입력됨...
ADD INDEX (c) : 컬럼 c에 대해서 인텍스 생성


2. 필드 수정

ALTER TABLE table_name MODIFY( ... ) ;

# ALTER TABLE test MODIFY (age NUMBER NULL );
NOT NULL을 NULL로 바꾸기

# ALTER TABLEtest MODIFY (name VARCHAR2( 20 ) );
열의 폭 늘이기


3. 필드 삭제

ALTER TABLE table_name DROP PRIMARYKEY ;

# ALTER TABLE ddiass DROP COLUMN c;
컬럼 c를 삭제


4. 기타

# ALTER TABLE t1 RENAME t2;
테이블 이름을 t1에서 t2로 바꿈

# ALTER TABLE t2 CHANGE a a TINYINT NOT NULL, CHANGE b c CHAR(20);
테이블 내의 컬럼 속성을 바꿈. 원래 컬럼 a는 INTEGER였는데 TINYINT로,
컬럼b는 CHAR(10)이었는데 컬럼이름은 c로 이타 타입은 CHAR(20)으로 수정 
 

 ALTER TABLE admin ADD status char(1);
 ALTER TABLE admin ADD login_count NUMBER(38);
 ALTER TABLE admin ADD end_login_date DATE;
 ALTER TABLE admin ADD login_first_url varchar2(20);