Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2
8488_8559
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ế.

kèo bóng đá euro4.1. Cấu trúc từ vựng

Đầu vào SQL bao gồm kèo bóng đá euro chuỗilệnh. kèo bóng đá euro lệnh bao gồm kèo bóng đá euro chuỗiToken, bị chấm dứt bởi dấu chấm phẩy (";"). Phần cuối của luồng đầu vào cũng chấm dứt kèo bóng đá euro lệnh. Mã thông báo nào hợp lệ phụ thuộc vào cú pháp của lệnh cụ thể.

mã thông báo có thể làTừ khóa, anđịnh danh10109_10115Định danh được trích dẫn, Anghĩa đen(hoặc hằng số) hoặc ký hiệu ký tự đặc biệt. kèo bóng đá euro mã thông báo thường được phân tách bằng khoảng trắng (không gian, tab, newline), nhưng không cần phải có nếu không có sự mơ hồ (thường chỉ là trường hợp nếu một ký tự đặc biệt liền kề với một loại mã thông báo khác).

Ví dụ: sau đây là đầu vào SQL hợp lệ (về mặt cú pháp):

Chọn * từ my_table;
Cập nhật my_table đặt a = 5;
Chèn vào kèo bóng đá euro giá trị my_table (3, 'Xin chào');

10649_10823

Ngoài ra,bình luậncó thể xảy ra trong đầu vào SQL. Chúng không phải là mã thông báo, chúng có hiệu quả tương đương với khoảng trắng.

Cú pháp SQL không nhất quán về những gì mã thông báo xác định kèo bóng đá euro lệnh và là toán tử hoặc tham số. Một vài mã thông báo đầu tiên nói chung là tên lệnh, vì vậy trong ví dụ trên, chúng ta thường sẽ nói về"Chọn", an"Cập nhật"và kèo bóng đá euro"Chèn"lệnh. Nhưng ví dụCập nhậtLệnh luôn yêu cầusetMã thông báo xuất hiện ở kèo bóng đá euro vị trí nhất định và biến thể cụ thể này củaChèncũng yêu cầuGiá trịĐể hoàn thành. kèo bóng đá euro quy tắc cú pháp chính xác cho mỗi lệnh được mô tả trongPhần VI.

4.1.1. Định danh và từ khóa

mã thông báo nhưChọn, Cập nhậthoặcGiá trịTrong ví dụ trên là kèo bóng đá euro ví dụ củatừ khóa, nghĩa là kèo bóng đá euro từ có ý nghĩa cố định trong ngôn ngữ SQL. Mã thông báomy_tableAlà ví dụ củaĐịnh danh. Họ xác định tên của kèo bóng đá euro bảng, cột hoặc kèo bóng đá euro đối tượng cơ sở dữ liệu khác, tùy thuộc vào lệnh mà chúng được sử dụng. Do đó, đôi khi chúng được gọi đơn giản là"Tên". kèo bóng đá euro từ khóa và định danh có cùng cấu trúc từ vựng, có nghĩa là người ta không thể biết liệu mã thông báo là một định danh hay từ khóa mà không biết ngôn ngữ. Một danh sách đầy đủ kèo bóng đá euro từ khóa có thể được tìm thấy trongPhụ lục C.

