일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- spring
- DBMS
- 네트워크
- 티스토리챌린지
- 자바
- MariaDB
- mysql
- 후기
- 책
- java
- 독서
- 책추천
- git
- Javascript
- mssql
- docker
- Python
- pandas
- 개발
- AI
- 개발자
- 명령어
- Linux
- 리눅스
- 오블완
- IntelliJ
- oracle
- SQL
- PostgreSQL
- react
- Today
- Total
목록DATABASE (66)
hanker
SQL 작업을 하다 보면 문자열 앞뒤에 불필요한 공백이나 특정 문자가 들어있는 경우가 많은데, 이럴 때 Oracle에서 사용하는 함수가 바로 LTRIM, RTRIM, TRIM이다. 이번 글에서는 문자열의 공백을 제거해주는 위 함수들에 대해서 알아보자. LTRIM (왼쪽 문자 제거) LTRIM은 문자열 왼쪽(앞쪽)에 있는 공백이나 지정한 문자를 제거한다. 문법LTRIM(string [, set]) 예제SELECT LTRIM(' ORACLE') FROM dual; -- 결과: 'ORACLE'SELECT LTRIM('00012345', '0') FROM dual; -- 결과: '12345'SELECT LTRIM('ABCABCXYZ', 'ABC') FROM dual; -- 결..
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..
PIVOT은 행(Row) 데이터를 열(Column)로 변환하는 SQL 기능이다.즉, 특정 컬럼 값을 기준으로 데이터를 펼쳐서 요약된 형태로 보여준다. 기본 문법 SELECT *FROM ( SELECT 컬럼1, 컬럼2, 집계대상컬럼 FROM 테이블명)PIVOT ( 집계함수(집계대상컬럼) FOR 피벗할컬럼 IN (값1, 값2, 값3 ...)); 집계함수 : SUM, AVG, COUNT 같은 집계 함수 필수피벗할컬럼 : 가로로 펼치고 싶은 기준 컬럼IN (값1, 값2 …) : 열로 바꿀 항목 지정 예제 -- EMPLOYEE 테이블부서명 | 직급 | 급여--------|--------|------인사부 | 대리 | 3000인사부 | 과장 | 4000영업부 | 대리 | 35..
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..
SQL 문장은 우리가 작성하는 문법 순서와 데이터베이스가 실제로 처리하는 논리적 실행 순서가 다르다.즉, SQL을 작성할 때는 SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY처럼 쓰지만,DB 엔진이 내부적으로 실행하는 순서는 FROM부터 시작한다. 논리적 실행 순서 실행 순서 키워드 설명 1FROM참조할 테이블과 조인(join) 처리2ONJOIN 시 조건 처리3JOIN다른 테이블과 결합4WHERE행(row) 단위 조건 필터링5GROUP BY행들을 그룹으로 묶음6HAVING그룹 단위 조건 필터링7SELECT필요한 컬럼 선택, 계산8DISTINCT중복 제거9ORDER BY정렬10LIMIT / OFFSET결과 행 개수 제한 SELECT department,..
Oracle의 WITH 절은 공통 테이블 표현식(Common Table Expression, CTE)을 정의하는 구문으로,복잡한 쿼리를 더 읽기 쉽고 구조화된 형태로 작성할 수 있게 해준다. 기본 구문WITH cte_name AS ( SELECT ... FROM ... WHERE ...)SELECT ...FROM cte_nameWHERE ...; 임시 결과 집합 생성: WITH 절로 정의된 CTE는 쿼리 실행 중에만 존재하는 임시 테이블처럼 작동한다. 실제로는 뷰나 인라인 뷰와 유사하지만, 메인 쿼리에서 여러 번 참조할 수 있어 더 효율적이다.재귀 쿼리 지원: WITH RECURSIVE를 사용하여 계층적 데이터나 트리 구조를 처리하는 재귀 쿼리를 작성할 수 있다. 기본 사용법 WITH h..
각 데이터베이스 벤더는 고유한 기본 포트를 사용하며, 이는 시스템 관리자와 개발자가 파악하고 알아야 할 정보이다. 이번 글에서 각 RDBMS 기본 포트에 대해서 알아보자. MySQL/MariaDB 포트 번호: 3306프로토콜: TCP서비스명: mysql -- 포트 확인 명령어SHOW VARIABLES LIKE 'port'; PostgreSQL 포트 번호: 5432프로토콜: TCP서비스명: postgresql # PostgreSQL 포트 확인psql -c "SHOW port;" Microsoft SQL Server 포트 번호: 1433 (기본 인스턴스)프로토콜: TCP서비스명: mssql-server -- SQL Server 포트 확인SELECT local_tcp_port FROM sys.dm_e..
데이터베이스 순수 연산자(Pure Operators)는 관계형 대수(Relational Algebra)에서 정의된 기본 연산자로,관계형 데이터베이스의 이론적 토대를 형성한다. 이 연산자는 테이블(릴레이션) 간의 데이터 조작과 질의를 위한 수학적 기반을 제공하며,SQL의 핵심 개념들과 직접적으로 연결된다. 순수 연산자의 주요 특징 수학적 정확성: 집합론과 논리학에 기반한 엄밀한 정의완전성: 모든 관계형 질의를 표현할 수 있는 완전한 연산자 집합최적화 가능성: 질의 최적화기가 활용할 수 있는 수학적 속성들 보유 순수 연산자의 종류 1. 선택(Selection) 연산자 - σ (시그마)정의: 주어진 조건을 만족하는 튜플들만을 선택하는 연산자이다.문법: σ조건(릴레이션)SQL 대응: WHERE 절-- 예시: ..
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..