반응형
1. 집합 연산자를 사용하기 위한 테이블 생성
-- 🧛♂️SUPER_HERO테이블
--SUPER_HERO테이블 생성 - 속성: 이름(문자형)
CREATE TABLE SUPER_HERO(NAME VARCHAR2(20) PRIMARY KEY);
--DROP TABLE SUPER_HIRE PURGE;
--SUPER_HERO테이블에 행 삽입
INSERT INTO SUPER_HERO VALUES('슈퍼맨');
INSERT INTO SUPER_HERO VALUES('아이언맨');
INSERT INTO SUPER_HERO VALUES('배트맨');
INSERT INTO SUPER_HERO VALUES('앤트맨');
INSERT INTO SUPER_HERO VALUES('스파이더맨');
SELECT * FROM SUPER_HERO;
COMMIT;
--🧛♂️MARVEL_HERO테이블
--MARVEL_HERO테이블 생성 - 속성: 이름(문자형), 등급(숫자형)
CREATE TABLE MARVEL_HERO(NAME VARCHAR2(20) PRIMARY KEY, GRADE NUMBER(1));
--MARVEL_HERO테이블에 행 삽입
INSERT INTO MARVEL_HERO VALUES('아이언맨', 3);
INSERT INTO MARVEL_HERO VALUES('헐크', 1);
INSERT INTO MARVEL_HERO VALUES('스파이더맨', 4);
INSERT INTO MARVEL_HERO VALUES('토르', 2);
INSERT INTO MARVEL_HERO VALUES('앤트맨', 5);
SELECT * FROM MARVEL_HERO;
COMMIT;

2. 집합 연산자(SET 연산자)
- 두개의 SELECT 명령에 대한 검색결과를 이용하여 집합 결과값을 제공하는 연산자
- 합집합(UNION), 교집합(INTERSECT), 차집합(MINUS) 키워드 이용
- 원하는 행들만 검색할 수 있도록 만들어줌 (필터링 기능)
- 오라클에만 있는 연산자
- 실제적으로 잘 사용하지는 않음
1) 합집합(UNION)
- 행을 결합(JOIN)하는 것이 아닌, 행을 합쳐서(UNION) 보여주는 것
- EX) 쇼핑몰 검색 : 원하는 기능 검색 + 또다른 원하는기능 검색
- 두 개의 SELECT 명령으로 검색된 행을 합한 결과를 제공하는 키워드
- 중복행 제외
-- 형식
SELECT 검색대상,... FROM 테이블명 UNION SELECT 검색대상,... FROM 테이블명
-- 예시
SELECT NAME FROM SUPER_HERO UNION SELECT NAME FROM MARVEL_HERO;
2) 합집합(UNION ALL)
- 두 개의 SELECT 명령으로 검색된 행을 합한 결과를 제공하는 키워드
- 중복행 포함
-- 형식
SELECT 검색대상,... FROM 테이블명 UNION ALL SELECT 검색대상,... FROM 테이블명
-- 예시
SELECT NAME FROM SUPER_HERO UNION ALL SELECT NAME FROM MARVEL_HERO;
3) 교집합(INTERSECT)
- EX) 쇼핑몰 검색 : 원하는 기능만을 검색
- 두 개의 SELECT 명령으로 검색된 행에서 중북된 결과만을 제공하는 키워드
--형식
SELECT 검색대상,... FROM 테이블명 INTERSECT SELECT 검색대상,... FROM 테이블명
--예시
SELECT NAME FROM SUPER_HERO INTERSECT SELECT NAME FROM MARVEL_HERO;
4) 차집합(MINUS)
- EX) 쇼핑몰 검색 : 원하는 기능만을 제외하고 검색
- 첫번째 SELECT 명령으로 검색된 행에서 두번째 SELECT 명령의 검색행을 제외한 결과를 제공하는 키워드
- [첫번째 SELECT 명령으로 검색된 행] - [두번째 SELECT 명령의 검색행]
-- 형식
SELECT 검색대상,... FROM 테이블명 MINUS SELECT 검색대상,... FROM 테이블명
-- 예시
SELECT NAME FROM SUPER_HERO MINUS SELECT NAME FROM MARVEL_HERO;
5) 집합연산자 사용 시 주의점
① 검색대상의 "갯수"와 "자료형" 반드시 일치시켜야함
- 두 개의 SELECT 명령의 검색대상의 갯수와 자료형이 반드시 일치하도록 검색
- 집합 연산자 사용 시 두개의 SELECT 명령에 대한 검색대상의 갯수 또는 자료형이 서로 다른 경우 에러 발생
-- ERROR 검색대상의 자료의 불일치
SELECT NAME FROM SUPER_HERO UNION SELECT GRADE FROM MARVEL_HERO;
-- ERROR 검색대상의 갯수 불일치
SELECT NAME FROM SUPER_HERO UNION SELECT NAME,GRADE FROM MARVEL_HERO;
② "갯수"와 "자료형"이 달라도 에러없이 사용도 가능
- 검색대상의 "자료형"이 다른 경우 - 변환함수 이용
-- 변환함수 사용하여 자료형을 일치시켜 집합 처리
SELECT NAME FROM SUPER_HERO UNION SELECT TO_CHAR(GRADE) FROM MARVEL_HERO; --ERROR안떨어짐
- 검색대상의 "갯수"가 다른 경우 - 동일한 자료형의 임의값 또는 NULL 이용
--컬럼값 대신 동일한 자료형의 임의값 또는 NULL을 사용하여 집합처리 - 비권장
--1)
SELECT NAME,0 FROM SUPER_HERO UNION SELECT NAME,GRADE FROM MARVEL_HERO; --ERROR안떨어짐
--2)
SELECT NAME,NULL FROM SUPER_HERO UNION SELECT NAME,GRADE FROM MARVEL_HERO; --ERROR안떨어짐

3. 테이블의 속성을 확인하는 명령어
- 테이블 속성 확인을 확인한다 = 테이블의 컬럼명과 자료형을 확인한다.
🔥형식
DESC 테이블명;
🔥해석
- NOT NULL : NULL을 허용하지 않음
- NUMBER(2) : 숫자 2자리 까지 저장 가능
- VARCHAR2(14) : 2BYTE인 영문자(한글아님)14자리까지 가능
- VARCHAR2(13) : 2BYTE인 영문자 13자리까지 가능
- 참고로 한글은 2~4BYTE라서 한글 14자리 까지 쓸 수 있다는 의미가 아님!
반응형
'sql' 카테고리의 다른 글
[sql] 10. TCL (COMMIT/ROLLBACK/SAVEPOINT) (0) | 2024.05.09 |
---|---|
[sql] 9. DML (INSERT/UPDATE/DELETE/MERGE) (0) | 2024.05.09 |
[sql] 7. 서브쿼리(SUBQUERY) (0) | 2024.05.08 |
[sql] 6. JOIN문 (0) | 2024.05.07 |
[sql] 5. 그룹함수 | GROUP BY절 | HAVING절 (0) | 2024.05.07 |