PostgreSQL ALTER TABLE: Thêm & Đổi tên cột

⚡ Tóm tắt thông minh

PostgreSQL Lệnh ALTER TABLE thay đổi cấu trúc của một bảng hiện có, cho phép bạn thêm hoặc xóa cột, đổi tên cột hoặc toàn bộ bảng, đặt giá trị mặc định và gắn các ràng buộc kiểm tra mà không cần tạo lại đối tượng.

  • 🧱 Cú pháp: Hành động ALTER TABLE table-name thực hiện một thay đổi cấu trúc cho mỗi câu lệnh.
  • Thêm cột: Lệnh ADD column-name data-type thêm một cột mới vào bảng.
  • ✏️ Đổi tên: RENAME COLUMN và RENAME TO thay đổi tên cột hoặc tên bảng.
  • ⚙️ Giá trị mặc định: Lệnh ALTER COLUMN SET DEFAULT cung cấp giá trị cho các hàng được chèn trong tương lai.
  • 🛡️ Kiểm tra ràng buộc: Chức năng ADD CHECK xác thực dữ liệu mới và từ chối các giá trị không đáp ứng quy tắc.
  • 🤖 Di cư của AI: Các trợ lý AI soạn thảo các kịch bản ALTER TABLE và xem xét chúng để đảm bảo triển khai an toàn.

PostgreSQL BẢNG BẢNG

ALTER TABLE là gì? PostgreSQL?

BẢNG BẢNG Lệnh này được sử dụng để thay đổi cấu trúc của một PostgreSQL `table` là lệnh được sử dụng để thay đổi các cột của bảng hoặc tên của chính bảng đó, mà không cần xóa bảng.ping và tái tạo lại vật thể.

cú pháp

Đây là cú pháp cho PostgreSQL Lệnh ALTER TABLE:

ALTER TABLE table-name action;

Tham số `table-name` là tên của bảng mà bạn cần thay đổi. Tham số `action` là hành động mà bạn cần thực hiện, chẳng hạn như thay đổi tên cột hoặc thay đổi kiểu dữ liệu của cột.

Mô tả Chi tiết

Lệnh ALTER TABLE thay đổi định nghĩa của một bảng hiện có. Lệnh này sử dụng các biểu mẫu phụ sau:

  • THÊM CỘTLệnh này sử dụng cú pháp tương tự như lệnh CREATE TABLE để thêm một cột mới vào bảng.
  • CỘT THẢ: để thảping một cột trong bảng. Các ràng buộc và chỉ mục được áp đặt trên các cột cũng sẽ bị xóa.
  • THIẾT LẬP/THẢ MẶC ĐỊNH: được sử dụng để thiết lập hoặc xóa giá trị mặc định cho một cột. Thay đổi chỉ áp dụng cho các lần cập nhật tiếp theo. câu lệnh INSERT.
  • ĐẶT/THẢ KHÔNG NULLThay đổi việc một cột có cho phép giá trị null hay không.
  • THỐNG KÊ TẬP HỢP: dùng để thiết lập mục tiêu thu thập số liệu thống kê cho từng cột trong các thao tác PHÂN TÍCH.
  • ĐẶT BỘ LƯU TRỮ: dùng để thiết lập chế độ lưu trữ cho một cột, dù là lưu trữ trực tiếp hay trong bảng bổ sung.
  • THIẾT LẬP KHÔNG CÓ OID: được sử dụng để xóa cột OID cũ của bảng.
  • ĐỔI TÊN: để thay đổi tên bảng hoặc tên cột.
  • THÊM bảng_ràng buộc: được sử dụng để thêm một ràng buộc mới vào bảng. Nó sử dụng cùng cú pháp với TẠO BẢNG chỉ huy.
  • RÀNG BUỘC: dùng để thảping một ràng buộc bảng.
  • SỞ HỮU: Dùng để thay đổi quyền sở hữu của bảng, chuỗi, chỉ mục hoặc khung nhìn cho một người dùng cụ thể.
  • CụmDùng để đánh dấu một bảng sẽ được sử dụng cho các hoạt động cụm máy chủ trong tương lai.

Sửa đổi một cột

Một cột có thể được sửa đổi theo nhiều cách. Những sửa đổi này được thực hiện bằng lệnh ALTER TABLE. Chúng ta hãy cùng thảo luận về điều này bên dưới.

