아래 작성되어지는 SQL은 postgresql 기준

DB 기초

CREATE TABLE UNIQUE 구문

-- 아래처럼 UNIQUE구문을 걸면 col1, col2, col3가 전부 같은 값을 가지는 행을 INSERT할 때 에러가 발생한다.
CREATE TABLE [schema_name].[table_name] (
	col1 INTEGER,
	col2 INTEGER,
	col3 TEXT,
	UNIQUE (col1, col2, col3)
)
-- 정답은 col1값이 중복인지 먼저 체크하고 다음 세 개 값의 중복성을 체크한다.
-- col1에서 중복되는 값이 있다면 INSERT가 진행되지 않는다.
CREATE TABLE [schema_name].[table_name] (
	col1 INTEGER UNIQUE,
	col2 INTEGER,
	col3 TEXT,
	UNIQUE (col1, col2, col3)
)
-- 아래 테이블에서 (1, 2, NULL)를 먼저 INSERT하고 (1, 2, NULL)를 다음으로 삽입하면 위 사진과 같이 둘 다 삽입되는 걸 볼 수 있다.
-- 이는 NULL = NULL 조건이 성립하지 않기 때문이다.
CREATE TABLE [schema_name].[table_name] (
	col1 INTEGER,
	col2 INTEGER,
	col3 TEXT,
	UNIQUE (col1, col2, col3)
)

BETWEEN 구문

-- a.col_name 이 value_1과 value_2 사이에 있는 row만 SELECT
-- 여기서 a.col_name이 정수나 실수인 경우 이하, 이상의 조건을 가지며
-- 문자열인 경우 예시로 a AND c 이라면 a, b, c로 시작하는 문자열들이 전부 SELECT 되어진다.(시작하는 첫 글자만 유효)
SELECT *
FROM [table] a
WHERE a.col_name BETWEEN value_1 AND value_2

ON CONFLICT DO NOTHING 구문

-- 아래 구문은 col1, col2, col3에 val1, val2, val3 인 ROW를 추가하는 기능
-- 하지만 col1, col2 기준 동일한 컬럼이 이미 테이블에 있다면 추가하지 않는다.

INSERT INTO schema.table (
	col1, col2, col3
)
VALUES (
	val1, val2, val3
)
ON CONFLICT (
	col1, col2
) DO NOTHING;