😎 작성 순서
→ SELECT > FROM > WHERE > GROUP BY > HAVING >ORDER BY
sql 기본
select
empno,ename,deptno
from emp;
//이 형식으로 작성하자
//주석은 --로
- SELECT
- DISTINCT (중복제거, 대신에 나중에 배우는 GROUP BY를 사용하자)
- ex)
SELECT DISTINCT A;
- ALL (*)
- AS ( 별칭 )
- SELECT a AS b; //as는 생략 가능 //b는 큰따옴표("")로 묶을 수 있음
- DISTINCT (중복제거, 대신에 나중에 배우는 GROUP BY를 사용하자)
- FROM
- WHERE
- AND / OR / NOT / IN / (NOT IN) /BETWEEN /LIKE
- IS NULL
- =NULL 대신 IS NULL 사용하기 or IS NOT NULL
- LIKE
- _ / %
- ☆ ‘%x%’ → x를 포함하는 문자열 (검색기능때 많이 씀)
- IS NULL
- AND / OR / NOT / IN / (NOT IN) /BETWEEN /LIKE
- OREDER BY
- SQL문 중에 가장 마지막 부분에 작성
- DESC 내림차순, ASC 오름차순
- ex)
SELCT * FROM EMP ORDER BY A ASC, B DESC; //A로 먼저 오름차순한 다음, B를 기준으로 내림차순
- UNION
- 집합연산
- UNION: 중복 제거 // UNION ALL: 중복 허용
- columm명은 첫번째의 select문을 따라감
between
where sal>=500 and sal<=1000;
where sal between 500 and 1000;
//서로 같은거임
오라클함수
- dual 테이블
- -어떤 단일 연산/결과만을 출력하고 싶을때 사용하는 더미 테이블
1. 문자 함수
- UPPER( str ), LOWER( str ) : 대소문자로 출력
- INITCAP( str ) : 첫글자만 대문자, 나머지는 소문자로 출력
- LENGTH( str ) : 문자열 길이 출력
- SUBSTR( str , a , b ) : 문자열 일부 추출
- str에서 a부터 b까지 출력
- p언어와는 다르게 인덱스번호 1부터 시작
- b는 생략 가능 생략하면 a 부터 끝까지출력
- INSTR( str , char , a , b )
- str 에서 char 문자 인덱스 출력, 없으면 0 출력
- a 인덱스부터 찾기 시작
- a부터 시작해서 b번째 char 인덱스
- a,b는 생략가능 default는 1번 인덱스
- REPLACE( str , a , b )
- str 에서 a를 b로 바꿔 출력(db상에는 변동x)
- b생략시 a없애고 빈자리 떙겨출력
- LPAD, RPAD : 패딩 (잘안씀)
- CONCAT( str1, str2 ) : str1, str2 합쳐 출력 (중요)
2. 숫자 함수
- ROUND, TRUNC, CEIL, FLOOR ,MOD
- ROUND: 반올림
- ROUND(A, b) : A에서 b위치에서 반올림, b가 음수면 자리수*10
- TRUNC: 버림
- ROUND랑 메커니즘 같
- ROUND: 반올림
3. 날짜 함수
SYSDATE 함수 : 시스템 상 현재 날짜 정보
- date+/- d: d일 이후/이전의 날짜
- ADD_MONTHS( date, m ) : m개월 후 날짜
- MONTHS_BETWEEN( date1, date2 ) : date1,date2 개월 수 차이
- NEXT_DAY ( date , dy ) : 다음 dy요일의 날짜
- LAST_MONTH( date ) : 달의 마지막 날짜
*코테꿀팁
select to_char(sysdate , 'yyyy-mm-dd') from dual;
//대신에
select substr(sysdate,1,10) from dual;
//을 사용하자
//결과는 같음
4. 변환 함수
자동형변환 은 뭐 그냥 하면댐
강제형변환 → TO_CHAR , TO_NUMBER, TO_DATE
숫자↔문자↔날짜 (숫자&날짜 불가)
- TO_CHAR( date , str ) : date 날짜를 str의 형식으로 출력 (str ex: yyyy/mm/d hh24:mi:ss 형식이 정해져있음)
- TO_NUMBER( num , n ) : 숫자형태로 생긴 문자열 num을 n의 형태로 바꿈
- 랭킹(순위 함수)
- select sal, row_number() over(order by sal desc) rank1, rank() over(order by sal desc) rank2, dense_rank() over(order by sal desc) rank3 from emp; //sal을 기준으로 순위를 내림차순 1등~x등 출력
5. null 처리 함수
- NVL( data , d ) : data가 null이 아니면 그대로 출력 , null이면 d를 출력
- null은 계산이 안됨 ex) 금액이 0 일때 null로 저장되는 경우가 있음, 0으로 계산할때사용
- NVL2( data , a, b ) : data가 null이 아니면 a 출력 , null이면 b를 출력
- 일반 SQL 에서는 NVL대신에 IFNULL 사용
6. decode 함수 , case문
decode() : if문과 비슷(조건문)
CASE()문 CASE-WHEN-THEN 절
- connect by (오라클 쿼리, 많이 사용하지는 않음)
- 계층형
--connect by --계층형 (트리구조)로 조회(oracle) select level,lpad(' ',(level-1)*4)||level, empno,mgr,ename from emp start with mgr is null connect by prior empno = mgr;
'SQL' 카테고리의 다른 글
[ SQLD ] 정규화 (Normalization) (0) | 2024.08.04 |
---|---|
[ Oracle ] 조인 & 서브쿼리 + 데이터 모델링 (0) | 2024.08.02 |
[ SQL ] SHDS 모의코테 대비 간단정리 (ㄹㅇ간단) (0) | 2024.07.26 |