PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Trong psql, tại sao một số lệnh không có tác dụng?

Các câu lệnh kết thúc bằng dấu chấm phẩy.

Trong psql , nhấn enter mà không có dấu chấm phẩy tiếp tục câu lệnh trên dòng tiếp theo, thêm những gì bạn đã viết vào bộ đệm truy vấn thay vì thực thi nó. Bạn sẽ nhận thấy rằng lời nhắc thay đổi từ dbname=> thành dbname-> để cho biết rằng bạn đang ở trên một dòng tiếp tục.

regress=> DROP TABLE sometable
regress-> \r
Query buffer reset (cleared).
regress=> DROP TABLE sometable;
ERROR:  table "sometable" does not exist
regress=> 

Lưu ý rằng sau khi tôi nhấn enter mà không có dấu chấm phẩy, lời nhắc sẽ thay đổi thành regress-# và không có hành động nào được thực hiện. Không có bảng nào sometable , vì vậy nếu câu lệnh đã chạy, một lỗi sẽ được báo cáo.

Tiếp theo, hãy xem việc sử dụng \r trên dòng tiếp theo? Điều đó sẽ xóa bộ đệm truy vấn. Lưu ý rằng lời nhắc thay đổi trở lại regress=# khi bộ đệm bị xóa, vì không có câu lệnh một phần nào được lưu vào bộ đệm nữa.

Điều này cho thấy cách các câu lệnh có thể được chia thành các dòng:

regress=> DROP TABLE
regress-> sometable
regress-> ;
ERROR:  table "sometable" does not exist

Điều khó hiểu là psql các lệnh gạch chéo ngược như \d được kết thúc bằng dòng mới, không phải chấm dứt bằng dấu chấm phẩy, vì vậy chúng thực hiện chạy khi bạn nhấn enter. Điều đó rất hữu ích khi bạn muốn (nói) xem định nghĩa bảng trong khi viết một câu lệnh, nhưng nó hơi khó hiểu đối với người mới.

Đối với các câu hỏi bổ sung của bạn:

  1. Nếu có lệnh "xóa màn hình" trong psql cho Windows, tôi vẫn chưa tìm thấy nó. Trên Linux, tôi chỉ sử dụng control-L, giống như bất kỳ chương trình sử dụng dòng đọc nào khác. Trong Windows \! cls sẽ hoạt động.

  2. DDL trong PostgreSQL là giao dịch. Bạn có thể BEGIN một giao dịch, phát hành một số DDL và COMMIT giao dịch để nó có hiệu lực. Nếu bạn không thực hiện DDL của mình trong một giao dịch rõ ràng thì nó sẽ có hiệu lực ngay lập tức.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm tra các mục tiêu thống kê trong PostgreSQL

  2. Xóa bản ghi khỏi cơ sở dữ liệu postgresql từ xa bằng danh sách được cung cấp cục bộ

  3. PSQLException:ResultSet không được đặt đúng vị trí, có lẽ bạn cần phải gọi tiếp theo

  4. Đo điểm chuẩn Giải pháp đám mây được quản lý PostgreSQL - Phần một:Amazon Aurora

  5. PGError:ERROR:quyền bị từ chối đối với mối quan hệ (khi sử dụng Heroku)