Phiên bản được hỗ trợ:hiện tại(17)16/15/14/13
Phiên bản phát triển:Devel
Phiên bản không được hỗ trợ:12/11/4/9.6/9.5/9.4/9.3/9.2/9.1/9.0/8.4/8.3/8.2/8.1/8.0/7.4/7.3/7.2/7.1
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng kèo bóng đá euro trang chohiện tạiPhiên bản hoặc một trong kèo bóng đá euro phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

4.2. kèo bóng đá euro giá trị

kèo bóng đá euro giá trị được sử dụng trong nhiều bối cảnh khác nhau, chẳng hạn như trong danh sách mục tiêu củaChọnlệnh, như kèo bóng đá euro giá trị cột mới trongChènhoặcCập nhậthoặc trong các điều kiện tìm kiếm trong một số lệnh. Kết quả của kèo bóng đá euro giá trị đôi khi được gọi làvô hướng, để phân biệt nó với kết quả của một kèo bóng đá euro bảng (là một bảng). Do đó, các kèo bóng đá euro giá trị cũng được gọi làkèo bóng đá euro vô hướng(hoặc thậm chí đơn giản làkèo bóng đá euro). Cú pháp kèo bóng đá euro cho phép tính toán các giá trị từ các phần nguyên thủy bằng số học, logic, tập hợp và các hoạt động khác.

kèo bóng đá euro giá trị là một trong những điều sau:

  • kèo bóng đá euro giá trị không đổi hoặc theo nghĩa đen

  • tham chiếu cột

  • Tham chiếu tham số vị trí, trong phần thân của định nghĩa hàm hoặc câu lệnh đã chuẩn bị

  • Một kèo bóng đá euro được đăng ký

  • kèo bóng đá euro lựa chọn trường

  • kèo bóng đá euro người vận hành gọi

  • kèo bóng đá euro chức năng gọi

  • một kèo bóng đá euro tổng hợp

  • kèo bóng đá euro chức năng cửa sổ gọi

  • kèo bóng đá euro loại đúc

  • kèo bóng đá euro đối chiếu

  • 11717_11736

  • Trình xây dựng mảng

  • Trình xây dựng hàng

  • Một kèo bóng đá euro giá trị khác trong ngoặc đơn (được sử dụng để nhóm biểu hiện phụ và ghi đè ưu tiên)

Ngoài danh sách này, có một số cấu trúc có thể được phân loại là một kèo bóng đá euro nhưng không tuân theo bất kỳ quy tắc cú pháp chung nào. Chúng thường có ngữ nghĩa của một hàm hoặc toán tử và được giải thích ở vị trí thích hợp trongChương 9. kèo bóng đá euro ví dụ làlà nullmệnh đề.

Chúng ta đã thảo luận kèo bóng đá euro hằng số trongPhần 4.1.2. kèo bóng đá euro phần sau thảo luận về kèo bóng đá euro tùy chọn còn lại.

4.2.1. Tài liệu tham khảo cột

kèo bóng đá euro cột có thể được tham chiếu ở dạng:

Tương quan.CộtName

Tương quanlà tên của bảng (có thể đủ điều kiện với tên lược đồ) hoặc bí danh cho kèo bóng đá euro bảng được xác định bằng phương tiệntừmệnh đề. Tên tương quan và dấu chấm phân tách có thể được bỏ qua nếu tên cột là duy nhất trên tất cả kèo bóng đá euro bảng được sử dụng trong truy vấn hiện tại.Chương 7.)

4.2.2. Tham số vị trí

Tham chiếu tham số vị trí được sử dụng để chỉ ra một giá trị được cung cấp bên ngoài cho câu lệnh SQL. kèo bóng đá euro tham số được sử dụng trong kèo bóng đá euro định nghĩa chức năng SQL và trong kèo bóng đá euro truy vấn đã chuẩn bị.

$Số

Ví dụ: xem xét định nghĩa của kèo bóng đá euro hàm,Dept, như:

Tạo chức năng Dept (văn bản) Trả về Dept

ở đây$ 1Tài liệu tham khảo giá trị của đối số hàm đầu tiên bất cứ khi nào hàm được gọi.

4.2.3. Đăng ký

Nếu kèo bóng đá euro mang lại giá trị của loại mảng, thì một phần tử cụ thể của giá trị mảng có thể được trích xuất bằng cách viết

kèo bóng đá euro[Đăng ký]

hoặc nhiều phần tử liền kề (kèo bóng đá euro"Slice Array") có thể được trích xuất bằng cách viết

kèo bóng đá euro[Lower_SubScript:Upper_subscript]

(ở đây, dấu ngoặc[]có nghĩa là xuất hiện theo nghĩa đen.) MỗiĐăng kýBản thân nó là một kèo bóng đá euro, sẽ được làm tròn đến giá trị số nguyên gần nhất.

Nói chung là mảngkèo bóng đá europhải được đặt dấu ngoặc đơn, nhưng dấu ngoặc đơn có thể được bỏ qua khi kèo bóng đá euro được đăng ký chỉ là một tham chiếu cột hoặc tham số vị trí. Ngoài ra, nhiều chỉ số có thể được kết hợp khi mảng ban đầu là đa chiều.

MyTable.ArrayColumn [4]

dấu ngoặc đơn trong ví dụ cuối cùng được yêu cầu. Nhìn thấyPhần 8.15Để biết thêm về mảng.

4.2.4. Lựa chọn trường

Nếu kèo bóng đá euro mang lại giá trị của loại tổng hợp (loại hàng), thì một trường cụ thể của hàng có thể được trích xuất bằng cách viết

kèo bóng đá euro.FieldName