Thêm một cột mới

Để thêm một cột mới vào một PostgreSQL bảng, lệnh ALTER TABLE được sử dụng với cú pháp sau:

ALTER TABLE table-name
  ADD new-column-name column-definition;

Tên bảng là tên của bảng cần được sửa đổi. Tên cột mới là tên của cột mới cần được thêm vào. Định nghĩa cột là... loại dữ liệu của cột mới. Xem bảng Sách được hiển thị bên dưới:

PostgreSQL Ví dụ về lệnh ALTER TABLE

Bảng hiện có hai cột, id và name. Chúng ta cần thêm một cột mới vào bảng và đặt tên là author. Chỉ cần chạy lệnh sau:

ALTER TABLE Book
  ADD author VARCHAR(50);

Sau khi chạy lệnh trên, bảng Book bây giờ có dạng như sau:

PostgreSQL Ví dụ về lệnh ALTER TABLE

Cột mới đã được thêm thành công.

Đổi tên một cột trong bảng

Chúng ta có thể sử dụng lệnh ALTER TABLE để thay đổi tên của một cột. Trong trường hợp này, lệnh được sử dụng với cú pháp sau:

ALTER TABLE table-name
  RENAME COLUMN old-name TO new-name;

Tên bảng (table-name) là tên của bảng có cột cần được đổi tên. Tên cũ (old-name) là tên hiện tại của cột, và tên mới (new-name) là tên mới của cột. Hãy xem xét bảng Book được hiển thị bên dưới:

Sách:

PostgreSQL Ví dụ về lệnh ALTER TABLE

Chúng ta cần đổi tên cột author thành book_author. Đây là lệnh:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

Sau khi chạy lệnh, chúng ta có thể xem cấu trúc của bảng:

PostgreSQL Ví dụ về lệnh ALTER TABLE

Tên cột đã được thay đổi thành công.

Đặt giá trị mặc định cho cột

Chúng ta có thể đặt giá trị mặc định cho một cột để ngay cả khi bạn không chỉ định giá trị cho cột đó trong các thao tác INSERT, giá trị mặc định vẫn sẽ được sử dụng. Trong trường hợp này, lệnh ALTER TABLE có thể được sử dụng với cú pháp sau:

ALTER TABLE table-name ALTER COLUMN column-name [SET DEFAULT value];

Tên bảng là tên của bảng có cột cần được sửa đổi. Tên cột là tên của cột có giá trị mặc định cần được thiết lập, và giá trị là giá trị mặc định cho cột đó. Hãy xem xét bảng Book dưới đây:

PostgreSQL Ví dụ về lệnh ALTER TABLE

Chúng ta cần đặt giá trị mặc định cho cột book_author. Chúng ta có thể chạy lệnh sau:

ALTER TABLE Book ALTER COLUMN book_author SET DEFAULT 'Nicholas Samuel';

Bây giờ chúng ta chèn một hàng vào bảng:

INSERT INTO Book (id, name)
 VALUES (6, 'PostgreSQL for Beginners');

Lưu ý rằng chúng ta chỉ nhập giá trị cho hai cột, id và name. Tuy nhiên, giá trị mặc định đã được sử dụng cho cột book_author:

PostgreSQL Ví dụ về lệnh ALTER TABLE

Thêm ràng buộc kiểm tra

Ràng buộc kiểm tra giúp xác thực các bản ghi đang được chèn vào bảng. Chúng ta có thể thực hiện điều này bằng cách kết hợp lệnh ALTER TABLE với câu lệnh ADD CHECK. Cú pháp:

ALTER TABLE table-name ADD CHECK expression;

table-name là tên của bảng cần được sửa đổi, và expression là ràng buộc cần áp đặt lên cột của bảng. Chúng ta hãy sửa đổi cột book_author của bảng Book sao cho nó chỉ chấp nhận các giá trị Nicholas và Samuel:

ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'));

Bây giờ, chúng ta thử chèn một giá trị khác Nicholas hoặc Samuel vào cột book_author của bảng Book:

INSERT INTO Book
VALUES(7, 'Best PostgreSQL Book', 'Gregory Bush');

Câu lệnh sẽ trả về lỗi sau:

PostgreSQL Ví dụ về lệnh ALTER TABLE

Thao tác chèn không thành công vì chúng tôi đã vi phạm ràng buộc kiểm tra.

