Tổng quan và tính năng
Cài đặt và Công cụ kết nối
Quản trị PostgreSQL
Ngôn ngữ và lập trình SQL (Tìm kiếm toàn văn)
Transaction và Kiểm soát đồng thời
Sao lưu và phục hồi
2
Là một hệ thống quản trị cơ sở dữ liệu quan hệ miễn
phí và nguồn mở (RDBMS).
 Được thiết kế để xử lý một loạt các khối lượng công
việc lớn, từ các máy tính cá nhân đến kho dữ liệu hoặc
dịch vụ Web có nhiều người dùng đồng thời.
 Phát triển bởi: PostgreSQL Global Development Group (postgresql.org)
 Phát hành lần đầu: 08/07/1996.
 Phiên bản hiện tại: 13 phát hành vào ngày 20/06/2019.
 Hệ điều hành: FreeBSD, Linux, macOS, OpenBSD, Windows.
 Viết bằng ngôn ngữ lập trình C.
1
3
 1986: Dự án POSTGRES, do Giáo sư Michael Stonebraker lãnh đạo và bắt đầu triển
khai.
 06/1989: Phiên bản 1 đã được phát hành cho một ít người sử dụng bên ngoài.
 06/1990: Phiên bản 2 đã được phát hành
 1991: Phiên bản 3 đã xuất hiện.
 Cuối năm 1992, POSTGRES đã trở thành trình quản lý dữ liệu hàng đầu cho dự án
tính toán khoa học Sequoia 2000.
 1993: kết thúc dự án với phiên bản POSTGRES 4.2.
 Postgres95: Vào năm 1994, Andrew Yu và Jolly Chen đã bổ sung một trình biên dịch
ngôn ngữ SLQ vào POSTGRES. Postgres95 phiên bản 1.0.x đã chạy nhanh hơn khoảng
30-50% trên Wiscosin Benchmark so với POSTGRES phiên bản 4.2
 1996: đổi tên “Postgres95” cho tên mới PostgreSQL, phiên bản 6.0 (doanh thu)
 2021-08-12: PostgreSQL 13.4, và 14 Beta 3 version.
4
 Hỗ trợ các câu lện SQL cho quan hệ và JSON cho các truy vấn
không liên quan.
 Hỗ trợ đầy đủ các foreign keys, joins, views, triggers, và stored
procedures, transaction.
 Hỗ trợ lưu trữ các đối tượng có kiểu dữ liệu nhị phân lớn, bao
gồm cả hình ảnh, âm thanh, hoặc video.
 Hỗ trợ bảng mã Unicode, phân biệt chữ hoa - thường.
 Kiểm soát truy cập đồng thời nhiều phiên bản (MVCC), khôi
phục dữ liệu tại từng thời điểm (Recovery), quản lý dung lượng
bảng (tablespaces), sao chép không đồng bộ, giao dịch lồng
nhau (savepoints), sao lưu trực tuyến hay nội bộ,…
5
 Tương thích với các nền tảng khác nhau sử dụng tất cả các
ngôn ngữ chính và phần mềm trung gian.
 Tuân thủ tiêu chuẩn SQL ANSI
 Hỗ trợ đầy đủ cho kiến ​​trúc mạng client – server.
 SSL sao chép dựa trên đăng nhập và kích hoạt.
 Máy chủ dự phòng và tính sẵn sàng cao (high availability)
 Tương thích hướng đối tượng và ANSI-SQL2008
 Hỗ trợ cho JSON, cho phép liên kết với các kho lưu trữ dữ liệu
khác như NoQuery, hoạt động như một trung tâm liên kết cho
cơ sở dữ liệu polyglot.
6
 Tương thích với các nền tảng khác nhau sử dụng tất cả các
ngôn ngữ chính và phần mềm trung gian.
 Tuân thủ tiêu chuẩn SQL ANSI
 Hỗ trợ đầy đủ cho kiến ​​trúc mạng client – server.
 SSL sao chép dựa trên đăng nhập và kích hoạt.
 Máy chủ dự phòng và tính sẵn sàng cao (high availability)
 Tương thích hướng đối tượng và ANSI-SQL2008
 Hỗ trợ cho JSON, cho phép liên kết với các kho lưu trữ dữ liệu