Nói chung hàngkèo bóng đá europhải được đặt dấu ngoặc đơn, nhưng dấu ngoặc đơn có thể được bỏ qua khi kèo bóng đá euro được chọn từ chỉ là tham chiếu bảng hoặc tham số vị trí. Ví dụ:

mytable.mycolumn

(Do đó, tham chiếu cột đủ điều kiện thực sự chỉ là kèo bóng đá euro trường hợp đặc biệt của cú pháp lựa chọn trường.) kèo bóng đá euro trường hợp đặc biệt quan trọng là trích xuất kèo bóng đá euro trường từ cột bảng thuộc loại tổng hợp:

(Compositecol) .Somefield

dấu ngoặc đơn được yêu cầu ở đây để hiển thị rằngCompositecollà tên cột không phải tên bảng hoặc đóMyTablelà tên bảng không phải là tên lược đồ trong trường hợp thứ hai.

Bạn có thể yêu cầu tất cả kèo bóng đá euro trường có giá trị tổng hợp bằng cách viết.*:

(Compositecol).*

Ký hiệu này hoạt động khác nhau tùy thuộc vào ngữ cảnh; nhìn thấyPhần 8.16.5Để biết chi tiết.

4.2.5. Nhiệm vụ vận hành

Có ba cú pháp có thể xảy ra cho việc gọi toán tử:

kèo bóng đá euro Nhà điều hành kèo bóng đá euro(toán tử Infix nhị phân)
Nhà điều hành kèo bóng đá euro(toán tử tiền tố unary)
kèo bóng đá euro Nhà điều hành(toán tử postfix không)
trong đóNhà điều hànhMã thông báo tuân theo kèo bóng đá euro quy tắc cú pháp củaPhần 4.1.3hoặc là kèo bóng đá euro trong những từ khóa,hoặckhônghoặc là tên toán tử có trình độ trong kèo bóng đá euro mẫu:
toán tử (lược đồ.OperatorName)

18334_18477Chương 9Mô tả kèo bóng đá euro toán tử tích hợp.

4.2.6. kèo bóng đá euro cuộc gọi chức năng

Cú pháp cho kèo bóng đá euro cuộc gọi chức năng là tên của kèo bóng đá euro hàm (có thể đủ điều kiện với kèo bóng đá euro tên lược đồ), theo sau là danh sách đối số của nó được đặt trong ngoặc đơn:

function_name([kèo bóng đá euro[,kèo bóng đá euro...]])

Ví dụ: sau đây tính toán căn bậc hai của 2:

Sqrt (2)

Danh sách kèo bóng đá euro chức năng tích hợp trongChương 9. kèo bóng đá euro chức năng khác có thể được thêm bởi người dùng.

Khi phát hành truy vấn trong cơ sở dữ liệu trong đó một số người dùng không tin tưởng người dùng khác, hãy quan sát kèo bóng đá euro biện pháp phòng ngừa bảo mật từPhần 4.3Khi viết kèo bóng đá euro cuộc gọi chức năng.

kèo bóng đá euro đối số có thể tùy ý có tên được đính kèm. Nhìn thấyPhần 4.3Để biết chi tiết.

Lưu ý:Một hàm có một đối số duy nhất có loại tổng hợp có thể được gọi là bằng cách sử dụng cú pháp lựa chọn trường và ngược lại có thể được viết theo kiểu chức năng. Nghĩa là, kèo bóng đá euro ký hiệucol (bảng)Bảng.colcó thể hoán đổi cho nhau. Hành vi này không phải là SQL-Standard nhưng được cung cấp trongPostgreSQLBởi vì nó cho phép sử dụng kèo bóng đá euro chức năng để mô phỏng"kèo bóng đá euro trường được tính toán". Để biết thêm thông tin, xemPhần 8.16.5.

4.2.7. kèo bóng đá euro tổng hợp

AN​​kèo bóng đá euro tổng hợpThể hiện ứng dụng của hàm tổng hợp trên kèo bóng đá euro hàng được chọn bởi một truy vấn. Hàm tổng hợp giảm nhiều đầu vào thành một giá trị đầu ra duy nhất, chẳng hạn như tổng hoặc trung bình của kèo bóng đá euro đầu vào.

Tổng hợp_name(kèo bóng đá euro[, ...] [order_by_clause]) [bộ lọc (trong đóFilter_Clause)]tổng hợp_name(tất cảkèo bóng đá euro[, ...] [order_by_clause]) [bộ lọc (trong đóFilter_Clause)]tổng hợp_name(khác biệtkèo bóng đá euro[, ...] [order_by_clause]) [bộ lọc (trong đóFilter_Clause)]Tổng hợp_name( *) [bộ lọc (trong đóFilter_Clause)]Tổng hợp_name([kèo bóng đá euro[, ...]]) trong nhóm (order_by_clause) [bộ lọc (trong đóFilter_Clause)]

WHERETổng hợp_namelà kèo bóng đá euro tổng hợp được xác định trước đó (có thể đủ điều kiện với tên lược đồ) vàkèo bóng đá eurolà bất kỳ kèo bóng đá euro giá trị nào không chứa kèo bóng đá euro tổng hợp hoặc lệnh gọi hàm cửa sổ. Tùy chọnorder_by_clauseFilter_Clauseđược mô tả bên dưới.

Hình thức đầu tiên của kèo bóng đá euro tổng hợp gọi tổng hợp một lần cho mỗi hàng đầu vào. Biểu mẫu thứ hai giống như hình thức thứ nhất, vìtất cảlà mặc định. Mẫu thứ ba gọi tổng hợp một lần cho từng giá trị riêng biệt của kèo bóng đá euro (hoặc tập hợp các giá trị riêng biệt, cho nhiều kèo bóng đá euro) được tìm thấy trong các hàng đầu vào.Count (*)Hàm tổng hợp. Mẫu cuối cùng được sử dụng vớiĐặt hàng-SETHàm tổng hợp, được mô tả bên dưới.

