Giới thiệu các câu truy vấn trong PostgeSQL qua các ví dụ

08 tháng 10, 2021 – 8652 lượt xemTrong bài viết này tất cả chúng ta sẽ đi khám phá SQL là gì và làm cách nào để sử dụng nó với một cơ sở dữ liệu phổ cập lúc bấy giờ là PostgreSQL. Chúng ta sẽ có 50 ví dụ miêu tả những kiểu truy vấn, những tính năng và cách sử dụng chúng trong PostgreSQL .

Mục Chính

SQL là gì?

SQL là viết tắt của cụm từ ” Structured Query Language ” ( Ngôn ngữ truy vấn có cấu trúc ). Ban đầu nó được gọi là SEQUEL ( Structured English Query Language ) và được sử dụng để tàng trữ và thao tác dữ liệu với những database. Ngày nay SQL là một ngôn từ chung cho toàn bộ mạng lưới hệ thống cơ sở dữ liệu quan hệ ( RDBMS ) trong đó có PostgreSQL .

SQL có thể:

  • Thực hiện các truy vấn dữ liệu
  • Thêm, sửa, xóa các bản ghi trong database (câu lệnh DML)
  • Tạo mới các đối tượng trong database (câu lệnh DDL)
  • Phân quyền cho các bảng
  • Và còn nhiều nữa…

Các ví dụ truy vấn với SQL

Bây giờ tất cả chúng ta hãy tò mò một số ít ví dụ về những truy vấn PostgreSQL thông dụng và hữu dụng hoàn toàn có thể được sử dụng trong những trường hợp khác nhau .

1. CREATE TABLE trong PostgreSQL

CREATE TABLE là từ khóa để khởi tạo một bảng rỗng mới trong CSDL. Bảng này sẽ thuộc chiếm hữu của user đã viết ra câu lệnh này :

postgres=# create table dummy_table(name varchar(20),address text,age int);
CREATE TABLE

Câu lệnh trên tạo ra 1 bảng có tên là dummy_table và bảng đó chứa 3 cột name, address và age .

2. INSERT trong PostgreSQL

Câu lệnh INSERT được sử dụng để chèn dữ liệu vào một bảng :

postgres=# insert into dummy_table values(' XYZ ',' location-A ',25);
INSERT 0 1
postgres=# insert into dummy_table values(' ABC ',' location-B ',35);
INSERT 0 1
postgres=# insert into dummy_table values(' DEF ',' location-C ',40);
INSERT 0 1
postgres=# insert into dummy_table values(' PQR ',' location-D ',54);
INSERT 0 1

Phía trên tất cả chúng ta đã dùng 4 câu lệnh insert để chèn thêm bốn hàng dữ liệu vào bảng dummy_table

3. SELECT trong PostgreSQL

Câu lệnh SELECT ( khi không có tùy chọn WHERE ) sẽ tìm đến hết tổng thể những dữ liệu có trong bảng :

postgres=# select * from dummy_table;
name |  address   | age
 
XYZ   | location-A |  25
ABC   | location-B |  35
DEF   | location-C |  40
PQR   | location-D |  54
(4 rows)

Câu lệnh UPDATE được sử dụng để update những dữ liệu trong bảng. Trong ví dụ dưới đây, sử dụng UPDATE để biến hóa tuổi của một người có tên là ‘ PQR ‘ :

postgres=# update dummy_table set age=50 where name=' PQR ';
UPDATE 1
postgres=# select * from dummy_table;
name |  address   | age
 
XYZ  | location-A |  25
ABC  | location-B |  35
DEF  | location-C |  40
PQR  | location-D |  50
(4 rows)

Tiếp theo, tất cả chúng ta sẽ sử dụng lệnh UPDATE để biến hóa tên và tuổi của một người có địa chỉ là ‘ location-D ‘ :

postgres=# update dummy_table set name=' GHI ',age=54 where address=' location-D ';
UPDATE 1
postgres=# select * from dummy_table;
 name |  address   | age
 
 XYZ  | location-A |  25
 ABC  | location-B |  35
 DEF  | location-C |  40
 GHI  | location-D |  54
