본문 바로가기
학교 강의/데베기초교양

데베교양 시험대비

by hoshi03 2023. 10. 23.

select문, 문자타입함수, 숫자타입함수, NVL, DECODE 사용법

그룹함수, count, sum, avg, max, min

erd 키와 제약조건 pdf 8 까지

 

시험범위 문자, 숫자 처리 함수

시험범위 그룹 함수

소문자, 대문자, 앞에만 대문자로 출력하기

select lower('Chanho_lee'),
        upper('chanho_lee'),
        initcap('CHANHO_LEE')
from dual;

substr-  (문자열,시작인덱스,가져올자리수)

concat - 결합

select substr('Chanho_lee', 8,3),
        replace('ChanhoLEE','Chanho','Hoshi'),
        concat('chanho','lee')
from dual;

instr - 문자열 시작 위치 리턴

lpad - 원래 문자열 좌측부터 문자열 추가

rpad - 원래 문자열 우측부터 문자열 추가

select length('2019026380'),
        instr('chanholee','ho'),
        lpad('chanho',9,'lee'),
        rpad('chanho',9,'lee')
from dual;

l

ltrim은 왼쪽에서 처음만나는 삭제할 문자를, rtrim은 오른쪽에서 처음만나는 삭제할 문자 하나를 제거함 

삭제할 문자 지정 안하면 공백을 삭제

select ltrim('tft','t') from dual; // ft
select rtrim('tft','t') from dual; // tf

trim - 문자열 공백 제거, 문자열 중간 공백은 제거 못함

널 값과 그냥 값을 곱해버리면 값이 null이 나오기 때문에 nvl 함수를 사용한다

아래처럼 하면 널값이 되는 commission_pct를 0으로 치환해서 계산한다

select salary * nvl(commission_pct, 0) as nvl_test
from employees
order by commission_pct;

 

decode 메서드를 이용해서 치환(if문 느낌)

 

decode(비교할 컬럼, 대상의 값,대상의 값과 일치할때 표기할 값, 대상의 값과 다를때 표기할 값)

여기선 department_id가 60이면 급여를 인상하고 인상여부를 바꿔줬다

select first_name ||' '|| last_name full_name,
    department_id,
    salary 원래급여,
    decode(department_id, 60, salary *1.1, salary) 급여인상,
    decode(department_id, 60, '10% 인상', '미인상') 인상여부
from employees;

과제 문제들 모아둔거 

/*1.	’emplayees’ 테이블에서 부서id(DEPARTMENT_ID)가 10이거나 20이거나 30인 사원의 번호(EMPLOYEE_ID) ,성 이름( FIRST_NAME, LAST_NAME)을 출력하시오. 
(단, 그림처럼 타이틀을 붙여서 출력)*/
select employee_id as 사원번호, first_name ||' '||last_name as 이름, job_id from employees where job_id in('IT_PROG','ST_MAN','ST_CLERK');
/*2.	‘emplayees’ 테이블에서 급여(SALARY)가 3000이상 5000이하인 사람의 사원번호(EMPLOYEE_ID )를 출력하시오. */
select employee_id from employees where salary between 3000 and 5000;
/*3.	’ emplayees’ 테이블에서 성(LAST_NAME)에 ‘ee’가 포함된 사람의 성(LAST_NAME)을 출력하시오.*/
select last_name from employees where last_name like '%ee%';
/*’ emplayees’ 테이블에서 부서id(DEPARTMENT)가 정해지지 않은 사람의 사원번호(EMPLOYEE_ID )와 연락처(PHONE_NUMBER ), 이메일(EMAIL )를 출력하시오.*/
select employee_id, phone_number, email, department_id from employees where department_id is null;
/*1.	‘departments’ 테이블에서 department_name, manager_id를 출력하시오.단, manager_id가 지정이 안된 데이터는 '메니저 미지정'으로 출력하시오. (decode함수 사용)*/
select department_name, decode(manager_id, null, '매니저 미지정', manager_id) from departments;
/*2.	‘emplayees’ 테이블에서 부서별로 사원들의 월급의 최고액과 최저액을 출력하시오. 단, 부서id로 오름차순하시오. */
select max(salary), min(salary) from employees group by department_id order by department_id;
/*3.	’ emplayees’ 테이블에서 부서번호가 50인 사원들을 메니저별로  평균월급을 출력하시오. 단, 평균월급이 3000이상인 것만 출력하시오.*/
select avg(salary),manager_id from employees where department_id = 50 group by manager_id having avg(salary)> 3000;

select * from departments;
select * from employees;

select substr('chanho_lee', 11,1) from dual;

키와 제약조건

 

 

공부하면서 알게 된거

select substr('chanho_lee', 2,1) as test from dual; <- substr 1부터 시작한다..

as '별칭'으로 쓸수 없고 as "별칭" 이렇게 써야한다

'학교 강의 > 데베기초교양' 카테고리의 다른 글

데베기초 10주차  (1) 2023.11.09
데베교양 확인문제  (0) 2023.10.25
7주차  (0) 2023.10.12
5주차  (0) 2023.10.06
4주차  (0) 2023.10.01