hầu hết các hàm tổng hợp bỏ qua các đầu vào null, do đó các hàng trong đó một hoặc nhiều kèo bóng đá euro mang lại NULL được loại bỏ. Điều này có thể được coi là đúng, trừ khi có quy định khác, cho tất cả các tập hợp tích hợp.

Ví dụ,Count (*)mang lại tổng số hàng đầu vào;Count (f1)mang lại số lượng hàng đầu vào trong đóF1không phải là null, vìĐếmbỏ qua nulls; VàCount (riêng biệt f1)mang lại số lượng kèo bóng đá euro giá trị không khác biệt củaF1.

Thông thường, kèo bóng đá euro hàng đầu vào được đưa vào hàm tổng hợp theo thứ tự không xác định. Trong nhiều trường hợp, điều này không quan trọng;mintạo ra kết quả tương tự bất kể thứ tự nào nhận được kèo bóng đá euro đầu vào. Tuy nhiên, một số hàm tổng hợp (nhưmảng_aggString_agg) Tạo kết quả phụ thuộc vào thứ tự của kèo bóng đá euro hàng đầu vào. Khi sử dụng tổng hợp như vậy, tùy chọnorder_by_clausecó thể được sử dụng để chỉ định thứ tự mong muốn. Theorder_by_clausecó cùng cú pháp với mức truy vấnđặt hàng bởimệnh đề, như được mô tả trongPhần 7.5, ngoại trừ các kèo bóng đá euro của nó luôn chỉ là các kèo bóng đá euro và không thể là tên hoặc số cột đầu ra. Ví dụ:

Chọn Array_AGG (kèo bóng đá euro đơn đặt hàng của B Desc) từ bảng;

Khi xử lý kèo bóng đá euro chức năng tổng hợp đa đối số, lưu ý rằngĐặt hàng bởimệnh đề đi sau tất cả kèo bóng đá euro đối số tổng hợp. Ví dụ: viết cái này:

Chọn String_agg (a, ',' thứ tự bằng a) từ bảng;

Không phải thế này:

Chọn String_agg (kèo bóng đá euro đơn đặt hàng của a, ',') từ bảng;  -- không đúng

24885_24996Đặt hàng bởiPhím (cái thứ hai khá vô dụng vì nó là hằng số).

nếukhác biệtđược chỉ định ngoài kèo bóng đá euroorder_by_clause, sau đó tất cảĐặt hàng bởikèo bóng đá euro phải khớp với các đối số chính quy của tổng hợp; nghĩa là, bạn không thể sắp xếp trên một kèo bóng đá euro không được bao gồm trongkhác biệtDanh sách.

Lưu ý:Khả năng chỉ định cả haikhác biệtĐặt hàng bởiTrong kèo bóng đá euro hàm tổng hợp làPostgreSQLMở rộng.

ĐặtĐặt hàng bởiTrong danh sách đối số thông thường của tổng hợp, như được mô tả cho đến nay, được sử dụng khi đặt hàng kèo bóng đá euro hàng đầu vào cho A"Bình thường"Tổng hợp cho đặt hàng là tùy chọn. Có một lớp con của kèo bóng đá euro hàm tổng hợp được gọi làTập hợp được đặt hàngorder_by_clauseYêu cầu, thường là do tính toán của tổng hợp chỉ hợp lý theo một thứ tự cụ thể của kèo bóng đá euro hàng đầu vào của nó. kèo bóng đá euro ví dụ điển hình của kèo bóng đá euro tập hợp được đặt hàng bao gồm kèo bóng đá euro tính toán cấp bậc và phần trăm.order_by_clauseđược viết bên trong​​Trong nhóm (...), như thể hiện trong cú pháp thay thế cuối cùng ở trên. Các kèo bóng đá euro trongorder_by_clauseđược đánh giá một lần trên mỗi hàng đầu vào giống như kèo bóng đá euro đối số tổng hợp thông thường, được sắp xếp theoorder_by_clauses yêu cầu và được đưa vào hàm tổng hợp làm đối số đầu vào. (Điều này không giống như trường hợp không phải làtrong nhóm order_by_clause, không được coi là đối số (các) hàm tổng hợp.) Các kèo bóng đá euro đối số trướctrong nhóm, nếu có, được gọi làĐối số trực tiếpĐể phân biệt chúng vớiĐối số tổng hợpđược liệt kê trongorder_by_clause. Không giống như kèo bóng đá euro đối số tổng hợp thông thường, kèo bóng đá euro đối số trực tiếp chỉ được đánh giá một lần trên mỗi cuộc gọi tổng hợp, không một lần trên mỗi hàng đầu vào.Nhóm bởi; Hạn chế này giống như khi các đối số trực tiếp không nằm trong một kèo bóng đá euro tổng hợp.()không(*). (PostgreSQLthực sự sẽ chấp nhận chính tả, nhưng chỉ theo cách đầu tiên phù hợp với tiêu chuẩn SQL.)

kèo bóng đá euro ví dụ về cuộc gọi tổng hợp được đặt hàng là:

chọn phần trăm_cont (0,5) trong nhóm (đặt hàng theo thu nhập) từ kèo bóng đá euro hộ gia đình;

có được giá trị phần trăm thứ 50 hoặc trung bình, củaThu nhậpCột từ bảnghộ gia đình. Đây,0.5là một đối số trực tiếp; Sẽ không có ý nghĩa gì cho phân số phần trăm là một giá trị khác nhau giữa kèo bóng đá euro hàng.

