※ 일본의 한 블로그 글을 번역한 포스트입니다. 오역 및 의역, 직역이 있일 수 있으며 틀린 내용은 지적 부탁드립니다.
DB의 실행
$ psql -d 데이터베이스명;
postgres를 먼저 실행한다.
$ psql -d postgres;
만약 비밀번호에서 에러가 발생한 경우 아래의 커맨드와 같이 관리자를 지정하여 패스워드 postgres를 입력하자.
$ psql -d postgres -U postgres
DB의 생성과 삭제
DB의 생성
기본 구문이다.
# CREATE DATABASE 데이터베이스명;
예를 들면 kenko이라는 이름의 DB를 작성한다면 다음과 같다.
# CREATE DATABASE kenko;
참고로 이 커맨드로 DB의 목록을 확인할 수 있다.
# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+--------+----------+-------------+-------------+-------------------
kenko | hoge | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
postgres | hoge | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
물론 권한의 지정도 가능하다.
DB의 삭제
데이터 베이스를 삭제하고 싶은 경우 다음의 커맨드를 입력한다.
# DROP DATABASE 데이터베이스명;
테이블의 생성
테이블은 다음과 같이 생성한다.
# CREATE TABLE 테이블명
# (컬럼1 데이터형 제약,
# 컬럼1 데이터형 제약,
# 컬럼1 데이터형 제약,
# PRIMARY KEY(컬럼1));
제약의 경우 다음의 것들로 설정할 수 있다.
제약 | 의미 |
PRIMARY KEY | 기본키 (주키) |
UNIQUE | 동일한 열에서 중복되는 값을 피함 |
REFERENCES 표 이름(열 이름) | 외부키로 한다. 참고처는 지정한 표 이름(열 이름) |
CHECK(조건) | 조건에 맞는 값만 입력 |
NOT NULL | NULL은 입력불가 |
DEFAULT 값 | 기본 값을 지정 |
아까 전에 만든 kenko이라는 DB에 kenko_record 테이블을 작성한다.
# CREATE TABLE kenko_record
# (id char(4) not null,
# name text not null,
# food text not null,
# PRIMARY KEY(id));
아래의 커맨드으로 뷰를 포함한 테이블의 목록을 확인할 수 있다.
# \d
아까 만든 테이블이 생성됐음을 알 수 있다.
List of relations
Schema | Name | Type | Owner
--------+--------------+-------+--------
public | kenko_record | table | hiropy
(1 row)
참고로 아래의 커맨드로 뷰를 포함하지 않은 테이블의 목록을 확인할 수 있다.
# \dt
보충 : 데이터형
문자형
데이터형 | 최대길이 | 개요 |
VARCHAR(n) | 1GB | 길이가 n 문자의 가변 문자열 |
CHAR(n) | 1GB | 길이가 n 문자의 고정 길이 문자 데이터. 지정한 길이보다 짧은 경우 입력은 되지만 남은 문자길이 만큼 여백이 추가됨. |
TEXT | 1GB | 길이 지정없는 가변형 문자열 |
숫자형
데이터형 | 최대 길이 | 개요 |
INTEGER | 4바이트 | 정수형. 숫자의 범위와 저장 사이즈, 성능의 밸런스는 NUMBER가 좋음. |
SMALLINT | 2바이트 | 범위가 좁은 정수형 |
BIGINT | 8바이트 | 범위가 놃은 정수형 |
NUMBERIC | 1000자릿수 | 고정 소수점. 소수점부터의 자릿수와 전체의 자릿수를 지정할 수 있음. |
REAL | 4바이트 | 단정밀도 부동 소수점 |
DOUBLE PRECISON | 8바이트 | 배정밀도 부동 소수점 |
날짜형
데이터형 | 최대 길이 | 개요 |
DATE | 4바이트 | 1일 단위로 날짜만을 표시하는 데이터 |
TIMESTAMP | 8바이트 | 날짜와 시간을 둘 다 표시하는 데이터 |
바이너리형
데이터형 | 최대 길이 | 개요 |
bytea | 1GB | 가변 길이의 바이너리 데이터 |
라지 오브젝트 | 2GB | 데이터 베이스내에 저장 |
DB에 등록
insert문으로 칼럼에 대응되는 데이터형으로 데이터를 등록할 수 있다.
# INSERT INTO 테이블
# (컬럼1,컬럼2,컬럼3) VALUES
# (컬럼1의 새로운 데이터, 컬럼2의 새로운 데이터, 컬럼3의 새로운 데이터);
여러 개의 레코드를 등록할 때에는 다음과 같이 연속된 값을 기재하면 등록된다.
# INSERT INTO 테이블명
# (컬럼1,컬럼2,컬럼3)VALUES
# (컬럼1의 새로운 데이터, 컬럼2 의 새로운 데이터, 컬럼3 의 새로운 데이터),
# (컬럼1의 새로운 데이터, 컬럼2 의 새로운 데이터, 컬럼3 의 새로운 데이터),
# (컬럼1의 새로운 데이터, 컬럼2 의 새로운 데이터, 컬럼3 의 새로운 데이터);
예를 들면 방금 전에 만든 kenko_record 테이블에 데이터를 등록하면 다음과 같이 할 수 있다.
kenko=# INSERT INTO kenko_record(id,name,food) VALUES (1,'hoge','주먹밥');
일단 select 문으로 내용을 확인해보자.
kenko=# select * from kenko_record;
입력한 데이터가 등록된 것을 확인할 수 있다.
id | name | food
------+------+----------
1 | hoge | 주먹밥
(1 row)
테이블의 변경과 삭제
변경은 조금 길다.
# ALTER TABLE 테이블 rename column 변경대상칼럼명 to 새로운칼렁명;
삭제는 간단하다.
# DROP TABLE 테이블명;
뷰의 생성과 삭제
이번에는 딱히 뷰를 만들 필요는 없지만, 여러 개의 쿼리를 뷰로 해두면 참고하기 쉬워지거나 보기 싫은 칼럼을 숨기는 것이 가능하다.
# CREATE VIEW 뷰명 AS SELECT 컬럼명 FROM 테이블명;
삭제도 간단하다.
# DROP VIEW 뷰명
참고자료
'IT > WEB' 카테고리의 다른 글
[Django] User모델 커스터마이즈하기 (커스텀 User 모델) (0) | 2022.06.29 |
---|---|
[Django] Django 개발을 시작할 때, 최적의 프로젝트 디렉토리 구성 (0) | 2022.06.17 |
console.log(); 외 다양한 디버그 방법 (0) | 2022.05.22 |
XPATH 사용법·작성법 (0) | 2021.01.13 |
[Django] 테이블(모델)의 JOIN(3) ; prefetch_related() (0) | 2020.11.18 |