PostgreSQL Basics
대충 아래 링크 강의에 나오는 것 정도를 정리했다.
https://www.freecodecamp.org/learn/relational-database/learn-relational-databases-by-building-a-mario-database/build-a-mario-database
DB 접속: psql --username=$USERNAME --dbname=$DBNAME (bash에서)
psql 명령어
앞에 \ 붙어있는 명령어들은 psql에서 사용하는 명령어들이다.
- DB list 확인:
\l - 특정 DB 접속:
\c <DB_NAME> - 특정 DB에 접속한 상태에서 table list 확인:
\d, - 특정 table의 schema 확인:
\d <TABLE_NAME>
SQL 명령어
SQL 쿼리 명령어들 (CREATE, SELECT, INSERT, UPDATE, DELETE 등)은 뒤에 세미콜론을 붙여야 한다.
CREATE
- DB 생성:
CREATE DATABASE <db_name>; - Table 생성:
CREATE TABLE <table_name> (column1 datatype [constraint], column2 datatype [constraint], ...);
DROP
- Table 삭제:
DROP TABLE <table_name>; - DB 삭제:
DROP DATABASE <db_name>;
INSERT
- Tuple 추가:
INSERT INTO <table_name> (column1, column2, ...) VALUES (value1, value2, ...);한 번에 여러 tuple도 추가할 수 있다.
INSERT INTO <table_name> (column1, column2, ...) VALUES (value1, value2, ...), (value1, value2, ...), ...;
DELETE
- Tuple 삭제:
DELETE FROM <table_name> WHERE <condition>;- Equal은
==가 아니라=이다.
- Equal은
ALTER
- Table 이름 변경:
ALTER TABLE <table_name> RENAME TO <new_table_name>; - DB 이름 변경:
ALTER DATABASE <db_name> RENAME TO <new_db_name>; - Table scheme 변경:
- Column 추가:
ALTER TABLE <table_name> ADD <column_name> <data_type> [<constraint_name>];- 외래 키로 추가
ALTER TABLE <table_name> ADD COLUMN <column_name> <data_type> REFERENCES <another_table_name>(<another_column_name>);
- 외래 키로 추가
- Column 삭제:
ALTER TABLE <table_name> DROP <column_name>; - Column 이름 변경:
ALTER TABLE <table_name> RENAME COLUMN <column_name> TO <new_column_name>; - Column 타입 변경:
ALTER TABLE <table_name> ALTER COLUMN <column_name> TYPE <new_data_type>;
- Column 추가:
- Column에 constraint 추가:
NOT NULLconstraint 추가:
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET NOT NULL;UNIQUEconstraint 추가:
ALTER TABLE <table_name> ADD CONSTRAINT <constraint_name> UNIQUE (<column_name>);
- 특정 Column을 기본 키로 설정:
ALTER TABLE <table_name> ADD PRIMARY KEY (<column_name>); - 특정 Column을 외래 키로 설정:
ALTER TABLE <table_name> ADD FOREIGN KEY (<column_name>) REFERENCES <another_table_name>(<another_column_name>);
Update
- Tuple 업데이트:
UPDATE <table_name> SET column1 = value1, column2 = value2, ... WHERE <condition>;
SELECT
SELECT column1, column2, ...
FROM <table_name>
[WHERE <condition>]
[ORDER BY column1, column2, ... [ASC|DESC]]
[LIMIT <number>]
;
group by, having, join, 집계 함수, 중첩 쿼리 같은 것 까지 여기서 설명하긴 너무 길다. 다른 글에서 다루려면 join에 포스트 하나, 집계 함수에 포스트 하나, 중첩 쿼리에 포스트 하나 정도 될 것 같긴 한데…
자료형
int: 다 알고 있을 그거numeric(precision, scale): 고정소수점 숫자. precision은 전체 자릿수, scale은 소수점 이하 자릿수serial: auto-incrementing integervarchar(n): 최대 n글자의 가변 길이 문자열text: 길이 제한 없는 가변 길이 문자열- 문자열은 ‘‘로 감싸야 한다. ““는 table, column 이름 같은 데 사용된다.
boolean:true또는falsedate: 날짜.YYYY-MM-DD형식 문자열 직접 입력 가능
Leave a comment