(4 rows)

Nếu tất cả chúng ta muốn sửa đổi tổng thể những giá trị trong address và cột age trong bảng dummy_table, thì tất cả chúng ta không cần sử dụng mệnh đề WHERE. Truy vấn UPDATE sẽ trông giống như sau :

postgres=# update dummy_table set age=54,address=' location-X ';
UPDATE 4
postgres=# select * from dummy_table ;
 name |  address   | age
 
 XYZ  | location-X |  54
 ABC  | location-X |  54
 DEF  | location-X |  54
 GHI  | location-X |  54
(4 rows)

Mệnh đề RETURNING trả về những hàng đã update. Đây là tùy chọn trong UPDATE :

postgres=# update dummy_table set age=30 where name=' XYZ ' returning age as age_no;
 age_no
 
30
(1 row)

5. DELETE trong PostgreSQL

Câu lệnh DELETE được sử dụng để xóa những hàng trong bảng. Điều kiện WHERE tùy chọn, nhưng hãy quan tâm : nếu thiếu điều kiện kèm theo WHERE, lệnh sẽ xóa tổng thể những hàng, để lại cho bạn một bảng trống .

postgres=# delete from dummy_table where age=65;
DELETE 1

6. Các toán tử so sánh trong PostgreSQL

Trong PostgreSQL, với sự trợ giúp của những toán tử so sánh, tất cả chúng ta hoàn toàn có thể lấy được tác dụng bằng điều kiện kèm theo hoặc giá trị đã chỉ định .

Nhỏ hơn hoặc bằng

postgres=# select * from dummy_table where age < =50;
 name |  address   | age
 
 XYZ  | location-A |  25
 ABC  | location-B |  35
 DEF  | location-C |  40
 PQR  | location-D |  50
(4 rows)```

### Lớn hơn hoặc bằng

```sql
postgres=# select * from dummy_table where age> =50;
 name |  address   | age
 
 PQR  | location-D |  50
(1 row)

Khác

postgres=# select * from dummy_table where age< >50;
 name |  address   | age
 
 XYZ  | location-A |  25
 ABC  | location-B |  35
 DEF  | location-C |  40
(3 rows)

Bằng chính xác

postgres=# select * from dummy_table where age=50;
 name |  address   | age
 
 PQR  | location-D |  50
(1 row)

7. SELECT DISTINCT trong PostgreSQL

Câu lệnh SELECT DISTINCT được sử dụng để trả về những giá trị riêng không liên quan gì đến nhau từ bảng. Nó vô hiệu mọi giá trị trùng lặp :

SELECT không có mệnh đề DISTINCT

postgres=# select age from dummy_table order by 1;
 age
 
   1
   1
   2
   2
   3
(5 rows)

SELECT có mệnh đề DISTINCT

postgres=# select distinct age from dummy_table order by 1;
 age
 
   1
   2
   3
(3 rows)

8. TRUNCATE trong PostgreSQL

Lệnh TRUNCATE được sử dụng để làm trống một bảng :

postgres=# truncate table dummy_table;
TRUNCATE TABLE

9. DROP TABLE trong PostgreSQL

Lệnh DROP TABLE này được sử dụng để xóa một bảng khỏi cơ sở dữ liệu :

postgresql=# drop table if exists dummy;
NOTICE:  table " dummy " does not exist, skipping
DROP TABLE

Lệnh này đã xóa hàng loạt bảng, gồm có mọi dữ liệu tương quan, chỉ mục, quy tắc và ràng buộc cho bảng đó .

10. CREATE VIEW trong PostgreSQL

Lệnh CREATE VIEW được sử dụng để tạo những views trong database. Views là những ” bảng tạm “, nó được sử dụng để trình diễn một bảng khá đầy đủ, tập hợp con hoặc chọn những cột từ bảng :

postgres=# CREATE OR REPLACE VIEW vi AS SELECT * FROM dummy_table WHERE age IS NULL;
CREATE VIEW

11. Tạo một bảng trong Postgresql bằng câu lệnh SELECT

