PostgreSQL - Tạo Bảng: Hướng Dẫn Dành Cho Người Mới Bắt Đầu

Xin chào các nhà法师数据库 tương lai! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của PostgreSQL, cụ thể là cách tạo bảng. Đừng lo lắng nếu bạn chưa từng viết một dòng mã trước đây - tôi sẽ là người hướng dẫn thân thiện của bạn, và chúng ta sẽ cùng nhau từng bước. Cuối cùng của hướng dẫn này, bạn sẽ tạo bảng như một chuyên gia!

PostgreSQL - Create Table

Table là gì trong PostgreSQL?

Trước khi chúng ta nhảy vào chi tiết của việc tạo bảng, hãy hiểu xem bảng thực sự là gì. Hãy tưởng tượng một bảng tính - bạn biết đấy, những lưới có hàng và cột. Một bảng cơ sở dữ liệu rất giống với điều đó. Nó là một bộ dữ liệu liên quan được tổ chức thành hàng (còn gọi là bản ghi) và cột (còn gọi là trường).

Ví dụ, nếu bạn đang quản lý một thư viện nhỏ, bạn có thể có một bảng gọi là "Books" với các cột như "Title", "Author", "ISBN", và "Publication Date". Mỗi hàng trong bảng này sẽ đại diện cho một cuốn sách trong thư viện của bạn.

Cú pháp CREATE TABLE

Bây giờ, hãy nhìn vào cú pháp cơ bản để tạo một bảng trong PostgreSQL:

CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
column3 datatype constraints,
....
);

Đừng để điều này làm bạn hoảng sợ! Nó đơn giản hơn bạn nghĩ. Hãy cùng phân tích:

  1. CREATE TABLE: Lệnh này cho PostgreSQL biết bạn muốn tạo một bảng mới.
  2. table_name: Đây là nơi bạn chỉ định bạn muốn gọi bảng của mình là gì.
  3. Trong ngoặc, bạn liệt kê tất cả các cột bạn muốn trong bảng của mình.
  4. Đối với mỗi cột, bạn chỉ định:
  • Tên cột
  • Kiểu dữ liệu (như INTEGER cho số nguyên, TEXT cho chuỗi, v.v.)
  • Bất kỳ ràng buộc nào (như NOT NULL nếu cột luôn phải có giá trị)

Ví dụ: Hãy Tạo Một Vài Bảng!

Ví dụ 1: Một Bảng Đơn Giản Books

Hãy bắt đầu với một ví dụ đơn giản. Chúng ta sẽ tạo một bảng cho thư viện tưởng tượng của mình:

CREATE TABLE books (
book_id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
author VARCHAR(50) NOT NULL,
publication_date DATE,
isbn VARCHAR(13) UNIQUE
);

Hãy phân tích này:

  • book_id: Đây là một标识符 duy nhất cho mỗi cuốn sách. SERIAL có nghĩa là nó sẽ tự động tăng cho mỗi cuốn sách mới được thêm vào.
  • title: Có thể dài lên đến 100 ký tự và không thể trống (NOT NULL).
  • author: Lên đến 50 ký tự, cũng không thể trống.
  • publication_date: Đây là tùy chọn (chúng ta không chỉ định NOT NULL).
  • isbn: Độc nhất cho mỗi cuốn sách.

Ví dụ 2: Một Bảng phức tạp hơn Customers

Bây giờ, hãy tạo một bảng phức tạp hơn cho khách hàng:

CREATE TABLE customers (
customer_id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
phone VARCHAR(20),
registration_date DATE DEFAULT CURRENT_DATE,
loyalty_points INTEGER DEFAULT 0 CHECK (loyalty_points >= 0)
);

Bảng này giới thiệu một số khái niệm mới:

  • DEFAULT: Chúng ta sử dụng này cho registration_date để tự động đặt nó thành ngày hiện tại khi một khách hàng mới được thêm vào.
  • CHECK: Điều này đảm bảo loyalty_points không bao giờ có thể âm.

Kiểu dữ liệu trong PostgreSQL

PostgreSQL cung cấp một loạt các kiểu dữ liệu. Dưới đây là một số phổ biến:

Kiểu Dữ Liệu Mô Tả Ví Dụ
INTEGER Số nguyên 42
SERIAL Số nguyên tự động tăng Tự động gán
VARCHAR(n) Chuỗi có độ dài thay đổi lên đến n ký tự 'Hello, World!'
TEXT Chuỗi có độ dài thay đổi của bất kỳ độ dài nào 'Một đoạn văn bản rất dài...'
DATE Ngày (không có giờ) '2023-06-15'
TIMESTAMP Ngày và giờ '2023-06-15 14:30:00'
BOOLEAN Giá trị True/False TRUE hoặc FALSE
NUMERIC(p,s) Số chính xác với p chữ số (s sau dấu phẩy) 123.45

Ràng buộc trong PostgreSQL

Ràng buộc là các quy tắc chúng ta đặt trên các cột. Dưới đây là một số phổ biến:

Ràng Buộc Mô Tả
NOT NULL Cột không thể chứa giá trị null
UNIQUE Tất cả các giá trị trong cột phải khác nhau
PRIMARY KEY Định danh duy nhất mỗi hàng trong bảng
FOREIGN KEY Đảm bảo tính toàn vẹn tham chiếu giữa hai bảng
CHECK Đảm bảo tất cả các giá trị trong cột thỏa mãn một điều kiện cụ thể
DEFAULT Đặt giá trị mặc định cho một cột

Một Vài Ví Dụ Nữa

Ví dụ 3: Một Bảng với Khóa Ngoại

Hãy tạo một bảng 'orders' tham chiếu đến bảng 'customers' của chúng ta:

CREATE TABLE orders (
order_id SERIAL PRIMARY KEY,
customer_id INTEGER REFERENCES customers(customer_id),
order_date DATE DEFAULT CURRENT_DATE,
total_amount NUMERIC(10,2) CHECK (total_amount > 0)
);

Bảng này có một khóa ngoại (customer_id) tham chiếu đến bảng customers, đảm bảo rằng mỗi đơn hàng liên quan đến một khách hàng hợp lệ.

Ví dụ 4: Một Bảng với Khóa Chính Phức Hợp

Đôi khi, bạn có thể muốn một khóa chính bao gồm nhiều cột:

CREATE TABLE book_authors (
book_id INTEGER REFERENCES books(book_id),
author_id INTEGER REFERENCES authors(author_id),
PRIMARY KEY (book_id, author_id)
);

Bảng này có thể được sử dụng để xử lý sách có nhiều tác giả, hoặc tác giả đã viết nhiều sách.

Kết Luận

Chúc mừng! Bạn đã刚刚迈出了进入 PostgreSQL 表格创建世界的第一步。记住,熟能生巧。 Hãy thử tạo bảng cho các tình huống khác nhau - có thể là một thư viện nhạc, một sổ công thức nấu ăn, hoặc thậm chí là cơ sở dữ liệu cho trò chơi video yêu thích của bạn.

Đừng sợ thử nghiệm và mắc lỗi - đó là cách chúng ta học! Và luôn nhớ: trong thế giới của cơ sở dữ liệu, bạn có quyền lực để CREATE, ALTER, và thậm chí DROP toàn bộ thế giới dữ liệu. Sử dụng quyền lực này một cách thông minh, người học trẻ!

Chúc bạn may mắn và PostgreSQL luôn ở bên bạn!

Credits: Image by storyset