Đổi tên một bảng

Đây là cú pháp của lệnh ALTER TABLE để đổi tên bảng:

ALTER TABLE table-name
  RENAME TO new-table-name;

table-name là tên hiện tại của bảng, còn new-table-name là tên mới sẽ được gán cho bảng. Ví dụ, chúng ta hãy đổi tên bảng Book thành Books:

ALTER TABLE Book
  RENAME TO Books;

Sử dụng pgAdmin

Cho đến nay, các thao tác đã được thực hiện từ trình shell SQL. Bây giờ, hãy xem cách thực hiện các thao tác tương tự một cách trực quan bằng pgAdmin.

Thêm một cột mới

Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.

Bước 2)

  1. Từ thanh điều hướng ở bên trái, nhấp vào Cơ sở dữ liệu.
  2. Nhấp vào Bản trình diễn.

PostgreSQL Ví dụ về lệnh ALTER TABLE

Bước 3) Nhập truy vấn vào trình soạn thảo truy vấn:

ALTER TABLE Book
  ADD author VARCHAR(50);

Bước 4) Nhấp vào nút Thực hiện.

PostgreSQL Ví dụ về lệnh ALTER TABLE

Bước 5) Để kiểm tra xem cột đã được thêm hay chưa, hãy thực hiện như sau:

  1. Nhấp vào Cơ sở dữ liệu từ điều hướng bên trái.
  2. Mở rộng Bản trình diễn.
  3. Mở rộng lược đồ.
  4. Mở rộng công khai.
  5. Mở rộng bảng.
  6. Mở rộng cuốn sách.
  7. Mở rộng cột.

PostgreSQL Ví dụ về lệnh ALTER TABLE

Cột lẽ ra phải được thêm vào, như hiển thị bên dưới:

PostgreSQL Ví dụ về lệnh ALTER TABLE

Đổi tên một cột trong bảng

Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.

Bước 2)

  1. Từ thanh điều hướng ở bên trái, nhấp vào Cơ sở dữ liệu.
  2. Nhấp vào Bản trình diễn.

PostgreSQL Ví dụ về lệnh ALTER TABLE

Bước 3) Nhập truy vấn vào trình soạn thảo truy vấn:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

Bước 4) Nhấp vào nút Thực hiện.

PostgreSQL Ví dụ về lệnh ALTER TABLE

Bước 5) Để kiểm tra xem thay đổi có thành công hay không, hãy mở rộng các cột của bảng sách như trước:

PostgreSQL Ví dụ về lệnh ALTER TABLE

Các cột bây giờ sẽ như sau:

PostgreSQL Ví dụ về lệnh ALTER TABLE

Cột đã được thay đổi thành công.

Đặt giá trị mặc định cho cột

Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.

Bước 2)

  1. Từ thanh điều hướng ở bên trái, nhấp vào Cơ sở dữ liệu.
  2. Nhấp vào Bản trình diễn.

PostgreSQL Ví dụ về lệnh ALTER TABLE

Bước 3) Nhập truy vấn vào trình soạn thảo truy vấn:

ALTER TABLE Book ALTER COLUMN book_author SET DEFAULT 'Nicholas Samuel';

Bước 4) Nhấp vào nút Thực hiện.

PostgreSQL Ví dụ về lệnh ALTER TABLE

Bước 5) Để kiểm tra, hãy chạy lệnh sau trong trình soạn thảo truy vấn:

INSERT INTO Book (id, name)
 VALUES (6, 'PostgreSQL for Beginners')

Bước 6) Bây giờ, chúng ta có thể truy vấn bảng để kiểm tra xem giá trị mặc định đã được chèn vào cột book_author hay chưa:

PostgreSQL Ví dụ về lệnh ALTER TABLE

Thêm ràng buộc kiểm tra

Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.

Bước 2)

  1. Từ thanh điều hướng ở bên trái, nhấp vào Cơ sở dữ liệu.
  2. Nhấp vào Bản trình diễn.

PostgreSQL Ví dụ về lệnh ALTER TABLE

Bước 3) Nhập truy vấn vào trình soạn thảo truy vấn:

ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'))

Bước 4) Nhấp vào nút Thực hiện.

PostgreSQL Ví dụ về lệnh ALTER TABLE

