SQL 18

[PostgreSQL] GENERATED / Sequence / Serial

MySQL에서의 Auot Increment는 PostgreSQL에서 다음과 같은 3가지 방법을 사용해야 한다. 1. GNERATED { ALWAYS | BY DEFAULT } AS IDENTITY2. Sequence3. Serial (ANSI SQL 아님) https://lovethefeel.tistory.com/57 [PostgreSQL] 자동증가 방법Postgresql 자동 증가 Sequence Serial GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY Sequence 생성 CREATE SEQUENCE tn_user_id_seq; 테이블 생성 CREATE TABLE tn_user_seq ( id BIGINT NOT NULL DEFAULT NEXTVAL('tn_use..

SQL 2025.05.08

[SQL] WITH 문

SQL의 WITH문은 쿼리를 작성할 때 하나의 서브쿼리 또는 임시 테이블처럼 활용할 수 있는 기능이다.코드 가독성 향상성능 개선: WITH문을 통해 중복 실행 줄일 수 있음재사용성: 정의된 WITH절은 메인 쿼리 내에서 여러 번 참조될 수 있어 코드의 재사용성을 높임 WITH 테이블명1 AS ( -- 서브쿼리 ) [, 테이블명2 AS ( -- 콤마로 구분하여 연속 정의 가능 -- 서브쿼리 ) , 테이블명2 AS ( -- 서브쿼리 )] SELECT * FROM 테이블명1 [JOIN 테이블명2 LEFT JOIN 테이블명3]

SQL 2025.03.27

[SQL] NULL 관련 함수

SQL에서 데이터를 다룰 때 NULL에 유의해야 한다.왜냐하면 NULL 값을 포함하는 연산의 결과가 모두 NULL 값으로 나오기 때문이다.이같은 특성 때문에 NULL 값을 다루기 위한 함수가 필요하다.특히 NULL 을 포함하지 않은 결과를 얻고 싶을 때, NVL 함수(Oracle) 또는 ISNULL 함수(SQL Server)가 많이 사용된다.  NVL(표현식1, 표현식2) /ISNULL(표현식1, 표현식2)표현식1의 결과값이 NULL이면 표현식2의 값을 출력한다.단, 표현식1과 표현식2의 결과 데이터 타입이 같아야 한다.NULLIF(표현식1, 표현식2)표현식1이 표현식2와 같으면  NULL을, 같지 않으면 표현식 1을 반환한다.특정 값을 NULL로 대체하는 경우에 유용하게 사용될 수 있다.COALESCE..

SQL 2024.11.03

[SQL] 내장함수 (단일행 함수와 다중행 함수)

내장함수(Built-in Function)는 벤더에서 제공하는 함수를 말하며,단일행 함수(Single-Row Function)와 다중행 함수(Multi-Row Function)로 나눌 수 있다.  단일행 함수 (Single-Row Function)함수의 입력 행수가 1개단일 값 반환SELECT, WHERE, ORDER BY, UPDATE의 SET절에서 사용 가능문자형 함수LOWER, UPPER, SUBSTR / SUBSTRING, LENGTH / LEN, LTRIM, RTRIM, TRIM, ASCII 등숫자형 함수ABS, MOD, ROUND, TRUNC, SIGN, CHR/CHAR, CEIL / CEILING, FLOOR, EXP, LOG, LN, POWER, SIN, COS, TAN 등날짜형 함수SYS..

SQL 2024.11.03

[SQL] TRUNCATE와 DELETE의 차이점

TRUNCATE와 DELETE는 모두 데이터를 삭제하는 명령인데TRUNCATE는 DDL(자동커밋)이고DELETE는 DML이다.이 외에도 몇가지의 차이점이 존재한다.이유는 DELETE와 TRUNCATE의 데이터 삭제 방법이 다르기 때문이다. DELETEWHERE절을 사용하여 테이블에 있는 데이터를 하나하나 선택하여 제거한다. TRUNCATE전체 데이터를 한번에 삭제한다.HWM(high-water mark)를 처음으로 이동시키는 방식으로 테이블 구조는 그대로 남겨둔 채 모든 행을 삭제한다.  SQL테이블 존재속도복구DELETEDMLO아주 느리다ROLLBACK(ONLINE)TRUNCATEDDLO매우 느리다FLASHBACK DATABASE(OFFLINE)DROPDDLO매우 빠르다FLASHBACK DROP(ONL..

SQL 2024.10.02

[SQL] (오라클 기준) GROUP BY 확장함수(ROLLUP, CUBE)

--부서별 평균급여와 부서 및 직무별 평균 급여를 조회하세요.SELECT department_id, NULL AS job_id, avg(salary)FROM employeesGROUP BY department_idUNION ALL -- 첫 번째 컬럼을 따라감 ( SELECT 두 번 수행하게 됨 -- cost 두배)SELECT department_id, job_id, avg(salary)FROM employeesGROUP BY department_id, job_idORDER BY 1, 2;-------------------------ROLLUP(GROUP BY의 확장기능)SELECT department_id, job_id, avg(salary)FROM employeesGROUP BY ROLLUP(dep..

SQL 2024.10.01

[SQL] JOIN + USING

NATURAL JOIN은 두 재료 집합에서 이름이 같고 데이터 형이 호환되는 컬럼끼리 조인해주는데 조인 결과 집합에 조인 컬럼은 한 번만 나타나고 ON절을 사용하지 않아서 조인 조건이 없어 편하지만, 조인 컬럼과 조인 조건을 제어할 수 없기 때문에호환되는 컬럼이 두 개 이상이거나 할 때 원하지 않은 조인 결과가 나올 수 있다. 이 때 JOIN ~ USING(컬럼1, 컬럼2)를 유용하게 쓰면 좋다.JOIN ~ USING은 NATURAL 조인을 하되, 필요한 컬럼만 지정하고자 할 때 사용한다. 괄호 안의 두 재료 집합에 공통인 컬럼을 써주면 된다. 이때 주의할 점은 JOIN 컬럼에 대해서는 별칭이나 테이블 이름과 같은 접두사를 붙이면 syntax 에러가 발생한다. 따라서 기준이 되는 JOIN 컬럼은 컬럼명만..

SQL 2024.10.01

[SQL] 외부 조인 주의해야할 점

외부 조인 (OUTER JOIN)을 할 때, 조인조건에 유의해야 한다.조인 조건을 만족하지 않는 행도 새로운 재료 집합에 포함되기 때문 LEFT OUTER JOIN (LEFT JOIN)은 왼쪽에 무조건 1행 이상이 나옴 (INNER JOIN 탈락행의 오른쪽에느 NULL 값이 추가됨)RIGHT OUTER JOIN (RIGHT JOIN)은 오른쪽에 무조건 1행 이상이 나옴 SELECT e.last_name, e.job_id, e.salary, d.department_nameFROM employees e RIGHT JOIN departments d ON e.department_id = d.department_id AND LENGTH(d.department_name) > 10; -- JOIN 조건에서 탈락해..

SQL 2024.09.30