Menu Close

Làm việc với cơ sở dữ liệu Postgresql

Giới thiệu

Cài đặt Postgresql

Postgresql có thể được cài đặt thủ công trên host hoặc có thể sử dụng một thông qua docker cho tiện lợi cho việc tùy chỉnh.
Để chạy một container chứa Postgresql thì cần biên soạn một file docker-compose.yml với nội dung cơ bản như sau:

version: '3.1'
services:
    postgresql:
        image: postgres
        environment:
            POSTGRES_PASSWORD: dbpassword
            POSTGRES_USER: dbuser
            POSTGRES_DB: projcondb
        volumes:
            - projcondb_data:/var/lib/postgresql/data/
volumes:
    projcondb_data:

Chạy file docker-compose đã biên soạn với trên với lệnh docker-compose -f docker-compose.yml up -d
Kiểm tra container chứa postgresql có hoạt động chưa bằng docker ps -a và sẽ có một kết quả tương tự như sau:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
a5ecb54839ce        postgres            "docker-entrypoint.s…"   25 minutes ago      Up 24 minutes       5432/tcp            dockercomposes_postgresql_1

Login vào Postgresql

Bước này sẽ bắt đầu làm việc với Postgresql
– Vào container nơi chứa Postgresql với command docker exec -it <id của container> bash
– Login vào database mong muốn làm việc với lệnh psql -d projcondb -U dbuser -W và nhập mật khẩu như trong file docker-compose
– Kiêm tra trong database hiện tại có bao nhiêu relations (tables) vơi command: \dt

Tạo tables

  • Tạo một table với lệnh như sau:
create table <table name>(<column name> <type> <contraints>,<column name> <type> <contraints>);
  • Một số contraints trong postgresql:
- primary key
- unique
- check
- references
- not null
  • Ví dụ
create table users(id text primary key, username varchar(50) not null, email varchar(50) unique not null, password text not null, created_at timestamp not null);

Thay đổi tables:

  • Thêm column vào table với command:
alter table <table name> add column <column name> <type> <constraints>;

Leave a Reply

Your email address will not be published. Required fields are marked *