728x90

대용량 처리 자료형 : LOB
대용량 문자처리 자료형 : CLOB

  • char의 C + LOB

 

clob의 필요성

varchar2는 최대 4000byte이기 때문에 4000byte가 넘는 고용량들을 다룰 때, clob이 필요

 


문제점

CLOB을 그냥 쓰면 자바 객체 출력 때처럼 객체주소가 찍혀 나오는 것처럼 출력됨

 

해결책

DBMS_LOB.SUBSTR() 사용

 

DBMS_LOB.SUBSTR()

DBMS_LOB.SUBSTR(CLOB컬럼명, 자를 문자 수, 시작위치offset) 

 

주의사항

1)TO_CLOB()으로 감싸기

TO_CLOB(클롭컬럼명)으로 감싸지 않으면, 식별자가 너무 길다는 오류 발생 가능성

TO_CLOB(CONTENT)

2)길이 한도

CLOB 자체는 4000넘어도 되지만 DBMS_LOB.SUBSTR()을 쓰면 4000까지만 가능
따라서, 4000이 넘는 CLOB데이터를 조회할 때는 이어 붙여야함
||이나 concat() 사용
ex) 1-4000 + 4001-8000 식으로 문자열 이어 붙이는 방법

DBMS_LOB.SUBSTR(col1, 4000, 1) || DBMS_LOB.SUBSTR(col1, 4000, 4001) AS CONTENTS 
SELECT 
    TITLE, 
    WRTIER,
    DBMS_LOB.SUBSTR(col1, 4000, 1) || DBMS_LOB.SUBSTR(col1, 4000, 4001) AS CONTENTS
FROM BOARD

 

 

관련 함수

DBMS_LOB.INSTR(CLOB컬럼명, '검색할 단어', 몇번째 위치한 단어)  // 찾으려는 문자열의 인덱스번호 반환
DBMS_LOB.GETLENGTH(CLOB컬럼명)                         // 해당 컬럼의 길이 반환

1)DBMS_LOB.INSTR()

지정한 문자열이 나올 때마다 해당 인덱스 번호 반환
LIKE보다 조회 빠름

2)DBMS_LOB.GETLENGTH()

해당 컬럼의 전체 길이 반환(공백 포함)

 

 

참고자료
https://developyo.tistory.com/364
https://joongwoonc.tistory.com/52

728x90
반응형
728x90

 

마이바티스 최대 특징 중 하나 : 쿼리를 태그화 시킨 것

코드가 많이 줄고 편하다

 

DOCTYPE 설정

<!DOCTYPE mapper .... >

앞으로 DOCTYPE 다음 어떤 타입인지 나오므로 잘 확인하자

나머지는 코드 복붙해서 쓰면된다

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

 

1. 최상위 태그 <mapper>

namespace속성

마이바티스 설정파일(config.xml)에 등록한 매퍼파일의 값을 넣는 속성(element)

자바에서 어느 매퍼를 쓸지 알 수 있게 해주는 역할

<mapper namespace="memberMapper">
</mapper>

 

2. 쿼리문 태그 : <select>,<insert>,<update>,<delete>

이후로 나오는 태그들은 sql에서 썼던 CRUD의 명령어들이 태그화 된 것이므로 그대로 쓰면 되고,

속성(element)만 추가하면 된다

<mapper namespace="memberMapper">
	<select id="loginMember" parameterType="member.model.vo.Member" > 
     	쿼리문 내용
        ex)
            SELECT * 
            FROM MEMBER 
            WHERE USER_ID = #{userId} AND USER_PWD = #{userPwd} 
    </select>
</mapper>

1)id : 쿼리문의 고유 아이디(유일한 구분자)
   - mapper태그 안에 쿼리가 엄청 여러개이기 때문에 각각을 구분할 pk역할을 하는 id속성이 필요
 2)parameterType : 클래스의 풀네임 또는 (설정되었다면)별칭
 3)resultType : 반환받을 데이터의 데이터타입 지정
  - 쿼리 실행 후 나온 결과(ex:ResulSet) 옮겨 담을 객체를 정해주는 것

 

3.<resultMap>

vo클래스 필드명(담을 객체의 필드명)과 sql컬럼명 매핑시켜주는 태그

resultMap태그 속성값

1) type : 클래스 풀네임or별칭
2) id : pk역할. 이 resultMap이 어느 resultMap맵인지 식별용

<resultMap type="Member" id="memberResultSet">

 