khác như NoQuery, hoạt động như một trung tâm liên kết cho
cơ sở dữ liệu polyglot.
7
8
9
 PostgreSQL có thể chạy các trang web và ứng dụng web động với LAMP.
 Ghi nhật ký viết trước của PostgreSQL làm cho nó trở thành một cơ sở dữ
liệu có khả năng chịu lỗi cao
 Mã nguồn PostgreSQL có sẵn miễn phí theo giấy phép nguồn mở.
 PostgreSQL hỗ trợ các đối tượng địa lý để bạn có thể sử dụng nó cho các
dịch vụ dựa trên vị trí và hệ thống thông tin địa lý.
 PostgreSQL hỗ trợ các đối tượng địa lý để nó có thể được sử dụng làm kho
lưu trữ dữ liệu không gian địa lý (GIS) cho các dịch vụ dựa trên vị trí và hệ
thống thông tin địa lý.
 Dễ sử dụng và tiện lợi với PgAmin III, 4.
 Hạn chế việc bảo trì hệ thống.
10
Postgres không thuộc sở hữu của một tổ chức. Vì vậy, nó đã
gặp khó khăn khi đưa tên của mình ra khỏi đó mặc dù có đầy đủ
tính năng và có thể so sánh với các hệ thống DBMS khác
Những thay đổi được thực hiện để cải thiện tốc độ đòi hỏi
nhiều công việc hơn MySQL vì PostgreSQL tập trung vào khả
năng tương thích.
Nhiều ứng dụng nguồn mở hỗ trợ MySQL, nhưng có thể không
hỗ trợ PostgreSQL
Về số liệu hiệu suất, nó chậm hơn MySQL.
11
12
13
 Toàn vẹn dữ liệu: Khi độ tin cậy và tính toàn vẹn dữ liệu là tuyệt
đối cần thiết thì PostgreSQL là lựa chọn tốt hơn hết.
 Thủ tục phức tạp và khả năng tùy chỉnh cao: Nếu bạn cần cơ sở dữ
liệu của bạn thực hiện các thủ tục có khả năng tùy chỉnh thì
PostgreSQL hỗ trợ rất tốt cho việc đó.
 Sự đồng bộ: Trong tương lai, nếu có phải chuyển từ hệ quản trị cơ
sở dữ liệu quan hệ này sang một hệ quản trị cơ sở dữ liệu khác nhứ
Oracle thì PostgreSQL cho việc chuyển đổi trong tương lại đó.
 Thiết kế phức tạp: So với sự thực hiện của các hệ quản trị cơ sở dữ
liệu quan hệ mã nguồn mở miễn phí khác mà với thiết cơ sở dữ
liệu phức tạp thì PostgreSQL cung cấp cho chúng ta những giải
pháp tối ưu.
14
Tốc độ: Nếu tất cả các các hoạt động yêu cầu đọc nhanh thì
PostgreSQL không phải là công cụ phù hợp.
Các thiết lập đơn giản: Nếu bạn không yêu cầu tính toàn vẹn
dữ liệu tuyệt đối, tuân thủ theo ACID hoặc thiết kế phức tạp thì
PostgreSQL có thể là một sự phá hoại cho các thiết lập đơn
giản.
Sự nhân rộng: Trừ khi bạn sẵn sàng bỏ thời gian, công sức và
tài nguyên thì việc đạt được sự nhân rộng với MySQL có thể
đơn giản cho những người thiếu kinh nghiệm cơ sở dữ liệu và
hệ thống quản lý.
15
 So sánh MySQL và PostgreSQL:
http://sqladvice.com/postgresql-la-gi-so-sanh-mysql-va-postgresql/
 Khác nhau giữa SQL Server và PostgreSQL:
