53일차

백엔드를 팝니다·2024년 8월 22일

개발자 수업

목록 보기
34/72

Oracle_sql_table

-예제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;

Oracle_sql_insert

-- 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', '서울')

Oracle_sql_update

-- 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;

Oracle_sql_delete

-- 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;

profile
백엔드 고수가 되고싶은 사람

0개의 댓글