DB -SQL - sql전문가 정미나 - 오라클 초급강의 : JOIN 쿼리(OUTER JOIN), UPDATE, DELETE/TRUNCATE, NULL 함수 : NVL, NULLIF, COALESCE
28 Feb 2021
🔷JOIN 쿼리(OUTER JOIN), UPDATE, DELETE/TRUNCATE, NULL 함수 : NVL, NULLIF, COALESCE 실습
✔ OUTER JOIN
-
OUTER JOIN : 조인된 두 테이플에서 둘중 한쪽 테이블을 기준으로 LEFT 또는 RIGHT JOIN을 할 경우, 그 기준이 되는 테이블의 모든 레코드를 출력하게 된다
-
코드
SELECT * FROM idol_group A, idol_member B -- (+) 사용 : 아이돌 그룹 테이블 기준으로 아이돌 멤버테이블을 아우터 조인 WHERE a.group_name = b.group_name(+); -- A 테이블을(idol_group) 기준으로 B 테이블(idol_member)의 조건을 조인한다 SELECT * FROM idol_group A LEFT OUTER JOIN idol_member B -- JOIN조건은 ON 절에 붙힌다 ON a.group_name = b.group_namE;
🎈 문법 설명
💡 출처 : https://blog.naver.com/regenesis90
✔ UPDATE 쿼리
- 코드
-- SET 뒤에 변경하고싶은 컬럼명을 작성 후 넣을 데이터 입력 UPDATE idol_member SET real_name='조미연' -- WHERE절에서 어떤 로우의 데이터를 업데이트 할지 정의 -- WHERE절에서 정의하지 않을경우 테이블의 모든 데이터가 업데이트 된다 -- => 이럴경우 ROLLBACK 사용 : 업데이트 내용 되돌리는 명령어 => 이미 업데이트 된 후 명발견하였을 경우 WHERE member_name='미연'; -- 같은 로우에 한가지 이상 내용을 추가하고 싶을때 ,뒤에 추가로 업데이트 하고싶은 컬럼명 추가 UPDATE idol_member SET real_name='예슈화',sns_info = 'V LIVE,인스타그램' WHERE member_name='수화'; -- 업데이트 문(DML문- UPDATE,DELETE,INSERT,SELECT)은 커밋을 꼭 해줘야한다 -- COMMIT을 안해주면 다른세션에서 들어오면 업데이트가 반영되어있지 않다 -- COMMIT : 영구적 저장 COMMIT;
✔ DELETE, TRUNCATE
- 코드
-- AS SELECT * FROM 테이블명: 테이블 복사 => 테이블의 속성은 제외하고 테이블의 구조와 데이터들만 복사된다 CREATE TABLE IDOL_GROUP_COPY AS SELECT * FROM idol_group; -- 내용 제외한 테이블 구조만 복사 하기 -- 1=2 : 조건이 무조건 거짓이 되기때문에 구조만 복사된다 -- 카피하고싶은 데이터만 카피할때에는 WHERE절에 정의한다 CREATE TABLE IDOL_GROUP_COPY AS SELECT * FROM idol_group WHERE 1=2; -- DELETE : 해당테이블의 데이터 모두 삭제 => 구조는 남아있음 DELETE FROM IDOL_GROUP_COPY; -- ROLLBACK : 다시 되돌리기 ROLLBACK; -- 삭제하고싶은 데이터 선택하여 삭제 => WHERE절에 정의 DELETE FROM IDOL_GROUP_COPY WHERE group_name='Wanna One'; -- 삭제하고싶은 데이터 다중 선택하여 삭제 DELETE FROM IDOL_GROUP_COPY -- 조건 여러개 정의 (SM이면서 BOY그룹인 데이터 삭제) WHERE company='SM 엔터테인먼트'AND GENDER='boy'; -- TRUNCATE : 로그를 쌓지않고 바로 삭제 => 롤백 안된다 TRUNCATE TABLE IDOL_GROUP_COPY;
✔ NULL 함수 : NVL, NULLIF, COALESCE
-
코드
SELECT member_name,real_name , -- NVL : 데이터의 값이 NULL이면 대체 값을 주고 출력하라는 함수 -- real_name값이 NULL이면 MEMBER_NAME 값을 출력해라 -- NAME1 : 출력한 값의 별칭 NVL(real_name,MEMBER_NAME)NAME1, -- NULLIF : 왼쪽값과 오른쪽 값이 같으면 NULL을 출력하고 다르면 왼쪽값을 출력하라는 함수 NULLIF(member_name,'수진') NAME2, -- COALESCE : 인자값 중에서 NULL이 아닌 최초의값을 출력하는 함수 -- 미연 : NULL이 아니기 때문에 real_name 확인 => 조미연 값 가져온다 (아래 출력화면 확인) -- 민니 : NULL 아니기 때문에 real_name 확인 => NULL이기 때문에 MEMBER_NAME 가져온다 (아래 출력화면 확인) COALESCE(NULL,real_name,MEMBER_NAME)NAME3 FROM idol_member WHERE group_name = '(여자)아이들';
▶ 출력화면