DROP TABLE IF EXISTS를 이용하면 테이블이 존재하지 않을 때만 테이블 삭제를 시도하는 것이 가능하다. 그러나 standard SQL은 아니다.
컬럼에 default value를 가지게 할 수도 있음 - 데이터가 insert되는 시점에 값이 들어감...timestamp같은 경우에 유용하게 사용가능
CREATE TABLE products (
product_no integer,
name text,
price numeric DEFAULT 9.99
);
integer type에 다음 값으로 채워넣기
CREATE TABLE products (
product_no integer DEFAULT nextval(’products_product_no_seq’),
...
);
nextval이라는 함수가 따로 있음
제약조건 걸기(check constraints)
CREATE TABLE products (
product_no integer,
name text,
price numeric CHECK (price > 0)
);
제약 조건에 이름 붙여서 걸기
CREATE TABLE products (
product_no integer,
name text,
price numeric CONSTRAINT positive_price CHECK (price > 0)
);
컬럼과의 관계로 제약조건 걸기
CREATE TABLE products (
product_no integer,
name text,
price numeric CHECK (price > 0),
discounted_price numeric CHECK (discounted_price > 0),
CHECK (price > discounted_price)
);
여러개의 제약 조건 걸기
CREATE TABLE products (
product_no integer,
name text,
price numeric CHECK (price > 0),
discounted_price numeric,
CHECK (discounted_price > 0 AND price > discounted_price)
);
It’s a matter
외래키 있는 데이터 삭제시 2가지 대응 옵션
CREATE TABLE order_items (
product_no integer REFERENCES products ON DELETE RESTRICT, 삭제 시도 시 에러남, 딸린 데이터들 다 삭제하고 나서야 이 데이터 삭제가 가능함.
order_id integer REFERENCES orders ON DELETE CASCADE, 삭제 시도시 붙어있는 데이터들 다 같이 삭제..
quantity integer,
PRIMARY KEY (product_no, order_id)
);
스키마와 권한
스키마 search path 보기
show search_path
결과중 가장 첫번째에 있는 것이 current schema라고 볼 수 있음
set serch_path to myschema, public; 이런 식으로 serch path 설정이 가능함
schema사용을 위해서는 기본적으로 Usage 권한이 부여되어야 한다.
public schema에는 기본적으로 모든 사용자에게 create과 usage건한이 부여됨.
->맘에 안들면 revoke하면 됨.(revoke create on schema public from public)
pg_catalog schema
system tables, built-in data types, functions, operator를 포함한 스키마
상속
상속시의 부모 테이블의 check constraints와 not-null constraints는 상속되지만, 다른 constraints(unique, primary key, foreign key)는 상속되지 않음
'COMPUTER > DATABASE' 카테고리의 다른 글
Partitioning의 장점 및 PostgreSQL에서의 Partitioning (0) | 2015.10.28 |
---|---|
PostgreSQL 컬럼수 제한 (0) | 2015.10.26 |
postgreSQL 유용한 쿼리 (0) | 2015.10.20 |
altibase db connection 예제 (0) | 2014.09.17 |
sql 여러행 비교 - 서브쿼리가 여러개의 행을 리턴할 때 (0) | 2013.10.10 |