2024.03.12
SELECT 문
데이터베이스로부터 저장되어 있는 데이터를 검색하는데 사용
키워드 (SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY)
절(clause): 키워드가 포함된 라인
문(statement): 하나 이상의 절이 결합
select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp;
DUAL
DUAL은 함수 및 계산의 결과를 볼 때 사용할 수 있는 공용(Public) 테이블이다. 사용자 데이터가 있는 테이블에서 유래하지 않은 상수 값, 의사열, 표현식 등의 값을 단 한번만 실행하거나 현재 날짜, 시각을 알고자 할 때 이용된다. 즉 일시적인 산술, 날짜 연산등에 주로 이용한다.
select ascii(0) from dual;
null
null이란 사용할 수 없거나, 할당되지 않았거나, 알 수 없거나, 적용할 수 없는 값을 의미한다.
열 alias : 열의 별칭
열 이름 바로 뒤에 나온다. 열 이름과 alias 사이에 선택 사항인 as 키워드가 올 수도 있다.
알리아스에 큰따옴표를 사용하는 경우
- 대소문자 구별을 원하는 경우
- 공백을 포함하는 경우
- 특수문자를 사용하는 경우
- 숫자로 시작하는 경우
연결 연산자
열이나 문자열을 다른 열에 연결, 두 개의 세로선(||)으로 나타낸다. 결과 열로 문자식을 생성한다.
select ename || ' has $' || sal from emp;
Distinct
중복행을 삭제해주는 함수를 의미한다.
select distinct deptno from emp;
select distinct (deptno) from emp;
WHERE 절
조건 체크 결과 행을 제한한다. 단, 알리아스를 사용할 수 없다.
between … and … : 두 값 사이(지정한 값 포함)의 해당하는 값을 찾는다.
select * from emp where sal between 800 and 3000;
select * from emp where sal not between 800 and 3000;
select * from emp where ename between 'KING' and 'SMITH';
select * from emp where ename not between 'KING' and 'SMITH';
in : 값 목록 중의 값과 일치하는 값을 찾는다.
select * from emp where sal in (1300,2450,3000);
select * from emp where sal not in (1300,2450,3000);
select ename, mgr, deptno from emp where ename in ('ALLEN','FORD');
select ename, mgr, deptno from emp where ename not in ('ALLEN','FORD');
like : 패턴과 일치하는 데이터를 찾는다.
- %는 0개 이상의 문자를 나타낸다.
- _는 한 문자를 나타낸다.
SELECT * FROM EMP WHERE ENAME LIKE '%S%';
SELECT * FROM EMP WHERE ENAME NOT LIKE '%S%';
SELECT * FROM EMP WHERE ENAME LIKE '_M%';
NULL 조건 사용
SELECT * FROM EMP WHERE COMM IS NULL; -- COMM==NULL 형식 불가 IS NULL로 대체
SELECT * FROM EMP WHERE COMM IS NOT NULL; -- COMM!=NULL 형식 불가 IS NOT NULL로 대체
ORDER BY 절
어떠한 값을 기준으로 오름차순이나 내림차순으로 정렬한다.
위치는 가장 뒷순으로 온다. **ASC(오름차순)**이 디폴트이며 DESC로 내림차순으로 정렬이 가능하다.
오름차순 정렬
SELECT * FROM EMP ORDER BY SAL;
SELECT * FROM EMP ORDER BY SAL ASC;
내림차순 정렬
SELECT * FROM EMP ORDER BY SAL DESC;
NULL값을 갖고 있는 컬럼을 정렬할 때
NULLS FIRST 또는 NULLS LAST 키워드를 사용하여 변환된 행 중 NULL값을 포함하는 행이 정렬 순서상 맨 처음에 나타나거나 마지막에 나타나도록 지정
SELECT * FROM EMP ORDER BY COMM;
SELECT * FROM EMP ORDER BY COMM NULLS FIRST;
SELECT * FROM EMP ORDER BY COMM NULLS LAST;
함수
문자 함수
LOWER, UPPER, INITCAP : 대소문자 조작 함수
SELECT LOWER('HELLO') FROM DUAL;
SELECT UPPER('hello') FROM DUAL;
SELECT INITCAP('hello wORLD') FROM DUAL;
문자 조작함수
CONCAT(문자열1, 문자열2) : 문자열1과 문자열2를 연결하여 하나의 문자열로 반환한다
SELECT CONCAT('HELLO','WORLD') FROM DUAL;
SELECT CONCAT(ENAME, JOB) FROM EMP;
SUBSTR(대상문자열, 인덱스) : 대상문자열에서 지정한 인덱스부터 문자열을 추출한다. 단, 인덱스 1부터 시작한다.
SELECT SUBSTR('Hello World',3) FROM DUAL;
SELECT SUBSTR('Hello World',3,3) FROM DUAL;--인덱스3부터 문자 3개 추출
SELECT SUBSTR('Hello World',-3) FROM DUAL;--뒤에서 3번째부터 끝까지 추출
SELECT SUBSTR('Hello World',-3,2) FROM DUAL;--뒤에서 3번째부터 문자 2개 추출
LENGTH(대상문자열) : 문자열의 개수을 추출한다.
SELECT LENGTH ('HELLO WORLD') FROM DUAL;
SELECT LENGTH (ENAME) FROM EMP;
INSTR(대상문자열, 검색문자) : 검색문자의 위치값을 추출한다.
SELECT INSTR('Hello World','e') from dual;
검색문자가 없을 경우 0
select instr('Hello World','E') from dual;
select instr('Hello World','o') from dual;
--instr(대상문자열, 검색문자, 검색인덱스(해당위치부터 검색))
select instr('Hello World','o',6) from dual;
--instr(대상문자열, 검색문자, 검색인덱스, 반복횟수(첫번째 o를 찾아내고 그 다음 o를 찾는 횟수))
select instr('Hello World','o',1,2) from dual;
LPAD(대상문자열, 총길이, 문자) : 지정한 길이의 문자열을 출력하는데 공백은 왼쪽에 지정한 문자로 채운다.
SELECT LPAD('Hello',10,'*') FROM DUAL;
RPAD(대상문자열, 총길이, 문자) : 지정한 길이의 문자열을 출력하는데 공백은 오른쪽에 지정한 문자로 채운다.
SELECT RPAD('Hello',10,'-') FROM DUAL;
TRIM : 문자열에서 공백이나 특정 문자를 제거한 다음 값을 반환한다. 방향 : 왼쪽 -> LEADING, 오른쪽 -> TRAILING, 양쪽 -> BOTH <- DEFAULT
SELECT TRIM(LEADING 'h' FROM 'habchh') FROM DUAL;
LTRIM : 문자열의 왼쪽에서 공백이나 특정 문자를 제거한 다음 값을 반환 RTRIM : 문자열의 오른쪽에서 공백이나 특정 문자를 제거한 다음 값을 반환
REPLACE(대상문자열, OLD, NEW) : 대상문자열에서 OLD문자를 NEW문자로 대체
SELECT REPLACE('010.1234.5678','.','-') FROM DUAL;
숫자 함수
CEIL(실수): 올림 처리한 정수값을 반환한다.
SELECT CEIL(1.4) FROM DUAL;
FLOOR(실수): 버림 처리한 정수값을 반환한다.
SELECT FLOOR(1.7) FROM DUAL;
ROUND(대상숫자, 지정자릿수): 반올림
SELECT ROUND(45.926,2) FROM DUAL;
SELECT ROUND(46.926) FROM DUAL;
TRUNC(대상숫자,지정자릿수) : 절삭
SELECT TRUNC(45.926,2) FROM DUAL;
SELECT TRUNC(45.926) FROM DUAL;
MOD(대상숫자,나눌 숫자) : 나머지값
SELECT MOD(17,1) FROM DUAL;
SELECT MOD(17,2) FROM DUAL;
SELECT MOD(17,3) FROM DUAL;
날짜 함수
MONTHS_BETWEEN(날짜1,날짜2) : 두 날짜 간의 월 수
SELECT MONTHS_BETWEEN('2012-03-23','2010-01-23') FROM DUAL;
ADD_MONTHS : 특정 날짜의 월에 정수를 더한 다음 해당 날짜를 반환하는 함수
SELECT ADD_MONTHS('2022-01-01',8) FROM DUAL;
NEXT_DAY : 지정된 요일의 다음 날짜
SELECT NEXT_DAY('2024-03-12',2) FROM DAUL;
LAST_DAY : 월의 마지막 날
SELECT LAST_DAY('2012-11-07') FROM DUAL;
EXTRACT : 날씨 정보에서 특정한 연도,월,일,시간,분,초 등을 추출
SELECT EXTRACT(YEAR FROM SYSDATE),
EXTRACT(MONTH FROM SYSDATE),
EXTRACT(DAY FROM SYSDATE) FROM DUAL;
변환 함수
TO_CHAR : 숫자 -> 문자, 날짜 -> 문자
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL;
한글은 표현 안됨
TO_DATE : 문자 -> 날짜
SELECT TO_DATE('24-03-12','YYYY-MM-DD') FROM DUAL;
포멧형식 생략 가능
SELECT TO_DATE('24-03-12') FROM DUAL;
TO_NUMBER : 문자 -> 숫자
SELECT TO_NUMBER('100',999) FROM DUAL;
포맷형식 생략 가능
SELECT TO_NUMBER('100') FROM DUAL;
'IT 국비 교육' 카테고리의 다른 글
쌍용교육센터 - 19일 (0) | 2024.03.14 |
---|---|
쌍용교육센터 - 18일 (0) | 2024.03.13 |
쌍용교육센터 - 16일 (0) | 2024.03.11 |
쌍용교육센터 - 15일 (1) | 2024.03.08 |
쌍용교육센터 - 14일 (2) | 2024.03.07 |