일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- value
- 객체형변환
- 콘크리트클래스
- Polymorphism
- hamobee
- start()
- Vector
- garbagecollection
- abstractclass
- methodArea
- 생성자
- concreteclass
- hashCode
- MSA
- constantnumber
- fuction
- object
- Hashtable
- 추상클래스
- run()
- arguments
- overload
- reference
- Eureka
- ALTER
- eclipse
- super
- override
- string
- class
- Today
- Total
뇌운동일지
[Oracle] 데이터 정의어 (DDL; Data Definition Language) 본문
객체 Object
- table <- 엔티티
- view <- 가상테이블
- index <- 빠른 검색
-sequence <- 자동 번호 생성
만들 때, create : 제약조건 - 컬럼수준 / 테이블 수준
변경할 때, alter
삭제할 때, delete
create
create table 테이블명 (
컬럼명 데이터형 [ 제약들 ] ,
...
) ;
,로 컬럼을 구분
char과 varchar의 차이
ex) 'ABC'를 2번 넣을 때,
char(5)는 사용하지 않은 공간을 비워놓고, 다음 공간을 5만큼 할당해서 저장
varchar(5)는 사용하지 않은 공간에 연속으로 data를 저장, 공간을 효율적으로 사용할 수 있음
검색속도는 char를 사용하는 것이 빠르다
테이블을 복제할 때는 제약조건은 복제되지 않고, 테이블 구조만 복제됨
alter
alter table 테이블명
add (컬럼명 데이터형 제약,
...
) ;
modify()
drop(컬럼명)
crud문장
insert, select, update, delete
※ 전체 데이터 삭제하기
delete from 테이블명
-> 삭제속도느림 / 복구(transaction) 지원함 ( rollback 지원 )
truncate table 테이블명 ;
-> 삭제속도 빠름 / 복구(transaction) 지원 안됨 => 테이블을 처음 생성한 상태로 돌아감 ( 환경정보를 지움 )
테이블 자체를 지울때는 drop
기본키 = unique + not null
unique = 유일성, only one null
foreign key : 기본 키 테이블에 참조하는 값이 존재해야 한다.
check : 지정된 값만 들어가야 한다
DBA_XXX : 관리자 시스템 테이블
P : 기본 키
R : 외래 키
C : 체크
U : 유니크
cascade : 연쇄 작용
view
1. 가상의 테이블
2. crud 실행가능
3. 복잡한 Query -> 간단하게 ☆
4. 보안에 유리 ☆
5. from절에 있는 subquery 는 inline view 라고 부른다
3에 대한 설명 )
create view 뷰이름 (컬1, 컬2, ...)
as 쿼리 조인문 ~~ ; // 생성
select * from 뷰 ; // 사용
4에 대한 설명 )
뷰에 제시된 컬럼에만 접근할 수 있게 됨.
조인 뷰
create or replace view v_enrol1
as select sub_name, a.sub_no, stu_no, enr_grade
from enrol a, subject b
where a.sub_no = b.sub_no ;
인라인 뷰 : from절에 테이블 이름이 아닌, select문으로 정의된 뷰
select stu_no, stu_name, a.stu_dept, stu_height
from student a, (select stu_dept, avg(stu_height) as avg_height
from student
group by stu_dept) b
where a.stu_dept = b.stu_dept
and a.stu_height > b.avg_height ;
top-n
MySQL : limit 시, 갯
msSQL : top 10%
Oracle : 이런 키워드가 없음 => 서브쿼리로 만든다
inline view( from절에서의 subquery )로 top-n을 함
index
1. 목차 => 빠른 검색
2. 기본 인덱스 => 기본 키
3. 생성시 조건과 동일하게 검색. 그렇지 않을 경우, 효과가 없다.
4. 시간이 지나면 성능이 떨어짐 (추가, 수정, 삭제 등의 이유) => rebuild 해야한다. (갱신)
5. DML문장이 자주 사용되는 곳에는 index하면 안됨
6. 보통 2~3% 정도 검색일 때 효과 ( 15~20% 검색일 때는 효과없음 => 검색량이 너무 많을 때 효과 없다 )
ex) id와 pwd를 동시에 검색할 때 index사용
'DB > Oracle' 카테고리의 다른 글
[Oracle] 데이터 정의어 연습문제 (0) | 2020.05.29 |
---|---|
[Oracle_tips] ORA-01031: 권한이 불충분합니다 (0) | 2020.05.29 |
[Oracle] 데이터 갱신과 트랜잭션 제어 연습문제 (0) | 2020.05.28 |
[Oracle] 데이터 갱신과 트랜잭션 제어 (0) | 2020.05.28 |
[Oracle] join과 subquery 연습문제 (0) | 2020.05.27 |