Sử dụng cú pháp trong ví dụ dưới đây, tất cả chúng ta hoàn toàn có thể tạo một bảng bằng câu lệnh SELECT :

postgres=# select ' My name is X ' as col1, 10 as col2, ' Address is - XYZ location ' as col3  into new_table;
SELECT 1
postgres=# select * from new_table ;
     col1      | col2 |           col3
 
 My name  is X |   10 | Address is -XYZ location
(1 row)

12. Query timeout trong PostgreSQL

Chúng ta hoàn toàn có thể ra lệnh cho một truy vấn hết thời hạn chờ sau một khoảng chừng thời hạn nhất định với sự trợ giúp của những tham số GUC như statement_timeout, hủy bỏ bất kể câu lệnh nào mất nhiều hơn số mili giây được chỉ định :

postgresql=# set statement_timeout=10;
SET
postgresql=# select pg_sleep(20);
ERROR:  canceling statement due to statement timeout

13. Sử dụng CREATE SEQUENCE với truy vấn INSERT trong PostgreSQL

Lệnh CREATE SEQUENCE là một trình tạo số tuần tự. Sau khi trình tự được tạo, chúng tôi hoàn toàn có thể sử dụng những hàm nextval ( ) và hàm currval ( ) để chèn những giá trị vào bảng :

postgres=# create sequence seq;
CREATE SEQUENCE
postgres=# create table tab(n int);
CREATE TABLE
postgres=# insert into tab values (nextval(' seq '));
INSERT 0 1
postgres=# insert into tab values (currval(' seq '));
INSERT 0 1
postgres=# insert into tab values (nextval(' seq '));
INSERT 0 1
postgres=# select * from tab;
 n
 
 1
 1
 2
(3 rows)

14.Nhập dữ liệu kiểu BLOB vào PostgreSQL

PostgreSQL không tương hỗ trực tiếp kiểu BLOB ( binary large objects ), nhưng tất cả chúng ta hoàn toàn có thể thao tác với chúng bằng những giải pháp sau :Giả sử bạn có một hình ảnh ( ở định dạng png ) được tải xuống trong thư mục / home / edb / :

[edb@localhost]$ ls /home/edb/mypic.png
/home/edb/mypic.png

Chúng ta muốn tàng trữ hình ảnh này trong cơ sở dữ liệu PostgreSQL .Mở psql :

postgres=# Create table testing(n int,n1 oid);
CREATE TABLE
postgres=# insert into testing values (1,lo_import(' / home / edb / mypic.png '));
INSERT 0 1

Hàm lo_import ( ) tải tệp đã đặt tên vào pg_largeobject và trả về giá trị OID ( mã định danh đối tượng người dùng ) sẽ tham chiếu đến đối tượng người tiêu dùng lớn. Việc chọn bảng testing sẽ chỉ hiển thị OID chứ không hiển thị những bit đã tạo nên bức ảnh này .

15. ILIKE trong PostgreSQL

ILIKE là một toán tử so sánh tương tự, không phân biệt chữ hoa chữ thường .

postgres=# select * from ted;
  n
 
 TAR
 TaR
 Tar
 tar
(4 rows)

Sử dụng ILIKE với điều kiện WHERE

postgres=# select * from ted where n ilike ' TAR % ';
  n
 
 TAR
 TaR
 Tar
 tar
(4 rows)

16. Hàm length() trong PostgreSQL

Hàm length trả về số ký tự hoặc số byte trong một biến chuỗi được chỉ định .

Truy vấn SELECT cơ bản

postgres=# select name,age from dummy_table;
 name | age
 
 XYZ  |  25
 ABC  |  35
 DEF  |  40
 PQR  |  54
 PQR  |
(5 rows)

Truy vấn với hàm length ( ) cho tên cột name và age

postgres=# select length(name),length(age) from dummy_table;
 length | length
 
      3 |      2
      3 |      2
      3 |      2
      3 |      2
      3 |
(5 rows)

17. Xuất kết quả truy vấn sang file text trong PostgreSQL