resultMap 하위 태그

1)id태그 : pk역할(기본키) 하는 얘가 들어감.
- column : DB의 컬럼명
- property : 매핑 시킬 자바 vo의 필드명
2)result태그 : 일반 컬럼이 들어감

<!-- PK(기본키) -->
<id column="USER_ID" property="userId"/>
<!-- 일반 컬럼 -->
<result column="USER_PWD" property="userPwd"/>

 

<resultMap> 전체코드

<resultMap type="Member" id="memberResultSet">

		<!-- PK(기본키) -->
		<id column="USER_ID" property="userId"/>
		<!-- 일반 컬럼 -->
		<result column="USER_PWD" property="userPwd"/>
		<result column="USER_NAME" property="userName"/>
		<result column="NICKNAME" property="nickName"/>
		<result column="EMAIL" property="email"/>
		<result column="BIRTHDAY" property="birthDay"/>
		<result column="GENDER" property="gender"/>
		<result column="PHONE" property="phone"/>
		<result column="ADDRESS" property="address"/>
		<result column="ENROLL_DATE" property="enrollDate"/>
		<result column="UPDATE_DATE" property="updateDate"/>
		<result column="M_STATUS" property="mStatus"/>
	</resultMap>

 

 

 

728x90
반응형
728x90

회원가입, 조회, 내 정보 보기, 수정, 탈퇴

 

db랑 다르게 쿼리문 맞쳤다는 세미콜론 안들어감

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">


