ENAME>=FORZ
영어사전 처럼 알파벳 순서로 문자열의 '대소'를 비교합니다.
= |
A값이 B값과 같은 경우 true, 다를경우 false 반환 |
등가비교연산자 양쪽의 항목이 같은값인지 검사 |
!= |
A값이 B값과 다를 경우 true , 같을경우 fals 반환 |
|
^= |
|
|
<> |
|
|
> |
A값이 B값 초과일 경우 true |
|
>= |
A값이 B값 이상일 경우 true |
|
< |
A값이 B값 미만일 경우 true |
|
<= |
A값이 B값 이하일 경우 true |
where절은 조건식의 결과값이 true인 행만 출력
테이블이름과 열이름을 대문자로 쓰기를 권장합니다.
sql문은 대.소문자를 구문하지않는다.
논리부정연산자
이름 |
정의 |
사용형식 |
특징 & 기타 |
예시 |
SELECTION |
행단위 조회(가로) |
|
|
|
PROJECTTION |
열단위 조회(세로) |
|
|
|
JOIN |
두개이상의 테이블을 하나의 테이블처럼 연결 조회 |
|
|
|
SELECT |
조회열 |
SELECT절 * 조회열 |
|
SELECT*EMP |
FROM |
조회할 테이블이름 |
FROM 조회열 |
|
FROM EMP |
DISTINCT |
열 중복 제거 |
|
|
(세로 한줄에서 중복제거) SELECT DISTINCT A FROM EMP; (세로 여러줄에서 중복제거) SELECT DISTINCT B, A FROM EMP; (중복제거 없이 출력) SELECT ALL A FROM EMP; |
칼럼 별칭 |
연산 AS 별칭 |
SAL*12+COMM AS A |
|
|
ORDER BY |
순서 정해야할때 |
ORDER BY 정렬기준열이름 |
**서비스 응답시간 느림 정렬하지않으면 결과를 더 빨리 출력 기본값(오름차순) |
ORDER BY 1; ORDER BY EMP; ORDER BY 정렬기준열이름 더 큰열; |
WHERE |
필요한 데이터 출력할때 |
WHERE 조회조건지정; |
|
|
ASC |
오름차순 |
ORDER BY 기준열 ASC; |
|
|
DESC |
내림차순 |
ORDER BY 기준열 DESC; |
기준열 옆에 정렬옵션을 적으면 내림차순으로 정렬됨 |
급여가 높은사원부터 낮은사원순으로 내림차순 정렬 ORDER BY SAL DESC; |
논리부정연산자 |
A값이 true일 경우 논리부정연산자의 값은 flase A값이 flase일경우 논리부정연산자의 값은 true |
|
|
|
LIKE | 특정문자또는 문자열을 대체하거나 문자열데이터의패턴을 표기하는 특수문자 | - % | ||
= | 어떤값이든 상관없이 한개의문자데이터를 의미 | |||
% | 길이와 상관없이 문자없는경우에도 모든 문자데이터를 의미 |
단점:시간소요 *대소문자가 다르다면 못찾음 |
EX) LIKE %Oracle% Oracle문자열이 포함된 데이터 모두 출력 |
|
AND | ~하고 | 양쪽이 TRUE일때를 제외하고 전부 FLASE반환 | ||
OR | ~하거나 | 양쪽이 FLASE일때를 제외하고 전부 TRUE반환 |
숫자함수 | |||
Round |
지정숫자 의 특정위치에서 반올림한 값 반환 |
Round(숫자,반올림위치) AS 칼럼명 |
1234.5678 SELECT Round(1234.5678,2) AS EMP 소수점 둘째자리 반올림1234.6 |
Trunc |
지정숫자 의 특정위치에서 버림한 값 반환 |
Trunc(숫자,버림위치) | |
CEIL |
가장 가까운 큰정수 반환 |
CEIL(숫자,반올림위치) |
SELECT FLOOR(-23.456),CELL(-23.456) FROM DUAL; -- CELL(-23) |
FLOOR |
가장 가까운 작은 정수 반환 |
FLOOR(숫자,반올림위치) |
SELECT FLOOR(-23.456),CELL(-23.456) FROM DUAL; -- FLOOR(-24) |
MOD(n,c) REMAINDER(n,c) |
나머지값 반환 나머지값 구해야하는경우 MOD(숫자,반올림위치) |
- MOD 와 REMAIMDERSMS 내부 처리 방식 이 다름 - MOD :n - C * FLOOR (n/c) - REMAINDER : - c * ROUND(n/c) |
|
형변환 |
|
||
TO_CHAR |
숫자 또는 날짜 → 문자 변환 |
||
TO_NUMBER |
문자 → 숫자 변환 |
||
TO_DATE |
문자 → 날짜 변환 |
NULL 처리함수
열의 데이터가 NULL일 경우에 연산수행을 위해 데이터를 NULL이 아닌 다른값으로 대체해 주어야할때
NULL |
현재 무슨값인지 확정되지 않은상태 값 자체가 존재하지않는 상태 |
데이터값이 완전히 비어있는 상태로 중요한 의미의 특수한 데이터형식 숫자0은 값이 존재한다고 봄 |
null만 따로 쓰지는 않는다. 숫자0은 값이 존재한다고 봄 |
EX) 미혼 계좌 개설한적없음
|
IS NULL | NULL이면 TRUE | null인지아닌지 여부 확인 여부 | ||
IS NOT NULL | NULL이 아니면 TRUE | 직속상관열이 NULL이 아닌 사원만 조회 할 경우 | ||
NVL | NULL이 아닌 다른값으로 대체해 주어야할때 | NVL(NULL인지아닌지검사할 열, NULL일때 반환할 값) | ||
NVL2 | NVL2(NULL인지아닌지검사할 열, NULL이 아닐때 반환할 값,NULL일때 반환할 값) | |||
DECODE | ||||
CASE문 | ||||
UNION | 중복값 제거 | 연결 SELECT합집합 | ||
UNION ALL | 중복 결과값도 모두 출력 | 연결 SELECT합집합 | ||
MINUS |
먼저처리한 SELECT문의 결과값중 다음SELECT문의 존재하지않는 데이터만 출력 |
SELECT 차집합 | ||
INTERSEST(교차점) |
먼저처리한 SELECT문의 결과값중 다음SELECT문과 결과값이 같은 데이터만 출력 |
SELECT 교집합 | ||
UPPER(문자열) | 대문자로 변환 | |||
LOWER(문자열) | 소문자로 변환 | |||
INICAP(문자열) | 첫글자는 대문자로, 나머지는 소문자로 변환. | |||
LENGTH(문자열) | 문자열의 길이를 구할때 사용 (글자수 ) |
행의 길이 비교/ 숫자 비교 가능
|
||
LENGTHB(바이트) | 바이트 수 반환 | 한글은 한 문자당 3byte | 영어는 1byte | |
SUBSTR(문자열데이터,시작위치,추출길이) | 문자열 일부추출 | SUBSTR(JOB,3,2) == JOB컬럼에서 세번째 글자에서 두글자 출력 |
끝까지 출력하고 싶으면 SUBSTR(JOB,3) 라고 적으면 됨 |
|
dual 테이블 | 임시 연산이나 함수의 결과값 확인 주로 사용 | |||
INSTR ('포함문자열','문자',문자위치,시작위치로부터몇번째 |
특정 문자위치를 찾아내기 |
문자가 몇번째에 있는지 위치(기본값은1) |
|
EX) INSTR('HELLO','L',2,2) 두번째 글자 E부터 시작해서 두번째 L을 찾음 |
REPLACE() | 특정문자를 다른문자로 바꿀때 사용 | REPLACE(찾는문자열,찾는문자,대체문자) | REPLACE('00-12','-',' ') | 문자를 한칸공백으로 바꾸어 출력 |
LPAD | 왼쪽 데이터의 빈공간을 특정문자로 채움 | LPAD 문자열또는데이터,자릿수,왼쪽빈공간채울문자 |
LPAD('Oracle',10,*) Oracle**** |
|
RPAD | 오른쪽 데이터의 빈공간을 특정문자로 채움 | LPAD 문자열또는데이터,자릿수,오른쪽빈공간채울문자 |
RPAD('Oracle',10,####) ####Oracle |
|
CONCAT |
두개의 문자열 하나의 데이터로 합침 |
개인정보 뒷자리*표시로 출력 | SELECT CONCAT(A,B) | |
|| | 열이나 문자열을 연결 | |||
TO_CHAR | |
9 | 숫자의 한자리를 의미 |
0 | 빈자리를 0 으로 채움 |
$ | $표시를 붙여서 출력 |
l | LOCAL지역화폐단위 기호 출력 |
. | 소수점표시 |
, | 천단위의 구분기호 |
내장함수
정의함수
단일행 함수: 데이터가 한 행씩 입력되고 입력된 한 행단 결과 가 하나씩 나오는 함수
1+1 => 2
1+1 => 2
1+1 = > 2
다중행 함수: 여러행이 입력되어 하나의 행으로 결과가 반환되는 함수
SUM,AVG등 합하는것
- -- 한글은 3byte 영어는1byte
--계산방법
--1.테이블 칸을 우선 지정
--2.언어 지정
--3.바이트수확인
--4.남은 바이트 수 확인
--5.(지정테이블칸-공백칸빼기)
--6.3의 언어바이트갯수에서 5 더하기
--★★★★★SELECT에 있는 넘은 GROUP BY에 반~ 드시 나와야해~
--★★★★SUM이 나오면 반드시 GROUP BY가 나와야한다>_<★★★★
이름 | 정의 | 특징 | 예시 |
SYSDATE |
시스템의 현재 날짜(년,월,일, 시 분,,초)정보를 반환 덧셈과 뺄셈의 대상 |
곱셈과 나눗셈은 되지않음 | SELECT SYSDATE, SYSDATE+3, SYSDATE-3 FROM DUAL; SELECT SYSTIMESTAMP FROM DUAL; |
EXTRACT | |||
ROUND(n,idx), TRUNC(n,idx) | - ROUND: 주어진 수 n에서 소숫점 idx+1 번째에서 반올림하여 idx위치까지 반환 - TRUNC: 주어진 수 n에서 소숫점 idx+1 번째에서 절삭(자리버림) 하여 idx위치까지 반환 - idx가 음수이면 n의 정수부에서 idx자리에서 반올림(ROUND) 또는 자리버림(TRUNC) 한 결과 반환 - idx가 생략되면 0으로 간주 |
||
MONTH_BETWEEN | |||
ADD_MONTHS(d1,n) | 날짜 타입의 자료 d1에 n개월을 더한 날짜를 반환 | n은 정수형자료 | SELECT ADD_MONTHS(SYSDATE+5) FROM DUAL; |
NEXT_DAY(d1, expr) | 주어진d1날짜이후 가장 먼저 도래되는 expr 요일의 날짜 반환 | expr은 요일로 '월'또는 '월요일'~'일'또는'일'로 기술해야함 | |
LAST_DAY(d1) | 주어진 날짜 자료 d1에 포함된 월의 마지막 일을 반환 | SYSDATE == 뜻 오늘날짜 | SELECT LAST_DAY('20000201') FROM DUAL; |
MONTHS_BETWEEN(d1,d2) | d1과 d2사이의 개월수를 반환 | ||
EXTRACT(d1,d2) | |||
EXTRACT(A FROM B) | 날짜자료 B에서 'A'로 정의된 부분만 추출 | 'A'는 YEAR,MONTH,DAY,HOUR,MINUTE,SECOND 이다. | EXTRACT (YEAR FROM MEM_BIR) AS 출생년도, |
cube |
rollup 과 비슷한 기능제공 명시된 컬럼의 가능한 모든 조합별로 집계 제공 |
cube(a,b,c) => a,b,c,(ab),(ac),(bc),(abc),전체 |
--경우의 수를 모오오ㅗ오오두 따져서 다양한 집계가 출력되는것이 cube이다. |
NULL | 컬럼에 저장되거나 수식의 결과값이 null인지 판단 ('='는 판단불가) | --(!=) 그냥 null을 쓰면 구분하지 못합니다. (****중요도) | |
is null | |||
is not null | |||
nvl(c,v) | 명시된 컬럼 'c'의 값이 null 이면 'v'값을 null 이 아니면 자신의 값을 반환 | --null이 아니면 자기 자신의 값을 준다 !!!!!!! 나는 NVL !!!!!!! | NVL(PROD_COLOR,'색상정보없음') |
nvl2(c,v1,v2) | 명시된 'c'의 값이null 이 아니면 v1을 , null 이면 'v2'값을 반환 | null,, 널.. 허용하지..않아... | NVL2(PROD_COLOR,PROD_COLOR,'색상정보없음') |
nullif(c,d) | c와 d를 비교하여 같으면 null값을 반환하고, null 이 다르면 'c'값을 반환 | ||
SELECT DATE ('200509','YYYYMMDD') FROM DUAL; --일을 01로 세팅
SELECT DATE ('2005','YYY') FROM DUAL; --월은 시스템 날짜의 월로
SELECT DATE ('2005','YYYY') FROM DUAL; --일을 01로 세팅
그룹함수(sum,avg,count,max,min)
- 여러행들에 대해 함수가 적용되어서 하나의 결과를 반환하는 이러한 함수를
집계함수 리고도 함
- 대부분 GROUP BY 절이 사용됨
-- SELECT절에서 일반함수가 나오고 집계함수일때 그룹바이로 묶는
-- HAVING은 그룹함수에 부여되는 조건만
(사용형식)
SELECT 컬럼명,...
FROM 테이블명,...
[WHERE 조건]
[GROUP BY 컬럼명[,컬럼명,...]] -- 그룹의 기준이 되는
[HAVING 조건]
[ORDER BY 컬럼명| 컬럼명인덱스 [ASC|DESC][,......]];
--(***중요도)
- 보통 그룹을 나눌떄 기준이 되는 컬럼은 SELECT절에 기술
- SELECT절에서 집계함수를 제외한 일반 항목명이 존재하면 반드시 GROUP BY 절 기술
- GROUP BY 절의 항목은 SELECT절에서 집계함수를 제외한 일반 항목명을 모두 기술 해야함
- 이외 추가로 필요한 항목은 추가 기재 가능
- GROUP BY 절의 기술된 항목은 순서는 그룹을 묶는 순서임
- 집계함수에 대한 조건이 필요한 경우 HAVING절에 기술
'it공부' 카테고리의 다른 글
데이터모델링 하는방법 (0) | 2020.07.05 |
---|---|
연관성 없는 서브쿼리를 사용하는 DML명령 (0) | 2020.07.05 |
select 명령 Oracle SQL (0) | 2020.07.05 |
PL/SQL (0) | 2020.07.05 |
uiux 수업 정리 (0) | 2020.07.05 |