nếuFilterđược chỉ định, sau đó chỉ kèo bóng đá euro hàng đầu vào màFilter_ClauseĐánh giá thành true được đưa vào hàm tổng hợp; kèo bóng đá euro hàng khác bị loại bỏ.

Chọn

kèo bóng đá euro hàm tổng hợp được xác định trước được mô tả trongPhần 9.20. kèo bóng đá euro chức năng tổng hợp khác có thể được thêm bởi người dùng.

Một kèo bóng đá euro tổng hợp chỉ có thể xuất hiện trong danh sách kết quả hoặcmệnh đề AChọnLệnh. Nó bị cấm trong kèo bóng đá euro điều khoản khác, chẳng hạn nhưWHERE, bởi vì kèo bóng đá euro mệnh đề đó được đánh giá hợp lý trước khi kết quả của kèo bóng đá euro tập hợp được hình thành.

Khi kèo bóng đá euro tổng hợp xuất hiện trong một truy vấn con (xemPhần 4.2.11Phần 9.22), tổng hợp thường được đánh giá trên kèo bóng đá euro hàng của trình điều khiển con. Nhưng một ngoại lệ xảy ra nếu kèo bóng đá euro đối số của tổng hợp (vàFilter_ClauseNếu có) chỉ chứa các biến cấp bên ngoài: Tổng hợp sau đó thuộc về mức bên ngoài gần nhất như vậy và được đánh giá trên các hàng của truy vấn đó. Toàn bộ kèo bóng đá euro tổng hợp sau đó là một tham chiếu bên ngoài cho trình điều khiển con mà nó xuất hiện và hoạt động như một hằng số so với bất kỳ một đánh giá nào của trình điều khiển con đó.mệnh đề áp dụng đối với cấp độ truy vấn mà tổng hợp thuộc về.

4.2.8. Hàm Window Calls

AGọi chức năng cửa sổThể hiện ứng dụng của hàm giống như tổng hợp trên một số phần của kèo bóng đá euro hàng được chọn bởi một truy vấn. Không giống như kèo bóng đá euro cuộc gọi chức năng tổng hợp thông thường, điều này không được gắn với nhóm kèo bóng đá euro hàng được chọn thành một hàng đầu ra duy nhất - mỗi hàng vẫn tách riêng trong đầu ra truy vấn.Phân vùng bởiLiệt kê) cuộc gọi chức năng cửa sổ. Cú pháp của cuộc gọi chức năng cửa sổ là kèo bóng đá euro trong những điều sau:

function_name([kèo bóng đá euro[,kèo bóng đá euro...]]) [bộ lọc (trong đóFilter_Clause)] trênwindow_name
function_name([kèo bóng đá euro[,kèo bóng đá euro...]]) [bộ lọc (trong đóFilter_Clause)] Over (window_definition)function_name( *) [bộ lọc (trong đóFilter_Clause)] trênwindow_name
function_name( *) [bộ lọc (trong đóFilter_Clause)] Over (window_definition)

WHEREwindow_definitionCó cú pháp

[hiện tại_window_name]kèo bóng đá euro[, ...]]kèo bóng đá euro[ASC | Desc |Nhà điều hành] [NULLS Đầu tiên | CUỐI CÙNG  ] [, ...] ]frame_clause]

và tùy chọnframe_clausecó thể là kèo bóng đá euro trong

phạm vi | Hàngframe_startphạm vi | Hàng giữaframe_startframe_end

WHEREframe_startframe_endcó thể là kèo bóng đá euro trong

Không bị ràng buộc trướcgiá trịtrướcgiá trịsau đây

ở đây,kèo bóng đá eurobiểu thị bất kỳ kèo bóng đá euro giá trị nào không chứa các cuộc gọi chức năng cửa sổ.

window_namelà kèo bóng đá euro tham chiếu đến kèo bóng đá euro đặc tả cửa sổ được đặt tên được xác định trong truy vấnWindowmệnh đề. Ngoài ra, đầy đủwindow_definitionCó thể được đưa ra trong ngoặc đơn, sử dụng cùng kèo bóng đá euro cú pháp như để xác định kèo bóng đá euro cửa sổ được đặt tên trongWindowmệnh đề; XemChọnTrang tham khảo để biết chi tiết. Nó đáng để chỉ ra rằngOver Wnamekhông chính xác tương đương vớiOver (wname); Cái sau ngụ ý sao chép và sửa đổi định nghĩa cửa sổ và sẽ bị từ chối nếu thông số kỹ thuật cửa sổ được tham chiếu bao gồm kèo bóng đá euro mệnh đề khung.

ThePhân vùng bởiNhóm tùy chọn kèo bóng đá euro hàng của truy vấn thànhphân vùng, được xử lý riêng bởi hàm cửa sổ.Phân vùng bởiHoạt động tương tự như mức truy vấnNhóm bởimệnh đề, ngoại trừ các kèo bóng đá euro của nó luôn chỉ là các kèo bóng đá euro và không thể là tên hoặc số cột đầu ra. Không cóPhân vùng bởi, tất cả kèo bóng đá euro hàng được sản xuất bởi truy vấn được coi là một phân vùng duy nhất. TheĐặt hàng bởiTùy chọn xác định thứ tự trong đó kèo bóng đá euro hàng của phân vùng được xử lý bởi hàm cửa sổ. Nó hoạt động tương tự như cấp truy vấnĐặt hàng bởimệnh đề, nhưng tương tự không thể sử dụng tên hoặc số cột đầu ra. Không cóĐặt hàng bởi, hàng được xử lý theo thứ tự không xác định.

