1. 테이블 추가

alter table 테이블명 add 컬럼명 데이터

ex) alter table EMP add HP varchar(20);
EMP라는 테이블에 컬럼 HP를 추가할 경우


2. 테이블 수정

alter table 테이블명 modify 컬럼명 데이터
alter table 테이블명 Rename column 컬럼 to 컬럼

ex) alter table EMP modify(job varchar2(20));
EMP라는 테이블에 JOB의 테이터타입을 수정할 경우

ex) alter table EMP rename column job to emp_job
EMP 테이블의 JOB의 컬럼명을 emp_job으로 바꿔줌


3. 테이블 데이터 수정하기

update 테이블명 set 컬럼 =' ' where 컬럼 =' ';

ex) update EMP set loc = 'Seoul' where deptno =40;
EMP 테이블의 deptno가 40인 지역을 Seoul로 수정해준다

4. 테이블 삭제하기

drop table 테이블명;

ex) drop table EMP


5. 테이블 테이터 삭제하기

delete from 테이블명 where 컬럼 = ' ' 

ex) delete from EMP where job = 'SALESMAN'
jobsalesman의 직업을 가진 데이터를 삭제한다


6. 서브쿼리를 활용한 Alter 문제

01.문제

EMP에 속한 사원 중 50번 부서에서 근무하는 사원들의 평균 급여보다 많은 급여를 받고 있는 사원들을 70번 부서로 옮기는 SQL문을 작성하세요

답안) update emp set deptno = 70 where sal > (select avg(sal) from emp where deptno =50 group by deptno); 

해설) 테이블의 평균 급여를 먼저 검색하여 서브쿼리문으로 만들어주고 
(select avg(sal) from emp where deptno =50 group by deptno) 
그 평균 급여보다 많은 급여를 받는 것을 조건으로 테이블을 70번 부서로 수정하여 옮겨준다

02.문제

EMP에 속한 사원 중 60번 부서의 사원 중에 입사일이 가장 빠른 사원보다 늦게 입사한 사원의 급여를 10% 인상하고 80번 부서로 옮기는 SQL문을 작성하세요

답안) update emp set deptno = 80 , sal = sal*1.1 where hiredate > 
(select min(hiredate) from emp where deptno = 60 group by deptno);

해설) 부서 번호가 60번 사원 중 입사일 가장 빠른 입사일을 구하여 서브쿼리로 만들고
(select min(hiredate) from emp where deptno = 60 group by deptno)
그 입사일보다 늦게 입사하게 부등호를 표시해  deptno = 80 , sal = sal*1.1 로 수정해준다

7. 서브쿼리를 활용한 delete 문제

01. 문제

EMP에 속한 사원 중 급여 등급이 5인 사원을 삭제하는 SQL문을 작성하세요

답안) delete from emp where empno in
(select empno from emp, salgrade where sal between losal and hisal and grade = 5);

해설) EMP 테이블의 급여 5등급을 salgrade 테이블로 사원번호를 구해주고 서브쿼리를 만들어준다
그리고 기타연산자 "in"을 사용하여 delete를 사용하여 삭제해준다

0개의 댓글