일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- 오블완
- JAVA8
- 개발
- 명령어
- SQL
- 자바
- DBMS
- spring
- IntelliJ
- docker
- mssql
- mysql
- 책추천
- oracle
- 책
- 후기
- 티스토리챌린지
- 웹
- pandas
- Python
- react
- git
- 네트워크
- 리눅스
- 독서
- java
- Javascript
- Linux
- MariaDB
- PostgreSQL
- Today
- Total
목록oracle (18)
hanker
SQL에서 데이터를 집계할 때 흔히 GROUP BY를 사용한다.하지만 GROUP BY만으로는 부분합(Subtotal) 과 총합(Total) 을 따로따로 쿼리해야 하는 불편함이 있는데, 이럴 대 ROLLUP을 사용한다. ROLLUP은 그룹별 집계 + 부분합 + 총합을 한 번에 계산해주는 확장된 GROUP BY 구문이다. 기본 문법 SELECT 컬럼1, 컬럼2, 집계함수(컬럼3)FROM 테이블GROUP BY ROLLUP (컬럼1, 컬럼2);ROLLUP(컬럼1, 컬럼2) 는 사실상 아래와 같은 GROUP BY 여러 구문을 합쳐놓은 것과 동일하다. -- 1) 컬럼1 + 컬럼2 별 집계GROUP BY (컬럼1, 컬럼2)-- 2) 컬럼1 별 집계 (부분합)GROUP BY (컬럼1)-- 3) 전체 집계 (총합)GRO..
SYS_CONNECT_BY_PATH는 계층형 쿼리 (CONNECT BY 절)을 사용할 때, 특정 컬럼 값을 루트부터 현재 노드까지 경로(Path) 형태로 문자열로 연결해주는 함수이다. 기본 문법 SYS_CONNECT_BY_PATH(column, delimiter) column : 경로에 추가할 컬럼 값delimiter : 경로 사이에 넣을 구분자 (보통 '/', '>', '-' 등 사용) 예제 CREATE TABLE dept ( dept_id NUMBER, dept_name VARCHAR2(50), parent_id NUMBER);INSERT INTO dept VALUES (1, '총괄본부', NULL);INSERT INTO dept VALUES (2, '영업부', 1);INSERT..
Oracle의 WITH 절은 공통 테이블 표현식(Common Table Expression, CTE)을 정의하는 구문으로,복잡한 쿼리를 더 읽기 쉽고 구조화된 형태로 작성할 수 있게 해준다. 기본 구문WITH cte_name AS ( SELECT ... FROM ... WHERE ...)SELECT ...FROM cte_nameWHERE ...; 임시 결과 집합 생성: WITH 절로 정의된 CTE는 쿼리 실행 중에만 존재하는 임시 테이블처럼 작동한다. 실제로는 뷰나 인라인 뷰와 유사하지만, 메인 쿼리에서 여러 번 참조할 수 있어 더 효율적이다.재귀 쿼리 지원: WITH RECURSIVE를 사용하여 계층적 데이터나 트리 구조를 처리하는 재귀 쿼리를 작성할 수 있다. 기본 사용법 WITH h..
Oracle에서 버전 별 페이징을 위해 사용하는 함수들이 다르다.각각 함수 별로 특징들을 살펴보고 이에 따라 효율적인 페이징을 해보자. 1. ROWNUM을 이용한 페이징 (Oracle 11g 이하) ROWNUM은 Oracle 고유의 의사 컬럼(Pseudo Column)으로, 쿼리 결과에 순차적으로 번호를 부여한다.-- 사용법 (서브쿼리 사용)SELECT * FROM ( SELECT * FROM employees ORDER BY salary DESC) WHERE ROWNUM -- 11~20번째 행 조회 (2페이지)SELECT * FROM ( SELECT ROWNUM rn, emp.* FROM ( SELECT employee_id, first_name, last_name, ..

Oracle 데이터베이스에서 문자열을 합치는 작업에 대해서 알아보자. 1. 연결 연산자(||) 사용 오라클에서 문자열을 합칠 때 기본적으로 사용되는 연결 연산자를 사용해서 문자열을 합쳐보자.SELECT 'Hello' || ' ' || 'World' AS result FROM dual;-- 결과: Hello WorldSELECT first_name || ' ' || last_name AS full_name FROM employees;특징간단하고 직관적인 문법빠른 성능Oracle의 표준 방법여러 문자열을 연결할 때 코드가 길어질 수 있음 2. CONCAT 함수 활용 CONCAT 함수는 두 개의 문자열을 연결하는 SQL 표준 함수이다.SELECT CONCAT('Hello', ' World') AS res..

이 오류는 참조 무결성 제약 조건 위반으로 발생한다.간단히 말해서,부모 테이블의 레코드를 삭제하려고 할 때 해당 레코드를 참조하는 자식 테이블의 레코드가 존재할 경우 발생하는 오류다. 예시 -- 부서 테이블 (부모)CREATE TABLE DEPARTMENT ( DEPT_ID NUMBER PRIMARY KEY, DEPT_NAME VARCHAR2(100));-- 사원 테이블 (자식)CREATE TABLE EMPLOYEE ( EMP_ID NUMBER PRIMARY KEY, EMP_NAME VARCHAR2(100), DEPT_ID NUMBER, CONSTRAINT FK_EMP_DEPT FOREIGN KEY (DEPT_ID) REFERENCES DEPARTMENT(DEPT_ID))..

COALESCE는 SQL에서 가장 널리 사용되는 NULL 값 처리 함수이다.여러 개의 값 중에서 첫 번째로 NULL이 아닌 값을 반환해준다. SQL 표준 함수: 대부분의 RDBMS에서 지원다중 값 처리: 무제한 개수의 매개변수 지원NULL 안전성: NULL 값으로 인한 오류 방지타입 호환성: 동일한 데이터 타입 내에서 작동 COALESCE 함수 사용 방법 COALESCE(값1, 값2, 값3, ..., 기본값) COALESCE 함수는 왼쪽부터 순서대로 값을 검사한다.첫 번째 NULL이 아닌 값을 발견하면 해당 값을 반환모든 값이 NULL이면 NULL을 반환매개변수가 없으면 구문 오류 발생 사용 예 SELECT COALESCE(NULL, NULL, 'Hello', 'World') AS result..
SQL의 ALTER 명령어로 컬럼을 추가하고 삭제하는 방법을 알아보자. 1. 컬럼 추가 기본 문법ALTER TABLE 테이블명 ADD COLUMN 컬럼명 데이터타입 [제약조건]; 예-- 단일 컬럼 추가ALTER TABLE users ADD COLUMN email VARCHAR(255);-- 제약조건과 함께 추가ALTER TABLE users ADD COLUMN phone VARCHAR(20) NOT NULL;-- 기본값과 함께 추가ALTER TABLE users ADD COLUMN created_at DATETIME DEFAULT CURRENT_TIMESTAMP;-- 여러 컬럼 동시 추가 (MySQL, PostgreSQL)ALTER TABLE users ADD COLUMN address VARCHAR(..

LPAD, RPAD 함수는 보고서나 출력 형식을 맞추거나 트리 구조로 데이터를 가져올 때 유용하다. MYSQL, ORACLE, POSTGRESQL, MariaDB 에서 사용이 가능하다. LAPD, RPAD 기본 문법LPAD(string, length, pad_string);RPAD(string, length, pad_string); string: 패딩할 원본 문자열length: 최종 결과 문자열의 길이pad_string: 채울 문자 또는 문자열 (선택사항, 기본값은 공백) 사용 예 SELECT -- 문자열을 10자리로 만들고 앞, 뒤에 공백으로 채우기 LPAD('123', 5, '0'), RPAD('123', 5, '0'), -- 문자열을 8자리로 만들고 앞에 '*'로 채우기 ..

해당 오류는 일반적으로 문자열을 숫자로 변환하려 할 때(TO_CHAR) 실패할 경우 발생한다. 1. 해당 컬럼의 데이터 타입 확인 먼저 컬럼이 DATE 타입인지 확인해야 한다. 만약 해당 컬럼이 VARCHAR2, CHAR, 또는 숫자(NUMBMER) 형이라면 TO_CHAR는 문자열을 숫자로 바꾸려 하다가 오류를 발생시킬 수 있다.조치: 아래처럼 TO_DATE로 먼저 형변환을 하고 TO_CHAR를 적용해야 한다.NVL(TO_CHAR(TO_DATE(DATE_COL, "YYYYMMDD"), "YY-MM-DD"), "--") AS DT위 쿼리는 예시이며, 실제 문자열 날짜 포맷(YYYY-MM-DD 등)에 맞춰 TO_DATE 포맷을 맞춰야 한다. 2. NULL이 아닌 "잘못된 값"이 들어 있을 경우 예를 들어..