<mapper namespace="memberMapper">
	<!-- 회원가입 : insert태그 -->
	<insert id="insertMember" parameterType="Member"> <!-- parameterType : 쿼리에 전달될 데이터의 타입 지정 -->
		insert into member
		values (#{userId}, #{userPwd}, #{userName}, #{nickName}, #{email}, #{birthDay}, #{gender}, #{phone}, #{address}, sysdate, sysdate, default)
	</insert>

	<!-- 내정보보기 수정 -->
	<update id="updateMember" parameterType="Member">
			update member
			set user_name = #{userName}, nickName = #{nickname}, email = #{email}, birthDay = #{birthDay},
				gender = #{gender}, phone = #{phone}, address = #{address}
			where user_id = #{userId}
	</update>
	
	
	<!-- 비번 수정 -->
	<update id="updatePwd" parameterType="java.util.HashMap"> <!-- parameterType="hashMap"도 가능. 마바 내장별칭 때문 -->
		update member
		set user_pwd = #{newPwd} 
		where user_id = #{id} and user_pwd = #{oldPwd}
	</update>
	
	
	<!-- 회원탈퇴 -->
	<update id="deleteMember" parameterType="string"> <!--string : 마이바티스 내장 별칭 string==String  -->
		update member
		set status = 'N' 
		where user_id = #{userId}
	</update>


</mapper>

 

728x90
반응형
728x90

 

row 데이터 전체 조회 및 반환 코드

내부 쿼리문

 

package com.kh.test.model.TestDao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import com.kh.test.model.Test;

public class TestDao {

	
	public List<Test> selectList() {
		
		List<Test> list = null;
		Connection conn = null;
		Statement stmt = null;
		ResultSet rset = null;
		
		try {
			Class.forName("Oracle.jdbc.driver.OracleDriver");
			conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.10.3:1521:xe","kh","kh");
			
			String query = "SELECT * FROM TEST";
			
			stmt = conn.createStatement();
			rset = stmt.executeQuery(query);
			
			if(rset.next()) {
				int seq = rset.getInt("SEQ");
				String writer = rset.getString("WRITER");				
				String title = rset.getString("TITLE");				
				String content = rset.getString("CONTENT");				
				Date regDate = rset.getDate("DATE");		
				
				list.add(new Test(seq, writer, title, content,regDate));
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();	
		} catch (SQLException e) {
			e.printStackTrace();

		} finally {
			try {
				rset.close();	
				stmt.close();   
				conn.close(); 	
			} catch (SQLException e) {
				e.printStackTrace();
			} 
		}
		return list;
	}
	
}

 

 

728x90
반응형
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
반응형
728x90

 

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



비교연산자

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

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

 

컬럼 별칭

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

별칭 : "" 

 

리터럴(literal)

값 자체

싱글쿼테이션( ' ' )

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



 

 

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



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

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

-- EMPLOYEE 테이블에서 직원의 직원 번호, 사원명, 급여, 단위 조회
SELECT EMP_NO, EMP_NAME, SALARY, '원' "단위 : 원"
FROM EMPLOYEE;
SELECT EMP_NO, EMP_NAME, SALARY, '@' "원"
FROM EMPLOYEE;


-- 별칭 : "" 
-- 리터럴을 싱글쿼테이션으로 처리한다 : ' '
-- '원'이라는 컬럼을 보여주고 싶지않으면 더블쿼테이션""으로 단위써주자



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

SELECT EMP_NAME, EMAIL
FROM EMPLOYEE
WHERE EMAIL LIKE 'b%';
-- 결과 : 방명수 bang ns@kh.kr


-- 결과 : 없음
-- 리터럴은 대소문자 철저히 구별하기에 대문자 BANG으로 시작하는 EMAIL이 없어서 안나온 것



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

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



/*
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';

 

 

 

 

728x90
반응형
728x90

 

SELECT : 데이터 조회
RESULT SET : SELECT구문으로 데이터를 조회한 결과물

ex) 해당 조건에 맞지않는 결과값이 없으면 0행으로 나올 수도 있다

 

SELECT 컬럼명

FROM 테이블명  // 조회하고자 하는 컬럼이 포함된 테이블명 기술



SELECT 컬럼명 FROM 테이블명;

 

 

 

컬럼의 산술 연산

 

 

-- EMPLOYEE 테이블의 사번,이름,급여 조회
SELECT EMP_ID, EMP_NAME,SALARY
FROM EMPLOYEE;


--EMPLOYEE 테이블의 모든 정보 조회
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;

SELECT * FROM EMPLOYEE;

/*
-- 실습 문제 --
1.JOB 테이블의 모든 정보 조회
2.JOB 테이블의 직급 이름 조회
3.DEPARTMENT 테이블의 모든 정보 조회
4.EMPLOYEE 테이블의 직원명, 이메일, 전화번호, 고용일 조회
5.EMPLYEE 테이블의 고용일, 사원이름, 월급 조회
*/

--1.JOB 테이블의 모든 정보 조회
-- 방법1
SELECT * FROM JOB;


-- 방법2
SELECT JOB_CODE, JOB_NAME FROM JOB;

--2.JOB 테이블의 직급 이름 조회
SELECT JOB_NAME FROM JOB;

--3.DEPARTMENT 테이블의 모든 정보 조회
-- 방법1
SELECT * FROM DEPARTMENT;
-- 방법2
SELECT DEPT_ID, DEPT_TITLE, LOCATION_ID FROM DEPARTMENT;

--4.EMPLOYEE 테이블의 직원명, 이메일, 전화번호, 고용일 조회
SELECT EMP_NAME, EMAIL, PHONE, HIRE_DATE FROM EMPLOYEE;
--5.EMPLYEE 테이블의 고용일, 사원이름, 월급 조회
SELECT HIRE_DATE, EMP_NAME,SALARY FROM EMPLOYEE;



--컬럼 값 산술 연산
--EMPLOYEE테이블에서 직원명, 연봉 조회(연봉 = 급여*12)
SELECT EMP_NAME, SALARY, SALARY*12 "연봉" 
FROM EMPLOYEE;

--EMPLOYEE테이블에서 직원명, 연봉, 보너스를 추가한 연봉 조회
-- 방법1
SELECT EMP_NAME, SALARY*12 "연봉", (SALARY+SALARY*BONUS)*12 AS 보너스 
FROM EMPLOYEE;
--  수식에 NULL이 있으면 결과값에 NULL이 나옴 
-- 방법2
SELECT EMP_NAME 이름, SALARY*12 "연 봉", (SALARY+SALARY*BONUS)*12 AS "보너스"
FROM EMPLOYEE;

/*
------------실습문제------------
1.EMPLOYEE테이블에서 이름, 연봉, 총수령액(보너스포함), 실수령액(총수령액-(연봉*세금3%)) 조회
2.EMPLOYEE테이블에서 이름, 고용일, 근무일수(오늘 날짜 - 고용일) 조회 
 - 오늘날짜 SYSDATE
*/
--(SALARY+SALARY*BONUS)*12
SELECT EMP_NAME, SALARY*12 연봉, SALARY*(1+BONUS)*+12 "총 수령액", 
        (SALARY*(1+BONUS)*12)-(SALARY*12*0.03) AS 실수령액
FROM EMPLOYEE;

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

 

728x90
반응형

+ Recent posts