Thứ năm, 01/08/2013 | 00:00 GMT+7

Cách tạo, xóa & quản lý bảng trong PostgreSQL trên server cloud


PostgreSQL là gì?

PostgreSQL là một hệ quản trị database sử dụng ngôn ngữ truy vấn SQL. Đây là một hệ thống database rất ổn định và giàu tính năng được dùng để lưu trữ dữ liệu từ các ứng dụng khác trên VPS của bạn.

Trong bài viết này, ta sẽ thảo luận về cách tạo và quản lý các bảng trong giao diện postgreSQL. Bạn sẽ học cách cấu hình bảng đúng cách và sử dụng chúng để lưu trữ thông tin của bạn .

Cách cài đặt và đăng nhập vào PostgreSQL trên Ubuntu

Trong hướng dẫn này, ta sẽ cài đặt PostgreSQL trên Ubuntu 12.04, nhưng nó sẽ có sẵn trong hầu hết các repository mặc định của các bản phân phối khác.

Nhập các lệnh sau để cài đặt:

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

Sau khi cài đặt, hãy tạo một user mới để quản lý database mà ta sẽ tạo:

sudo adduser postgres_user

Đăng nhập vào user PostgreSQL mặc định (được gọi là "postgres") để tạo database và gán nó cho user mới:

sudo su - postgres
psql

Bạn sẽ được đưa vào dấu nhắc lệnh PostgreSQL.

Tạo user mới phù hợp với user hệ thống mà bạn đã tạo. Sau đó, tạo database do user đó quản lý:

CREATE USER postgres_user WITH PASSWORD 'password';
CREATE DATABASE my_postgres_db OWNER postgres_user;

Thoát ra khỏi giao diện bằng lệnh sau:

\q

Thoát khỏi account user "postgres" mặc định và đăng nhập vào user bạn đã tạo bằng các lệnh sau:

exit
sudo su - postgres_user

Đăng nhập vào database bạn đã tạo bằng lệnh sau:

psql my_postgres_db

Bây giờ ta đã sẵn sàng để tìm hiểu về quản lý bảng.

Cú pháp tạo bảng trong PostgreSQL

Database của ta chưa có bất kỳ bảng nào. Ta có thể xác minh điều này bằng cách yêu cầu PostgreSQL cung cấp cho ta danh sách các bảng có sẵn bằng lệnh này:

\d
No relations found.

Ta có thể tạo một bảng mới bằng cách tuân theo cú pháp sau:

CREATE TABLE new_table_name (
	table_column_title TYPE_OF_DATA column_constraints,
	next_column_title TYPE_OF_DATA column_constraints,
	table_constraint
	table_constraint
) INHERITS existing_table_to_inherit_from;

Phần sau dấu ngoặc đơn cho đến dấu chấm phẩy là cấu trúc tùy chọn để kế thừa tất cả các cột từ bảng hiện có ngoài các cột được liệt kê trong định nghĩa trước đó.

Phần bên trong dấu ngoặc đơn được chia thành hai phần: định nghĩa cột và ràng buộc bảng.

Định nghĩa Bảng và Cột PostgreSQL

Các định nghĩa cột tuân theo mẫu cú pháp này:

column_name data_type (optional_data_length_restriction) column_constraints

Tên cột phải tự giải thích.

Các kiểu dữ liệu PostgreSQL

