스마트웹앱콘텐츠전문가/Oracle

1.25 교육

9D4U 2016. 1. 25. 16:42
728x90
반응형

<DDL>
1.새로운 컬럼 추가하기
alter table 테이블명 add(컬럼명 컬럼속성)

 

 

 

2.기존에 있는 컬럼 수정
alter table 테이블명 modfiy(컬럼명 컬럼속성)

3.컬럼 삭제하기(좋은 방법은 아님)
alter table 테이블명 drop column 컬럼명

4.컬럼을 갑자기 삭제하는 것은 좋은 방법이 아니므로, 일단은 사용중지 후 나중에 삭제하도록 한다.

alter table 테이블명 set unused (컬럼명) : 테이블의 해당컬럼을 사용하지 못하도록 설정 => 해당컬럼을 사용하지
못하도록 설정하면 구조에서 사라짐(desc 테이블명)

그런 후 사용빈도가 떨어질 때 alter table 테이블명 drop unused column :사용되지 않는 컬럼을 삭제함

5.테이블 삭제 =====> but, desc 테이블명을 실행했을 때 삭제된 테이블은 휴지통에 들어가 있음.
drop table 테이블명;

6.purge recyclebin ; <====휴지통 비우기

7.모든행을 제거하는것(구조만 남김)

- delete from 테이블명; =>  모든행 제거 + 구조도 없어짐.// 삭제속도가 느림//트랜잭션을 지원하기 때문에 나중에 복구가능
- truncate table 테이블명; => 구조만 남김//모든행이 삭제되고, 삭제속도가 빠름//but, 트랜잭션을 지원하지 않는다.

8.테이블 복제하기
CREATE TABLE 기존 테이블명 AS SELECT * FROM 복제 테이블명
-------------------------------------------------------

데이터 딕셔너리와 데이터 딕셔너리 뷰 :
데이터베이스를 효율적으로 관리하기 위해서 사용되는 다양한 정보를 담고 있는 시스템 테이블.

------------------------------------------------------시스템 테이블
[이름]
DBA_XXXX : 테이터베이스 관리자가 접근가능한 객체 정보 조회(관리자는 모든 테이블에 접근이 가능하므로 모든 객체정보를 조회할 수 있음)
ALL_XXXX : 자신계정이 소유하거나 권한을 부여받은 객체에 대한 정보 조회
USER_XXXX : 자신계정이 소유한 객체권한 정보조회
-----------------------------------------------------
desc user_tables;
select table_name from user_tables order by table_name desc;
-----------------------------------------------------
user_sequences : 계정이 소유한 시퀀스 정보를 담고 있음.
user_indexes : 계정이 소유한 인덱스 정보를 담고 있음.
user_views : 계정이 소유한 뷰에 대한 정보를 담고 있음.

all_sequences : 계정이 접근가능한 시퀀스 정보를 담고 있음.
all_indexes : 계정이 접근가능한 인덱스 정보를 담고 있음.
all_views : 계정이 접근가능한 뷰에 대한 정보를 담고 있음.

dba_sequences : 시스템내의 모든 시퀀스 정보를 담고 있음.
dba_indexes : 시스템내의 모든 인덱스 정보를 담고 있음.
dba_views : 시스템내의 모든 뷰에 대한 정보를 담고 있음.

=============================================================DML
1.모든 컬럼 입력하기(나열되는 갑의 순서가 테이블 구조 순서와 같다. 따라서 특정 컬럼을 생략할 수 없다.)
INSERT INTO  테이블명 VALUES (값1, 값2, 갑3.....)

2.컬럼 선택 입력하기(명기되는 칼럼의 순서와 나열되는 값의 순서가 일치해야 한다.)
INSERT INTO 테이블명 (컬럼1, 컬럼2..) VALUES (값1, 값2....)
-------------------------------------------------------------
오라클에서는 정수는 ' '로 감싸도 처리되나, 반대로 문자열에 ''를 빼면 오류 발생

============================================================== 치환변수(오라클에서만 사용가능)
select * from &table_name; :table_name의 값을 입력해서 사용하는 것.
&column_name
&wheres

 

 

 

 

 


=============================================================&& 연산
한번 물어본 내용을 기억한다.(두번째 실행할 때는 아예 물어보지 않음)

 


 


============================================================ 서브쿼리를 이용한 행 추가

기존테이블의 구조(껍질)만 복제(제약조건은 따라오지 않음)

 

CREATE TABLE 새테이블명 AS SELECT * FROM 기존테이블명 1=0; //테이블 구조 복제

 

 

 

INSERT INTO 테이블명 SELECT * FROM 기존 테이블명; // 서브쿼리를 이용한 행 추가

 

SELECT * FROM 테이블명; //확인

 


=========================================================== 조건에 의한 다중테이블 다중행입력하기
자료 더보기 : https://wikidocs.net/4089

1. EMP로부터 사번,이름,고용일자를 선택하여 EMP_HIR를 만들 되 구조만 복사한다.
2. EMP_SAL 은 사번 이름 급여로 구조로 구성됨
3. EMP에서 사번 이름 고용일자 급여를 선택해서 입사일이 82년 이후는 EMP_HIRE에 입력하고,
   급여가 2000보다 크면 EMP_SAL에 입력하기

 

 

 

 

 

----------------------------------------update + 서브쿼리

 

 

 

 

728x90