Với sự trợ giúp của lệnh COPY, tất cả chúng ta hoàn toàn có thể xuất dữ liệu từ bảng sang file. txt bên ngoài cũng như nhập dữ liệu từ file vào bảng .Xuất dữ liệu từ bảng sang file text

postgres=#  copy dummy_table to ' / tmp / abc.txt ';
COPY 5

postgres=# \! cat /tmp/abc. txt
XYZ    location-A    25
ABC    location-B    35
DEF    location-C    40
PQR    location-D    50
CXC    1    50

Nhập dữ liệu từ file vào bảng

postgres=# copy dummy_table from ' / tmp / abc.txt ';
COPY 5

18. Liệt kê các cơ sở dữ liệu trong PostgreSQL

Truy vấn sau hoàn toàn có thể được sử dụng để hiển thị tổng thể những cơ sở dữ liệu đã tạo :

postgres=# select oid,datname from pg_database;
  oid     |  datname
 
 13743 | postgres
     1     | template1
 13742 | template0
(3 rows) 

19. Kiểm tra thời gian thực hiện truy vấn trong PostgreSQL

Chúng ta hoàn toàn có thể kiểm tra thời hạn thiết yếu để truy vấn thực thi bằng cách bật \ timing tại psql prompt :

postgres=# \timing
Timing is on

Truy vấn SELECT giờ đây sẽ hiển thị thời hạn triển khai :

postgres=# select * from dummy_table;
 name |  address   | age
 
 XYZ  | location-A | 25
 ABC  | location-B | 35
 DEF  | location-C | 40
 PQR  | location-D | 50
 CXC  | 1               | 50
(5 rows)

Time: 0.440 ms

20. COUNT

Truy vấn COUNT trả về số hàng trong bảng. Nếu tất cả chúng ta sử dụng ( * ), nó sẽ gồm có những giá trị null ; nếu không giá trị null sẽ bị loại trừ .

postgres=# select count(*) from dummy_table;
 count
 
     5
(1 row)

postgres=# select count(avg) from dummy_table;
 count
 
     4
(1 row)

21. LIMIT và OFFSET

Mệnh đề LIMIT được sử dụng để giới hạn lượng dữ liệu được trả về bởi câu lệnh SELECT. Truy vấn bên dưới sẽ chỉ hiển thị 1 hàng :

postgres=# select * from dummy_table  limit 1;
 name |  address   | age
 
 XYZ  | location-A |  25
(1 row)

OFFSET được sử dụng khi tất cả chúng ta muốn bỏ lỡ 1 số ít hàng đơn cử :

postgres=# select * from dummy_table  offset 4;
 name | address | age
 
 cxc  | 1       |  50
(1 row)

22. Biểu thức IF… ELSE trong PostgreSQL

Chúng ta hoàn toàn có thể sử dụng những câu lệnh điều kiện kèm theo như IF … ELSE trong một anonymous block. Ví dụ bên dưới kiểm tra xem giá trị của những biến abc và xyz có khớp nhau không và in ra hiệu quả

postgres=# Do
             $$
             Declare
              abc int;
              xyz int;
              begin
              abc:=100;
              xyz:=abc;
              if abc=xyz then
               xyz=150;
              raise notice ' % ',xyz;
             else
             end if;
             end;
               $$
;
NOTICE:  150
DO

23. INNER JOIN

Lệnh INNER JOIN sẽ tìm những hàng từ hai ( hoặc nhiều ) bảng trong đó dữ liệu những cột được chỉ định trong bảng khớp với nhau :

postgres=# select *  from x inner join  y on  x. n1 = y. n1;
 n |     n1     | n |     n1
 
 1 | abc        | 1 | abc
 2 | xyz        | 2 | xyz
(2 rows)

24. Biểu thức CASE trong PostgreSQL

Biểu thức CASE là một biểu thức điều kiện kèm theo chung, tựa như như câu lệnh IF … ELSE .

postgres=# SELECT age,
       CASE age WHEN 25 THEN ' one '
              WHEN 50 THEN ' two '
              ELSE ' other '
       END
    FROM  dummy_table;
 age | case
 
  25 | one
  35 | other
  40 | other
  50 | two
  50 | two