Theframe_clauseChỉ định tập hợp kèo bóng đá euro hàng cấu thànhkhung cửa sổ, là một tập hợp con của phân vùng hiện tại, cho kèo bóng đá euro chức năng cửa sổ hoạt động trên khung thay vì toàn bộ phân vùng. Khung có thể được chỉ định trong một trong haiphạm vihoặchàngchế độ; Trong cả hai trường hợp, nó chạy từframe_startđếnframe_end. Nếu nhưframe_endbị bỏ qua, nó mặc định làhàng hiện tại.

Aframe_startcủakhông bị ràng buộc trướccó nghĩa là khung bắt đầu bằng hàng đầu tiên của phân vùng và tương tự Aframe_endcủaKhông giới hạn sauCó nghĩa là khung kết thúc bằng hàng cuối cùng của phân vùng.

inphạm viMODE, Aframe_startcủahàng hiện tạiCó nghĩa là khung bắt đầu bằng hàng đầu tiên của hàng hiện tạiPeerhàng (kèo bóng đá euro hàng đóĐặt hàng bởixem xét tương đương với hàng hiện tại), trong khi aframe_endcủahàng hiện tạicó nghĩa là khung kết thúc với tương đương cuối cùngĐặt hàng bởingang hàng. TRONGhàngMode,hàng hiện tạiĐơn giản có nghĩa là hàng hiện tại.

Thegiá trị trướcValue saukèo bóng đá euro trường hợp hiện chỉ được phép tronghàngchế độ. Họ chỉ ra rằng khung bắt đầu hoặc kết thúc số lượng hàng được chỉ định trước hoặc sau hàng hiện tại.giá trịphải là kèo bóng đá euro số nguyên không chứa bất kỳ biến nào, hàm tổng hợp hoặc hàm cửa sổ. Giá trị không được null hoặc âm;

Tùy chọn đóng khung mặc định làPhạm vi không bị ràng buộc trước, giống nhưPhạm vi giữa hàng trước và hàng hiện tại không được giới hạn. VớiĐặt hàng bởi, Điều này đặt khung thành tất cả kèo bóng đá euro hàng từ phân vùng khởi động thông qua hàng cuối cùng của hàng hiện tạiĐặt hàng bởingang hàng. Không cóĐặt hàng bởi, Tất cả kèo bóng đá euro hàng của phân vùng được bao gồm trong khung cửa sổ, vì tất cả kèo bóng đá euro hàng trở thành đồng nghiệp của hàng hiện tại.

Hạn chế làframe_startkhông thểKhông giới hạn sau,frame_endkhông thểKhông giới hạn trướcframe_endLựa chọn không thể xuất hiện sớm hơn trong danh sách trên so vớiframe_startLựa chọn - ví dụPhạm vi giữa hàng hiện tại vàgiá trịtrướckhông được phép.

nếuFilterđược chỉ định, sau đó chỉ kèo bóng đá euro hàng đầu vào màFilter_ClauseĐánh giá thành true được đưa vào hàm cửa sổ; kèo bóng đá euro hàng khác bị loại bỏ.bộ lọcmệnh đề.

kèo bóng đá euro chức năng cửa sổ tích hợp được mô tả trongBảng 9-56. kèo bóng đá euro chức năng cửa sổ khác có thể được thêm bởi người dùng.

cú pháp sử dụng*được sử dụng để gọi kèo bóng đá euro hàm tổng hợp không tham số như kèo bóng đá euro hàm cửa sổ, ví dụCount (*) Over (phân vùng theo thứ tự x của y). Dấu hoa thị (*) Thông thường không được sử dụng cho kèo bóng đá euro hàm cửa sổ không tổng hợp. kèo bóng đá euro hàm cửa sổ tổng hợp, không giống như kèo bóng đá euro hàm tổng hợp thông thường, không cho phépkhác biệthoặcĐặt hàng bởiĐược sử dụng trong danh sách đối số chức năng.

kèo bóng đá euro cuộc gọi chức năng cửa sổ chỉ được phép trongChọnDanh sách vàĐặt hàng bởimệnh đề của truy vấn.

Thông tin thêm về kèo bóng đá euro chức năng cửa sổ có thể được tìm thấy trongPhần 3.5,Phần 9.21Phần 7.2.5.

4.2.9. Nhập kèo bóng đá euro diễn viên

kèo bóng đá euro loại đúc chỉ định chuyển đổi từ loại dữ liệu này sang loại dữ liệu khác.POSTGRESQLChấp nhận hai cú pháp tương đương cho kèo bóng đá euro loại đúc:

cast (kèo bóng đá euroASloại)kèo bóng đá euro::loại

TheCastCú pháp phù hợp với SQL; Cú pháp với::là lịch sửPostgreSQLsử dụng.

Khi một diễn viên được áp dụng cho kèo bóng đá euro giá trị của một loại đã biết, nó thể hiện chuyển đổi loại thời gian chạy. Các diễn viên sẽ chỉ thành công nếu một hoạt động chuyển đổi loại phù hợp đã được xác định.Phần 4.1.2.7. kèo bóng đá euro diễn viên được áp dụng cho kèo bóng đá euro chuỗi không được trang trí theo nghĩa đen đại diện cho sự gán ban đầu của kèo bóng đá euro loại cho kèo bóng đá euro giá trị hằng số theo nghĩa đen, và do đó nó sẽ thành công cho bất kỳ loại nào (nếu nội dung của chuỗi theo nghĩa đen là cú pháp đầu vào được chấp nhận cho kiểu dữ liệu).

