SQL 문법(DML, DDL, DCL, TCL)
1. DML(조작어) : update, delete, merge
참고 :
Merge : 구조가 같은 2개의 테이블을 비교하여 하나의 테이블로 합치기 위한 명령어
서버에 많은 부하를 주므로 index를 필히 생성
MERGE INTO [table] [alias]
USING [table | view| subquery ] alias
ON ( join condition )
[WHEN MATCHED THEN
UPDATE SET …..
]
[WHEN NOT MATCHED THEN
INSERT (…..)
VALUES (…..);
]
2. DDL(정의어) : create, alter, truncate, drop
3. DCL : grank, revoke
4. TCL : commit, rollback
참고 :
오라클에서의 변수숫자 : number(p, s)
– p : 총 자리수
– s : 소수점 자리
예) number(5,3) => 12.345날짜 : date (기본 포멧은 ‘dd-mon-yy‘)
문자 : char(n) – 공간의 낭비 발생
varchar2(n) – 공간 낭비 제거
n : byte 크기
참고 : 다중 row insert 방법
– ITAS : Insert into Table [As] Select …
이미 만들어져 있는 테이블에 데이터 복사– CTAS : Create Table As Select ….
테이블 생성 및 데이터 복사구조만 복사하려고 할 때 :
create table table_name
as select *
from table_name
where 1=2
5. Sequence : 자동으로 번호 생성
CREATE SEQUENCE sequence_name
[INCREMENT BY n] <– 증가값, 기본값 : 1
[START WITHE n] <– 시작값, 기본값 : 1
[MAXVALUE n | NOMAXVALUE] <– 최대값
[MINVALUE n | NOMINVALUE] <– Cycle 시 시작값
[CYCLE | NOCYCLE] <– 순환여부
[CACHE n | NOCACHE] <– 속도개선을 위한 캐싱여부(성능에 영향을 미침)
6. 연습문제
가. 교수 번호, 이름, 학과 번호를 제외한 칼럼은 NULL을 가지도록 묵시적인 방법으로 입력하세요
(교수번호 : 9910, 이름:이순신 , 학과번호:201)
insert into professor (profno, name, deptno) values (9910, '이순신', 201);
나. 이순신 교수의 직급은 사용자 아이디가 ‘Pascal’인 교수와 동일하게 하고, 급여는 교수 번호가 ‘9908’인 교수와 동일하게 수정하여라.
update professor set position = (select position from professor where userid='Pascal'), sal = (select sal from professor where profno=9908) where name='이순신';
다. 보직 수당이 NULL 인 교수의 보직수당을 보직수당을 최소로 받는 교수의 보직수당과 동일하게 수정하여라.
update professor set comm = (select min(comm) from professor) where comm is null;
7. 데이터 삭제방법 및 차이
가. delete : 원하는 데이터만 삭제 가능, 공간 미회수, rollback 가능
나. truncate : 테이블 구조만 남기고 삭제, 공간 회수, rollback 불가능
다. drop : 테이블 전체 삭제, 공간 회수, rollback 불가능
8. Data Dictionary
가. 설명 : 사용자와 시스템 자원을 효율적으로 관리하기 위한 다양한 시스템 정보를 저장
나. Data Dictionary View 종류
– DBA_ : DBA 권한을 가진 사용자만 조회할 수 있는 데이터 사전 뷰
– ALL_ : 한 특정 사용자가 조회 가능한 모든 데이터 사전 뷰,
객체의 주인이 아니더라도 접근권한이 있으면 조회가능
– USER_ : 한 특정 사용자에게 종속되어 있고, 그 사용자가 조회가능한 사전 뷰, ALL_ 뷰의 부분 집합.
9. 연습문제
가. 테이블 생성1
create table table_name(userid varchar2(10), username varchar2(10), passwd varchar2(10), idnum varchar2(10), phone number(13), address varchar2(20), regdaate date, interest varchar2(15));
나. 테이블 생성2
create table table_name2 as select * from table_name;
다. 테이블 생성3
create table table_name3 as select userid, username, passwd from table_name;
라. 테이블 생성4
create table table_name4 as select * from table_name where 1=2;
마. 컬럼 추가1
alter table table_name add(email varchar2(50))
바. 컬럼 추가2
alter table table_name add(country varchar2(20) default 'Korea');
사. 컬럼 삭제
alter table table_name drop column email;
아. 컬럼 타입수정
alter table table_name modify (address varchar(30));
자. 컬럼 이름수정
alter table table_name rename column address to addr;
차. 테이블 이름 변경
rename table_name to potential_member;
최신 댓글