Oracle-diary/DDL

data dictionary와 주석

reallygeorge? 2020. 1. 29. 19:10
요약
DATA DICTIONARY 정의 만들어진 테이블의 정보를 한곳에 모아둔 것
DICTIONARY에서 정보찾기 접두사+관사 keyword+복수형
주석 생성 COMMENT ON DATATYPE DATATYPE명
IS '주석 내용'
-------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------
data dictionary란?
 
유지,관리를 위한 meta-data
방대한 테이블 관리 정보들을 모아 놓ㅇㄴ 곳으로 지금까지 생성한 테이블 등 각종 테이블 정보를 볼 수가 있다.
oracle을 설치하게 되면 기본으로 깔려 있는 존재다.
주어진 권한에 따라 접근할 수 있는 테이블 갯수가 다르다 .
 
ex)
 
select*
from dict
하면 출력이 되는데 최소한의 권한일 지라도 많은양의 데이타가 출력된다.
 
 
835 개의 행이 선택되었습니다. <-835개의 테이블이 있음.(scott이라는 개인 사용자에서 실행하면
접근 가능한 테이블 갯수)
 
 
 
2553 개의 행이 선택되었습니다. <-2553개의 테이블이 있음.(관리자 권한 하에서 볼 수 있는 테이블)
 
*다른 사용자 계정 연결
connect id/pw 입력
 
*set sqlprompt "_user>"
 
 
*desc dba_users
 
"SYS"."DBA_USERS" 객체는 존재하지 않습니다. <-scott 권한으로는 사용자들에 대한 정보는 볼수 없다.
 
SYSTEM>desc dba_users
이름 널? 유형
----------------------------------------- -------- ------------ <-system에선 볼 수 있다.
 
USERNAME NOT NULL VARCHAR2(30)
USER_ID NOT NULL NUMBER
PASSWORD VARCHAR2(30)
ACCOUNT_STATUS NOT NULL VARCHAR2(32)
LOCK_DATE DATE
EXPIRY_DATE DATE
DEFAULT_TABLESPACE NOT NULL VARCHAR2(30)
TEMPORARY_TABLESPACE NOT NULL VARCHAR2(30)
CREATED NOT NULL DATE
PROFILE NOT NULL VARCHAR2(30)
INITIAL_RSRC_CONSUMER_GROUP VARCHAR2(30)
EXTERNAL_NAME VARCHAR2(4000)
PASSWORD_VERSIONS VARCHAR2(8)
EDITIONS_ENABLED VARCHAR2(1)
AUTHENTICATION_TYPE VARCHAR2(8)
 
 
 
SYSTEM>select username,password
2 from dba_users;
 
USERNAME PASSWORD
------------------------------ ---------- <-password가 안보인다.보안상의 이유
MGMT_VIEW
SYS
SYSTEM
DBSNMP
SYSMAN
SCOTT
OUTLN
FLOWS_FILES
MDSYS
ORDSYS
EXFSYS
 
 
 
SYSTEM>select username,account_status
2 from dba_users;
---------------------------------------------------------------------------------------------------------------
data dictionary에서 원하는 자료를 찾는 방법?
 
data dictionary는 하나의 사전이다.
명령어는
접두사+관사 keyword+복수형으로 이루어져 있다.
 
=>user_: 내가 생성한 것과 관련된 정보. <-우리가 볼것
all_: 접근 권한이 있는 모든것과 관련된 정보. <-고급개발자가 볼것
dba_: dba만 접근해야하는 것과 관련된 정보. <-관리자 권한
v$ : 동적(현재 DB 메모리 사용량,동시 접속자 수 등등)이면서 성능과 관련된 정보. <-관리자 권한
 
ex)내가 만든 테이블 보기
 
SCOTT>DESC USER_TABLES
^ ^
내가만든,테이블들
 
SCOTT>select table_name
2 from user_tables;
---------------------------------------------------------------------------------------------------------
*주석 생성
 
SCOTT>COMMENT ON TABLE EMP
2 IS 'EMPLOYEE TABLE';
 
*테이블 이름에 주석을 다는 이유?
다른 사람이 나의 소스코드나 명령어를 보았을때 흐름과 역할을 파악하기 위함. 협업시 중요하다.
 
ESC USER_TAB_COMMENTS <-테이블과 관련된 주석을 볼 수 잇다. 명령어가 너무 길면 가운데 글자를 3글자로 줄인다.
 
SELECT*FROM USER_TAB_COMMENTS;