https://www.bkns.vn/khac-nhau-giua-postgresql-va-sql-server.html
 Hướng dẫn cài đặt PostgreSQL:
https://openplanning.net/11335/postgresql
 Tải file về cài đặt:
https://www.postgresql.org/download/
 Tải file dạng Binary Installer:
https://www.enterprisedb.com/download-postgresql-binaries
 Một số bài tập tham khảo:
https://pgexercises.com/gettingstarted.html
16

2
https://www.enterprisedb.com/compare
-postgres-databases
17
 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
18
19
20
21
22
23
24
3
25
3
26
3
27
3
28
3
29
3
30
3
31
3
32
3
33
3
34
3
35
3
36
3
37
3
38
3
39
3
40
3
41
NATURAL JOIN cũng là một khái niệm ít người biết đến khi
học về SQL. Nó là 1 loại JOIN ít được sử dụng trong câu SQL.
Tuy nhiên PostgreSQL hỗ trợ nó.
Cú pháp lệnh của NATURAL JOIN
SELECT * FROM Table_A
NATURAL [INNER, LEFT, RIGHT] JOIN Table_B;
Từ cú pháp lệnh chúng ta dễ dàng nhận thấy không còn chỉ
định mệnh đề điều kiện ON để join giữa các bảng với nhau
như INNER JOIN hay LEFT JOIN. Thay vào đó nó sẽ tự liên kết
thông qua các cột có tên giống nhau. Vì vậy không nên đặt tên
cột giống nhau giữa các bảng mà giữa chúng không có liên kết
dữ liệu.
4
42
BEGIN TRANSACTION – Bắt đầu một Transaction
COMMIT – Để lưu các thay đổi vào database, hoặc bạn
có thể sử dụng lệnh END TRANSACTION.
ROLLBACK – Hủy transaction và không thay đổi dữ liệu
trong database.
Transaction chỉ được sử dụng với các lệnh DML là:
INSERT, UPDATE, DELETE.
 Mặc định xử lý transaction là READ-COMMITTED
 PostgreSQL nếu mà đổi sang REPEATABLE-READ thì sẽ
tránh được PHANTOM-READ

5
43
6
44
6
45
46