(5 rows)

25. Sử dụng một biến trong truy vấn PostgreSQL

Chúng ta hoàn toàn có thể khai báo một biến trong PostgreSQL tại psql prompt :

postgres=# \set cond 50

Sử dụng một biến với điều kiện WHERE

postgres=# select * from dummy_table where age=:cond;
 name |  address   | age
 
 PQR  | location-D |  50
(1 row)

26. Truy vấn ngày trong PostgreSQL

PostgreSQL phân phối những hàm cho ngày và giờ hoàn toàn có thể được sử dụng trong những truy vấn .

postgres=# select now();
               now
 
 22-SEP-20 03:08:42.636385 +05:30
(1 row)

postgres=# select current_date;
 current_date
 
 22-SEP-20
(1 row)

postgres=# select current_time;
     current_time
 
 03:08:53.648466+05:30
(1 row)

Chúng ta cũng hoàn toàn có thể triển khai truy vấn tìm những hàng có giá trị giữa hai khoảng chừng thời hạn :

postgres=# create table datetable(n int,n1 date);
CREATE TABLE

postgres=# insert into datetable values (1,' 12-01-1980 ')

;

INSERT 0 1 postgres=# insert into datetable values (2,' 12-01-2020 '); INSERT 0 1 postgres=# insert into datetable values (3,' 12-01-2000 '); INSERT 0 1 postgres=# select * from datetable where n1 between ' 12-01-1980 ' and ' 12-01-2000 '; n | n1 1 | 12-JAN-80 00:00:00 3 | 12-JAN-00 00:00:00 (2 rows)

27. Truy vấn song song PostgreSQL

Các truy vấn song song trong PostgreSQL được cho phép bạn triển khai xong những truy vấn nhanh hơn bằng cách sử dụng nhiều CPU. Các tham số GUC này được đặt trong tệp postgresql.conf

max_parallel_maintenance_workers = 2   # taken from max_parallel_workers
max_parallel_workers_per_gather = 2    # taken from max_parallel_workers
parallel_leader_participation = on
max_parallel_workers = 8               # maximum number of max_worker_processes that

28. Các toán tử logic trong PostgreSQL

Có ba toán tử logic cơ bản có sẵn trong PostgreSQL : AND, OR và NOT .AND : Nếu cả hai biểu thức đều đúng, thì hiệu quả là TRUE

postgresql=# select 1=1/1 and 200=2+198 as result_and_operator;
result_and_operator
 
t
(1 row)

AND : Nếu một biểu thức là true và một biểu thức khác là NULL, thì hiệu quả là NULL

postgresql=# select 4=4 and null;
?column?
 

(1 row)

OR : Nếu có một biểu thức là đúng, thì tác dụng là TRUE

postgres=# select 1=100 OR 2=2;
?column?
 
t
(1 row)

29. Truy vấn các hàng trùng lặp

Trong truy vấn SQL sau, có hai bản ghi có giá trị 50 :

 postgres=# select age from dummy_table;
 age
 
  25
  35
  40
  50
  50
(5 rows)

Chúng ta hoàn toàn có thể sử dụng truy vấn SELECT … HAVING để tìm những hàng trùng lặp :

postgres=#  select age, count(age) from dummy_table group by age having count(age)>1;
 age | count
 
  50 |     2
(1 row)

30. Enum query

Kiểu Enumerated ( enum ) là kiểu dữ liệu gồm có một tập giá trị tĩnh, có thứ tự .

postgres=# CREATE TYPE mood AS ENUM (' sad ', ' ok ', ' happy ');
CREATE TYPE
postgres=# create table testi(n int, n1 mood);
CREATE TABLE
postgres=# insert into testi values (1,' happy ');
INSERT 0 1
postgres=# insert into testi values (1,' sad ');
INSERT 0 1
postgres=# insert into testi values (1,' ok ');
INSERT 0 1

Nếu enum chưa được chỉ định, nó sẽ báo lỗi :

postgres=# insert into testi values (1,' happyo ');
ERROR:  invalid input value for enum mood: " happyo "