Một loại diễn viên rõ ràng thường có thể được bỏ qua nếu không có sự mơ hồ về loại kèo bóng đá euro giá trị phải tạo ra (ví dụ: khi nó được gán cho cột bảng); Hệ thống sẽ tự động áp dụng một loại đúc trong các trường hợp như vậy."OK để áp dụng ngầm"Trong danh mục hệ thống. kèo bóng đá euro diễn viên khác phải được gọi bằng cú pháp đúc rõ ràng.

Cũng có thể chỉ định kèo bóng đá euro loại đúc bằng cách sử dụng cú pháp giống như hàm:

typename(kèo bóng đá euro)

Tuy nhiên, điều này chỉ hoạt động cho kèo bóng đá euro loại có tên cũng hợp lệ dưới dạng tên hàm. Ví dụ,Double PrecisionKhông thể được sử dụng theo cách này, nhưng tương đươngfloat8Có thể. Ngoài ra, tênKhoảng,Thời gianDấu thời gianChỉ có thể được sử dụng theo kiểu này nếu chúng được trích dẫn kép, vì xung đột cú pháp. Do đó, việc sử dụng cú pháp đúc giống như chức năng dẫn đến sự không nhất quán và có lẽ nên tránh.

Lưu ý:Cú pháp giống như hàm trên thực tế chỉ là kèo bóng đá euro cuộc gọi chức năng. Khi kèo bóng đá euro trong hai cú pháp đúc tiêu chuẩn được sử dụng để thực hiện chuyển đổi thời gian chạy, nó sẽ gọi nội bộ kèo bóng đá euro chức năng đã đăng ký để thực hiện chuyển đổi."Cú pháp giống như chức năng"Không gì khác hơn là kèo bóng đá euro lời mời trực tiếp của chức năng chuyển đổi cơ bản. Rõ ràng, đây không phải là thứ mà kèo bóng đá euro ứng dụng di động nên dựa vào.Tạo Cast.

4.2.4. kèo bóng đá euro đối chiếu

Theđối chiếumệnh đề ghi đè lên sự đối chiếu của một kèo bóng đá euro. Nó được gắn vào kèo bóng đá euro mà nó áp dụng cho:

exprđối chiếuĐối chiếu

WHEREđối chiếulà kèo bóng đá euro định danh có thể sử dụng lược đồ. Theđối chiếumệnh đề liên kết chặt chẽ hơn kèo bóng đá euro toán tử; dấu ngoặc đơn có thể được sử dụng khi cần thiết.

Nếu không có đối chiếu được chỉ định rõ ràng, hệ thống cơ sở dữ liệu có nguồn gốc từ các cột liên quan đến kèo bóng đá euro hoặc mặc định là đối chiếu mặc định của cơ sở dữ liệu nếu không có cột nào liên quan đến kèo bóng đá euro.

Hai cách sử dụng phổ biến củađối chiếumệnh đề đang ghi đè theo thứ tự sắp xếp theo kèo bóng đá euroĐặt hàng bởimệnh đề, ví dụ:

Chọn A, B, C từ TBL trong đó ... thứ tự bằng kèo bóng đá euro đối chiếu "C";

43912_44021

Chọn * Từ tbl trong đó a 'foo' đối chiếu "c";

Lưu ý rằng trong trường hợp sauđối chiếumệnh đề được gắn vào đối số đầu vào của toán tử mà chúng ta muốn ảnh hưởng. Không quan trọng đối số nào của toán tử hoặc chức năng gọiđối chiếumệnh đề được gắn vào, vì sự đối chiếu được áp dụng bởi toán tử hoặc chức năng được lấy bằng cách xem xét tất cả kèo bóng đá euro đối số và mộtđối chiếumệnh đề sẽ ghi đè lên kèo bóng đá euro đối chiếu của tất cả kèo bóng đá euro đối số khác. (Đính kèm không phù hợpđối chiếuTuy nhiên, điều khoản với nhiều đối số là kèo bóng đá euro lỗi. Để biết thêm chi tiết, xemPhần 23.2.) Vì vậy, điều này cho kết quả tương tự như ví dụ trước:

Chọn * Từ TBL trong đó kèo bóng đá euro đối chiếu "C" 'foo';

Nhưng đây là kèo bóng đá euro lỗi:

Chọn * Từ TBL WHERE (a 'foo') đối chiếu "C";

Bởi vì nó cố gắng áp dụng kèo bóng đá euro đối chiếu vào kết quả củatoán tử, thuộc loại dữ liệu không thể thu đượcBoolean.

4.2.11. Qualeries vô hướng

45371_45406ChọnTruy vấn trong ngoặc đơn trả về chính xác kèo bóng đá euro hàng với kèo bóng đá euro cột. (Nhìn thấyChương 7Để biết thông tin về kèo bóng đá euro truy vấn viết.)ChọnTruy vấn được thực thi và giá trị trả về đơn được sử dụng trong kèo bóng đá euro giá trị xung quanh. Đó là một lỗi khi sử dụng một truy vấn trả về nhiều hơn một hàng hoặc nhiều hơn một cột làm một trình duyệt con vô hướng.Phần 9.22Đối với các kèo bóng đá euro khác liên quan đến các nhóm con.

Ví dụ: sau đây tìm thấy dân số thành phố lớn nhất ở mỗi tiểu bang:

Chọn tên, (chọn tối đa (pop) từ kèo bóng đá euro thành phố nơi kèo bóng đá euro thành phố.state = states.name)

4.2.12. Chất xây dựng mảng

Trình xây dựng mảng là một kèo bóng đá euro xây dựng giá trị mảng bằng cách sử dụng các giá trị cho các phần tử thành viên của nó. Một hàm tạo mảng đơn giản bao gồm từ khóamảng, khung vuông bên trái[, Danh sách các kèo bóng đá euro (được phân tách bằng dấu phẩy) cho các giá trị phần tử mảng và cuối cùng là một khung vuông bên phải]. Ví dụ:

chọn Mảng [1,2,3+4];

Theo mặc định, loại phần tử mảng là loại phổ biến của các kèo bóng đá euro thành viên, được xác định bằng cách sử dụng các quy tắc tương tự như đối vớiUnionhoặccaseCấu trúc (xemPhần 4.5). Bạn có thể ghi đè lên điều này bằng cách đúc kèo bóng đá euro cách rõ ràng Trình xây dựng mảng vào loại mong muốn, ví dụ:

chọn Mảng [1,2,22.7] :: Integer [];

Điều này có tác dụng tương tự như đúc từng kèo bóng đá euro cho loại phần tử mảng riêng lẻ. Để biết thêm về đúc, xemPhần 4.2.9.

Giá trị mảng đa chiều có thể được xây dựng bằng kèo bóng đá euro hàm tạo mảng làm tổ. Trong kèo bóng đá euro hàm tạo bên trong, từ khóamảngcó thể được bỏ qua. Ví dụ, những điều này tạo ra cùng kèo bóng đá euro kết quả:

chọn mảng [mảng [1,2], mảng [3,4]];

Vì kèo bóng đá euro mảng đa chiều phải là hình chữ nhật, kèo bóng đá euro hàm tạo bên trong ở cùng cấp độ phải tạo ra kèo bóng đá euro cạnh phụ có kích thước giống hệt nhau. Bất kỳ diễn viên nào được áp dụng cho bên ngoàimảngConstructor tuyên truyền tự động tới tất cả kèo bóng đá euro hàm tạo bên trong.

kèo bóng đá euro phần tử xây dựng mảng đa chiều có thể là bất cứ thứ gì mang lại một mảng thuộc loại thích hợp, không chỉmảngXây dựng. Ví dụ:

Tạo bảng ARR (f1 int [], f2 int []);

Bạn có thể xây dựng kèo bóng đá euro mảng trống, nhưng vì không thể có kèo bóng đá euro mảng không có loại, bạn phải đúc rõ ràng mảng trống của mình vào loại mong muốn. Ví dụ:

Chọn mảng [] :: Integer [];

Cũng có thể xây dựng một mảng từ kết quả của một truy vấn con. Trong kèo bóng đá euro mẫu này, hàm tạo mảng được viết bằng từ khóamảngtheo sau là kèo bóng đá euro phần phụ (không được đặt dấu ngoặc). Ví dụ:

chọn mảng (chọn oid từ pg_proc trong đó đại từ như 'bytea%');

Trình điều khiển con phải trả về kèo bóng đá euro cột duy nhất. Nếu cột đầu ra của phụ thuộc loại không phải là kèo bóng đá euro loại, thì mảng kèo bóng đá euro chiều kết quả sẽ có kèo bóng đá euro phần tử cho mỗi hàng trong kết quả truy vấn con, với kèo bóng đá euro loại phần tử phù hợp với cột đầu ra của SubQuery.

kèo bóng đá euro chỉ số của một giá trị mảng được xây dựng vớimảngLuôn bắt đầu bằng một. Để biết thêm thông tin về kèo bóng đá euro mảng, xemPhần 8.15.

4.2.13. Chất xây dựng hàng

Trình xây dựng hàng là một kèo bóng đá euro xây dựng giá trị hàng (còn được gọi là giá trị tổng hợp) bằng cách sử dụng các giá trị cho các trường thành viên của nó. Một hàm tạo hàng bao gồm từ khóahàng, dấu ngoặc đơn bên trái, không hoặc nhiều kèo bóng đá euro (được phân tách bằng dấu phẩy) cho các giá trị trường hàng và cuối cùng là dấu ngoặc đơn bên phải. Ví dụ:

Chọn hàng (1,2,5, 'Đây là kèo bóng đá euro bài kiểm tra');

Từ khóahànglà tùy chọn khi có nhiều hơn một kèo bóng đá euro trong danh sách.

Trình xây dựng hàng có thể bao gồm cú phápROWVALUE.*, sẽ được mở rộng thành danh sách kèo bóng đá euro phần tử của giá trị hàng, giống như xảy ra khi.*Cú pháp được sử dụng ở cấp cao nhất củaChọnDanh sách (xemPhần 8.16.5). Ví dụ: nếu bảngTCó cộtF1f2, Những thứ này giống nhau:

Chọn hàng (t.*, 42) từ t;

Lưu ý:trướcPOSTGRESQL8.2,.*Cú pháp không được mở rộng trong kèo bóng đá euro hàm tạo hàng, để viếthàng (t.*, 42)đã tạo kèo bóng đá euro hàng hai trường có trường đầu tiên là giá trị hàng khác. Hành vi mới thường hữu ích hơn..*, ví dụhàng (t, 42).

Theo mặc định, giá trị được tạo bởi Ahàngkèo bóng đá euro thuộc loại bản ghi ẩn danh. Nếu cần thiết, nó có thể được đúc thành một loại tổng hợp được đặt tên - loại hàng của bảng hoặc loại tổng hợp được tạo bằngTạo loại dưới dạng. kèo bóng đá euro diễn viên rõ ràng có thể cần thiết để tránh sự mơ hồ.

Tạo bảng myTable (f1 int, f2 float, văn bản F3);

kèo bóng đá euro hàm tạo hàng có thể được sử dụng để xây dựng kèo bóng đá euro giá trị tổng hợp để được lưu trữ trong cột bảng loại tổng hợp hoặc được truyền đến một hàm chấp nhận tham số tổng hợp. Ngoài ra, có thể so sánh hai giá trị hàng hoặc kiểm tra một hàng vớilà nullhoặckhông phải là nullVí dụ:

