쌍용교육센터 - 17일

개발자가 되고 싶어요 ㅣ 2024. 3. 12. 18:31

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