Kiểu dữ liệu có thể là bất kỳ kiểu nào sau đây:

  • boolean : Sử dụng "boolean" hoặc "bool" để khai báo giá trị đúng hoặc sai.
  • giá trị ký tự
    • char : giữ một ký tự duy nhất
    • char (#) : chứa # số ký tự. Các dấu cách sẽ được chèn vào để lấp đầy bất kỳ chỗ trống nào.
    • varchar (#) : chứa tối đa # số ký tự. Có thể chứa ít hơn.
  • giá trị số nguyên
    • smallint : số nguyên từ -32768 đến 32767.
    • int : số nguyên giữa -214783648 và 214783647.
    • serial : Số nguyên được điền tự động.
  • giá trị dấu phẩy động
    • float (#) : số dấu phẩy động có độ chính xác ít nhất # điểm.
    • real : số dấu phẩy động 8 byte
    • numeric (#, after_dec) : số thực có # số chữ số và chữ số after_dec sau số thập phân
  • giá trị ngày và giờ
    • date : lưu trữ giá trị ngày
    • time : lưu trữ giá trị thời gian
    • dấu thời gian : lưu trữ giá trị ngày và giờ
    • timestamptz : lưu trữ dấu thời gian bao gồm dữ liệu múi giờ
    • khoảng thời gian : lưu trữ sự khác biệt giữa hai giá trị dấu thời gian
  • dữ liệu hình học
    • point : lưu trữ một cặp tọa độ xác định một điểm
    • line : lưu trữ một tập hợp các điểm vạch ra một đường
    • lseg : lưu trữ dữ liệu xác định một đoạn thẳng
    • box : lưu trữ dữ liệu xác định hình chữ nhật
    • polygon : lưu trữ dữ liệu xác định bất kỳ không gian kín nào
  • thông số kỹ thuật thiết bị
    • inet : lưu trữ địa chỉ IP
    • macaddr : lưu trữ địa chỉ MAC của thiết bị

Các ràng buộc về cột và bảng PostreSQL

Định nghĩa cột cũng có thể có các ràng buộc cung cấp luật cho loại dữ liệu được tìm thấy trong cột. Các giá trị sau được dùng làm các giá trị được phân tách bằng dấu cách theo kiểu dữ liệu:

  • NOT NULL : cột không được có giá trị rỗng
  • DUY NHẤT : giá trị cột không được giống nhau cho bất kỳ bản ghi nào. Null luôn được coi là một giá trị duy nhất
  • CHÍNH : sự kết hợp của hai ràng buộc trên. Chỉ được dùng một lần cho mỗi bảng
  • KIỂM TRA : đảm bảo một điều kiện là đúng với các giá trị trong cột
  • TÀI LIỆU THAM KHẢO : giá trị phải tồn tại trong một cột trong bảng khác

Sau khi các cột được xác định, các ràng buộc trên toàn bảng có thể được khai báo. Các ràng buộc trên toàn bảng có thể là DUY NHẤT, TỪ KHÓA CHÍNH, KIỂM TRA hoặc TÀI LIỆU THAM KHẢO.

Cách tạo bảng trong PostgreSQL

Hãy tạo một bảng kiểm tra để thực hành. Ta sẽ tạo một bảng có tên "pg_equiosystem" xác định các phần thiết bị playground khác nhau. Nhập định nghĩa bảng sau:

CREATE TABLE pg_equipment (
	equip_id serial PRIMARY KEY,
	type varchar (50) NOT NULL,
	color varchar (25) NOT NULL,
	location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
	install_date date
	);
NOTICE:  CREATE TABLE will create implicit sequence "pg_equipment_equip_id_seq" for serial column "pg_equipment.equip_id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "pg_equipment_pkey" for table "pg_equipment"
CREATE TABLE

Ta có thể thấy bảng mới của bạn bằng lệnh "\ d" vào dấu nhắc :

\d
                       List of relations
 Schema |           Name            |   Type   |     Owner     
--------+---------------------------+----------+---------------
 public | pg_equipment              | table    | postgres_user
 public | pg_equipment_equip_id_seq | sequence | postgres_user
(2 rows)

Bảng được liệt kê, cũng như trình tự được tạo bởi khai báo kiểu dữ liệu nối tiếp "wear_id".

Cách thay đổi dữ liệu bảng trong PostgreSQL

Ta có thể thay đổi định nghĩa bảng của bạn bằng cú pháp chung sau:

ALTER TABLE table_name Action_TO_Take;

Ví dụ: ta có thể thêm một cột vào bảng "pg_equiosystem" bằng lệnh lệnh sau:

ALTER TABLE pg_equipment ADD COLUMN functioning bool;
ALTER TABLE

Ta có thể thấy cột phụ bằng lệnh :

\d pg_equipment
    Column    |         Type          |                            Modifiers                            
--------------+-----------------------+-----------------------------------------------------------------
 equip_id     | integer               | not null default nextval('pg_equipment_equip_id_seq'::regclass)
 type         | character varying(50) | not null
 color        | character varying(25) | not null
 location     | character varying(25) | 
 install_date | date                  | 
 functioning  | boolean               |
 . . .

Để thêm một giá trị mặc định chỉ định rằng "thiết bị nên được coi là hoạt động trừ khi có ghi chú khác", hãy đưa ra lệnh sau:

ALTER TABLE pg_equipment ALTER COLUMN functioning SET DEFAULT 'true';

Nếu ta muốn đảm bảo giá trị cũng không rỗng, ta có thể làm như sau:

ALTER TABLE pg_equipment ALTER COLUMN functioning SET NOT NULL;

Để đổi tên cột, hãy sử dụng cú pháp sau:

ALTER TABLE pg_equipment RENAME COLUMN functioning TO working_order;

Để xóa cột ta vừa tạo, hãy nhập lệnh sau:

ALTER TABLE pg_equipment DROP COLUMN working_order;

Ta có thể đổi tên toàn bộ bảng bằng lệnh này:

ALTER TABLE pg_equipment RENAME TO playground_equip;

Xóa bảng trong PostgreSQL

Ta có thể xóa bảng ta đã tạo bằng lệnh :

DROP TABLE playground_equip;
DROP TABLE

Nếu ta cung cấp lệnh đó cho một bảng không tồn tại, ta sẽ nhận được lỗi sau:

ERROR: table "playground_equip" does not exist

Để tránh lỗi này, ta có thể yêu cầu postgreSQL xóa bảng nếu nó tồn tại và trả về thành công theo cả hai cách. Ta thực hiện việc này bằng cách đưa ra lệnh sau:

DROP TABLE IF EXISTS playground_equip;
NOTICE:  table "playground_equip" does not exist, skipping
DROP TABLE

Lần này, nó cho ta biết rằng bảng không được tìm thấy, nhưng vẫn tiếp tục thay vì đưa ra lỗi.

Kết luận

Đến đây bạn đã biết đủ để tạo và quản lý các bảng đơn giản trong PostgreSQL. Những kỹ năng này sẽ hữu ích nếu bạn đang quản lý dữ liệu từ một ứng dụng khác hoặc học cách điều khiển PostgreSQL từ dòng lệnh.

Bởi Justin Ellingwood

Tags:

Các tin liên quan