[SQL] 오라클 문자함수 LPAD, RPAD 로 문자열 길이 채우기
·
STUDY/DB SQL
LPAD, RPAD오라클의 LPAD 와 RPAD 는 둘 다 문자열의 길이를 일정하게 맞출 때 사용하는 문자 채우기 함수예요.차이는 간단히 말해 왼쪽을 채우느냐(LPAD), 오른쪽을 채우느냐(RPAD) 입니다.LPAD(문자열, 전체길이, 채울문자)RPAD(문자열, 전체길이, 채울문자)문자열 : 원본 문자열전체길이 : 결과 문자열의 총길이채울문자 : 남는 부분을 채울문자 (생략시 기본은 ' ' 공백) LPAD (왼쪽 채우기)SELECT LPAD('123', 5, '*') AS 왼쪽채움 FROM DUAL;결과 : '**123' RPAD (오른쪽 채우기)SELECT RPAD('123', 5, '*') AS 오른쪽채움 FROM DUAL;결과 : '123**'
[SQL] 오라클 조건문 DECODE 사용방법
·
STUDY/DB SQL
DECODE오라클의 DECODE 함수는 CASE WHEN문과 비슷하게 조건에 따라 값을 다르게 반환할 때 사용하는 함수입니다.“값이 A면 B를 반환하고, 아니면 C를 반환해라” 과 같은 조건 분기용 함수입니다. 기본문법DECODE(표현식, 검색값1, 결과값1, 검색값2, 결과값2, ..., 기본값) 표현식의 결과가 검색값1과 같으면 결과값1을 반환같지 않으면 다음 검색값2를 비교모두 일치하지 않으면 마지막 기본값을 반환 예제DECODE사용 SELECT EMP_NAME, DECODE(DEPT_NO, 10, '인사팀', 20, '개발팀', 30, '영업팀', '기타') AS 부서명FROM EMPLOYEE; DECODE는..
[SQL] SQL 실행순서
·
STUDY/DB SQL
SQL의 실행 순서(Execution Order)는 우리가 작성하는 SQL문(SELECT 문)의 작성 순서와는 다릅니다. SQL 실행순서 (논리적 처리 순서)순서절(Clause)설명1FROM데이터를 가져올 테이블을 결정하고 조인 수행2ON(조인 조건) 여러 테이블을 결합할 때 조건 평가3JOIN실제로 테이블들을 결합4WHERE행(Row) 단위로 조건을 평가하여 필터링5GROUP BY남은 행들을 그룹화6HAVING그룹화된 결과에 대한 조건을 평가 (그룹 필터링)7SELECT필요한 컬럼 또는 계산식(집계함수 포함) 선택8DISTINCT중복 제거9ORDER BY결과를 정렬10LIMIT / OFFSET출력할 행 수 제한 (DBMS에 따라 다름) 핵심 요약작성 순서:SELECT → FROM → WHERE → GR..
[SQL] EXISTS 와 IN의 차이점
·
STUDY/DB SQL
EXISTS와 IN은 부분집합(subquery)을 다룰 때 자주 쓰이는 조건문이지만, 동작 방식과 성능 특성이 꽤 다릅니다.EXISTS 와 IN의 차이점구분 IN EXISTS 의미값이 목록에 포함되어 있는가?조건을 만족하는 행이 존재하는가?반환값참 / 거짓 (리스트 내 존재 여부)참 / 거짓 (조건 만족 여부)평가 방식외부 쿼리의 값을 내부 쿼리의 결과 리스트와 비교내부 쿼리가 조건을 만족하는 행을 찾으면 즉시 true 반환비교 대상값(value) 중심존재(existence) 중심 IN 사용 예시SELECT nameFROM employeesWHERE dept_id IN ( SELECT id FROM departments WHERE location = 'Seoul');departments..
[MyBatis] <sql>, <include> 사용방법
·
STUDY/DB SQL
기본개념는 태그로 정의된 SQL 조각(fragment)을 불러올 때 사용합니다. 사용방법 1. 공통 SQL 조각 정의하기 태그를 사용해 SQL 조각을 정의합니다.이 조각은 mapper XML 안 어디서든 재사용할 수 있습니다. id, name, email, created_at, updated_at id 속성으로 이 SQL 조각의 이름을 지정합니다.보통은 컬럼 리스트나 where 조건 등 반복되는 부분을 모듈화합니다. 2. 로 가져오기 다른 SQL 문에서 로 해당 조각을 불러옵니다. SELECT FROM users 위 예시는 다음 SQL로 확장됩니다:SELECT id, name, email, created_at, updated_atFROM users 3. 매개변수 전달 ..
[SQL] 현실 속 외래키(foregin key) 활용 실태
·
STUDY/DB SQL
"외래 키는 개념적으로는 설계에 포함되지만, 실제 데이터베이스에서는 제약 조건 없이 관리되는 경우가 많습니다."Foregin key를 실질적으론 잘 사용하지 않고 개념만 가지고 사용한다는게 사실을 처음 들었다. 실제로 많은 개발자들이 데이터베이스에서 외래 키(Foreign Key)를 물리적으로 설정하지 않고, 개념적으로만 사용하는 경우가 많은데 아마 아래와 같은 이유들로 인한 것 같다.1. 성능 이슈: 대규모 트랜잭션이 발생하거나 많은 데이터를 저장하는 경우 외래 키 제약 조건이 성능에 부정적인 영향을 줄 수 있습니다. 따라서 물리적으로 외래 키를 설정하면 데이터베이스의 속도가 저하될 수 있습니다.2. 분산 시스템: 마이크로서비스 아키텍처 같은 분산 시스템에서는 여러 데이터베이스를 사용할 수 있기 때문에..
[SQL] 행 개수 지정 조회 SELECT TOP LIMIT FETCH FIRST ROWNUM
·
STUDY/DB SQL
SQL SELECT TOP 절SQL의 SELECT TOP 절은 반환할 레코드의 수를 제한할 때 사용하는 절입니다. 주로 수천 개 이상의 레코드를 포함한 대형 테이블에서 필요한 수만큼의 레코드만 조회하여 성능을 최적화하는 데 유용합니다.그러나 모든 데이터베이스가 SELECT TOP을 지원하지는 않습니다. 데이터베이스에 따라 비슷한 기능을 제공하는 다른 구문이 있습니다. SQL Server / MS Access 구문:SELECT TOP number|percent column_name(s)FROM table_nameWHERE condition; MySQL 구문:SELECT column_name(s)FROM table_nameWHERE conditionLIMIT number; Oracle 12 구문:SELECT..
[MySQL] 테이블 스키마 백업하기
·
STUDY/DB SQL
데이터값(레코드값)을 제외한 데이터베이스 스키마(테이블구조)만 백업하는 방법mysqldump명령어로 백업할 때에 -d옵션을 사용하면 백업대상 데이터베이스의 스키마(테이블구조)만을 백업 결과파일에 저장해준다. 즉 데이터값(레코드값)을 생성하는 SQL문은 결과파일에 저장되지 않는다는 의미이다. mysqldump -u DB사용자명 -p -d DB명 > 파일명 [root@sulinux bin]# pwd/usr/local/mysql/bin[root@sulinux bin]# ./mysqldump -u root -p -d tempdb > tempdb.sqlEnter password: ********[root@sulinux bin]# ls -l tempdb.sql-rw-r--r-- 1 root root ..