일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring
- devcamp
- 스프링
- MySQL
- 기초쿼리
- SQL
- 스프링의정석
- 쿼리
- Oracle
- java
- SpringFramework
- 자바
- 불친절한SQL
- 자바의정석
- 소셜로그인
- 인프런
- 자바기초
- 자바문제
- 국비지원
- cleanbuild
- 패스트캠퍼스
- 클린빌드
- 자바연습문제
- oauth
- RDBMS
- 오라클
- 남궁성
- mariadb
- ApplicationContext
- 패캠
- Today
- Total
목록불친절한SQL (9)
Darren's Devlog
○ 활용 예제 열 가공 WHERE 절의 열을 가공하면 쿼리의 성능이 저하될 수 있다. 가급적 열을 가공하지 않는 편이 바람직하다. 아래 쿼리는 연봉이 36000 이상인 행을 조회한다. 좌측 쿼리는 산술 연산이 행의 개수만큼 수행된다. 우측 쿼리는 산술 연산을 수행한 결과로 조건을 평가할 수 있다. SELECT * FROM emp WHERE sal * 12 >= 36000; SELECT * FROM emp WHERE sal >= 36000 / 12; 아래 쿼리는 deptno가 10이고 job이 CLERK인 행을 조회한다. 좌측 쿼리는 결합 연산자로 열을 가공했다. 우측 쿼리처럼 AND 조건을 사용해야 한다. SELECT * FROM emp WHERE deptno || job = '10CLERK'; SELE..
○ 비교 함수 값 집합의 최소값이나 최대값을 결정하는 함수이다. LEAST 함수, GREATEST 함수 expr 중 최소/최대값을 반환한다. expr에 null이 입력되면 null을 반환한다. expr의 데이터 타입이 동일해야 한다. 데이터 타입이 다르자면 첫 번째 expr의 데이터 타입으로 변환되고, 형변환 에러가 일어날 수 있다. SELECT LEAST(1, 2, 3) AS c1, LEAST('A', 'AB', 'ABC') AS c2, LEAST(1, NULL) AS c3 FROM DUAL; SELECT GREATEST(1, 2, 3) AS c1, GREATEST('A', 'AB', 'ABC') AS c2 , GREATEST(1, NULL) AS c3 FROM DUAL;
○ 널 관련 함수 NULL을 처리하는 함수다. NVL 함수 expr1이 널이 아니면 expr1, 널이면 expr2를 반환한다. NVL(expr1, expr2) SELECT NVL(1, 2) AS c1, NVL (NULL, 2) AS c2 FROM DUAL; SELECT ename, sal, comm, sal + comm AS c1, sal + NVL(comm, 0) AS c2 FROM emp; NVL2 함수 expr1이 널이 아니면 expr2, 널이면 expr3를 반환한다. 삼항 연산자와 유사하다고 느껴진다. NVL2(expr1, expr2, expr3) SELECT NVL2(1, 2, 3) AS c1, NVL2(NULL, 2, 3) AS c2 FROM DUAL; SELECT ename, sal, com..
○ 변환함수 값의 데이터 타입을 다른 데이터 타입으로 변환하는 함수이다. TO_CHAR(number) 함수 숫자 값 n을 fmt형식의 문자 값으로 변환한다. TO_CHAR(n [, fmt [, 'nlsparam']]) 자주 사용되는 포맷이다. 포맷 요소 설명 0 앞쪽이나 뒷쪽에 0을 출력 9 한자리 숫자 , 구분자 . 소수점 S 부호(양수일 경우 +, 음수일 경우 -) G 구문자(NLS_NUMERIC_CHARACTERS으로 변경 가능) D 소수점(NLS_NUMERIC_CHARACTERS으로 변경 가능) $ 달러 L 로컬 통화 기호 U 이중 통화 기호 C 국제 통화 기호 c1과 c4 열은 값이 fmt보다 커 결과가 #으로 표시된다. SELECT TO_CHAR(12, '0' ) AS c1, TO_CHAR(1..
○ 날짜 함수 날짜 값(date, timestamp, interval)을 조작하는 함수이다. 예제를 위해 NLS 파라미터를 아래와 같이 설정했다. ALTER SESSION SET NLS_DATE_FORMAT = "YYYY-MM-DD HH24:MI:SS"; ALTER SESSION SET NLS_TIMESTAMP_FORMAT = "YYYY-MM-DD HH24:MI:SS.FF"; ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = "YYYY-MM-DD HH24:MI:SS.FF TZH:TZM"; SYSDATE 함수 초(second)가 포함된 데이터베이스 서버의 날짜 값을 DATE타입으로 반환한다. SELECT SYSDATE FROM DUAL; SYSDATE 함수 소수점 이하 초() ..
0○ 숫자 함수 숫자 값을 조작하는 함수이다. ABS 함수 n의 절대값을 반환한다. SELECT ABS(0) AS c1, ABS(10) AS c2, ABS(-10) AS c3 FROM DUAL; SIGN 함수 n의 부호를 반환한다. n이 양수이면 1, 음수이면 -1, 0이면 0을 반환한다. SELECT SIGN(0) AS c1, SIGN(10) AS c2, SIGN(-10) AS c3 FROM DUAL; ROUND(number) 함수 n1을 n2자리로 반올림한다. n2가 양수면 소수부, 음수면 정수부를 반올림한다. n2의 기본값은 0이다. ROUND(n1, [, n2]) SELECT ROUND(15.59) AS c1, ROUND(15.59, 1) AS c2, ROUND(15.59, -1) AS c3 FR..
오라클 데이터베이스는 다양한 내장 SQL함수를 제공한다. 이번 장에서는 단일 행 함수를 살펴보도록 하겠다. 함수 설명 장 단일 행 함수 단일 행을 입력받아 단일 행을 반환하는 함수 6장 집계 함수 다중 행을 입력받아 단일 행을 반환하는 함수 9장 분석 함수 다중 행을 입력받아 다중 행을 반환하는 함수 14장 모델 함수 MODEL 절에서 사용하는 함수 26장 ○ 문자 함수 문자 값을 조작하는 함수이다. CHR 함수 n에 해당하는 데이터베이스 캐릭터 셋의 문자 값을 반환한다. 문자로 입력할 수 없는 특수 문자를 입력할 때 사용할 수 있다. 아래 CHR(10) 함수는 줄 바꿈 문자를 의미한다. SELECT 'AB' || CHR(10) || ' C' AS c1 FROM DUAL; LOWER 함수 char를 소문..
○ 기본요소 리터럴(literal)은 변하지 않는 값이다. 다른 프로그래밍 언어의 상수와 유사하다. 문자 리터럴, 숫자 리터럴, 날짜 리터럴, 인터벌 리터럴 등이 있다. 널(NULL) 값이 없더나 정해지지 않는 것을 의미한다. 오라클 DB는 NULL과 빈 문자('')를 동일하게 처리한다. 연산자(operator) 피연산자(operand)에 대한 연산을 수행한다. 산술 연산자, 연결 연산자, 집합 연산자, 계층 쿼리 연산자 MULTISET 연산자 등이 있다. 산술 연산자 숫자 값이나 날짜 값에 대한 산술 연산을 수행한다. 나눗셈의 제수가 0이면 에러가 발생한다. SELECT 1+2-3*4/5 AS c1, 1+2-((3*4)/5) AS c2 FROM DUAL; SELECT 1/0 FROM DUAL; --에러..
● SELECT문 용어 설명 예시 키워드(keyword) 개별적인 SQL 요소 DISTINCT 절(clause) SQL의 한 부분 SELECT DISTINCT 문(statement) 2개 이상의 절이 결합된 문장 SELECT DISTINCT depto FROM emp; SELECT문은 데이터를 조회하는 구문이다. SELECT문은 SELECT절과 FROM 절로 구성된다. SELECT deptno FROM emp; FROM절이 수행된 후 SELECT절이 수행된다. ○ SELECT절 조회할 열(column)이나 표현식을 기술할 수 있다. 애스터리스크, 열, 열 별칭, DISTINCT 키워드를 알아보자. SELECT[{{DISTINCT ¦ UNIQUE} ¦ ALL}] {* ¦ {t_alias.* ¦ expr [..