- DDL (데이터 정의어) - 테이블 생성, 수정, 삭제
- 테이블 생성
CREATE TABLE 테이블명(컬럼명 타입,..);
1. 구조만 복사
create table dept_third as select * from department where 0=1;
2. 복사
create table dept_second as select * from department;
3. 조건부 복사
create table emp20 as select eno, ename, salary*12 totsal from employee where dno=20;
- 테이블 수정
1. 컬럼 추가
ALTER TABLE 테이블명 ADD 컬럼명 타입;
2. 컬럼 변경
ALTER TABLE 테이블명 MODIFY 컬럼명 타입;
3. 컬럼 삭제
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
4. 테이블 이름 변경
RENAME 기존 테이블명 TO 새 테이블명;
- 테이블 삭제
DROP TABLE 테이블명;
- 데이터 삭제 (테이블 구조는 유지)
TRUNCATE TABLE 테이블명;
- DML (데이터 조작어)
- INSERT : 테이블에 내용 추가
INSERT INTO 테이블명 (컬럼명,..) VALUES (값,..)
- UPDATE : 테이블 내용 수정
UPDATE 테이블명 SET 변경할 컬럼명=변경값, .. WHERE 조건;
ex. update dept_copy set dname='PROGRAMMING' where dno=10;
ex. update dept_copy set dname='PROGRAMMING', loc='SEOUL' where dno=10;
ex. update dept_copy set loc=(select loc from dept_copy where dno=20) where dno=10;
ex. update dept_copy set (dname, loc)=(select dname, loc from dept_copy where dno=30) where dno=10;
- DELETE : 테이블 내용 삭제
DELETE 테이블명 WHERE 조건;
- TRANSACTION (COMMIT, ROLLBACK)
: 여러 DML이 모여 하나의 트랜잭션으로 구성됨
=> dml 작업 후 commit/rollback으로 트랜잭션 종료해야 함
데이터의 일관성 보장
COMMIT(확정) : 모든 작업 정상 처리해 확정, 영구 저장 => 트랜잭션 종료
ROLLBACK(되돌리기) : 트랜잭션 처리 과정에서 발생한 변경사항 취소 (commit 안 돼있으면 모든 작업 삭제) => 트랜잭션 종료
문제
○ 사원정보테이블에서 사원번호, 이름, 급여만 가지는 테이블 생성, 자료 복사(영업사원 자료만)
create table emp_sales as select eno, ename, salary from employee where job='SALESMAN';
○ emp 테이블 생성 (eno number(4), ename varchar2(20), dno number(2))
create table emp(eno number(4), ename varchar2(20), dno number(2));
○ ename 커럼 크기 30 변경
alter table emp modify ename varchar(30);
○ employee 테이블 복사, employee2 로 생성 / 사원번호, 이름, 급여, 부서번호 컬럼만 복사 (emp_id, emp_name, sal, dept_id)
create table employee2(emp_id, emp_name, sal, dept_id) as select eno, ename, salary, dno from employee;
○ employee 테이블 구조만 복사, emp_insert 빈테이블 제작
create table emp_insert as select * from employee where 0=1;
○ 본인을 emp_insert 테이블에 추가, 입사일은 오늘
insert into emp_insert values(1,'hk','student',null,'2022,09,05',4000,10000,20);
○ 사원번호 7788 사원 부서번호 10으로 수정
update emp_copy set dno=10 where eno=7788;
○ 사원번호 7788의 담당업무, 급여를 사원번호 7749 와 일치하도록 갱신
//update emp_copy set job=(select job from emp_copy where eno=7499), salary=(select salary from emp_copy where eno=7499) where eno=7788;
update emp_copy set (job,salary) = (select job, salary from emp_copy where eno=7499) where eno=7788;
'Programming > 국비학원' 카테고리의 다른 글
220913 - 오라클 - 시퀀스, 인덱스, 권한, 동의어, PL/SQL (0) | 2022.09.14 |
---|---|
220906 - 오라클 - MERGE문, 뷰 (0) | 2022.09.07 |
220902 - 오라클 - 셀프 조인, 서브 쿼리, 다중행 서브쿼리 (0) | 2022.09.03 |
220831 - 오라클 - 숫자, 날짜, 변환, 일반, 그룹 함수, GROUP BY절 (0) | 2022.09.02 |
220830 - 오라클 - SQL PLUS, 쿼리문 (0) | 2022.08.31 |