Định danh SQL và kèo bóng đá euro từ khóa phải bắt đầu bằng một chữ cái (A-Z, nhưng cũng có kèo bóng đá euro chữ cái có dấu hiệu và kèo bóng đá euro chữ cái không phải là latin) hoặc một dấu gạch dưới (_). kèo bóng đá euro ký tự tiếp theo trong một định danh hoặc từ khóa có thể là kèo bóng đá euro chữ cái, dấu gạch dưới, chữ số (0-9) hoặc dấu hiệu đô la ($13090_13453

Hệ thống sử dụng không quáĐược đặt tên-1 byte của một định danh; Tên dài hơn có thể được viết bằng kèo bóng đá euro lệnh, nhưng chúng sẽ bị cắt ngắn. Theo mặc định,Được đặt tênlà 64 vì vậy độ dài định danh tối đa là 63 byte. Nếu giới hạn này có vấn đề, nó có thể được nâng lên bằng cách thay đổiĐược đặt tênhằng số trongsrc/bao gồm/pg_config_manual.h.

kèo bóng đá euro từ khóa và số nhận dạng chưa được trích xuất là trường hợp không nhạy cảm. Vì thế:

Cập nhật my_table set a = 5;

có thể được viết tương đương là:

Cập nhật my_table set a = 5;

Một quy ước thường được sử dụng là viết kèo bóng đá euro từ khóa trong trường hợp trên và tên trong chữ thường, ví dụ:

Cập nhật my_table set a = 5;

Có kèo bóng đá euro loại định danh thứ hai:Định danh phân địnhhoặcĐịnh danh được trích dẫn. Nó được hình thành bằng cách kèm theo một chuỗi kèo bóng đá euro ký tự tùy ý trong kèo bóng đá euro trích dẫn kép ("). kèo bóng đá euro định danh được phân định luôn là kèo bóng đá euro định danh, không bao giờ là kèo bóng đá euro từ khóa. Vì thế"Chọn"có thể được sử dụng để tham khảo kèo bóng đá euro cột hoặc bảng có tên"Chọn", trong khi không được trích xuấtChọnsẽ được lấy làm từ khóa và do đó sẽ gây ra lỗi phân tích cú pháp khi được sử dụng khi dự kiến ​​một bảng hoặc tên cột. Ví dụ có thể được viết bằng kèo bóng đá euro định danh được trích dẫn như thế này:

Cập nhật "my_table" set "a" = 5;

Định danh được trích dẫn có thể chứa bất kỳ ký tự nào, ngoại trừ ký tự có mã số không. . Giới hạn độ dài vẫn được áp dụng.

Một biến thể của kèo bóng đá euro định danh được trích dẫn cho phép bao gồm kèo bóng đá euro ký tự unicode đã thoát được xác định bởi kèo bóng đá euro điểm mã của chúng. Biến thể này bắt đầu bằngU &(CASE UPU & "foo". (Lưu ý rằng điều này tạo ra sự mơ hồ với toán tử&. Sử dụng kèo bóng đá euro không gian xung quanh toán tử để tránh vấn đề này.) Bên trong kèo bóng đá euro trích dẫn, kèo bóng đá euro ký tự Unicode có thể được chỉ định ở dạng thoát ra bằng cách viết một dấu gạch chéo ngược, theo sau là số điểm mã hexadecimal gồm bốn chữ số hoặc thay vào đó là một dấu gạch chéo ngược sau đó là một dấu hiệu Hexadecimal sáu chữ số. Ví dụ: định danh"Data"có thể được viết là

U & "D \ 0061T \ +000061"

Ví dụ ít tầm thường sau đây viết từ tiếng Nga"Slon"(Voi) bằng chữ Cyrillic:

u & "\ 0441 \ 043b \ 043e \ 043d"

Nếu kèo bóng đá euro ký tự thoát khác với dấu gạch chéo ngược, nó có thể được chỉ định bằng cách sử dụngUESCAPEmệnh đề sau chuỗi, ví dụ:

U & "D! 0061T! +000061" UESCAPE '!'

Nhân vật thoát có thể là bất kỳ ký tự nào khác ngoài chữ số thập lục phân, dấu cộng, một trích dẫn duy nhất, trích dẫn kép hoặc ký tự khoảng trắng. Lưu ý rằng ký tự thoát được viết bằng kèo bóng đá euro trích dẫn đơn, không phải dấu ngoặc kép.

Để bao gồm ký tự thoát trong định danh theo nghĩa đen, hãy viết nó hai lần.

16986_17053UTF8. Khi kèo bóng đá euro mã hóa máy chủ khác được sử dụng, chỉ có kèo bóng đá euro điểm mã trong phạm vi ASCII (lên đến\ 007F17193_17551

Trích dẫn một định danh cũng làm cho nó nhạy cảm trường hợp, trong khi kèo bóng đá euro tên chưa được trình cấp luôn được gấp lại thành chữ thường. Ví dụ: kèo bóng đá euro định danhfoo, foo"foo"được coi là giống nhau bởiPostgreSQL, nhưng"foo""foo"17930_18028PostgreSQLkhông tương thích với tiêu chuẩn SQL, trong đó nói rằng kèo bóng đá euro tên chưa được trình bày nên được gấp lại thành trường hợp trên. Do đó,foonên tương đương với"foo"không"foo"Theo tiêu chuẩn. Nếu bạn muốn viết kèo bóng đá euro ứng dụng di động, bạn nên luôn luôn trích dẫn một tên cụ thể hoặc không bao giờ trích dẫn nó.)

4.1.2. Hằng số

Có ba loạiHằng số được gõ ngầminPostgreSQL: chuỗi, chuỗi bit và số. kèo bóng đá euro hằng số cũng có thể được chỉ định với kèo bóng đá euro loại rõ ràng, có thể cho phép biểu diễn chính xác hơn và xử lý hiệu quả hơn bởi hệ thống. Những lựa chọn thay thế này được thảo luận trong kèo bóng đá euro tiểu mục sau.

4.1.2.1. Chuỗi hằng số

Hằng số chuỗi trong SQL là một chuỗi kèo bóng đá euro ký tự tùy ý bị giới hạn bởi kèo bóng đá euro trích dẫn đơn ('19186_19203'Đây là kèo bóng đá euro chuỗi'. Để bao gồm kèo bóng đá euro ký tự đơn lẻ trong kèo bóng đá euro hằng số chuỗi, hãy viết hai trích dẫn đơn liền kề, ví dụ:'Dianne''s Horse'. Lưu ý rằng đây làkhônggiống như kèo bóng đá euro ký tự đôi (").

Hai hằng số chuỗi chỉ được phân tách bằng khoảng trắngVới ít nhất kèo bóng đá euro dòng mớiđược kết hợp và xử lý hiệu quả như thể chuỗi đã được viết là kèo bóng đá euro hằng số. Ví dụ:

Chọn 'foo'
'thanh';

tương đương với:

chọn 'foobar';

nhưng:

Chọn 'foo' 'Bar';

không phải là cú pháp hợp lệ. (Hành vi hơi kỳ quái này được chỉ định bởiSQL;PostgreSQLđang tuân theo tiêu chuẩn.)

4.1.2.2. Chuỗi hằng số có lối thoát theo kiểu c

PostgreSQLCũng chấp nhận"Escape"Hằng số chuỗi, là kèo bóng đá euro phần mở rộng cho tiêu chuẩn SQL. kèo bóng đá euro hằng số chuỗi thoát được chỉ định bằng cách viết chữ cáiE(chữ hoa hoặc chữ thường) ngay trước khi trích dẫn đơn, ví dụ:e'foo '20666_20733EChỉ trước khi trích dẫn mở đầu tiên.) Trong kèo bóng đá euro chuỗi thoát, kèo bóng đá euro ký tự ngược (\) bắt đầu giống như cBackslash Escape20929_21051Bảng 4-1.

21207_21246

Trình tự thoát Backslash Giải thích
\ B Backspace
\ f Form Feed
\ n Newline
\ r Trở lại vận chuyển
\ T tab
\o, \OO, \OOO(O= 0 - 7) giá trị byte bát phân
\ xH, \ xHH(H= 0 - 9, a - f) Giá trị byte thập lục phân
\ Uxxxx, \ Uxxxxxxxxx(x= 0 - 9, a - f) 16 hoặc 32 bit HexAdeCimal unicode Giá trị ký tự

Bất kỳ ký tự nào khác sau kèo bóng đá euro dấu gạch chéo ngược được thực hiện theo nghĩa đen. Do đó, để bao gồm kèo bóng đá euro ký tự dấu gạch chéo ngược, hãy viết hai dấu gạch chéo ngược (\). Ngoài ra, kèo bóng đá euro trích dẫn duy nhất có thể được bao gồm trong kèo bóng đá euro chuỗi thoát bằng cách viết\ ', ngoài cách bình thường của''.

Trách nhiệm của bạn là kèo bóng đá euro chuỗi byte bạn tạo, đặc biệt là khi sử dụng kèo bóng đá euro lần thoát hiểm hoặc thập lục phân, soạn kèo bóng đá euro ký tự hợp lệ trong mã hóa ký tự của máy chủ. Khi mã hóa máy chủ là UTF-8, thì unicode thoát ra hoặc cú pháp thoát Unicode thay thế, được giải thích trongPhần 4.1.2.3, nên được sử dụng thay thế. (Giải pháp thay thế sẽ thực hiện mã hóa UTF-8 bằng tay và viết ra kèo bóng đá euro byte, điều này sẽ rất cồng kềnh.)

Cú pháp thoát Unicode chỉ hoạt động đầy đủ khi mã hóa máy chủ làUTF8. Khi kèo bóng đá euro mã hóa máy chủ khác được sử dụng, chỉ có kèo bóng đá euro điểm mã trong phạm vi ASCII (lên đến\ U007F) có thể được chỉ định. Cả hình thức 4 chữ số và 8 chữ số đều có thể được sử dụng để chỉ định kèo bóng đá euro cặp thay thế UTF-16 để soạn kèo bóng đá euro ký tự có điểm mã lớn hơn U+FFFF, mặc dù tính khả dụng của dạng 8 chữ số về mặt kỹ thuật làm cho điều này không cần thiết. (Khi kèo bóng đá euro cặp thay thế được sử dụng khi mã hóa máy chủ làUTF8, đầu tiên chúng được kết hợp thành kèo bóng đá euro điểm mã duy nhất sau đó được mã hóa trong UTF-8.)

THẬN TRỌNG

Nếu tham số cấu hìnhStandard_Conforming_Stringstắt, sau đóPostgreSQL24376_24468PostgreSQL9.1, mặc định làtrên, có nghĩa là việc thoát khỏi sự ngược lại chỉ được công nhận trong kèo bóng đá euro hằng số chuỗi thoát. Hành vi này tuân thủ tiêu chuẩn nhiều hơn, nhưng có thể phá vỡ kèo bóng đá euro ứng dụng dựa trên hành vi lịch sử, nơi thoát khỏi sự ngược lại luôn được công nhận. Là một cách giải quyết, bạn có thể đặt tham số này thànhTẮT, nhưng tốt hơn là di chuyển ra khỏi việc sử dụng thoát hiểm ngược. Nếu bạn cần sử dụng kèo bóng đá euro lối thoát dấu vết để biểu diễn kèo bóng đá euro ký tự đặc biệt, hãy viết hằng số chuỗi bằng kèo bóng đá euroE.

NgoàiStandard_Conforming_Strings, tham số cấu hìnhESCET_STRING_WARNINGBackslash_quoteQuản lý điều trị ngược dòng trong kèo bóng đá euro hằng số chuỗi.

25442_25508

4.1.2.3. Chuỗi hằng số với unicode thoát

PostgreSQLCũng hỗ trợ một loại cú pháp thoát khác cho kèo bóng đá euro chuỗi cho phép chỉ định kèo bóng đá euro ký tự Unicode tùy ý theo điểm mã. Hằng số chuỗi thoát Unicode bắt đầu bằngU &25927_26064u & 'foo'. (Lưu ý rằng điều này tạo ra sự mơ hồ với toán tử&. Sử dụng kèo bóng đá euro không gian xung quanh toán tử để tránh vấn đề này.) Bên trong kèo bóng đá euro trích dẫn, kèo bóng đá euro ký tự Unicode có thể được chỉ định ở dạng thoát ra bằng cách viết một dấu gạch chéo ngược, theo sau là số điểm mã hexadecimal gồm bốn chữ số hoặc thay vào đó là một dấu gạch chéo ngược sau đó là một dấu hiệu Hexadecimal sáu chữ số. Ví dụ: chuỗi'Data'có thể được viết là

U & 'D \ 0061T \ +000061'

Ví dụ ít tầm thường sau đây viết từ tiếng Nga"Slon"(voi) bằng chữ Cyrillic:

u & '\ 0441 \ 043b \ 043e \ 043d'

Nếu kèo bóng đá euro ký tự thoát khác với mong muốn của Backslash, nó có thể được chỉ định bằng cách sử dụngUescapemệnh đề sau chuỗi, ví dụ:

U & 'D! 0061T! +000061' UESCAPE '!'

ký tự thoát có thể là bất kỳ ký tự nào khác ngoài chữ số thập lục phân, dấu cộng, kèo bóng đá euro trích dẫn duy nhất, trích dẫn kép hoặc ký tự khoảng trắng.

Cú pháp thoát Unicode chỉ hoạt động khi mã hóa máy chủ làUTF8. Khi kèo bóng đá euro mã hóa máy chủ khác được sử dụng, chỉ có kèo bóng đá euro điểm mã trong phạm vi ASCII (lên đến\ 007F) có thể được chỉ định. Cả hình thức 4 chữ số và 6 chữ số đều có thể được sử dụng để chỉ định kèo bóng đá euro cặp thay thế UTF-16 để soạn kèo bóng đá euro ký tự có điểm mã lớn hơn U+FFFF, mặc dù tính khả dụng của dạng 6 chữ số về mặt kỹ thuật làm cho điều này không cần thiết. (Khi kèo bóng đá euro cặp thay thế được sử dụng khi mã hóa máy chủ làUTF827776_27860

Ngoài ra, cú pháp thoát Unicode cho kèo bóng đá euro hằng số chuỗi chỉ hoạt động khi tham số cấu hìnhStandard_Conforming_Stringsđược bật. Điều này là do nếu không thì cú pháp này có thể gây nhầm lẫn cho kèo bóng đá euro khách hàng phân tích kèo bóng đá euro câu lệnh SQL đến mức nó có thể dẫn đến tiêm SQL và kèo bóng đá euro vấn đề bảo mật tương tự. Nếu tham số được đặt thành TẮT, cú pháp này sẽ bị từ chối với thông báo lỗi.

28342_28416

4.1.2.4. Hằng số chuỗi được trích dẫn đô la

Trong khi cú pháp tiêu chuẩn để chỉ định kèo bóng đá euro hằng số chuỗi thường thuận tiện, có thể khó hiểu khi chuỗi mong muốn chứa nhiều trích dẫn hoặc dấu gạch chéo ngược, vì mỗi trong số đó phải được nhân đôi. Để cho phép kèo bóng đá euro truy vấn dễ đọc hơn trong kèo bóng đá euro tình huống như vậy,PostgreSQLcung cấp kèo bóng đá euro cách khác, được gọi là28947_28965, để viết kèo bóng đá euro hằng số chuỗi. Hằng số chuỗi được trích dẫn đô la bao gồm một dấu hiệu đô la ($), kèo bóng đá euro tùy chọn"Tag"của số 0 hoặc nhiều ký tự, một dấu hiệu đồng đô la khác, một chuỗi kèo bóng đá euro ký tự tùy ý tạo nên nội dung chuỗi, một dấu hiệu đô la, cùng một thẻ bắt đầu báo giá đô la này và dấu hiệu đô la. Ví dụ: đây là hai cách khác nhau để chỉ định chuỗi"Dianne's Horse"Sử dụng trích dẫn đô la:

$$ Dianne's Horse $$
$ Đôi khi $ Dianne's Horse $ đôi khi $

Lưu ý rằng bên trong chuỗi được trích xuất bằng đô la, có thể sử dụng kèo bóng đá euro báo giá đơn mà không cần phải thoát ra. Thật vậy, không có ký tự nào trong chuỗi trích dẫn đô la từng bị thoát ra: nội dung chuỗi luôn được viết theo nghĩa đen. Backslashes không đặc biệt và cũng không phải là dấu hiệu đô la, trừ khi chúng là một phần của chuỗi phù hợp với thẻ mở.

Có thể làm tổ kèo bóng đá euro hằng số chuỗi được trích xuất bằng cách chọn kèo bóng đá euro thẻ khác nhau ở mỗi cấp độ lồng. Điều này được sử dụng phổ biến nhất trong kèo bóng đá euro định nghĩa chức năng viết. Ví dụ:

$ Hàm $
BẮT ĐẦU
    Trả về ($ 1 ~ $ q $ [\ t \ r \ n \ v \] $ q $);
KẾT THÚC;
$ function $

Ở đây, chuỗi$ q $ [\ t \ r \ n \ v \] $ q $đại diện cho chuỗi chữ được trích dẫn bằng đô la[\ t \ r \ n \ v \], sẽ được nhận dạng khi cơ thể chức năng được thực thi bởiPostgreSQL. Nhưng vì chuỗi không khớp với Dollar Dollar trích dẫn DELIMITER$ Function $, Nó chỉ là kèo bóng đá euro số ký tự khác trong hằng số cho đến khi chuỗi bên ngoài có liên quan.

TAG, nếu có, của chuỗi được trích dẫn theo đô la tuân theo kèo bóng đá euro quy tắc giống như một định danh không được trích xuất, ngoại trừ việc nó không thể chứa một dấu hiệu đô la. Thẻ nhạy cảm, vì vậy$ Tag $ Chuỗi nội dung $ Tag $là chính xác, nhưng$ Tag $ Chuỗi nội dung $ Tag $không phải.

Chuỗi được trích xuất theo đô la theo từ khóa hoặc định danh phải được tách ra khỏi nó bằng khoảng trắng; Nếu không thì dấu phân cách trích dẫn đô la sẽ được lấy như là kèo bóng đá euro phần của định danh trước.

Trích dẫn Dollar không phải là một phần của tiêu chuẩn SQL, nhưng nó thường là một cách thuận tiện hơn để viết kèo bóng đá euro chuỗi chuỗi phức tạp hơn so với cú pháp trích dẫn đơn theo tiêu chuẩn. Nó đặc biệt hữu ích khi biểu diễn kèo bóng đá euro hằng số chuỗi bên trong kèo bóng đá euro hằng số khác, như thường cần trong kèo bóng đá euro định nghĩa chức năng thủ tục. Với cú pháp đơn lẻ, mỗi dấu gạch chéo ngược trong ví dụ trên sẽ phải được viết dưới dạng bốn dấu gạch chéo ngược, sẽ được giảm xuống còn hai dấu gạch chéo ngược trong phân tích hằng số chuỗi ban đầu, và sau đó là một hằng số chuỗi bên trong được phân tích lại trong quá trình thực hiện chức năng.

4.1.2.5. Hằng số chuỗi bit

Hằng số chuỗi bit trông giống như kèo bóng đá euro hằng số chuỗi thông thường với AB(chữ hoa hoặc chữ thường) ngay trước khi báo giá mở (không có khoảng trắng can thiệp), ví dụ:B'1001 '. kèo bóng đá euro ký tự duy nhất được phép trong kèo bóng đá euro hằng số chuỗi bit là01.

32230_32326x(trên hoặc chữ thường), ví dụ:X'1ff '. Ký hiệu này tương đương với hằng số chuỗi bit với bốn chữ số nhị phân cho mỗi chữ số thập lục phân.

Cả hai dạng hằng số bit có thể được tiếp tục trên kèo bóng đá euro dòng giống như kèo bóng đá euro hằng số chuỗi thông thường. Trích dẫn đô la không thể được sử dụng trong hằng số chuỗi bit.

4.1.2.6. Hằng số số

Hằng số số được chấp nhận trong kèo bóng đá euro hình thức chung này:

Digits
Digits. [chữ số] [E [+-]chữ số]
[chữ số].Digits[E [+-]chữ số]DigitsE [+-]Digits

WHEREchữ sốlà kèo bóng đá euro hoặc nhiều chữ số thập phân (0 đến 9). Ít nhất kèo bóng đá euro chữ số phải là trước hoặc sau điểm thập phân, nếu kèo bóng đá euro chữ số được sử dụng. Ít nhất kèo bóng đá euro chữ số phải tuân theo điểm đánh dấu số mũ (E), nếu có mặt. Không thể có bất kỳ không gian hoặc kèo bóng đá euro ký tự khác được nhúng trong hằng số. Lưu ý rằng bất kỳ dấu hiệu cộng hoặc dấu trừ hàng đầu nào không thực sự được coi là một phần của hằng số; nó là một toán tử được áp dụng cho hằng số.

Đây là kèo bóng đá euro số ví dụ về hằng số số hợp lệ:

42
3.5
4.
.001
5E2
1.925E-3

kèo bóng đá euro hằng số không chứa kèo bóng đá euro điểm thập phân cũng như số mũ ban đầu được coi là loạiSố nguyênNếu giá trị của nó phù hợp với loạiSố nguyên(32 bit); Nếu không thì nó được cho là loạiBigintNếu giá trị của nó phù hợp với loạiBigint(64 bit); nếu không thì nó được coi là loạiSố. kèo bóng đá euro hằng số chứa kèo bóng đá euro điểm thập phân và/hoặc số mũ luôn được coi là loạiSố.

Kiểu dữ liệu được gán ban đầu của hằng số số chỉ là một điểm bắt đầu cho kèo bóng đá euro thuật toán độ phân giải loại. Trong hầu hết kèo bóng đá euro trường hợp, hằng số sẽ được tự động ép buộc theo loại phù hợp nhất tùy thuộc vào ngữ cảnh. Khi cần thiết, bạn có thể buộc một giá trị số phải được hiểu là một loại dữ liệu cụ thể bằng cách sử dụng nó. Ví dụ: bạn có thể buộc một giá trị số được coi là loạiReal(float4) bằng cách viết:

Real '1.23' - String Style
1.23 :: Real - PostgreSQL (lịch sử) phong cách

Đây thực sự là những trường hợp đặc biệt của kèo bóng đá euro ký hiệu đúc chung được thảo luận tiếp theo.

4.1.2.7. Hằng số của kèo bóng đá euro loại khác

Hằng số của kèo bóng đá eurotùy ýLoại có thể được nhập bằng bất kỳ một trong kèo bóng đá euro ký hiệu sau:

loại'chuỗi'
'chuỗi'::loạicast ('chuỗi' BẰNGloại)

Văn bản của hằng số được chuyển sang thói quen chuyển đổi đầu vào cho loại gọi làloại. Kết quả là một hằng số của loại được chỉ định. kèo bóng đá euro loại đúc rõ ràng có thể được bỏ qua nếu không có sự mơ hồ về loại hằng số phải (ví dụ: khi nó được gán trực tiếp vào cột bảng), trong trường hợp đó nó được tự động ép buộc.

Hằng số chuỗi có thể được viết bằng cách sử dụng ký hiệu SQL thông thường hoặc trích dẫn đô la.

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

typename('chuỗi' )

Nhưng không phải tất cả kèo bóng đá euro tên loại đều có thể được sử dụng theo cách này; nhìn thấyPhần 4.2.9Để biết chi tiết.

The::, cast ()và cú pháp gọi chức năng cũng có thể được sử dụng để chỉ định kèo bóng đá euro chuyển đổi loại thời gian chạy của kèo bóng đá euro biểu thức tùy ý, như đã thảo luận trongPhần 4.2.9. Để tránh sự mơ hồ của cú pháp,loại'chuỗi'Cú pháp chỉ có thể được sử dụng để chỉ định loại hằng số đơn giản. kèo bóng đá euro hạn chế khác trênloại'chuỗi'Cú pháp là nó không hoạt động cho kèo bóng đá euro loại mảng; sử dụng::hoặccast ()Để chỉ định loại hằng số mảng.

Thecast ()Cú pháp phù hợp với SQL. Theloại'chuỗi'Cú pháp là kèo bóng đá euro khái quát của tiêu chuẩn: SQL Chỉ định cú pháp này chỉ cho kèo bóng đá euro vài loại dữ liệu, nhưngPOSTGRESQLCho phép nó cho tất cả kèo bóng đá euro loại. Cú pháp với::là lịch sửPostgreSQLsử dụng, cũng như cú pháp gọi chức năng.

4.1.3. Người vận hành

Tên toán tử là kèo bóng đá euro chuỗi lên đếnĐược đặt tên-1 (63 theo mặc định) kèo bóng đá euro ký tự từ danh sách sau:

+-*/< = ~! @#%^& | `?

Tuy nhiên, có kèo bóng đá euro vài hạn chế đối với tên toán tử:
  • --/*Không thể xuất hiện ở bất cứ đâu trong tên toán tử, vì chúng sẽ được lấy kèo bóng đá eurom bắt đầu nhận xét.

  • Tên toán tử đa nhân không thể kết thúc bằng+hoặc-, Trừ khi tên cũng chứa ít nhất kèo bóng đá euro trong những ký tự này:

    ~! @#%^& | `?

    Ví dụ:@-là tên toán tử được phép, nhưng*-không. Hạn chế này cho phépPostgreSQLĐể phân tích kèo bóng đá euro truy vấn tuân thủ SQL mà không yêu cầu khoảng cách giữa kèo bóng đá euro mã thông báo.

Khi làm việc với tên toán tử không theo tiêu chuẩn SQL, bạn thường sẽ cần tách kèo bóng đá euro toán tử liền kề với không gian để tránh sự mơ hồ. Ví dụ: nếu bạn đã xác định một toán tử unary bên trái có tên@, bạn không thể viếtx*@y; Bạn phải viếtX* @YĐể đảm bảo rằngPOSTGRESQLĐọc nó dưới dạng hai tên toán tử không kèo bóng đá euro.

4.1.4. Ký tự đặc biệt

Một số ký tự không phải là chữ và số có ý nghĩa đặc biệt khác với việc trở thành người vận hành. Chi tiết về việc sử dụng có thể được tìm thấy tại vị trí mô tả phần tử cú pháp tương ứng. Phần này chỉ tồn tại để tư vấn cho sự tồn tại và tóm tắt kèo bóng đá euro mục đích của kèo bóng đá euro ký tự này.

  • kèo bóng đá euro dấu hiệu đô la ($40137_40364

  • ngoặc đơn (()) Có ý nghĩa thông thường của chúng đối với kèo bóng đá euro biểu thức nhóm và thực thi ưu tiên. Trong một số trường hợp, dấu ngoặc đơn được yêu cầu như là một phần của cú pháp cố định của một lệnh SQL cụ thể.

  • Cấu trúc ([]) được sử dụng để chọn kèo bóng đá euro phần tử của một mảng. Nhìn thấyPhần 8.15Để biết thêm thông tin về mảng.

  • dấu phẩy (,) được sử dụng trong một số cấu trúc cú pháp để tách kèo bóng đá euro yếu tố của danh sách.

  • semicolon (;40955_41083

  • Đại tá (:) được sử dụng để chọn"Slices"Từ mảng. (Nhìn thấyPhần 8.1541249_41345

  • Asterisk (*) được sử dụng trong một số bối cảnh để biểu thị tất cả kèo bóng đá euro trường của hàng bảng hoặc giá trị tổng hợp. Nó cũng có một ý nghĩa đặc biệt khi được sử dụng làm đối số của hàm tổng hợp, cụ thể là tổng hợp không yêu cầu bất kỳ tham số rõ ràng nào.

  • Thời kỳ (.) được sử dụng trong kèo bóng đá euro hằng số số và để phân tách lược đồ, bảng và tên cột.

4.1.5. Nhận xét

Một bình luận là một chuỗi kèo bóng đá euro ký tự bắt đầu với kèo bóng đá euro dấu gạch ngang gấp đôi và mở rộng đến cuối dòng, ví dụ:

- Đây là kèo bóng đá euro bình luận SQL tiêu chuẩn

Ngoài ra, có thể sử dụng nhận xét khối kiểu C:

/* Nhận xét đa dòng
 * với kèo bóng đá eurom tổ: / * bình luận khối lồng nhau * /
 */

nơi nhận xét bắt đầu bằng/*và mở rộng đến sự xuất hiện phù hợp của*/42393_42564

kèo bóng đá euro nhận xét được xóa khỏi luồng đầu vào trước khi phân tích cú pháp tiếp theo và được thay thế kèo bóng đá euro cách hiệu quả bằng khoảng trắng.

4.1.6. Nhà điều hành ưu tiên

Bảng 4-2Hiển thị ưu tiên và tính kết hợp của kèo bóng đá euro toán tử trongPOSTGRESQL. Hầu hết kèo bóng đá euro nhà khai thác có cùng mức độ ưu tiên và được liên kết trái. Sự ưu tiên và tính kết hợp của kèo bóng đá euro toán tử được kết nối với trình phân tích cú pháp.

Đôi khi bạn sẽ cần thêm dấu ngoặc đơn khi sử dụng kết hợp kèo bóng đá euro toán tử nhị phân và đơn. Ví dụ:

Chọn 5! - 6;

sẽ được phân tích cú pháp như:

Chọn 5! (- 6);

Bởi vì trình phân tích cú pháp không có ý tưởng - cho đến khi quá muộn - rằng!được định nghĩa là toán tử postfix, không phải là infix. Để có được hành vi mong muốn trong trường hợp này, bạn phải viết:

Chọn (5!) - 6;

Đây là giá mà kèo bóng đá euro người trả cho khả năng mở rộng.

Bảng 4-2. Người vận hành ưu tiên (cao nhất đến thấp nhất)

toán tử/phần tử Associativity Mô tả
. trái Dấu tách tên/cột
:: trái PostgreSQL-Style typecast
[ ] trái Lựa chọn phần tử mảng
+ - phải Unary Plus, Unary Minus
^ trái số mũ
* / % trái Nhân, chia, modulo
+ - trái Bổ sung, trừ
(bất kỳ toán tử nào khác) trái Tất cả kèo bóng đá euro toán tử người dùng và người dùng khác
giữa in như ilike tương tự Ngăn chặn phạm vi, đặt thành viên, khớp chuỗi
< = <= = < kèo bóng đá euro toán tử so sánh
isnull notnull là đúng, là sai, là null, , v.v.
45715_45720 phải phủ định logic
trái Kết hợp logic
hoặc trái Phân biệt logic

Lưu ý rằng kèo bóng đá euro quy tắc ưu tiên toán tử cũng áp dụng cho kèo bóng đá euro toán tử do người dùng xác định có cùng tên với kèo bóng đá euro toán tử tích hợp đã đề cập ở trên. Ví dụ: nếu bạn xác định A"+"Nhà điều hành cho kèo bóng đá euro số loại dữ liệu tùy chỉnh, nó sẽ có mức độ ưu tiên giống như tích hợp"+"toán tử, bất kể bạn kèo bóng đá eurom gì.

Khi kèo bóng đá euro tên toán tử có trình độ lược đồ được sử dụng trongNhà điều hànhCú pháp, ví dụ như trong:

Chọn 3 toán tử (pg_catalog.+) 4;

TheNhà điều hành46574_46636Bảng 4-2cho"Bất kỳ toán tử nào khác". Điều này đúng bất kể toán tử cụ thể nào xuất hiện bên trongToán tử ().

Lưu ý: PostgreSQLPhiên bản trước 9.5 đã sử dụng kèo bóng đá euro quy tắc ưu tiên toán tử hơi khác nhau. Cụ thể,47068_47075 =<từng được coi là người vận hành chung;kèo bóng đá euro bài kiểm tra được sử dụng để có mức độ ưu tiên cao hơn; Vàkhông giữavà kèo bóng đá euro cấu trúc liên quan đã hành động không nhất quán, được thực hiện trong một số trường hợp có quyền ưu tiên củakhôngthay vìgiữa. kèo bóng đá euro quy tắc này đã được thay đổi để tuân thủ tốt hơn với tiêu chuẩn SQL và để giảm sự nhầm lẫn từ việc xử lý không nhất quán kèo bóng đá euro cấu trúc tương đương logic. Trong hầu hết kèo bóng đá euro trường hợp, những thay đổi này sẽ không thay đổi hành vi, hoặc có lẽ trong"Không có toán tử như vậy"Thất bại có thể được giải quyết bằng cách thêm dấu ngoặc đơn. Tuy nhiên, có những trường hợp góc trong đó kèo bóng đá euro truy vấn có thể thay đổi hành vi mà không có bất kỳ lỗi phân tích cú pháp nào được báo cáo. Nếu bạn lo lắng về việc liệu những thay đổi này có âm thầm bị hỏng kèo bóng đá euro cái gì đó hay không, bạn có thể kiểm tra ứng dụng của mình với tham số cấu hìnhToán tử_precedence_warningĐã bật để xem có bất kỳ cảnh báo nào được ghi lại không.