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:
-
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. -
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.