Hệ quản trị CSDL PostgreSQL cho sinh viên

  • 2.
    Tổng quan vàtính năng Cài đặt và Công cụ kết nối Quản trị PostgreSQL Ngôn ngữ và lập trình SQL (Tìm kiếm toàn văn) Transaction và Kiểm soát đồng thời Sao lưu và phục hồi 2
  • 3.
    Là một hệthống quản trị cơ sở dữ liệu quan hệ miễn phí và nguồn mở (RDBMS).  Được thiết kế để xử lý một loạt các khối lượng công việc lớn, từ các máy tính cá nhân đến kho dữ liệu hoặc dịch vụ Web có nhiều người dùng đồng thời.  Phát triển bởi: PostgreSQL Global Development Group (postgresql.org)  Phát hành lần đầu: 08/07/1996.  Phiên bản hiện tại: 13 phát hành vào ngày 20/06/2019.  Hệ điều hành: FreeBSD, Linux, macOS, OpenBSD, Windows.  Viết bằng ngôn ngữ lập trình C. 1 3
  • 4.
     1986: Dựán POSTGRES, do Giáo sư Michael Stonebraker lãnh đạo và bắt đầu triển khai.  06/1989: Phiên bản 1 đã được phát hành cho một ít người sử dụng bên ngoài.  06/1990: Phiên bản 2 đã được phát hành  1991: Phiên bản 3 đã xuất hiện.  Cuối năm 1992, POSTGRES đã trở thành trình quản lý dữ liệu hàng đầu cho dự án tính toán khoa học Sequoia 2000.  1993: kết thúc dự án với phiên bản POSTGRES 4.2.  Postgres95: Vào năm 1994, Andrew Yu và Jolly Chen đã bổ sung một trình biên dịch ngôn ngữ SLQ vào POSTGRES. Postgres95 phiên bản 1.0.x đã chạy nhanh hơn khoảng 30-50% trên Wiscosin Benchmark so với POSTGRES phiên bản 4.2  1996: đổi tên “Postgres95” cho tên mới PostgreSQL, phiên bản 6.0 (doanh thu)  2021-08-12: PostgreSQL 13.4, và 14 Beta 3 version. 4
  • 5.
     Hỗ trợcác câu lện SQL cho quan hệ và JSON cho các truy vấn không liên quan.  Hỗ trợ đầy đủ các foreign keys, joins, views, triggers, và stored procedures, transaction.  Hỗ trợ lưu trữ các đối tượng có kiểu dữ liệu nhị phân lớn, bao gồm cả hình ảnh, âm thanh, hoặc video.  Hỗ trợ bảng mã Unicode, phân biệt chữ hoa - thường.  Kiểm soát truy cập đồng thời nhiều phiên bản (MVCC), khôi phục dữ liệu tại từng thời điểm (Recovery), quản lý dung lượng bảng (tablespaces), sao chép không đồng bộ, giao dịch lồng nhau (savepoints), sao lưu trực tuyến hay nội bộ,… 5
  • 6.
     Tương thíchvới các nền tảng khác nhau sử dụng tất cả các ngôn ngữ chính và phần mềm trung gian.  Tuân thủ tiêu chuẩn SQL ANSI  Hỗ trợ đầy đủ cho kiến ​​trúc mạng client – server.  SSL sao chép dựa trên đăng nhập và kích hoạt.  Máy chủ dự phòng và tính sẵn sàng cao (high availability)  Tương thích hướng đối tượng và ANSI-SQL2008  Hỗ trợ cho JSON, cho phép liên kết với các kho lưu trữ dữ liệu khác như NoQuery, hoạt động như một trung tâm liên kết cho cơ sở dữ liệu polyglot. 6
  • 7.
     Tương thíchvới các nền tảng khác nhau sử dụng tất cả các ngôn ngữ chính và phần mềm trung gian.  Tuân thủ tiêu chuẩn SQL ANSI  Hỗ trợ đầy đủ cho kiến ​​trúc mạng client – server.  SSL sao chép dựa trên đăng nhập và kích hoạt.  Máy chủ dự phòng và tính sẵn sàng cao (high availability)  Tương thích hướng đối tượng và ANSI-SQL2008  Hỗ trợ cho JSON, cho phép liên kết với các kho lưu trữ dữ liệu khác như NoQuery, hoạt động như một trung tâm liên kết cho cơ sở dữ liệu polyglot. 7
  • 8.
  • 9.
  • 10.
     PostgreSQL cóthể chạy các trang web và ứng dụng web động với LAMP.  Ghi nhật ký viết trước của PostgreSQL làm cho nó trở thành một cơ sở dữ liệu có khả năng chịu lỗi cao  Mã nguồn PostgreSQL có sẵn miễn phí theo giấy phép nguồn mở.  PostgreSQL hỗ trợ các đối tượng địa lý để bạn có thể sử dụng nó cho các dịch vụ dựa trên vị trí và hệ thống thông tin địa lý.  PostgreSQL hỗ trợ các đối tượng địa lý để nó có thể được sử dụng làm kho lưu trữ dữ liệu không gian địa lý (GIS) cho các dịch vụ dựa trên vị trí và hệ thống thông tin địa lý.  Dễ sử dụng và tiện lợi với PgAmin III, 4.  Hạn chế việc bảo trì hệ thống. 10
  • 11.
    Postgres không thuộcsở hữu của một tổ chức. Vì vậy, nó đã gặp khó khăn khi đưa tên của mình ra khỏi đó mặc dù có đầy đủ tính năng và có thể so sánh với các hệ thống DBMS khác Những thay đổi được thực hiện để cải thiện tốc độ đòi hỏi nhiều công việc hơn MySQL vì PostgreSQL tập trung vào khả năng tương thích. Nhiều ứng dụng nguồn mở hỗ trợ MySQL, nhưng có thể không hỗ trợ PostgreSQL Về số liệu hiệu suất, nó chậm hơn MySQL. 11
  • 12.
  • 13.
  • 14.
     Toàn vẹndữ liệu: Khi độ tin cậy và tính toàn vẹn dữ liệu là tuyệt đối cần thiết thì PostgreSQL là lựa chọn tốt hơn hết.  Thủ tục phức tạp và khả năng tùy chỉnh cao: Nếu bạn cần cơ sở dữ liệu của bạn thực hiện các thủ tục có khả năng tùy chỉnh thì PostgreSQL hỗ trợ rất tốt cho việc đó.  Sự đồng bộ: Trong tương lai, nếu có phải chuyển từ hệ quản trị cơ sở dữ liệu quan hệ này sang một hệ quản trị cơ sở dữ liệu khác nhứ Oracle thì PostgreSQL cho việc chuyển đổi trong tương lại đó.  Thiết kế phức tạp: So với sự thực hiện của các hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở miễn phí khác mà với thiết cơ sở dữ liệu phức tạp thì PostgreSQL cung cấp cho chúng ta những giải pháp tối ưu. 14
  • 15.
    Tốc độ: Nếutất cả các các hoạt động yêu cầu đọc nhanh thì PostgreSQL không phải là công cụ phù hợp. Các thiết lập đơn giản: Nếu bạn không yêu cầu tính toàn vẹn dữ liệu tuyệt đối, tuân thủ theo ACID hoặc thiết kế phức tạp thì PostgreSQL có thể là một sự phá hoại cho các thiết lập đơn giản. Sự nhân rộng: Trừ khi bạn sẵn sàng bỏ thời gian, công sức và tài nguyên thì việc đạt được sự nhân rộng với MySQL có thể đơn giản cho những người thiếu kinh nghiệm cơ sở dữ liệu và hệ thống quản lý. 15
  • 16.
     So sánhMySQL và PostgreSQL: http://sqladvice.com/postgresql-la-gi-so-sanh-mysql-va-postgresql/  Khác nhau giữa SQL Server và PostgreSQL: https://www.bkns.vn/khac-nhau-giua-postgresql-va-sql-server.html  Hướng dẫn cài đặt PostgreSQL: https://openplanning.net/11335/postgresql  Tải file về cài đặt: https://www.postgresql.org/download/  Tải file dạng Binary Installer: https://www.enterprisedb.com/download-postgresql-binaries  Một số bài tập tham khảo: https://pgexercises.com/gettingstarted.html 16
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
    NATURAL JOIN cũnglà một khái niệm ít người biết đến khi học về SQL. Nó là 1 loại JOIN ít được sử dụng trong câu SQL. Tuy nhiên PostgreSQL hỗ trợ nó. Cú pháp lệnh của NATURAL JOIN SELECT * FROM Table_A NATURAL [INNER, LEFT, RIGHT] JOIN Table_B; Từ cú pháp lệnh chúng ta dễ dàng nhận thấy không còn chỉ định mệnh đề điều kiện ON để join giữa các bảng với nhau như INNER JOIN hay LEFT JOIN. Thay vào đó nó sẽ tự liên kết thông qua các cột có tên giống nhau. Vì vậy không nên đặt tên cột giống nhau giữa các bảng mà giữa chúng không có liên kết dữ liệu. 4 42
  • 43.
    BEGIN TRANSACTION –Bắt đầu một Transaction COMMIT – Để lưu các thay đổi vào database, hoặc bạn có thể sử dụng lệnh END TRANSACTION. ROLLBACK – Hủy transaction và không thay đổi dữ liệu trong database. Transaction chỉ được sử dụng với các lệnh DML là: INSERT, UPDATE, DELETE.  Mặc định xử lý transaction là READ-COMMITTED  PostgreSQL nếu mà đổi sang REPEATABLE-READ thì sẽ tránh được PHANTOM-READ  5 43
  • 44.
  • 45.
  • 46.