어쩌다 보니.. 수업에서 여태 써왔던 MYSQL이 아닌 POSTGRESQL을 사용하게 되었다.
현재 user/role 출력
\du
show tables
\dt
desc table_name
\d table_name
use database_name
\c database_name;
이름 yy 비밀번호 zz 유저 생성.
create user yy with password 'zz'
자동 증가하는 PK인 ID 등록. MYSQL의 AUTO_INCREMENT와 같음
create table t (ID serial PRIMARY_KEY);
postgresql에서 테이블명, 컬럼명은 소문자를 권장한다. 자동 소문자로 변환되기도 한다.
명시적으로 대문자를 해주고 싶으면 따옴표로 감싸주면 된다.
create table "Hello"
테이블명 변경
alter table director2 rename to director;
PK 지정
create table example(exam_ID integer PRIMARY KEY)
FK 지정
create table example2(exam_ID integer REFERENCES example ( exam_ID ))
해당 모든 테이블 삭제
DROP SCHEMA public CASCADE; CREATE SCHEMA public;
stackoverflow.com/questions/3327312/how-can-i-drop-all-the-tables-in-a-postgresql-database
중복되는 특정 컬럼데이터 무시
create 할 때 UNIQUE로 설정해준 뒤
insert into table_name (key_value) values ('key') on conflict (key_value) do nothing
이때, serai로 설정한 넘버같은 경우는 입력되지 않으면서 값이 건너뛰어질 수 있다.
SELECT setval('tablename_colname_seq', MAX(colname), true) FROM tablename; 으로 설정해줘서 다시 초기화해주면 된다.