[23.01.20] 63일차 [데이터베이스]

W·2023년 1월 20일
0

국비

목록 보기
93/119

Object(객체) 종류

  1. Table
  2. View
  3. Sequence
  4. Index
  5. Synonym

Index

  • Oracle 서버에서 포인터를 사용하여 행의 검색 속도를 높이기 위해 사용하는 Object

  • Oracle 서버가 자동으로 사용하고 유지 관리함.

  • WHERE절이나 조인조건에서 자주 사용되는 컬럼인 경우 인덱스 생성 시 성능에 도움이 됨.

  • 테이블이 작거나 자주 갱신되는 컬럼 또는 자주 사용하지 않는 컬럼에는 인덱스 생성 권장하지 않음.

  • 사용방법 : x

  • 정의방법 : create index, alter index, drop index

1) 인덱스 생성

① 자동생성

  • Primary key 또는 Unique 제약조건이 정의된 컬럼에 자동 생성됨.

② 수동생성

  • 행에 액세스하는 속도를 높이기 위해 유저가 인덱스를 생성할 수 있음.
create index emp_lname_idx
on employees(last_name);

create index dept_dname_idx
on departments(department_name);

select table_name, index_name from user_indexes;

2) 인덱스 삭제

drop index emp_lname_idx;

Synonym(동의어)

  • 객체에 다른 이름을 부여해 주는 Object
  • 사용방법 : x
  • create synonym,

1) 동의어 생성

create synonym emps
for employees;

2) 동의어 삭제

drop synonym [동의어명];

객체(Object) 사용을 위한 Data Dictionary 사용

• Dictionary에는 DB관리에 필요한 모든 정보가 저장되어있다.
• DBA는 Dictionary의 정보를 이용하여 효율적인 데이터베이스 운영을 위해 필요한 정보를 획득할 수 있다.
• 일반 사용자 및 Application 개발자에게도 데이터베이스에 대한 중요한 정보를 제공한다.

• Data Dictionary 구성

  • Base Tables : DB의 모든 정보를 Oracle이 보기 쉬운 형태로 기록해 놓은 테이블
  • Data Dictionary Views : Base Table을 사용자가 보기 쉬운 형태로 만들어 놓은 뷰

[객체(Object) 사용을 위한 주요 Data Dictionary Views]

  • DICTIONARY(DICT) : 각 Dictionary에 대한 정보
  • USER_CATALOG(CAT) : 사용자 소유의 테이블, 뷰, 동의어 시퀀스 목록을 보여줌
  • USER_OBJECTS(OBJ) : 사용자 소유의 모든 오브젝트에 대한 정보를 보여줌
  • USER_TABLES(TABS) : 사용자 소유의 모든 테이블에 대한 정보를 보여줌
  • USER_TAB_COLUMNS(COLS) : 사용자 소유의 모든 테이블을 구성하고 있는 컬럼에 대한 정보를 보여줌
  • USER_VIEWS : 사용자 소유의 모든 뷰에 대한 정보를 보여줌
  • USER_SYNONYMS(SYN) : 사용자 소유의 모든 동의어에 대한 정보를 보여줌
  • USER_SEQUENCES(SEQ) : 사용자 소유의 Sequence에 대한 정보를 보여줌
  • USER_CONSTRAINTS : 사용자 소유의 모든 table의 제약조건에 대한 정보를 보여줌
  • USER_CONS_COLUMNS : 사용자 소유의 모든 table의 제약사항이 지정된 column에 대한 정보를 보여줌
  • USER_TAB_COMMENTS : 사용자 소유의 모든 테이블의 주석을 보여줌.
  • USER_COL_COMMENTS : table의 column에 대한 주석을 보여줌
  • USER_INDEXES(IND) : 사용자 소유의 모든 인덱스에 대한 정보를 보여줌
  • USER_IND_COLUMNS : 어떤 column에 인덱스가 생성되어 있는지에 대한 정보를 보여줌

select cc. column_name, c.constraint_name, c.constraint_type, c.search_condition,c. r_constraint_name
from user_constraints c join user_cons_columns cc
on c.constraint_name = cc.constraint_name
where lower(c.table_name) = lower('&t_name');

/home/oracle/cons2.sql로 저장

-- 1번
select sname "학생이름", sno "학번"
from student
where sname = '김순미';

-- 2번
select s.sname "학생이름", count(e.cno) "수강과목수"
from enrol e join student s
on e.sno = s.sno
where s.sname = '이홍근'
group by s.sno;

-- 3번
select c.cname "과목명", s.sname "학생이름"
from course c join enrol e
on c.cno =  e.cno
join student s
on e.sno = s.sno
where c.cname = '데이터베이스';

-- 4번
select c.cname "과목명", count(e.sno) "수강학생수"
from enrol e join course c
on e.cno = c.cno
group by c.cname;

-- 5번
select sno "학번", count(if(credit = 'A+', 1, null)) "수강과목수"
from enrol
group by sno;

0개의 댓글