2020.07.29 (수) 3주차 3일
내일 시험본다 넘 떨린다. 주관식 11문제라니 ;;; 아직 자바 다 숙달도 안되었는데 이클립스 없는 시험이라니;;;
어쩌냐...그래도 해봐야지... 과락만 안 맞게 해주세요 ㅜㅜ 쪽팔린다구요....
음 그리
1. 숫자함수
-- Round,
반올림
-- SELECT TRUNCATE(45.678,0), TRUNCATE(45.678,1), TRUNCATE(45.678,-1);
소수점을 버림, 첫째 자리에서 버림, 둘째 자리에서 반올림
--MOD(15,2), 15%2, 15 MOD 2 ;
함수, 연산자, 모듈러
--GREATEST(15, 4, 6, 8), LEAST (15, 4, 6, 8), POW(2, 3), SQRT(8);
2. 날짜함수
--CURDATE(), NOW(), SYSDATE(),
db서버의 현재 날짜와 시간을 보여줌
-- ADDDATE('2020-07-29', +10), ADDDATE('2020-07-29', -10), SUBDATE('2020-07-29', -1000)
-- NOW(), DATE_ADD(NOW(),INTERVAL INTERVAL 5 MONTH);
--★ 활용도 높음
SELECT DATEDIFF(NOW(),'2017-03-01');
SELECT timeDIFF(NOW(),'22:23:59', '12:11:10');
SELECT TIMESTAMPDIFF(QUARTER,'2020-07-29', '2020-12-12')
--SELECT SYSDATE(), LAST_DAY(SYSDATE()), DAYOFYEAR(SYSDATE());
3. ★ 형변형 : function (Method in JAVA)
-- DATE_FORMAT(NOW(), '%Y%m%d'), DATE_FORMAT(NOW(), '%Y-%m-%d'),
DATE_FORMAT(NOW(), '%Y년%m월%d일');
-- DATE_FORMAT(NOW(), '%d'), DATE_FORMAT(NOW(), '%Y');
-- CAST, STR_TO_DATE, FORMAT
4. rank() : 순위 결정
SELECT jikwon_no AS 사번, jikwon_name 이름, jikwon_pay AS 월급,rank()
over(ORDER BY jikwon_pay) AS rank, dense_rank() over(ORDER BY jikwon_pay) AS drank
FROM jikwon;
-- ascending sort
-- rank : 오름차순 , 1234 다 표시
SELECT jikwon_no AS 사번, jikwon_name 이름, jikwon_pay AS 월급, rank()
over(ORDER BY jikwon_pay DESC) AS rank, dense_rank() over(ORDER BY jikwon_pay DESC) AS drank
FROM jikwon;
-- decending sort 내림차순,
5. ★ NVL : NULL컨트롤
SELECT jikwon_name, nvl(jikwon_jik, '임시직'), nvl(jikwon_pay, 0) FROM jikwon WHERE jikwon_no <= 6;
-- NVL(val1, val2) : val1이 null이 아니면, vol2를 적용
SELECT jikwon_name, nvl2(jikwon_jik, '정규직','임시직'),
nvl2(jikwon_pay, jikwon_pay +1000, 0) FROM jikwon WHERE jikwon_no <= 6;
-- NVL2(val1, val2, vol3) : val1이 null인지 평가 후, null이 아니면면 vol2를 적용, null이면 vol3를 적용
\SELECT NULLIF(LENGTH('abcd'),LENGTH('123'));
-- nullif(val1, val2) : 두 개의 값이 일치하면 null을, 일치하지 않으면 val1을 취함
6. ★ 조건 표현식
{ SELECLT 그룹칼럼명, 계산함수, ... FROM 테이블명 WHERE 조건 GROUP BY 그룹칼럼명 HAVING 출력결과조건 ]
SELECT case 10 / 5
when 5 then '안녕'
when 2 then '반가워'
ELSE '잘가'
END AS 결과 from DUAL;
-- 형식 2)
SELECT jikwon_name, case jikwon_pay
when 3000 then '어라 삼천이네?'
when 4500 then '와우 4500!'
ELSE '그 외 연봉' END AS Result from jikwon;
--if 조건 표현식
SELECT jikwon_name, jikwon_pay, jikwon_jik,
if(TRUNCATE(jikwon_pay / 1000, 0) >=5, 'good', 'normal') AS result FROM jikwon;
※ 오늘 배우고 느낀 것
1. 뭔가 null을 관리하고, 채우고, 무시하고, 포함하고 이런게 중요한 SQL의 SKILL일것같은데....?
잘모르겠다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
2. fK는 나중에 Join 으로 대체되는 느낌적인 느낌
'[2020]KIC 캠퍼스 복습 > SQL(3,4)' 카테고리의 다른 글
[수업 D-16 ] SQL) 계정, 서버, stored Procddure, 사용자 정의 함수 (0) | 2020.08.03 |
---|---|
[수업 D-15] SQL SUBQUERY의 종류, VIEW 파일 (0) | 2020.07.31 |
[수업 D-14] SQL JOIN, commit, rollback (0) | 2020.07.31 |
[예제 3W] 수업 예제 정리(SQL) (0) | 2020.07.29 |
[수업 D-12] SQL Select (0) | 2020.07.29 |