Chọn hàng (1,2,5, 'Đây là kèo bóng đá euro bài kiểm tra') = hàng (1, 3, 'không giống nhau');

Để biết thêm chi tiết, xemPhần 9,23. kèo bóng đá euro bộ xây dựng hàng cũng có thể được sử dụng liên quan đến kèo bóng đá euro nhóm con, như đã thảo luận trongPhần 9.22.

4.2.14. Quy tắc đánh giá kèo bóng đá euro

Thứ tự đánh giá các kèo bóng đá euro hiện phụ không được xác định. Cụ thể, các đầu vào của toán tử hoặc chức năng không nhất thiết được đánh giá từ trái sang phải hoặc theo bất kỳ thứ tự cố định nào khác.

Hơn nữa, nếu kết quả của một kèo bóng đá euro có thể được xác định bằng cách chỉ đánh giá một số phần của nó, thì các biểu hiện phụ khác có thể không được đánh giá. Chẳng hạn, nếu một người đã viết:

Chọn True hoặc SOMEFUNC ();

sau đóSOMEFUNC ()Sẽ (có thể) hoàn toàn không được gọi. Điều tương tự cũng sẽ xảy ra nếu kèo bóng đá euro người viết:

Chọn Somoundunc () hoặc true;

Lưu ý rằng điều này không giống như từ trái sang phải"Ngừng ngắn mạch"của kèo bóng đá euro toán tử Boolean được tìm thấy trong một số ngôn ngữ lập trình.

Do đó, việc sử dụng các chức năng có tác dụng phụ là một phần của các kèo bóng đá euro phức tạp. Đặc biệt nguy hiểm khi dựa vào tác dụng phụ hoặc thứ tự đánh giá trongWHEREĐiều khoản, vì các điều khoản đó được xử lý rộng rãi như một phần của việc phát triển kế hoạch thực thi. kèo bóng đá euro Boolean (/hoặc/khôngKết hợp) trong kèo bóng đá euro mệnh đề đó có thể được tổ chức lại theo bất kỳ cách nào được phép bởi kèo bóng đá euro luật của Đại số Boolean.

Khi nó cần thiết để buộc lệnh đánh giá, AcaseXây dựng (xemPhần 9.17) có thể được sử dụng. Ví dụ, đây là kèo bóng đá euro cách không đáng tin cậy để cố gắng tránh sự phân chia theo 0 trong kèo bóng đá euroWHEREmệnh đề:

Chọn ... trong đó x 0 và y/x 1.5;

Nhưng điều này là an toàn:

Chọn ... Trường hợp trường hợp khi x 0 thì y/x 1.5 khác kết thúc sai;

AcaseXây dựng được sử dụng theo kiểu này sẽ đánh bại kèo bóng đá euro nỗ lực tối ưu hóa, do đó chỉ nên thực hiện khi cần thiết. (Trong ví dụ cụ thể này, sẽ tốt hơn nếu vượt qua vấn đề bằng cách viếtY 1.5*xThay vào đó.)

caseTuy nhiên, không phải là phương pháp chữa bệnh cho các vấn đề như vậy. Một hạn chế của kỹ thuật được minh họa ở trên là nó không ngăn chặn đánh giá sớm các kèo bóng đá euro hiện phụ liên tục.Phần 36.6, kèo bóng đá euro chức năng và toán tử được đánh dấuImmutablecó thể được đánh giá khi truy vấn được lên kế hoạch thay vì khi nó được thực thi. Do đó, ví dụ

Chọn trường hợp khi x 0 sau đó X khác 1/0 kết thúc từ tab;

56990_57143x 0sao chokhácARM sẽ không bao giờ được nhập vào thời gian chạy.

Trong khi ví dụ cụ thể đó có vẻ ngớ ngẩn, kèo bóng đá euro trường hợp liên quan rõ ràng không liên quan đến kèo bóng đá euro hằng số có thể xảy ra trong kèo bóng đá euro truy vấn được thực thi trong kèo bóng đá euro hàm, vì kèo bóng đá euro giá trị của kèo bóng đá euro đối số chức năng và kèo bóng đá euro biến cục bộ có thể được chèn vào kèo bóng đá euro truy vấn làm hằng số cho kèo bóng đá euro mục đích lập kế hoạch. Ở trongPL/PGSQLChức năng, ví dụ, sử dụngnếu-sau đó-khácTuyên bố để bảo vệ tính toán rủi ro an toàn hơn nhiều so với chỉ làm tổ trong kèo bóng đá eurocasekèo bóng đá euro.

giới hạn khác của cùng kèo bóng đá euro loại làcaseKhông thể ngăn chặn đánh giá kèo bóng đá euro tổng hợp có trong đó, vì các kèo bóng đá euro tổng hợp được tính toán trước các kèo bóng đá euro khác trong AChọnDanh sách hoặcmệnh đề được xem xét. Ví dụ: truy vấn sau đây có thể gây ra lỗi phân chia từng không mặc dù dường như đã được bảo vệ chống lại nó:

Chọn trường hợp khi tối thiểu (nhân viên) 0

Themin ()avg ()Tập hợp được tính đồng thời trên tất cả kèo bóng đá euro hàng đầu vào, vì vậy nếu bất kỳ hàng nào cóNhân viênBằng không, lỗi phân chia từng không sẽ xảy ra trước khi có bất kỳ cơ hội nào để kiểm tra kết quả củamin (). Thay vào đó, hãy sử dụngWHEREhoặcbộ lọcmệnh đề để ngăn kèo bóng đá euro hàng đầu vào có vấn đề tiếp cận hàm tổng hợp ở nơi đầu tiên.