Bước 5) Để kiểm tra điều này, hãy nhập truy vấn sau vào trình soạn thảo truy vấn và nhấp vào nút Thực thi:

INSERT INTO Book
VALUES(7, 'Best PostgreSQL Book', 'Gregory Bush');

PostgreSQL Ví dụ về lệnh ALTER TABLE

Nó sẽ trả về kết quả sau:

PostgreSQL Ví dụ về lệnh ALTER TABLE

Đổi tên một bảng

Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.

Bước 2)

  1. Từ thanh điều hướng ở bên trái, nhấp vào Cơ sở dữ liệu.
  2. Nhấp vào Bản trình diễn.

PostgreSQL Ví dụ về lệnh ALTER TABLE

Bước 3) Nhập truy vấn vào trình soạn thảo truy vấn:

ALTER TABLE Book
  RENAME TO Books;

Bước 4) Nhấp vào nút Thực hiện.

PostgreSQL Ví dụ về lệnh ALTER TABLE

Bước 5) Để kiểm tra xem bảng đã được đổi tên hay chưa, hãy mở rộng Databases > Demo > Schemas > Public > Tables:

PostgreSQL Ví dụ về lệnh ALTER TABLE

Bảng đã được đổi tên thành công.

Tải xuống Cơ sở dữ liệu được sử dụng trong Hướng dẫn này

Câu Hỏi Thường Gặp

Sử dụng lệnh ALTER TABLE table_name ALTER COLUMN column_name TYPE new_type. Thêm mệnh đề USING khi cần chuyển đổi giá trị, ví dụ: ALTER COLUMN price TYPE numeric USING price::numeric. PostgreSQL Viết lại cột và kiểm tra xem dữ liệu hiện có có phù hợp với kiểu dữ liệu mới hay không.

Chỉ khi giá trị mặc định không ổn định. Vì PostgreSQL 11. Lệnh ADD COLUMN với giá trị mặc định không đổi sẽ cập nhật danh mục ngay lập tức mà không cần ghi lại các hàng. Giá trị mặc định gọi một hàm vẫn buộc phải ghi lại toàn bộ bảng và khóa chặt hơn.

STT PostgreSQL Không thể thay đổi một ràng buộc đã được thiết lập. Hãy xóa ràng buộc hiện có bằng lệnh DROP CONSTRAINT, sau đó thêm ràng buộc đã sửa bằng lệnh ADD CONSTRAINT. Đặt cả hai câu lệnh trong một giao dịch để đảm bảo bảng không bao giờ bị thiếu quy tắc.

Liệt kê một số thao tác được phân tách bằng dấu phẩy: ALTER TABLE Book ADD COLUMN price int, ADD COLUMN isbn text. PostgreSQL Áp dụng mọi thay đổi trong một lần xử lý duy nhất, giúp nhanh hơn và giữ cho bảng luôn nhất quán.

Sử dụng lệnh ALTER TABLE table_name ADD PRIMARY KEY (column) hoặc ADD CONSTRAINT pk_name PRIMARY KEY (column). Cột phải chứa các giá trị duy nhất và không rỗng; PostgreSQL Tự động tạo chỉ mục duy nhất hỗ trợ khi khóa được tạo.

Lệnh RENAME chỉ cập nhật tên bảng trong danh mục hệ thống. Các hàng, chỉ mục và ràng buộc đã lưu vẫn được giữ nguyên và không bị ảnh hưởng. Các khung nhìn hoặc hàm tham chiếu đến tên cũ có thể vẫn cần được cập nhật sau đó.

Các trợ lý AI soạn thảo các kịch bản ALTER TABLE từ một thay đổi được mô tả, sắp xếp các bước ADD, RENAME và ràng buộc một cách chính xác, và thêm các mệnh đề USING cho việc chuyển đổi kiểu dữ liệu. Chúng cũng gắn cờ các thao tác ghi đè lên các bảng lớn hoặc giữ các khóa nặng.

Đúng vậy. Trợ lý AI sẽ xem xét quá trình di chuyển dữ liệu, cảnh báo về việc khóa hoặc ghi lại toàn bộ bảng, đề xuất xử lý theo lô hoặc xây dựng chỉ mục đồng thời, và khuyến nghị sử dụng wrap.ping những thay đổi trong một giao dịch, giúp việc triển khai cập nhật lược đồ trở nên an toàn hơn.

Tóm tắt bài viết này với: