SQL 함수 연습문제

강상은·2023년 12월 3일
0

Oracle

목록 보기
7/7

Q1

select from emp;
select
from emp where ename like '%S';

Q2

select from dept;
select
from emp;

select empno,ename,job,sal,deptno from emp where deptno = 30 and job like 'SALESMAN';

Q3

select empno, ename,job,sal,deptno from emp
where (deptno = '20' or deptno = '30') and sal > 2000;

SELECT EMPNO, ENAME, JOB, SAL, DEPTNO
FROM EMP
WHERE DEPTNO = 20
AND SAL > 2000

UNION 합집합


형식 : select문 union select문 ( 합칠 테이블을 조회하는 문장 사이에 union)을 적어줌

SELECT EMPNO, ENAME, JOB, SAL, DEPTNO
FROM EMP
WHERE DEPTNO = 20
AND SAL > 2000

Q4

select * from emp where not sal >= 2000 and sal <= 3000;

Q5

SELECT * FROM EMP;

SELECT * FROM EMP WHERE ENAME LIKE '%E%';

SELECT * FROM EMP WHERE DEPTNO = '30';

SELECT * FROM EMP WHERE NOT SAL BETWEEN 1000 AND 2000;

SELECT * FROM EMPNO, ENAME, SAL, DEPTNO FROM EMP WHERE ENAME LIKE '%E%' AND DEPTNO = '30'
NOT SAL BETWEEN 1000 AND 2000;

2. Q1

SUBSTR

형식 : substr (문자열, 시작 위치, 길이) 

= 문자열에서 시작 위치부터 길이만큼 출력하겠다

left(문자열,길이) = 문자열에서 왼쪽부터 길이만큼 출력

right(문자열,길이) = 문자열에서 오른부터 길이만큼 출력

RPAD 와 LPAD


왼쪽,오른쪽에 특정문자를 채워서 문자열 길이를 맞출때 사용

주로 숫자 앞에 ‘0’을 채워서 길이를 맞추거나 자릿수를 고정할때 사용

형식 : LPAD(값, 총 문자길이, 채움문자-생략가능) = 지정한 길이만큼 왼쪽부터 채움

채움문자 생략 시 공백 출력

select empno, rpad(substr(empno,3),4,'') as MASKING_EMPNO,
ename, rpad(substr(ename,1,1),5,'
') as MASKING_ENAME
from emp
where length(ename)=5;

2. Q2

ROUND TRUNC






TRUNC : 소수점 절사(버림) 함수

형식 : TRUNC(”값”, “옵션”)

TRUNC는 주로 소수점 절사 및 날짜의 시간을 없앨 때 사용
ROUND : 소수점 반올림 함수

형식 : ROUND(”값”,자리수”)

select empno, ename, sal,
trunc(sal/21.5,2) as DAY_PAY,
round(sal/21.5/8,1) as TIME_PAY
from emp;

2. Q3

ADD_MONTH




형식 : ADD_MONTH (’날짜’, ‘숫자’)

ADD MONTH : 날짜의 월을 빼거나 더하는 함수 ( 날짜의 일은 변경되지 않으며 연산값에 따라 년도와 월만 변경됨)

주의할 점 : 날짜의 이전달이나 다음달에 기준날자의 일자가 존재하지 않으면 해당 월의 마지막 일자가 리턴됨.

예 : 2019-03-31의 이전달은 19-02-28이 됨

NEXT_DAY

TO_CHAR

날짜,숫자 등의 값을 문자열로 변환하는 함수

https://gent.tistory.com/331를 참조했습니다

기준일자의 다음에 오는 날자를 구하는 함수이지만 `기준일자에서 8일을 빼주면` 이전 요일에 해당하는 날짜를 구할 수 있음

형식 : NEXT_DAY(’기준일자’,’찾을요일’)

select empno, ename,
to_char(hiredate, 'YYYY/MM/DD') "hiredate",
to_char(add_months(next_day(hiredate, '월'),3),'yyyy-mm-dd') "R_JOB",
nvl2(comm,to_char(comm),'N/A') "COMM"
from emp;

2. Q4

WHEN THEN

  • WHEN으로 조건(WHEN)을 순차적으로 평가해서 참인 경우엔(THEN) 그에 맞는 결과를 반환합니다.
  • 모든 조건이 거짓이면 ELSE 절의 결과를 반환합니다.
  • ELSE 절은 생략가능. 만약 ELSE 절이 없고 모든 조건이 거짓이면 NULL을 반환

select empno, ename, nvl(to_char(mgr), '') as mgr,
case
when mgr is null then '0000'
when substr(mgr,1,2)=75 then '5555'
when substr(mgr,1,2)=75 then '6666'
when substr(mgr,1,2)=75 then '7777'
when substr(mgr,1,2)=75 then '8888'
else to_char(mgr)
end as chg_mgr from emp;

insert문

  • 하나의 행이 추가되는 것

SELECT * FROM BOOK;
INSERT INTO book(bookid, bookname, publisher, price) VALUES(11,'스포츠 의학', '한솔의학서적', 90000);
INSERT INTO book(bookid, bookname, publisher) VALUES (14, '스포츠 의학', '한솔의학서적');

INSERT INTO Book(bookid,bookname, price, publisher) select bookid, bookname,price,publisher from Imported_book;

update문

select * from customer where custid = '5';
update customer set address ='대한민국 부산' where custid = '5'

select * from customer where name like '박세리';
update Customer
set address = (select address
from Customer
where name = '김연아')
where name like '박세리';

delete문

select from customer;
select
from customer where custid = 5;
delete from customer where custid = 5;

0개의 댓글

관련 채용 정보