Giới thiệu các câu truy vấn trong PostgeSQL qua các ví dụ
Mục Chính
- SQL là gì?
- Các ví dụ truy vấn với SQL
- 1. CREATE TABLE trong PostgreSQL
- 2. INSERT trong PostgreSQL
- 3. SELECT trong PostgreSQL
- 5. DELETE trong PostgreSQL
- 6. Các toán tử so sánh trong PostgreSQL
- 7. SELECT DISTINCT trong PostgreSQL
- 8. TRUNCATE trong PostgreSQL
- 9. DROP TABLE trong PostgreSQL
- 10. CREATE VIEW trong PostgreSQL
- 11. Tạo một bảng trong Postgresql bằng câu lệnh SELECT
- 12. Query timeout trong PostgreSQL
- 13. Sử dụng CREATE SEQUENCE với truy vấn INSERT trong PostgreSQL
- 14.Nhập dữ liệu kiểu BLOB vào PostgreSQL
- 15. ILIKE trong PostgreSQL
- 16. Hàm length() trong PostgreSQL
- 17. Xuất kết quả truy vấn sang file text trong PostgreSQL
- 18. Liệt kê các cơ sở dữ liệu trong PostgreSQL
- 19. Kiểm tra thời gian thực hiện truy vấn trong PostgreSQL
- 20. COUNT
- 21. LIMIT và OFFSET
- 22. Biểu thức IF… ELSE trong PostgreSQL
- 23. INNER JOIN
- 24. Biểu thức CASE trong PostgreSQL
- 25. Sử dụng một biến trong truy vấn PostgreSQL
- 26. Truy vấn ngày trong PostgreSQL
- 27. Truy vấn song song PostgreSQL
- 28. Các toán tử logic trong PostgreSQL
- 29. Truy vấn các hàng trùng lặp
- 30. Enum query
- 31. Pivot query
- 32. SELF JOIN
- 33. Định nghĩa một biến trong một truy vấn trong PostgreSQL
- 34. Câu lệnh PREPARE trong PostgreSQL
- 35. Kiểm tra giá trị NULL trong PostgreSQL
- 36. Kiểm tra xem truy vấn có trống trong PostgreSQL không
- 37. Log truy vấn trong PostgreSQL
- 38. Toán tử UNION trong PostgreSQL
- 39. ALTER TABLE trong PostgreSQL
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 .
COMMENTSQL 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 :
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 .
postgres=# create table dummy_table(name varchar(20),address text,age int); CREATE TABLE2. INSERT trong PostgreSQL
Câu lệnh INSERT được sử dụng để chèn dữ liệu vào một bảng :
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
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 13. 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 :
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=# 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)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 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)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 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)Mệnh đề RETURNING trả về những hàng đã update. Đây là tùy chọn trong UPDATE :
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)
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 16. 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 TABLE9. 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 :
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 đó .
postgresql=# drop table if exists dummy; NOTICE: table " dummy " does not exist, skipping DROP TABLE10. 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 VIEW11. 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 timeout13. 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 / :
Chúng ta muốn tàng trữ hình ảnh này trong cơ sở dữ liệu PostgreSQL .Mở psql :
[edb@localhost]$ ls /home/edb/mypic.png /home/edb/mypic.pngHà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 .
postgres=# Create table testing(n int,n1 oid); CREATE TABLE postgres=# insert into testing values (1,lo_import(' / home / edb / mypic.png ')); INSERT 0 115. 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
Truy vấn với hàm length ( ) cho tên cột name và age
postgres=# select name,age from dummy_table; name | age XYZ | 25 ABC | 35 DEF | 40 PQR | 54 PQR | (5 rows)
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 50Nhập dữ liệu từ file vào bảng
postgres=# copy dummy_table from ' / tmp / abc.txt '; COPY 518. 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 :
Truy vấn SELECT giờ đây sẽ hiển thị thời hạn triển khai :
postgres=# \timing Timing is on
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 ms20. 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 :
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 limit 1; name | address | age XYZ | location-A | 25 (1 row)
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 DO23. 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 50Sử 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 .
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=# 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)
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 that28. 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
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 1=1/1 and 200=2+198 as result_and_operator; result_and_operator t (1 row)OR : Nếu có một biểu thức là đúng, thì tác dụng là TRUE
postgresql=# select 4=4 and null; ?column? (1 row)
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 :
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 from dummy_table; age 25 35 40 50 50 (5 rows)
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ự .
Nếu enum chưa được chỉ định, nó sẽ báo lỗi :
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
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 .
Để tạo bảng tổng hợp, bạn cần setup extention tablefunc :
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 ');
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 DO34. 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 .
Xác định những giá trị NULL trong cột ‘ age ‘ :
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)
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 :
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 :
postgresql=# set log_min_duration_statement=0; SET postgresql=# set log_statement=' all '; SET
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 ms38. 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 :
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=# 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
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 ' ;
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 .
Source: https://thomaygiat.com
Category : Kỹ Thuật Số
Chuyển vùng quốc tế MobiFone và 4 điều cần biết – MobifoneGo
Muốn chuyển vùng quốc tế đối với thuê bao MobiFone thì có những cách nào? Đừng lo lắng, bài viết này của MobiFoneGo sẽ giúp…
Cách copy dữ liệu từ ổ cứng này sang ổ cứng khác
Bạn đang vướng mắc không biết làm thế nào để hoàn toàn có thể copy dữ liệu từ ổ cứng này sang ổ cứng khác…
Hướng dẫn xử lý dữ liệu từ máy chấm công bằng Excel
Hướng dẫn xử lý dữ liệu từ máy chấm công bằng Excel Xử lý dữ liệu từ máy chấm công là việc làm vô cùng…
Cách nhanh nhất để chuyển đổi từ Android sang iPhone 11 | https://thomaygiat.com
Bạn đã mua cho mình một chiếc iPhone 11 mới lạ vừa ra mắt, hoặc có thể bạn đã vung tiền và có một chiếc…
Giải pháp bảo mật thông tin trong các hệ cơ sở dữ liệu phổ biến hiện nay
Hiện nay, với sự phát triển mạnh mẽ của công nghệ 4.0 trong đó có internet và các thiết bị công nghệ số. Với các…
4 điều bạn cần lưu ý khi sao lưu dữ liệu trên máy tính
08/10/2020những chú ý khi tiến hành sao lưu dữ liệu trên máy tính trong bài viết dưới đây của máy tính An Phát để bạn…