728x90

 

SELECT

데이터 ’조회’

SELECT 컬럼명 FROM 테이블명;

방법1
SELECT EMP_ID,EMP_NAME,SALARY FROM EMPLOYEE;

방법2
SELECT EMP_ID,EMP_NAME, SALARY
FROM EMPLOYEE;

 

SELECT 컬럼명 -- 조회하고자 하는 컬럼명 기술
FROM 테이블명 -- 조회하고자 하는 컬림이 포함된 테이블명 기술
WHERE 조건식; -- 행을 선택하는 조건 기술, 조건을 만족하는 행만 반환
                     -- 조건식 복수로 붙여서 사용가능. 복수라도 WHERE절 한개만 기술

 

한 테이블의 모든 정보 조회

--EMPLOYEE 테이블의 모든 정보 조회
방법1
SELECT EMP_ID,EMP_NAME, EMP_NO, EMAIL, PHONE, DEPT_CODE, JOB_CODE, SAL_LEVEL, SALARY,
        BONUS, MANAGER_ID, HIRE_DATE, ENT_DATE, ENT_YN FROM EMPLOYEE ;
 
방법2
SELECT * -- * : 전체
FROM EMPLOYEE;

 


 

 DISTINCT

중복제거

DISTINCT는 한번만 쓸 수 있다

-- DISTINCT : 중복제거
SELECT DISTINCT JOB_CODE
FROM EMPLOYEE;

-- EMPLOYEE 테이블에서 직원의 부서 코드를 중복 없이 조회
SELECT DISTINCT DEPT_CODE
FROM EMPLOYEE;

-- DISTINCT는 한번만 쓸 수 있다
--SELECT DISTINCT DEPT_CODE, DISTINCT DEPT_CODE -- ERROR
--FROM EMPLOYEE;

 

DISTINCT A,B 콤마로 같이 쓰면 ()로 묶은 효과 발생

콤마로 두 컬럼을 묶으면 두 컬럼의 조건이

AND조건으로 교집합 된 것만 중복 제거한다

SELECT DISTINCT DEPT_CODE, JOB_CODE -- 콤마로 두 컬럼을 묶으면 두 컬럼의 조건이  
FROM EMPLOYEE;                      -- AND조건으로 교집합 된 것만 중복 제거한다

 


 

리터럴(literal)

값 자체

싱글쿼테이션( ' ' )

오라클에서는 문자,문자열,데이트 상관없이 다 싱글쿼테이션(’ ‘)으로 감싸준다

컬럼 별칭

컬럼명  AS 별칭 / 컬럼명 AS “별칭” / 컬럼명 별칭 / 컬럼명 “별칭”

별칭 : "" 

쌍따옴표( “”)를 무조건 붙여야하는 조건

1)별칭에 특수문자가 들어갈 경우
2)별칭이 숫자로 시작할 경우
쌍따옴표 = 더블 쿼테이션(” ”)
    EX) 직원 명 ←띄어쓰기 공백 특수문자라 “직원 명”으로 적어줘야한다
    EX) SALARY*12 AS 연봉

 

-- EMPLOYEE 테이블에서 직원의 직원 번호, 사원명, 급여, 단위 조회
SELECT EMP_ID, EMP_NAME, SALARY, '원' "단위"
FROM EMPLOYEE;
SELECT EMP_ID, EMP_NAME, SALARY, '원입니다' "단위"
FROM EMPLOYEE;
-- 별칭 : "" 
-- 리터럴을 싱글쿼테이션으로 처리한다 : ' '
-- '원'이라는 컬럼을 보여주고 싶지않으면 더블쿼테이션""으로 단위써주자

 




비교연산자

>, <, >=, <=, = ,!= 

크다, 작다, 크거나 같다
같다 : =
같지않다 : != , ^= , <>

--EMPLOYEE테이블에서 부서코드가 'D9'인 직원의 이름, 부서코드 조회
SELECT EMP_NAME, DEPT_CODE
FROM EMPLOYEE
WHERE DEPT_CODE = 'D9'; 
-- '' 없이 D9만 쓰면 컬럼으로 인지하게 됨
-- 'd9'라고 써도 안됨. 리터럴은 대소문자 구분


-- 급여가 4000000이상인 직원의 이름, 급여 조회
SELECT EMP_NAME, SALARY
FROM EMPLOYEE
WHERE SALARY >= '4000000'; -- ''로 감싸도 숫자로 인지잘한다. '' 없어도 됨

-- EMPLOYEE테이블에서 부서코드가 D9이 아닌 사원의 사번, 이름, 부서코드조회
SELECT EMP_NO, EMP_NAME, DEPT_CODE
FROM EMPLOYEE
WHERE DEPT_CODE != 'D9'; -- != //  ''이랑 대소문자 구별 주의
WHERE DEPT_CODE ^= 'D9'; -- ^=
WHERE DEPT_CODE <> 'D9'; -- <>

 

 

 

전체코드

-- 컬럼 별칭
-- 컬럼명  AS 별칭 / 컬럼명 AS “별칭” / 컬럼명 별칭 / 컬럼명 “별칭”
SELECT EMP_NAME "직원 명", SALARY * 12 급여,SALARY *(1+BONUS)*12 총수령액, SALARY *(1+BONUS)*12 - SALARY*12*0.03 실수령액
FROM EMPLOYEE;

SELECT EMP_NAME,HIRE_DATE, SYSDATE-HIRE_DATE AS 근무일수
FROM EMPLOYEE;


/*
리터럴(literal)
값 자체 ‘ ‘

오라클에서는 문자,문자열,데이트 상관없이 다 싱글쿼테이션(’ ‘)으로 감싸준다
데이터 타입에 상관없이 별칭(””) 외에는 다 싱글쿼테이션으로 감싼다
*/ 

