KH정보교육원_웹 프로그래머 과정/Oracle DB

Database 기본3

calvin9150 2021. 3. 2. 21:22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
------------------ 2021-03-02
 
--ORDER BY : 데이터 순서 정렬
-- ASC : 오름차순, DESC : 내림차순
--ORDER BY 구문은 항상 맨 마지막에 작성
SELECT *
FROM EMPLOYEE
-- ORDER BY SALARY DESC; --내림차순
ORDER BY DEPT_CODE DESC NULLS LAST; -- NULLS LAST, NULLS FIRST 추가 가능
-- ORDER BY 3 DESC -- 3번째 COLUMN 선택, 별칭도 사용가능
 
--LENGTH(문자열||컬럼명) : 문자열 길이 반환
SELECT LENGTH(EMAIL)
FROM EMPLOYEE;
-- EMAIL 길이가 16이상인 사원의 전체 컬럼 조회
SELECT *
FROM EMPLOYEE
WHERE LENGTH(EMAIL)>=16;
-- LENGTHB(문자열||컬럼명) : 문자열 BYTE 크기
 
-- INSTR(대상 문자열||컬럼, 찾을 문자[, 시작위치, 횟수]) : 지정한 위치부터 지정한 횟수번째에 나타난 문자열 인덱스 반환
SELECT INSTR('KH정보교육원KH''KH',1,1FROM DUAL; -- 1, 한번 찾으면 끝 // 지정위치가 음수면 뒤에서 부터 찾는다는 뜻
--EMAIL에서 @위치, 두번째 . 의 위치 찾기
SELECT INSTR(EMAIL,'@'), INSTR(EMAIL,'.',1,2)
FROM EMPLOYEE;
 
-- LPAD(왼) / RPAD(오른) : 특정 길이의 여백이 생기면 그 공간을 대체문자로 채움.
--LPAD(대상문자열, 지정길이[,대체문자])
SELECT '안녕', LPAD('안녕'10FROM DUAL; -- 대체문자 지정없으면 띄어쓰기로 대체
 
-- LTRIM/RTRIM(대상문자||컬럼[,문자) : 공백이나 특정 기호 제거 // TRIM 은 양쪽 제거
SELECT LTRIM('              무야호')
FROM DUAL;
 
-- SUBSTR('문자열', 시작인덱스[,길이]) : 지정한 위치를 제외한 문자열을 잘라내는 기능
SELECT SUBSTR('HELLO FUNCTION'6)
FROM DUAL;
-- 이름에서 성만 출력
SELECT SUBSTR(EMP_NAME,1,1)
FROM EMPLOYEE;
 
--LOWER/UPPER/INICAP : 소문자로,대문자로, 띄어쓰기 다음을 대문자로 출력
 
--REPLACE(대상컬럼, 대상 문자열[, 대체문자열])
SELECT REPLACE(EMAIL, '@''!!!!!!')
FROM EMPLOYEE;
--REVERSE : 문자열 거꾸로
SELECT REVERSE('MUYAHO~ HE IS GOING CRAZY')
FROM DUAL; --YZARC GNIOG SI EH ~OHAYUM
 
--TRANSLATE(대상문자열,치환대상,치환문자열)
SELECT TRANSLATE('무~야~호~','무야호','신난다')
FROM DUAL;
 
SELECT * FROM EMPLOYEE;
--EMPLOEE테이블에서 사원번호, 사원명, 주민번호, 연봉조회
-- 주민번호는 생년월일 제외한 나머지는 * 로 표시
SELECT EMP_ID, EMP_NAME, SUBSTR(EMP_NO, 17)||'*******'
FROM EMPLOYEE;
 
--MOD(A, B) // A와B의 나머지 반환
SELECT MOD(10,3FROM DUAL; -- 1
 
--ROUND(실수, 소수점 자리 수) : 실수의 소수점 자리수까지 남기고 그 뒤는 반올림 // 음수 가능
SELECT ROUND(1.123452)
FROM DUAL; -- 1.12
 
--FLOOR : 소수점 삭제
SELECT FLOOR(1.2345FROM DUAL; -- 소수점자리 삭제
 
--TRUC : 지정 위치 뒤 소수점 자리 버림
SELECT TRUNC(1.2342FROM DUAL;
 
-- SYSDATE : 현재날짜 반환
SELECT SYSDATE FROM DUAL; -- +, - 로 하루더하고빼기 가능
 
--ADD_MONTHS : 개월수 증가
SELECT ADD_MONTHS(HIRE_DATE, 3-- 3개월 증가
FROM EMPLOYEE;
 
--MONTHS_BETWEEN : 두 날짜의 개월 수 차이 반환
--EMPLOYEE 테이블에서 사원의 근무개월수를 구하시오
SELECT EMP_NAME, DEPT_CODE, SALARY, FLOOR(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)) AS 근무개월수
FROM EMPLOYEE;
 
-- NEXT_DAY : 지정 요일이 가장 가까운 날짜 반환
-- LAST_DAY : 그 달의 마지막 날 출력
-- EXTRACT : 년월일시분초 를 따로 숫자형으로 반환
SELECT EXTRACT(YEAR FROM SYSDATE)
FROM DUAL;
-- 시분초  
SELECT EXTRACT(HOUR FROM CAST(SYSDATE AS TIMESTAMP)) FROM DUAL;
-- 사원명, 입사날(요일) 출력
SELECT EMP_NAME, TO_CHAR(HIRE_DATE, 'YYYY/MM/DD (DY)')
FROM EMPLOYEE;
 
SELECT SYSDATE AS "입대", ADD_MONTHS(SYSDATE, 18) AS "전역"
        ,TO_CHAR((ADD_MONTHS(SYSDATE,18)-SYSDATE)*3,'999,999,999') AS 짬밥먹은횟수
FROM DUAL;
 
--NVL : NULL 값을 다른 값으로 바꿀 때 사용하며, 모든 데이터 타입에 적용이 가능하다.
 
-- NVL2(expr, expr1, expr2) : expr의 값이 NULL이 아닐 경우에는 expr1의 값을 반환 , NULL일 경우에는 expr2의 값을 반환 한다.
 
-- DECODE(기준값, 조건1, 결과1, 조건2, 결과2,,,,,,결과DEFAULT) // 자바 SWITCH문과 비슷
SELECT EMP_NAME, EMP_NO, DECODE(SUBSTR(EMP_NO,8,1),'1','남자','여자'-- 주민번호로 남여 구별해서 출력
FROM EMPLOYEE;
cs

'KH정보교육원_웹 프로그래머 과정 > Oracle DB' 카테고리의 다른 글

Database 기본6  (0) 2021.03.09
Database 기본5  (0) 2021.03.08
Database 기본4  (0) 2021.03.07
SQL Developer  (0) 2021.02.25
Database 기본1  (0) 2021.02.25