728x90
반응형
2021-0615-01) 2) 관계연산자
- 대소관계를 비교할 때 사용되는 연산자
- , <, >=, <=, =, !=(<>)
- 조건절 구성에 사용(where 절)
사용예) 사원테이블에서 사원의 이름, 입사일, 부서코드, 급여를 조회하시오
SELECT FIRST_NAME|| ' ' || LAST_NAME AS 이름,
HIRE_DATE AS 입사일,
DEPARTMENT_ID AS 부서코드,
JOB_ID AS 직무코드,
SALARY AS 급여
FROM HR.EMPLOYEES -- WHERE절 없을 시 전부 출력 가능
ORDER BY 3;
사용예) 사원테이블에서 급여가 5000이상인 사원의 이름, 입사일, 부서코드, 급여를 조회하시오
SELECT FIRST_NAME|| ' ' || LAST_NAME AS 이름,
HIRE_DATE AS 입사일,
DEPARTMENT_ID AS 부서코드,
JOB_ID AS 직무코드,
SALARY AS 급여
FROM HR.EMPLOYEES -- WHERE절 없을 시 전부 출력 가능
WHERE SALARY >= 5000 -- 급여가 5000 이상인 사람만 출력
ORDER BY 3;
사용예) 사원테이블에서 급여가 5,000이상 10,000이하인 사원의 이름, 입사일, 부서코드, 급여를 조회하시오
SELECT FIRST_NAME|| ' ' || LAST_NAME AS 이름,
HIRE_DATE AS 입사일,
DEPARTMENT_ID AS 부서코드,
JOB_ID AS 직무코드,
SALARY AS 급여
FROM HR.EMPLOYEES -- WHERE절 없을 시 전부 출력 가능
WHERE 10000 >= SALARY AND SALARY >= 5000 -- 급여가 5000 이상, 10000 이하인 사람만 출력
ORDER BY 3;
** 테이블 삭제 : DROP : DRAP TABLE 테이블명;
DROP TABLE TEMP01;
DROP TABLE TEMP02;
DROP TABLE TEMP03;
DROP TABLE TEMP04;
DROP TABLE TEMP05;
DROP TABLE TEMP06;
DROP TABLE TEMP07;
DROP TABLE TEMP08;
DROP TABLE TEMP09;
사용예) 회원테이블에서 마일리지가 3000이상인 회원의 회원번호, 회원명, 주소, 직업, 마일리지를 조회하시오
-- SELECT 문 실행 순서 : (1) FROM -> (2) WHERE -> (3) SELECT
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_ADD1||' '||MEM_ADD2 AS 주소, -- || : 문자열 연산자
MEM_JOB AS 직업,
MEM_MILEAGE AS 마일리지
FROM MEMBER
WHERE MEM_MILEAGE >= 3000; -- SELECT에서 별칭을 부여했지만, WHERE절에서 인식X
사용예) 회원테이블에서 마일리지가 3000이상인 여성회원의 회원번호, 회원명, 주소, 직업, 마일리지를 조회하시오
-- SELECT 문 실행 순서 : (1) FROM -> (2) WHERE -> (3) SELECT
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_ADD1||' '||MEM_ADD2 AS 주소, -- || : 문자열 연산자
MEM_JOB AS 직업,
MEM_MILEAGE AS 마일리지
FROM MEMBER
WHERE MEM_MILEAGE >= 3000 -- SELECT에서 별칭을 부여했지만, WHERE절에서 인식X
AND SUBSTR(MEM_REGNO2,1,1) IN ('2','4'); -- 주민번호 뒷자리의 1번째 숫자가 2 또는 4인 경우
사용예) 회원테이블에서 마일리지가 3000이상인 여성회원이며, 대전에 거주하는 회원의 회원번호, 회원명, 주소, 직업, 마일리지를 조회하시오
-- SELECT 문 실행 순서 : (1) FROM -> (2) WHERE -> (3) SELECT
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_ADD1||' '||MEM_ADD2 AS 주소, -- || : 문자열 연산자
MEM_JOB AS 직업,
MEM_MILEAGE AS 마일리지
FROM MEMBER
WHERE MEM_MILEAGE >= 3000 -- SELECT에서 별칭을 부여했지만, WHERE절에서 인식X
AND SUBSTR(MEM_REGNO2,1,1) IN ('2','4') -- 주민번호 뒷자리의 1번째 숫자가 2 또는 4인 경우
AND MEM_ADD1 LIKE '대전%'; -- 주소에 대전이 들어갈 경우
-- AND SUBSTR(MEM_ADD1,1,2) IN ('대전'); -- 주소의 앞부분 1번째부터 2번째까지 대전인 경우
3) 논리연산자(NOT, AND, OR)
- 두개 이상의 조건을 결합하거나(AND, OR) 논리 부정(NOT) 연산 수행
----------------------------
0 : FALSE 1 : TRUE
A B 결과 AND OR
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 1
----------------------------
OR : ~거나, 또는, 혹은 AND : ~고, ~이고, ~면서(범위 지정할 때 사용)
사용예) 회원테이블에서 직업이 주부이거나 학생인 회원정보를 조회하시오
Alias는 회원번호, 회원명, 직업, 마일리지
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_JOB AS 직업,
MEM_MILEAGE AS 마일리지
FROM MEMBER
WHERE MEM_JOB = '주부' OR MEM_JOB = '학생';
-- WHERE MEM_JOB IN ('주부','학생');
사용예) 회원테이블에서 직업이 주부이면서 마일리지가 3000 이상인 회원정보를 조회하시오
Alias는 회원번호, 회원명, 직업, 마일리지
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_JOB AS 직업,
MEM_MILEAGE AS 마일리지
FROM MEMBER
WHERE MEM_JOB = '주부'
AND MEM_MILEAGE >= 3000;
사용예) 회원테이블에서 마일리지가 2000에서 5000사이의 값을 보유한 회원정보를 조회하시오
Alias는 회원번호, 회원명, 직업, 마일리지
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_JOB AS 직업,
MEM_MILEAGE AS 마일리지
FROM MEMBER
WHERE MEM_MILEAGE BETWEEN 2000 AND 5000; -- 문자도 가능 ex) BETWEEN '김' AND '최'
-- MEM_MILEAGE >= 2000 AND MEM_MILEAGE <= 5000;
사용예) 미국 이외의 지역에서 근무하는 사원정보를 조회하시오
Alias는 사원명, 부서, 근무지역
SELECT A.FIRST_NAME||' '||A.LAST_NAME AS 사원명,
B.DEPARTMENT_ID AS 부서,
D.COUNTRY_NAME 근무지역
FROM HR.EMPLOYEES A, HR.DEPARTMENTS B, HR.LOCATIONS C, HR.COUNTRIES D -- 테이블명 A, B, C, D로 별칭 부여
WHERE A.DEPARTMENT_ID = B.DEPARTMENT_ID -- A테이블과 B테이블과 연결
AND B.LOCATION_ID = C.LOCATION_ID -- B테이블과 C테이블 연결
AND C.COUNTRY_ID = D.COUNTRY_ID -- C테이블과 D테이블 연결
AND C.COUNTRY_ID != 'US'; -- 근무지역이 US가 아닌 사원정보 조회
4) 기타연산자
가) IN
- 질의 탐색을 위해 사용될 둘 이상의 표현식을 지정
- ANY, SOME 연산자로 변경 가능(관계연산자 ANY (SOME) => IN)
사용형식)
expr IN (값1, 값2, ... 값n)
- expr이 값1 ~ 값n 중에 어느 하나와 일치하면 전체가 참이됨
- OR 연산자나 =ANY, =SOME으로 치환 가능
SELECT 12345/113 FROM DUAL;
- 함수 : 모든 사람들이 똑같은 목적으로 사용 SELECT, WHERE 사용가능
- 미리 작성하고 컴파일하여 실행 가능한 상태의 서브프로그램
- 네트워크의 트래픽을 감소시킴
2021-0615-02) 4) 기타연산자 가) IN 연산자
- 주어진 값 중 어느 하나와 일치하면 참(TRUE)을 반환하는 연산자
- =ANY, =SOME 이나 OR 연산자로 친환 가능
- 관계연산자 ANY (SOME) => IN
- 불연속적인 값의 비교에 주로 사용
- 서브쿼리가 사용되는 경우 서브쿼리의 결과가 다중행을 반환하는 경우에는 반드시 IN 연산자를 사용해야 함
- 질의 탐색을 위해 사용될 둘 이상의 표현식을 지정 사용형식) expr IN (값1,값2[,값3,...,값n])
- expr이 값1 ~ 값n 중에 어느 하나와 일치하면 전체가 참이됨
- OR 연산자나 =ANY, =SOME으로 치환 가능
사용예) 사원테이블에서 부서코드가 20, 50, 90번 부서에 소속된 사원의 사원번호, 사원명, 부서코드, 급여를 조회하시오.
(IN 연산자를 사용하지 않은 경우)
SELECT EMPLOYEE_ID AS 사원번호,
FIRST_NAME||' '||LAST_NAME AS 사원명,
DEPARTMENT_ID AS 부서코드,
SALARY AS 급여
FROM HR.EMPLOYEES
WHERE DEPARTMENT_ID = 20 OR DEPARTMENT_ID = 50 OR DEPARTMENT_ID = 90;
(IN 연산자를 사용한 경우)
SELECT EMPLOYEE_ID AS 사원번호,
FIRST_NAME||' '||LAST_NAME AS 사원명,
DEPARTMENT_ID AS 부서코드,
SALARY AS 급여
FROM HR.EMPLOYEES
WHERE DEPARTMENT_ID IN (20, 50, 90);
(ANY(SOME) 연산자를 사용한 경우)
SELECT EMPLOYEE_ID AS 사원번호,
FIRST_NAME||' '||LAST_NAME AS 사원명,
DEPARTMENT_ID AS 부서코드,
SALARY AS 급여
FROM HR.EMPLOYEES
WHERE DEPARTMENT_ID =ANY (20, 50, 90);
-- WHERE DEPARTMENT_ID =SOME (20, 50, 90);
사용예) 사원테이블에서 소속인원이 5명 이상인 부서에 소속된 사원의 사원번호, 사원명, 부서코드, 급여를 조회하시오.
SELECT B.EMPLOYEE_ID AS 사원번호,
B.FIRST_NAME||' '||B.LAST_NAME AS 사원명,
B.DEPARTMENT_ID AS 부서코드,
B.SALARY AS 급여
FROM HR.EMPLOYEES B
WHERE B.DEPARTMENT_ID IN (SELECT A.DEPARTMENT_ID -- 사원은 1명이지만, 부서는 5개일 경우 IN 사용
FROM (SELECT DEPARTMENT_ID,
COUNT(*)
FROM HR.EMPLOYEES
GROUP BY DEPARTMENT_ID
HAVING COUNT(*)>=5)A);
- 함수 : 모든 사람들이 똑같은 목적으로 사용 SELECT, WHERE 사용가능
- 미리 작성하고 컴파일하여 실행 가능한 상태의 서브프로그램
- 네트워크의 트래픽을 감소시킴
728x90
반응형
댓글