31. Pivot query

Pivot là một cách hữu dụng để nghiên cứu và phân tích số lượng lớn dữ liệu bằng cách sắp xếp nó thành một định dạng dễ quản trị hơn .

CREATE TABLE newtb(id SERIAL, rowid varchar(10), attri varchar(10), val varchar(10));
INSERT INTO newtb(rowid, attri, val) values(' t1 ',' a1 ',' v1 ');
INSERT INTO newtb(rowid, attri, val) values(' t1 ',' a2 ',' v2 ');
INSERT INTO newtb(rowid, attri, val) values(' t1 ',' a3 ',' v3 ');
INSERT INTO newtb(rowid, attri, val) values(' t1 ',' a4 ',' v4 ');
INSERT INTO newtb(rowid, attri, val) values(' t2 ',' a1 ',' v5 ');
INSERT INTO newtb(rowid, attri, val) values(' t2 ',' a2 ',' v6 ');
INSERT INTO newtb(rowid, attri, val) values(' t2 ',' a3 ',' v7 ');
INSERT INTO newtb(rowid, attri, val) values(' t2 ',' a4 ',' v8 ');

Để tạo bảng tổng hợp, bạn cần setup extention tablefunc :

postgres=# create extension tablefunc;
CREATE EXTENSION

Select *
FROM crosstab(
  ' select rowid, attri, val
from newtb
where attri = '' a2 '' or attri = '' a3 ''
order by 1,2 ')
AS newtb(row_name varchar(10), category_1 varchar(10), category_2 varchar(10), category_3 varchar(10));
 row_name | category_1 | category_2 | category_3
 
   t1       |              v2        |            v3    |
   t2       |             v6         |             v7   |
(2 rows)

32. SELF JOIN

Khi tất cả chúng ta JOIN một bảng so với chính nó, điều này được gọi là SELF JOIN .Điều này hoàn toàn có thể được triển khai bằng cách sử dụng INNER JOIN hoặc LEFT JOIN. SELF JOIN hữu dụng khi so sánh những cột của những hàng trong cùng một bảng

postgres=# create table emp1(emp_id int, firstname char(10), lastname char(10), manager_id int);
CREATE TABLE
postgres=#
postgres=#
postgres=# insert into emp1 values(1,' ABC ',' XYZ ',NULL);
INSERT 0 1
postgres=# insert into emp1 values(2,' TYU ',' BGV ',1);
INSERT 0 1
postgres=# insert into emp1 values(3,' TEU ',' ZZV ',1);
INSERT 0 1
postgres=# insert into emp1 values(4,' REU ',' AZV ',2);
INSERT 0 1
postgres=# insert into emp1 values(5,' QREU ',' WZV ',2);
INSERT 0 1
postgres=# insert into emp1 values(6,' DREU ',' QZV ',3);
INSERT 0 1

postgres=# select a. firstname,b. lastname from emp1 a inner join emp1 b on a. emp_id=b. manager_id order by 1 ;
 firstname  |  lastname
 
 ABC        | ZZV
 ABC        | BGV
 TEU        | QZV
 TYU        | WZV
 TYU        | AZV
(5 rows)

postgres=# 

33. Định nghĩa một biến trong một truy vấn trong PostgreSQL

Sử dụng một anonymous block, tất cả chúng ta hoàn toàn có thể xác lập nghĩa một biến hoàn toàn có thể được truyền vào câu truy vấn :

postgres=# do
$$
declare
a int;
begin
select age into a from dummy_table
where name =' XYZ ';
raise notice ' % ',a;
end;
$$;
NOTICE:  25
DO

34. Câu lệnh PREPARE trong PostgreSQL

PREPARE được sử dụng để tối ưu hóa hiệu suất. Khi câu lệnh PREPARE được thực thi, nó không chỉ được parsed mà còn được nghiên cứu và phân tích, và khi kích hoạt lệnh EXECUTE, câu lệnh đã chuẩn bị sẵn sàng sẽ được lập kế hoạch và thực thi .Các câu lệnh chuẩn bị sẵn sàng sẵn hoàn toàn có thể gật đầu những tham số .

postgres=# prepare test(int) as
select * from dummy_table where age=$1;
PREPARE

postgres=# execute test(50);
 name |  address   | age
 
 PQR  | location-D |  50
 CXC | 1                |  50
(2 rows)

35. Kiểm tra giá trị NULL trong PostgreSQL

Để xác lập hoặc select những hàng có giá trị NULL, điều kiện kèm theo IS NULL hoàn toàn có thể được sử dụng trong mệnh đề WHERE .

postgres=# select * from dummy_table;
 name |  address   | age
 
 XYZ  | location-A |  25
 ABC  | location-B |  35
 DEF  | location-C |  40
 PQR  | location-D |  54
 PQR  | location-D |
(5 rows)

Xác định những giá trị NULL trong cột ‘ age ‘ :

postgres=# select name from dummy_table where age is null;
 name
 
 PQR
(1 row)

36. Kiểm tra xem truy vấn có trống trong PostgreSQL không

Chúng ta hoàn toàn có thể sử dụng EXISTS để kiểm tra xem một truy vấn có trống hay không. EXISTS là một toán tử boolean kiểm tra sự sống sót của những hàng trong một truy vấn con .

postgres=# select exists(select * from (select ' true ' where 1=3));
 exists
 
 f
(1 row)

postgres=# select exists(select * from (select ' true ' where 1=1));
 exists
 
 t
(1 row)

37. Log truy vấn trong PostgreSQL

Để xem log thời hạn thực thi của một truy vấn, bạn cần bật những tham số GUC có tương quan :

postgresql=# set log_min_duration_statement=0;
SET
postgresql=# set log_statement=' all ';
SET

Bây giờ, nếu tất cả chúng ta kiểm tra file log, được tạo trong thư mục data / log, tất cả chúng ta sẽ nhận được thông tin thời hạn thực thi :

2020-09-23 02:47:12.887 +0530 [30737] LOG:  statement: create table gg1(n int);
2020-09-23 02:47:12.888 +0530 [30737] LOG:  duration: 1.165 ms
2020-09-23 02:47:28.092 +0530 [30737] LOG:  statement: insert into gg1 values (generate_series(1,100000));
2020-09-23 02:47:28.182 +0530 [30737] LOG:  duration: 94.858 ms 

38. Toán tử UNION trong PostgreSQL

UNION được sử dụng để tích hợp những hiệu quả của hai hoặc nhiều câu lệnh SQL trong khi vô hiệu những hàng trùng lặp giữa những bảng .

postgres=# create table tab1(n int);
CREATE TABLE

postgres=# insert into tab1 values (1),(2);
INSERT 0 2
postgres=# create table tab2(n int);
CREATE TABLE

postgres=# insert into tab2 values (3),(2);
INSERT 0 2

postgres=# select * from tab1 union select * from tab2;
 n
 
 2
 1
 3
(3 rows)

39. ALTER TABLE trong PostgreSQL

Lệnh ALTER TABLE được sử dụng để thêm hoặc sửa đổi những cột trong bảng :

postgres=# alter table dummy_table add col1 int;
ALTER TABLE
postgres=# alter table dummy_table  rename col1 to col2;
ALTER TABLE
postgres=#  alter table dummy_table alter column col2 type char;
ALTER TABLE
postgres=# alter table dummy_table drop column col2;
ALTER TABLE

PostgreSQL có một tính năng cho tất cả chúng ta hoàn toàn có thể tạo nhận xét về một đối tượng người tiêu dùng cơ sở dữ liệu bằng cách sử dụng câu lệnh COMMENT .

postgres=# Comment on table dummy_table  is ' This was a testing table ';
COMMENT

postgres=# Comment on function f is 

'Don'

' t update the function please ' ;
COMMENT

Sử dụng pg_description system catalog, tất cả chúng ta hoàn toàn có thể lấy ra nhận xét .

Giới thiệu các câu truy vấn trong PostgeSQL qua các ví dụ

Bài viết liên quan
Hotline 24/7: O984.666.352
Alternate Text Gọi ngay