-- EMPLOYEE 테이블에서 직원의 직원 번호, 사원명, 급여, 단위 조회
SELECT EMP_ID, EMP_NAME, SALARY, '원' "단위"
FROM EMPLOYEE;
SELECT EMP_ID, EMP_NAME, SALARY, '원입니다' "단위"
FROM EMPLOYEE;
-- 별칭 : "" 
-- 리터럴을 싱글쿼테이션으로 처리한다 : ' '
-- '원'이라는 컬럼을 보여주고 싶지않으면 더블쿼테이션""으로 단위써주자

-- EMPLOYEE테이블에서 직원의 직급 코드 조회
SELECT JOB_CODE, '직급코드'
FROM EMPLOYEE;

select emp_name, email
from employee
where email like 'bang%'; -- bang으로 시작하는 email 다 조회
-- 결과 : 방명수 bang ns@kh.kr
-- 오라클은 대소문자 구분안해서 소문자로 써도 되나 리터럴에서는 엄격히 구분하기에 주의

SELECT EMP_NAME, EMAIL
FROM EMPLOYEE
WHERE EMAIL LIKE 'BANG%';
-- 결과 : 없음
-- 리터럴은 대소문자 철저히 구별하기에 대문자 BANG으로 시작하는 EMAIL이 없어서 안나온 것



------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------



-- DISTINCT : 중복제거
SELECT DISTINCT JOB_CODE
FROM EMPLOYEE;

-- EMPLOYEE 테이블에서 직원의 부서 코드를 중복 없이 조회
SELECT DISTINCT DEPT_CODE
FROM EMPLOYEE;

-- DISTINCT는 한번만 쓸 수 있다
--SELECT DISTINCT DEPT_CODE, DISTINCT DEPT_CODE
--FROM EMPLOYEE;

SELECT DISTINCT DEPT_CODE, DEPT_CODE
FROM EMPLOYEE;


/*
SELECT 컬럼명 -- 조회하고자 하는 컬럼명 기술
FROM 테이블명 -- 조회하고자 하는 컬림이 포함된 테이블명 기술
WHERE 조건식; -- 행을 선택하는 조건 기술, 조건을 만족하는 행만 반환
             -- 조건식 복수로 붙여서 사용가능. 복수라도 WHERE절 한개만 기술




------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------



-- 비교연산자
>, <, >=, <=, = ,!= 

크다, 작다, 크거나 같다
같다 : =
같지않다 : != , ^= , <>
*/
--EMPLOYEE테이블에서 부서코드가 'D9'인 직원의 이름, 부서코드 조회
SELECT EMP_NAME, DEPT_CODE
FROM EMPLOYEE
WHERE DEPT_CODE = 'D9'; 
-- '' 없이 D9만 쓰면 컬럼으로 인지하게 됨
-- 'd9'라고 써도 안됨. 리터럴은 대소문자 구분


-- 급여가 4000000이상인 직원의 이름, 급여 조회
SELECT EMP_NAME, SALARY
FROM EMPLOYEE
WHERE SALARY >= '4000000'; -- ''로 감싸도 숫자로 인지잘한다. '' 없어도 됨

-- EMPLOYEE테이블에서 부서코드가 D9이 아닌 사원의 사번, 이름, 부서코드조회
SELECT EMP_NO, EMP_NAME, DEPT_CODE
FROM EMPLOYEE
WHERE DEPT_CODE != 'D9'; -- != //  ''이랑 대소문자 구별 주의
WHERE DEPT_CODE ^= 'D9'; -- ^=
WHERE DEPT_CODE <> 'D9'; -- <>

-- EMPLOYEE 테이블에서 퇴사 여부가 N인 직원을 조회하고 근무 여부를 재직중으로 표시
-- 사번,이름, 고용일, 근무여부 조회
SELECT EMP_ID, EMP_NAME, HIRE_DATE, '재직중' "근무여부"
FROM EMPLOYEE 
WHERE ENT_YN = 'N';


-------------- 실습문제 --------------
--1.EMPLOYEE테이블에서 월급이 3000000이상인 사원의 이름, 월급, 고용일 조회
--2.EMPLOYEE테이블에서 SAL_LEVEL이 S1인 사원의 이름, 월급, 고용일, 연락처 조회
--3.EMPLOYEE테이블에서 실수령액(총수령액-(연봉*세금3%))이 5천만원 이상인 
--  사원의 이름, 급여, 실수령액, 고용일 조회


--1.EMPLOYEE테이블에서 월급이 3000000이상인 사원의 이름, 월급, 고용일 조회
SELECT EMP_NAME, SALARY, HIRE_DATE
FROM EMPLOYEE
WHERE SALARY >= 3000000;

--2.EMPLOYEE테이블에서 SAL_LEVEL이 S1인 사원의 이름, 월급, 고용일, 연락처 조회
SELECT EMP_NAME, SALARY, HIRE_DATE, PHONE
FROM EMPLOYEE
WHERE SAL_LEVEL = 'S1';

--3.EMPLOYEE테이블에서 실수령액(총수령액-(연봉*세금3%))이 5천만원 이상인 
--  사원의 이름, 급여, 실수령액, 고용일 조회
SELECT EMP_NAME 이름, SALARY "급여", SALARY *(1+BONUS)*12 - SALARY*12*0.03 AS 실수령액, HIRE_DATE AS "고용일"
FROM EMPLOYEE
WHERE SALARY *(1+BONUS)*12 - SALARY*12*0.03 >= 5000000;
-- 컬럼 산술연산으로 뽑아낸 값을 조건식의 기준 데이터에 사용가능

 

 

 

 

 

728x90
반응형

+ Recent posts