반응형
- Character types / why should we use char instead of varchar?
- Numeric types
- Boolean types
- Temporal types
- UUID for storing Universally Unique Identifiers
- Array for storing array strings, numbers, etc...
- JSON stores JSON data
- hstore stores key-value pair
- User defined data
User-defined Data Types
create domain : 테이블을 만들때, 특정 타입에 대해 제약조건을 걸어주는것 (스키마 내부)
일반적으로 제약조건을 걸어줄 때의 쿼리
CREATE TABLE mailing_list (
id SERIAL PRIMARY KEY,
first_name VARCHAR NOT NULL,
last_name VARCHAR NOT NULL,
email VARCHAR NOT NULL,
CHECK (
first_name !~ '\s'
AND last_name !~ '\s'
)
);
create domain을 사용하여 varchar type으로 contact_name이라는 새 도메인을 생성.
CREATE DOMAIN contact_name AS
VARCHAR NOT NULL CHECK (value !~ '\s');
해당 도메인의 이름을 data type으로 사용한다.
CREATE TABLE mailing_list (
id serial PRIMARY KEY,
first_name contact_name,
last_name contact_name,
email VARCHAR NOT NULL
);
이후 쿼리문
INSERT INTO mailing_list (first_name, last_name, email)
VALUES('Jame V','Doe','jame.doe@example.com');
//결과
ERROR: value for domain contact_name violates check constraint "contact_name_check"
INSERT INTO mailing_list (first_name, last_name, email)
VALUES('Jane','Doe','jane.doe@example.com');
//결과
정상입력
\dD 를 사용하면 모든 도메인을 볼 수 있다.
test=#\dD
List of domains
Schema | Name | Type | Modifier | Check
--------+--------------+-------------------+----------+-----------------------------------
public | contact_name | character varying | not null | CHECK (VALUE::text !~ '\s'::text)
(1 row)
create type : 특정 컬럼을 미리 정해 반환하는 함수를 만들 수 있다.
1. film_summary 생성
CREATE TYPE film_summary AS (
film_id INT,
title VARCHAR,
release_year SMALLINT
);
2. film_summary data type을 function의 return type으로 지정한다.
CREATE OR REPLACE FUNCTION get_film_summary (f_id INT)
RETURNS film_summary AS
$$
SELECT
film_id,
title,
release_year
FROM
film
WHERE
film_id = f_id ;
$$
LANGUAGE SQL;
3. get_film_summary() function을 호출한다.
SELECT * FROM get_film_summary (40);
반응형
'DB' 카테고리의 다른 글
[MSSQL] VARCHAR(MAX|N) 길이별 성능차이 및 NVARCHAR와의 성능차이에 관해.. (0) | 2022.02.08 |
---|---|
[PostgreSQL] 기본 데이터 타입 정리 (0) | 2020.09.01 |
[PostgreSQL] 기본 데이터 타입 정리 - hstore (0) | 2020.09.01 |
[PostgreSQL] 기본 데이터 타입 정리 - JSON (0) | 2020.09.01 |
[PostgreSQL] 기본 데이터 타입 정리 - Array (0) | 2020.09.01 |
댓글