Postgresql 8.1.23 Tài liệu | ||||
---|---|---|---|---|
prev | Backward nhanh | 10199_10213 | Tiếp theo |
SQLCâu nói có thể, cố ý hay không, yêu cầu trộn lẫn các soi kèo bóng đá truoctran dữ liệu khác nhau trong cùng một biểu thức.PostgreSQLCó các cơ sở rộng lớn để đánh giá soi kèo bóng đá truoctran hỗn hợp biểu thức.
Trong nhiều trường hợp, người dùng sẽ không cần hiểu chi tiết của cơ chế chuyển đổi soi kèo bóng đá truoctran. Tuy nhiên, ẩn Chuyển đổi được thực hiện bởiPostgreSQLcó thể ảnh hưởng đến kết quả của một truy vấn. Khi cần thiết, những kết quả này có thể được điều chỉnh bằng cách sử dụngrõ ràngChuyển đổi soi kèo bóng đá truoctran.
Chương này giới thiệuPostgreSQLsoi kèo bóng đá truoctran cơ chế chuyển đổi và quy ước. Tham khảo các phần có liên quan trongChương 8vàChương 9Để biết thêm thông tin về cụ thể Kiểu dữ liệu và soi kèo bóng đá truoctran chức năng và toán tử cho phép.
SQLlà một gõ mạnh mẽ ngôn ngữ. Nghĩa là, mọi mục dữ liệu đều có một soi kèo bóng đá truoctran dữ liệu liên quan xác định hành vi của nó và cho phép sử dụng.PostgreSQLCó hệ thống soi kèo bóng đá truoctran mở rộng đó là tổng quát và linh hoạt hơn nhiều so với các khácSQLtriển khai. Kể từ đây, Hầu hết các hành vi chuyển đổi soi kèo bóng đá truoctran trongPostgreSQLđược điều chỉnh bởi soi kèo bóng đá truoctran quy tắc chung thay vì bởiad hocHeuristic. Điều này cho phép các biểu thức soi kèo bóng đá truoctran hỗn hợp có ý nghĩa ngay cả với Các soi kèo bóng đá truoctran do người dùng xác định.
ThePostgreSQLMáy quét/trình phân tích cú pháp phân chia các phần tử từ vựng thành năm Các danh mục cơ bản: số nguyên, số không, chuỗi, chuỗi, định danh, và các từ khóa. Hằng số của hầu hết các soi kèo bóng đá truoctran không phải là số được phân soi kèo bóng đá truoctran đầu tiên là chuỗi. TheSQLĐịnh nghĩa ngôn ngữ cho phép chỉ định Nhập tên với chuỗi và cơ chế này có thể được sử dụng trongPostgreSQLĐể khởi động trình phân tích cú pháp xuống đường dẫn chính xác. Ví dụ: truy vấn
chọn văn bản 'gốc' là "nhãn", điểm '(0,0)' làm "giá trị"; Nhãn | giá trị --------+------- Nguồn gốc | (0,0) (1 hàng)
có hai hằng số theo nghĩa đen, soi kèo bóng đá truoctranTextvàđiểm. Nếu một soi kèo bóng đá truoctran là không được chỉ định cho một chuỗi theo nghĩa đen, sau đó soi kèo bóng đá truoctran trình giữ chỗkhông xác địnhđược gán ban đầu, là được giải quyết trong soi kèo bóng đá truoctran giai đoạn sau như mô tả bên dưới.
Có bốn cơ bảnSQLCấu trúc yêu cầu soi kèo bóng đá truoctran khác biệt Quy tắc chuyển đổi trongPostgreSQLphân tích cú pháp:
Phần lớnPostgreSQLHệ thống soi kèo bóng đá truoctran được xây dựng xung quanh một bộ chức năng phong phú. Các chức năng có thể có một hoặc nhiều lập luận hơn. TừPostgreSQLchức năng cho phép quá tải, tên chức năng một mình không duy nhất xác định chức năng được gọi; trình phân tích cú pháp phải chọn đúng chức năng dựa trên các soi kèo bóng đá truoctran dữ liệu của đối số được cung cấp.
PostgreSQL14742_15012
SQL ChènvàCập nhậtCâu lệnh đặt kết quả của các biểu thức vào một bảng. Các biểu thức trong câu lệnh phải được khớp với, và có lẽ được chuyển đổi thành, các soi kèo bóng đá truoctran mục tiêu các cột.
Vì tất cả soi kèo bóng đá truoctran kết quả truy vấn từ một liên minhChọnCâu lệnh phải xuất hiện trong một
tập hợp các cột, các soi kèo bóng đá truoctran kết quả của mỗiChọnĐiều khoản phải được kết hợp
và soi kèo bóng đá truoctran thành một bộ đồng đều. Tương tự, kết quả
Biểu thức của AcaseXây dựng
phải được chuyển đổi thành một soi kèo bóng đá truoctran chung đểcaseBiểu thức nói chung có một
soi kèo bóng đá truoctran đầu ra. Tương tự như vậy chomảngCấu trúc và chovĩ đại nhất
vàÍt nhất
chức năng.
Danh mục hệ thống lưu trữ thông tin về cái nào soi kèo bóng đá truoctran, được gọi làCasts, giữa Các soi kèo bóng đá truoctran dữ liệu là hợp lệ và cách thực hiện các chuyển đổi đó. Các diễn viên bổ sung có thể được thêm bởi người dùng vớiTạo CastLệnh. (Điều này thường được thực hiện trong Kết hợp với việc xác định các soi kèo bóng đá truoctran dữ liệu mới. Tập hợp các diễn viên giữa các soi kèo bóng đá truoctran tích hợp đã được chế tạo cẩn thận và là tốt nhất không bị thay đổi.)
Một heuristic bổ sung được cung cấp trong trình phân tích cú pháp để cho phép đoán tốt hơn về hành vi thích hợp choSQLCác soi kèo bóng đá truoctran tiêu chuẩn. Có một số cơ bảnsoi kèo bóng đá truoctran danh mụcXác định:Boolean, Số, chuỗi, BitString, DateTime, Timespan, hình học, mạng,, và người dùng định nghĩa. Mỗi soi kèo bóng đá truoctran, ngoại trừ do người dùng xác định, có một hoặc nhiềuƯu tiên soi kèo bóng đá truoctranđược lựa chọn tốt hơn khi có sự mơ hồ. Trong danh mục do người dùng xác định, mỗi soi kèo bóng đá truoctran là của riêng nó soi kèo bóng đá truoctran ưa thích. Biểu hiện mơ hồ (những người có nhiều do đó các giải pháp phân tích ứng viên) do đó thường có thể được giải quyết Khi có nhiều soi kèo bóng đá truoctran tích hợp có thể, nhưng chúng sẽ Tăng lỗi khi có nhiều lựa chọn cho người dùng do người dùng xác định các soi kèo bóng đá truoctran.
Tất cả các quy tắc chuyển đổi soi kèo bóng đá truoctran được thiết kế với một số Nguyên tắc trong tâm trí:
soi kèo bóng đá truoctran ngầm không bao giờ có điều đáng ngạc nhiên hoặc Kết quả không thể đoán trước.
Các soi kèo bóng đá truoctran do người dùng xác định, trong đó trình phân tích cú pháp không cóA PrioriKiến thức, nên là"cao hơn"Trong phân cấp soi kèo bóng đá truoctran. Trong các biểu thức soi kèo bóng đá truoctran hỗn hợp, các soi kèo bóng đá truoctran bản địa sẽ luôn luôn chuyển đổi thành soi kèo bóng đá truoctran do người dùng xác định (tất nhiên, chỉ khi chuyển đổi là cần thiết).
Các soi kèo bóng đá truoctran do người dùng xác định không liên quan. Hiện nay,PostgreSQLkhông có thông tin có sẵn cho nó về mối quan hệ giữa các soi kèo bóng đá truoctran, khác với các heuristic được mã hóa cứng cho các soi kèo bóng đá truoctran tích hợp và các mối quan hệ tiềm ẩn dựa trên các chức năng có sẵn và diễn viên.
18892_19267
Ngoài ra, nếu một truy vấn thường yêu cầu chuyển đổi cho một hàm và nếu sau đó người dùng xác định chức năng mới với các soi kèo bóng đá truoctran đối số chính xác, trình phân tích cú pháp nên sử dụng chức năng mới này và sẽ không còn làm Chuyển đổi ngầm bằng cách sử dụng hàm cũ.