3.6.1.1.1 cú pháp
SELECT tên cột FROM tên bảng Trong đó
+ tên cột là tên các cột dữ liệu đang có trong các bảng mà chúng ta cần lấy giữ liệu +tên bảng là danh sách các bảng cần hiển thị giữ liệu
3.6.1.1.2 ví dụ:
hiển thị TenSV,Makhoa trong bảng SinhViên ta thực hiện lệnh như sau select "TenSV","Makhoa"
from "SinhVien"
3.6.1.2 Mệnh đề sắp xếp kiểu dữ liệu:
Với cú pháp SELECT FROM bên giưới kết hợp với mệnh đề ORDER BY cho phép các bạn có thể lấy dữ liệu của các cột bên trong một bảng, sau đó sắp xếp lại kiểu dữ liệu đó theo thứ tự chỉ định là tăng hoạc giảm
3.6.1.2.1 Cú pháp:
SELECT tên_các_cột WHERE Tên_bảng
ORDER BY tên_cột_sx [DESC] Trong đó:
+Tên cột sắp xếp là tên cột được sắp xếp dữ liệu. thứ tự ưu tiên sắp xếp các cột dữ liệu từ trái qua phải mặc định theo thứ tự tăng dần.
+ Từ khóa DESC dùng chỉ thay đổi thứ tự sắp xếp là giãm dần, mặc định thứ tự sắp xếp là tăng dần
3.6.1.2.2 Ví dụ:
sắp xếp MaKhoa và TenKhoa trong bảng Khoatheo thứ tự giãm dần theo TenKhoa ta dùng câu lệnh select from như sau:
SELECT "Makhoa", "TenKhoa" FROM "Khoa"
ORDER BY "TenKhoa" DESC;
3.6.1.3 Phép toán like điều kiện:
Phép toán like được dùng để tìm kiếm một chuổi mẫu văn bản trên một cột
3.6.1.3.1 Cú pháp
SELECT tên_cột FROM tên_bảng
WHERE tên_cột LIKE mẫu Trong đó
+ký hiệu % có thể được sử dụng để định nghĩa các ký tự đại diện.%có thể được đặt trước và/hoặc sau mẫu.
3.6.1.3.2 Ví dụ :
Tim kiếm những người có tên là trân trong bản SinhVien ta có thể tạo câu lệnh truy vấn như sau:
SELECT "MaSV", "TenSV", "Makhoa" FROM "SinhVien"
WHERE "TenSV" LIKE '%trần%';
3.6.1 dùng giao diện
B1 Ta vào database sau đó vào Excute arbitrary SQLqueries như hình vẻ
B3 Kết qua như hình sau tiếp tục chon tên Database/schemas/public
B4 từ đây ta tạo các câu lệnh select bằng cách chon vào kéo thả các table và chọn các cột cần hiển thị như hình sau
B4: Sau khi đã chon xong chạy câu lệnh bằng cách ấn vào Excute Query như hình dưới đây
3.7Tạo View (Bảng ảo):
Bảng ảo thực chất là một đối tượng mà bên trong nó chỉ lưa trữ duy nhất một câu lệnh SELECT dùng để chỉ định các dòng các cột dưới bảng mà nó được chỉ định hiện ra do người dùng định nghĩa và chúng ta sữ dụng bảng ảo như các bảng thông thường
3.7.1 Tọa bằng dòng lệnh:3.7.1.1 Cú pháp 3.7.1.1 Cú pháp
CREATE VIEW Tên_bảng_ảo [(Tên các cột)]
[WITH ENCRYPTION] AS
Câu_lệnh_select
[WITH CHECK OPITION] Trong đó
+Tên_bảng_ảo là tên của bảng ảo mình cần tạo
+danh sách các cột sẻ được sử dụng về sau trong bảng ảo khi tham chiếu đến các cột trong bảng ảo.Thông thường được sữ dụng trong bảng ảo có sử dụng các hàm tính toán, hoặc các cột trùng tên trong bảng dữ khác nhau
+Từ khóa WITH ENCRYPTION dùng để mã hóa nội dung câu lệnh select bên trong bảng ảo không ai có thể biết được nội dung của câu lệnh select bên trong bảng ảo là gì +Từ khóa WITH CHECK OPITION dùng để ngăn cản các thao tác cập nhật dữ liệu (sửa ,thêm) tác động trực tiếp vào bảng ảo có làm ảnh hưởng đến các bảng ảo có sử dụng mệnh đề where trong câu lệnh select
3.7.1.2 Ví dụ:
tạo bảng ảo có tên là XemSV gồm 2 trường TenSV và TenKhoa được lấy ra từ 2 bảng SinhVien và Khoa ta tạo dòng lệnh như sau
create view XemSV as SELECT "SinhVien"."TenSV", "Khoa"."TenKhoa" FROM public."SinhVien", public."Khoa"
WHERE
"Khoa"."Makhoa" = "SinhVien"."Makhoa";
3.7.2 Tạo bằng giao diện
B1.Vào database sau đó chọn vào view như hình vẻ sau
B3 Sau đó thiết nhập tên view cần tạo như hình sau
B5 Vào Privileges thiết lập những thao tác được phép thực hiện trên view mình cần tạo
B6: kích vào nút Ok để để hoàn thành View
3.8Tạo Hàm do người dùng định nghĩa
Các ngôn ngữ lập trình đã cung cấp khả năng cho phép người dùng tự định nghĩa các hàm xữ lý tính toán và giọi thực hiện chúng khi nó cần trong chương trình và PostgerSql củng vậy
3.8.1 tạo bằng câu lệnh
3.8.1.1Cú pháp
CREATE [ OR REPLACE ] FUNCTION
name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] ) [ RETURNSrettype
| RETURNS TABLE ( column_namecolumn_type [, ...] ) ] { LANGUAGElang_name
| WINDOW
| IMMUTABLE | STABLE | VOLATILE
| CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
| COST execution_cost
| ROWS result_rows
| SET configuration_parameter{ TOvalue | = value | FROM CURRENT } | AS 'definition'
| AS 'obj_file', 'link_symbol' } ...
[ WITH ( attribute [, ...] ) ]
Trong đó
+ name là tên hàm cần tạo
+ argmode Các chế độ của một đối số: IN, OUT, INOUT, hoặc variadic. Nếu bỏ qua, mặc định là IN. Chỉ OUT đối số có thể làm theo một variadic. Ngoài ra, OUT và INOUT đối số không có thể được sử dụng cùng với các ký hiệu RETURNS TABLE. + argname Tên của một tham số. Một số ngôn ngữ (hiện chỉ PL / pgSQL) cho phép bạn sử dụng tên trong các phần thân hàm.Đối với các ngôn ngữ khác, tên của một đối số đầu vào chỉ là tài liệu hướng dẫn thêm, cho đến nay là chức năng chính nó là có liên quan, nhưng bạn có thể sử dụng các tên đối số đầu vào khi gọi một chức năng để cải thiện khả năng đọc.Trong bất kỳ trường hợp nào, tên của một đối số đầu ra là quan trọng, bởi vì nó xác định tên cột trong các loại hàng kết quả.(Nếu bạn bỏ qua tên cho một đối số đầu ra, hệ thống sẽ chọn một tên cột mặc định.).
+argtype Các kiểu dữ liệu (s) của các đối số của hàm (tùy chọn trình độ schema), nếu có. Các loại đối số có thể là các loại cơ sở, composite, hoặc tên miền, hoặc có thể tham khảo các loại của một cột trong bảng.
+column_name Tên của các cột đầu ra trong cú pháp RETURNS TABLE.
+column_type kiểu dữ liệu của một cột đầu ra trong cú pháp RETURNS TABLE.
+lang_name Tên của ngôn ngữ mà các chức năng được thực hiện. SQL, C, nội bộ, hoặc tên của người dùng xác định ngôn ngữ thủ tục. Để tương thích ngược, tên có thể được bao bọc bởi dấu nháy đơn.
+ WINDOW WINDOW chỉ ra rằng chức năng là một hàm window chứ không phải là một chức năng đơn giản bằng. điều này chỉ hữu ích cho các chức năng viết bằng C. Các thuộc tính WINDOW không thể được thay đổi khi thay thế một định nghĩa chức năng hiện có
+IMMUTABLE
STABLE VOLATILE
Những thuộc tính này thông báo cho các truy vấn tối ưu về hành vi của các chức năng. Có thể lựa chọn tối đa một thể được chỉ định.Nếu không có những xuất bằng, VOLATILE
là giả thiết mặc định.
+ CALLED ON NULL INPUT
+ RETURNS NULL ON NULL INPUT
CALLED ON NULL INPUT (mặc định) chỉ ra rằng chức năng sẽ được gọi là bình thường khi một số đối số của nó là null.Đó là sau đó trách nhiệm của tác giả chức năng để kiểm tra các giá trị null nếu cần thiết và đáp ứng một cách thích hợp.
RETURNS NULL ON NULL INPUT hoặc nghiêm ngặt chỉ ra rằng hàm luôn trả về null bất cứ khi nào bất kỳ đối số của nó là null.Nếu tham số này được quy định cụ thể, chức năng không được thực thi khi có những lập luận vô giá trị, thay vào đó là một kết quả vô giá trị sẽ tự động được mặc định.
+execution_cost một số tích cực cho các chi phí thực hiện ước tính định chức năng, nhiệm vụ, trong đơn vị cpu_operator_cost. Nếu chức năng trả về một tập, đây là giá cho mỗi hàng trả lại. Nếu giá không được chỉ định, thì 1 đơn vị giả thiết cho các chức năng C-ngôn ngữ và nội bộ, và 100 đơn vị chức năng trong tất cả các ngôn ngữ khác. Giá trị lớn hơn gây ra các kế hoạch để cố gắng tránh đánh giá chức năng nhiều hơn mức cần thiết.
3.8.1.2 Ví dụ:
tạo một hàm có tên là add có 2 tham số đầu vao đều là là kiểu integer và chức năng của hàm là tính tổng 2 tham số đó
CREATE OR REPLACE FUNCTION add(integer, integer) RETURNS integer AS
'select $1 + $2;'
LANGUAGE sql IMMUTABLE STRICT COST 100;
3.8.1 Tạo hàm bằng giao diện
B2 Chốt phải vào Function chọn New Function như hình sau
B4 sau khi thiết lập các thành phần cần thiết ta chon ok để kết thúc.
3.9 Tạo Trigger
Trigger có thể được xem là một dạng đặc biệt của thủ tục nội tại bởi vì bên trong nội dung của trigger lưu trữ các câu lệnh dùng trực tiếp mà người lập trình chỉ ra tuy nhiên khác với thủ tục nội tại trigger hoàn toàn không có tham số.Ngoài ra chúng ta không thể giọi thực hiện trực tiếp bằng băng lệnh EXCUTE như thủ tục nội tại hoặc bất kỳ một lệnh nào khác thay vào đó sẻ được thực hiện một cách tự động khi dữ liệu liên quan đến trigger bị cập nhật.Chính nhờ các tính năng đặc biệt là tự động thực hiện mà nội dung các lệnh bên trong trigger được dùng cho các công việc sau
+Kiễm tra các ràng buộc toàn vẹn dữ liệu phức tạp
+Thực hiện các xữ lý được thiết kế thi hành tại SERVER các xữ lý mà ta muốn chúng sẻ được thực hiện khi có các thao tác INSERT,UPDATE, hoạc DELETE xảy ra.
+Trigger củng được dùng để thay thế các constrain trong trường hợp ta muốn kiểm tra ràng buộc dữ liệu kèm theo các câu thông bào thích hợp theo ý người dùng.
3.9.1 Tạo bằng dòng lệnh3.9.1.1 Cú pháp 3.9.1.1 Cú pháp
CREATE [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] }
ON table
[ FROMreferenced_table_name ]
{ NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } }
[ FOR [ EACH ] { ROW | STATEMENT } ] [ WHEN ( condition ) ]
EXECUTE PROCEDURE function_name( arguments ) Trong đó
+Name là tên của trigger mình cần tạo +BEFORE,AFTER,INSTEAD OF loại của trigger
+Table là tên bảng hoạc view mà trigger tác động đến +function name là tên của hàm mà trigger sẻ thực hiện +Arguments tên các tham số của hàm thực hiện
3.9.2 Tạo bằng giao diện
B1 Vào Database /Schames/ public/Trigger function như hình dưới đây
B3 Thiết lập các tham số cần cho Trigger function
KẾT LUẬN
Sau một thời gian nghiên cứu và tìm hiểu, khóa luận đã thu được các kết quả như sau:
- Cài đặt, thao tác thành thạo với hệ quản trị CSDL PostgreSQL thông qua các kiểu giao tương tác. Ngoài ra, nắm rõ được lịch sử phát triển và những ưu điểm của nó so với các hệ quản trị khác.
- Các thao tác cơ bản trên hệ quản trị cơ sở dữ liệu PostgerSQL
- Phần thực nghiệm của Đề tài đã tạo một số cơ sở dữ liệu và thực hiện được các thao tác cơ bản trên nó.
Trong Đề tài, tôi hy vọng đã đưa ra những kiến thức cần thiết nhất về hệ quản trị CSDL PostgreSQL và hi vọng nó sẻ được sử dụng một cách phổ biến đến nhiều người hơn và áp dụng vào thực tế.
TÀI LIỆU THAM KHẢO
Sách:
[1] Ewald Geschwinde and Hans-Juergen Schoening, PHP and PostgreSQL Advanced Web Programming, 2002, Sams Publishing.
[2] Korry Dougla and Susan Douglas, The comprehensive guide to building programming and administering PostgreSQL database, 2nd, 2005, Sams Publishing.
[3] Paul Ramsey, PostGIS Workshop, Refractions Research, Suite 300 – 1207 Douglas
Street, Victoria – British Columbia, CANADA – V8W 2E7
[4] Ralf Hartmut Gueting, An introdution to databases system, Praktische Informatik IV
FenUniversity Hagen, Germany
[5] The PostgreSQL Global Development Group, PostgreSQL 8.4 Documentation, 1996 2009.
[6] W.Jason Gilmore and Robert H.Treat,Beginning PHP and PostgreSQL 8: From Novice to Professional, Feb 2006, Kinetic Publishing Service.
Web:
[1] www.postgis.refractions.net [2] www.postgresql.org