-예제3) 테이블 복사 : 테스트용도
CREATE TABLE DEPT_COPY
AS
SELECT * FROM DEPARTMENT;
--간단연습 테이블 복사 : 사원: EMPLOYEE
CREATE TABLE DEPT_COPY2
AS
SELECT * FROM EMPLOYEE;
-- 예제 4) 테이블 복사 : 데이터는 제외하고 설계만 복사
CREATE TABLE DEPT_COPY3
AS
SELECT * FROM DEPARTMENT;
WHERE 1=2; --거짓 조건 데이터 제외
-- 예제 5) 테이블에 컬럼 설명(주석) 추가함(실무)
--1) 테이블 주석 (설명) 달기 :
COMMENT ON TABLE DEPT IS '부서정보';
-- 예제 6) 테이블 삭제 : DEPT_COPY
-- 사용법 : DROP TABLE 테이블명;
DROP TABLE DEPT_COPY;
--간단연습 DEPT2 삭제
DROP TABLE DEPT2;
-- CRUD : select(조회)/Insert(추가)
-- 예제 1) DEPT_COPY 테이블을 만들고 INSERT 로 데이터를 추가하세요
-- DEPT_COPY 테이블 : 테이블 복사(데이터 제외)
CREATE TABLE DEPT_COPY
AS
SELECT * FROM DEPARTMENT
WHERE 1=2;
-- 사용법 :
INSERT INTO DEPT_COPY(DNO, DNAME, LOC)
VALUES(10, '회계부', '뉴욕');
-- 확인 :
SELECT * FROM DEPT_COPY;
--간단연습: DEPT_COPY 테이블에 INSERT로 아래 데이터르 추가하세요
--: 값 : (20, '개발부', '부산')
INSERT INTO DEPT_COPY(DNO, DNAME, LOC)
VALUES(20, '개발부', '부산');
--데이터 넣기(추가) : 1번째 (현재 접속한 사람만 확인)
-- 취소 : ROLLBACK;
ROLLBACK;
--확정
COMMIT;
--정리 데이터조작(Insert 등) -> 취소/ 확정 (ROLLBACK/COMMIT)
-- 예제2) 다른 테이블의 데이터만 복사 : 부서(DEPARTMENT)
-- 사용법 :
-- INSERT INTO 복사될테이블명
-- SELECT FROM 원본테이블명;
INSERT INTO DEPT_COPY
SELECT FROM DEPARTMENT;
SELECT * FROM DEPT_COPY;
--취소/확정 결정 :
COMMIT;
-- 예제 3) INSERT 할때 일부 컬럼은 제외하고 추가하기
INSERT INTO DEPT_COPY(DNO, DNAME)
VALUES(30, '판매부');
SELECT * FROM DEPT_COPY;
-- 예제4) INSTER할때 NULL 명시적으로 표시하고 추가가능
INSERT INTO DEPT_COPY(DNO, DNAME, LOC)
VALUES(40, '영업부',NULL);
--확정
COMMIT;
--간단연습 : DEPT_COPY 테이블 50 , 'COMPUTING'부서 만들고,
-- LOC 컬럼은 NULL 넣어주세요
INSERT INTO DEPT_COPY(DNO, DNAME, LOC)
VALUES(50, 'COMPUTING', NULL);
COMMIT;
--연습용 사원 테이블 복사(데이터 제외) : EMP_COPY
-- EMPLOYEE
CREATE TABLE EMP_COPY
AS
SELECT * FROM EMPLOYEE
WHERE 1=2;
-- 연습 2) EMP_COPY 테이블에 데이터 입력하기
-- ENO - 7000,
-- ENAME - 'CANDY',
-- JOB - 'MANAGER',
-- HIREDATE - '2012/05/01',
-- DNO - 10
INSERT INTO EMP_COPY (ENO, ENAME, JOB, HIREDATE, DNO)
VALUES (7000, 'CANDY', 'MANAGER', '2012/05/01', 10);
-- 연습 3) EMP_COPY 테이블에 또 데이터 입력하기
-- ENO - 7020,
-- ENAME - 'CANDY3',
-- JOB - 'MANAGER',
-- HIREDATE - SYSDATE,
-- DNO - 10
INSERT INTO EMP_COPY (ENO, ENAME, JOB, HIREDATE, DNO)
VALUES (7020, 'CANDY3', 'MANAGER', SYSDATE, 10);
-- (참고) INSERT INTO 테이블명(컬럼...)
-- VALUES(값...)
-- 컬럼명 생략기능 : 전체 컬럼일 경우 생략가능
-- INSERT INTO 테이블명
-- VALUES(값...)
INSERT INTO DEPT_COPY --컬럼 생략가능
VALUES(60,'개발부2', '서울')
-- CRUD : Select(조회)/Insert(추가)/Update(수정)
-- 예제 1) DEPT_COPY 실습
-- 20번(DNO) 부서의 이름(DNAME) 수정하기 : RESEARCH -> 연구소
SELECT * FROM DEPT_COPY;
-- 수정
-- 사용법 : 어떤 조건에 해당되는 값만 수정함
-- UPDATE 테이블명
-- SET
-- 컬럼명 = 수정될값
-- WHERE 컬러명 = 값; -- (조건)
UPDATE DEPT_COPY
SET
DNAME = '연구소'
WHERE DNO = 20;
-- 취소/확정 결정 : 결과를 다른 사람이 볼 수 있음
COMMIT;
-- 간단연습 : DEPT_COPY 에서 30번(DNO) 부서의 이름을(DNAME) 수정하세요
-- DNAME : SALES -> 판매부
UPDATE DEPT_COPY
SET
DNAME = '판매부'
WHERE DNO = 30;
-- 예제 2) 컬럼 값을 여러개 수정
-- 10 번 부서의(DNO) 부서명을(DNAME) 'PROGRAMMING2'
-- , 부서위치를(LOC) 'SEOUL' 로 수정하세요
UPDATE DEPT_COPY
SET
DNAME = 'PROGRAMMING2'
,LOC = 'SEOUL'
WHERE DNO = 10; -- (조건)
SELECT * FROM DEPT_COPY;
COMMIT;
--간단연습
UPDATE DEPT_COPY
SET
DNAME='운영부' , LOC ='대구'
WHERE DNO = 40;
-- (참고) UPDATE 문에 서브쿼리 사용 (SQL안에 SQL) 사용 (고급)
-- 예제4) 10번 부서의 지역명을 (20번 부서의 지역명으로) 수정하기
-- 1) 20번(DNO) 부서의 지역명(LOC)
SELECT LOC
FROM DEPT_COPY
WHERE DNO =20;
-- 2) 10 번 부서의 지역명 수정 : DALLAS
UPDATE DEPT_COPY
SET
LOC = (SELECT LOC
FROM DEPT_COPY
WHERE DNO =20)
WHERE DNO = 10;
COMMIT;
-- CRUD : select(조회)/insert(추가)/update(수정)/delete(삭제)
--예제1) 10번 부서를 삭제하세요
--Drop table(테이블 삭제) vs Delete (데이터만 삭제)
-- 예제) 10번 부서를 삭제하세요
--사용법 : FROM생략가능
----DELETE FROM 테이블명
--- WHERE 컬럼명 = 값; --조건
DELETE FROM DEPT_COPY
WHERE DNO=10;
SELECT * FROM DEPT_COPY;
--취소/확정 결정 :
COMMIT;
--간단연습
DELETE FROM DEPT_COPY
WHERE DNO=20;
SELECT * FROM DEPT_COPY
-- (참고) 또 다른 삭제 방법 (빠른삭제) : 취소불가, 조건없음 (모든데이터 삭제)
--DELETE DEPT_COPY; -- 모든 데이터 삭제 (속도느림)
TRUNCATE TABLE DEPT_COPY; -- 빠른 삭제
--(참고) DELETE 에 서브쿼리(SQL 안에 SQL) 사용하기 : 고급
--예제 2) 영업부에(SALES) 에 근무하는 사원(부서번호:DNO) 삭제하기
--1) 영업부에(SALES)(DNAME) 근무하는 사원의 부서번호(DNO) :
SELECT DNO
FROM DEPARTMENT
WHERE DNAME ='SALES';
-- 2) 30번 부서에 해당하는 부서 삭제하기
DELETE FROM DEPARTMENT
SELECT DNO = (SELECT DNO
FROM DEPARTMENT
WHERE DNAME ='SALES'); ----조건
--(참고) 테이블 설계(구조) 보는 명령어 :
DESC DEPT_COPY;