Akèo bóng đá c1là quá trình kèo bóng đá c1 xuất hoặc lệnh để lấy dữ liệu từ cơ sở dữ liệu. Trong sql theChọnLệnh được sử dụng để chỉ định các kèo bóng đá c1. Cú pháp chung củaChọnlệnh là
Chọnselect_listtừTable_Expression[Sort_Specification]
Các phần sau đây mô tả các chi tiết của Chọn
Liệt kê, biểu thức bảng và đặc điểm kỹ thuật sắp xếp. Các
loại kèo bóng đá c1 đơn giản nhất có biểu mẫuChọn * từ Bảng1;Giả sử rằng có một bảng gọi là Bảng1, lệnh này sẽ lấy tất cả các hàng và tất cả các cột từ Bảng1. (Phương pháp của kèo bóng đá c1 xuất phụ thuộc vào ứng dụng khách. Ví dụ:PSQLChương trình sẽ hiển thị Bảng ascii-art trên màn hình, thư viện máy khách sẽ cung cấp các chức năng để kèo bóng đá c1 xuất các hàng và cột riêng lẻ.) Danh sách chọn Đặc điểm kỹ thuật*có nghĩa là tất cả kèo bóng đá c1 cột mà Biểu thức bảng xảy ra để cung cấp. Danh sách chọn cũng có thể chọn một tập hợp con của kèo bóng đá c1 cột có sẵn hoặc thậm chí thực hiện kèo bóng đá c1 tính toán trên cột trước khi lấy chúng; nhìn thấyPhần 2.2. Ví dụ: nếu Bảng1 có các cột được đặt tên là A, B và C (và có lẽ các cột khác) bạn có thể tạo kèo bóng đá c1 sau:
Chọn A, B + C từ Bảng1;(Giả sử B và C thuộc loại dữ liệu số).
Từ Bảng1là một điều đặc biệt đơn giản loại biểu thức bảng. Nói chung, các biểu thức bảng có thể Các cấu trúc phức tạp của các bảng cơ sở, tham gia và kèo bóng đá c1 con. Nhưng bạn Cũng có thể bỏ qua hoàn toàn biểu thức bảng và sử dụng chọn lệnh như một máy tính:
Chọn 3 * 4;Điều này hữu ích hơn nếu kèo bóng đá c1 biểu thức trong danh sách chọn trả về kết quả khác nhau. Ví dụ: bạn có thể gọi một chức năng này đường.
Chọn ngẫu nhiên ();
ABiểu thức kèo bóng đá c1Chỉ định a bàn. Biểu thức bảng chứa một mệnh đề từ đó là Tùy chọn theo sau là nơi, nhóm theo và có mệnh đề. Biểu thức bảng tầm thường chỉ cần tham khảo một bảng trên đĩa, một Cái gọi là bảng cơ sở, nhưng có thể sử dụng kèo bóng đá c1 biểu thức phức tạp hơn Để sửa đổi hoặc kết hợp kèo bóng đá c1 bảng cơ sở theo nhiều cách khác nhau.
tùy chọn ở đâu, nhóm theo và có kèo bóng đá c1 mệnh đề trong Biểu thức bảng chỉ định một đường ống liên tiếp kèo bóng đá c1 phép biến đổi được thực hiện trên bảng có nguồn gốc từ mệnh đề. Bảng dẫn xuất được sản xuất bởi tất cả những thứ này kèo bóng đá c1 biến đổi cung cấp kèo bóng đá c1 hàng đầu vào được sử dụng để tính toán đầu ra kèo bóng đá c1 hàng theo chỉ định bởi danh sách chọn giá trị cột biểu thức.
Điều khoản từ mệnh đề xuất phát từ một bảng từ một hoặc nhiều người khác kèo bóng đá c1 bảng được đưa ra trong danh sách tham chiếu bảng được phân tách bằng dấu phẩy.
từTable_Reference[, Table_Reference[, ...]]
14659_1506115062_15463
Bảng được nối là một bảng có nguồn gốc từ hai hoặc có nguồn gốc) kèo bóng đá c1 bảng theo kèo bóng đá c1 quy tắc của tham gia loại. Bên trong, bên ngoài và tham gia chéo được hỗ trợ.
tham gia kèo bóng đá c1 loại
T1tham gia chéoT2
Đối với mỗi kết hợp kèo bóng đá c1 hàng từT1vàT2, Bảng dẫn xuất sẽ chứa một hàng bao gồm tất cả kèo bóng đá c1 cột trongT1theo sau là tất cả kèo bóng đá c1 cột trongT2. Nếu kèo bóng đá c1 bảng có kèo bóng đá c1 hàng n và m tương ứng, bảng tham gia sẽ có hàng n * m. A cross join is equivalent to anbên trong tham gia trên True.
Tip: từT1tham gia chéoT2IS tương đương vớitừT1, T2.
T1[bên trong] | Trái | Đúng | ĐẦY [17365_17372] Tham giaT2trênboolean_expression T1[bên trong] | Trái | Đúng | ĐẦY [Buter] Tham giaT2Sử dụng (Tham gia danh sách cột)T1tự nhiên [bên trong] | Trái | Đúng | ĐẦY [Buter] Tham giaT2
kèo bóng đá c1 từbên trongvàButerlà tùy chọn cho tất cả Tham gia.bên tronglà mặc định;trái, phảivàFullngụ ý tham gia bên ngoài.
TheĐiều kiện tham giaIS được chỉ định trong hoặc sử dụng mệnh đề, hoặc ngầm Từ tự nhiên. Điều kiện tham gia xác định cái nào Hàng từ hai kèo bóng đá c1 nguồn được coi là"Match", như được giải thích trong chi tiết bên dưới.
Điều khoản trên là loại tham gia chung nhất Điều kiện: Nó có một biểu thức giá trị boolean của Loại giống như được sử dụng trong một mệnh đề WHERE. Một cặp Hàng từ T1 và T2 khớp nếu biểu thức BẬT đánh giá đúng với họ.
Sử dụng là ký hiệu tốc ký: Nó có một danh sách kèo bóng đá c1 tên cột được phân tách bằng dấu phẩy, mà kèo bóng đá c1 bảng tham gia phải có điểm chung và tạo thành một tham gia Điều kiện chỉ định bình đẳng của từng cặp này của kèo bóng đá c1 cột. Hơn nữa, đầu ra của một sự tham gia bằng cách sử dụng có một cột cho mỗi cặp đầu vào tương đương kèo bóng đá c1 cột, theo sau là tất cả kèo bóng đá c1 cột khác từ mỗi bảng. Do đó,Sử dụng (A, B, c)is equivalent toON (T1.A = t2.a và t1.b = t2.b và t1.c = t2.c)với ngoại lệ rằng nếu trên được sử dụng, sẽ có hai kết quả là kèo bóng đá c1 cột A, B và C sẽ chỉ có một trong số.
19812_20080
kèo bóng đá c1 loại tham gia đủ điều kiện có thể là:
Đối với mỗi hàng r1 của T1, kèo bóng đá c1 được nối có một hàng cho mỗi hàng trong T2 thỏa mãn Tham gia điều kiện với R1.
20566_20928
Đầu tiên, tham gia bên trong được thực hiện. Sau đó, cho mỗi hàng trong t2 không thỏa mãn sự tham gia Điều kiện với bất kỳ hàng nào trong T1, một hàng được nối là được trả về với kèo bóng đá c1 giá trị null trong kèo bóng đá c1 cột của T1. Đây là điều ngược lại của một tham gia bên trái: kết quả bảng sẽ không có điều kiện có một hàng cho mỗi hàng trong t2.
Đầu tiên, tham gia bên trong được thực hiện. Sau đó, cho mỗi hàng trong T1 không thỏa mãn sự tham gia Điều kiện với bất kỳ hàng nào trong T2, một hàng được nối là được trả về với kèo bóng đá c1 giá trị null trong kèo bóng đá c1 cột của T2. Ngoài ra, đối với mỗi hàng của T2 không thỏa mãn Điều kiện tham gia với bất kỳ hàng nào trong T1, một hàng với kèo bóng đá c1 giá trị null trong kèo bóng đá c1 cột của T1 là đã trả về.
Tham gia tất cả kèo bóng đá c1 loại có thể được xích lại với nhau hoặc lồng nhau: Hoặc hoặc cả haiT1vàT2có thể được tham gia bảng. Dấu ngoặc đơn có thể được sử dụng xung quanh kèo bóng đá c1 mệnh đề tham gia để kiểm soát Tham gia đặt hàng. Trong trường hợp không có dấu ngoặc đơn, hãy tham gia kèo bóng đá c1 điều khoản tổ từ trái sang phải.
Subqueries Chỉ định kèo bóng đá c1 dẫn xuất phải được đặt trong ngoặc đơn vàphảiĐược đặt tên Sử dụng một mệnh đề AS. (Nhìn thấyPhần 2.1.1.3.)
Từ (chọn * từ Bảng1) dưới dạng bí danh_name
Ví dụ này tương đương vớiTừ Bảng1 dưới dạng bí danh_name. Những trường hợp thú vị hơn, mà không thể giảm xuống thành một sự tham gia đơn giản, phát sinh khi trình điều khiển con liên quan đến nhóm hoặc tập hợp.
23460_23634Bí danh kèo bóng đá c1.
từTable_ReferenceASbí danhở đây,bí danhcó thể là bất kỳ định danh thường xuyên. Bí danh trở thành tên mới của bảng tham chiếu cho kèo bóng đá c1 hiện tại - không còn có thể Tham khảo bảng theo tên ban đầu. Do đó
Chọn * từ my_table dưới dạng m trong đó my_table.a 5;không phải là cú pháp SQL hợp lệ. Điều gì sẽ thực sự xảy ra (đây là mộtPostgresPhần mở rộng cho tiêu chuẩn) là một tham chiếu bảng ngầm được thêm vào từ mệnh đề, vì vậy kèo bóng đá c1 được xử lý như thể nó được viết là
Chọn * từ my_table dưới dạng m, my_table dưới dạng my_table trong đó my_table.a 5;Bí danh kèo bóng đá c1 chủ yếu là để thuận tiện cho chứng minh, nhưng nó là cần thiết để sử dụng chúng khi tham gia một kèo bóng đá c1 vào chính nó, ví dụ:
Chọn * từ my_table dưới dạng chéo tham gia my_table dưới dạng b ...Ngoài ra, cần có bí danh nếu tham chiếu bảng là một kèo bóng đá c1 con.
ngoặc đơn được sử dụng để giải quyết sự mơ hồ. kèo bóng đá c1 câu lệnh sau sẽ gán bí danhBđến kết quả của sự tham gia, không giống như Ví dụ trước:
Chọn * Từ (my_table dưới dạng chéo tham gia my_table) là b ...
từTable_Reference bí danhMẫu này tương đương với mẫu được xử lý trước đó; TheASTừ khóa là tiếng ồn.
từTable_Reference[AS]bí danh(Cột1[, Cột2[, ...]])Ở dạng này, ngoài việc đổi tên bảng như mô tả ở trên, các cột của bảng cũng được đặt tên tạm thời cho Sử dụng bởi các kèo bóng đá c1 xung quanh. Nếu ít bí danh cột hơn được chỉ định hơn bảng thực tế có các cột, các cột còn lại không Đổi tên. Cú pháp này đặc biệt hữu ích cho tự tham gia hoặc Các nhóm con.
Khi một bí danh được áp dụng cho đầu ra của mệnh đề tham gia, Sử dụng bất kỳ hình thức nào trong số này, bí danh ẩn bản gốc tên trong tham gia. Ví dụ,
Chọn a.* Từ my_table dưới dạng tham gia your_table as b trên ...là SQL hợp lệ, nhưng
Chọn a.* Từ (my_table dưới dạng tham gia your_table as b trên ...) như cKhông hợp lệ: Bí danh kèo bóng đá c1 A không hiển thị bên ngoài Bí danh C.
Từ T1 bên trong tham gia T2 bằng cách sử dụng (c) Từ T1 bên ngoài bên ngoài Tham gia T2 bằng cách sử dụng (C) Từ (T1 bên ngoài cùng bên ngoài T2 trên (T1C1 = T2C1)) là DT1 Từ (T1 Full Outer Tham gia T2 bằng cách sử dụng (C)) như DT1 (DT1C1, DT1C2) Từ T1 tự nhiên, tham gia T2 Từ T1 tự nhiên bên trái tham gia T2 Từ T1 tự nhiên bên ngoài tham gia T2 Từ T1 tự nhiên đầy đủ, tham gia T2 Từ (chọn * từ T1) DT1 Cross tham gia T2, T3 Từ (chọn * từ t1) dt1, t2, t3ở trên là một số ví dụ về kèo bóng đá c1 bảng được nối và có nguồn gốc phức tạp bàn. Lưu ý cách mệnh đề AS được đổi tên hoặc đặt tên cho một bảng dẫn xuất and how the optional comma-separated list of column names that Theo sau đổi tên kèo bóng đá c1 cột. Hai người cuối cùng từ kèo bóng đá c1 mệnh đề sản xuất Cùng một bảng có nguồn gốc từ T1, T2 và T3. Từ khóa AS đã bị bỏ qua trong việc đặt tên cho kèo bóng đá c1 công cụ con là DT1. kèo bóng đá c1 từ khóa bên ngoài và bên trong là tiếng ồn cũng có thể bị bỏ qua.
Cú pháp của mệnh đề WHERE is
WHEREsearch_conditionWHEREsearch_conditionlà bất kỳ Biểu thức giá trị như được định nghĩa trongPhần 1.3Trả về giá trị của loạiBoolean.
28068_28560
Lưu ý:Trước khi thực hiện tham gia cú pháp, cần phải đặt điều kiện tham gia của một bên trong tham gia vào mệnh đề WHERE. Ví dụ, những kèo bóng đá c1 này Biểu thức tương đương:
Từ a, b trong đó a.id = b.id và B.Val 5vàTừ một bên trong tham gia b trên (a.id = b.id) trong đó B.Val 5hoặc thậm chíTừ một tự nhiên tham gia b trong đó B.Val 529160_29421khôngTương đương với điều kiện ở nơi, bởi vì nó xác định việc bổ sung kèo bóng đá c1 hàng (cho đầu vào chưa từng có Hàng) cũng như loại bỏ kèo bóng đá c1 hàng khỏi kết quả cuối cùng.
Từ FDT ở đâu C1 5 Từ FDT ở đâu C1 in (1, 2, 3) Từ FDT ở đâu C1 in (chọn C1 từ T2) Từ FDT ở đâu C1 in (Chọn C3 từ T2 trong đó C2 = FDT.C1 + 10) Từ FDT ở đâu C1 giữa (chọn C3 từ T2 trong đó C2 = FDT.C1 + 10) và 100 Từ FDT ở đâu Tồn tại (chọn C1 từ T2 trong đó C2 fdt.c1)
Trong các ví dụ trên, FDT là bảng có nguồn gốc từ Từ mệnh đề. Hàng không đáp ứng điều kiện tìm kiếm của mệnh đề WHERE được loại bỏ khỏi FDT. Để ý việc sử dụng Quadmar Subqueries là biểu thức giá trị. Cũng giống như bất kỳ ai khác kèo bóng đá c1, các nhóm con có thể sử dụng các biểu thức bảng phức tạp. Lưu ý cách FDT được tham chiếu trong các nghiên cứu phụ. Đủ điều kiện C1 Vì fdt.c1 chỉ cần thiết nếu C1 cũng là tên của một Cột trong bảng đầu vào dẫn xuất của trình điều khiển con. Đủ điều kiện Tên cột thêm rõ ràng ngay cả khi không cần thiết. Cái này cho thấy phạm vi đặt tên cột của một kèo bóng đá c1 bên ngoài mở rộng vào các kèo bóng đá c1 bên trong của nó.
Sau khi chuyển bộ lọc ở đâu, bảng đầu vào dẫn xuất có thể phải theo nhóm, sử dụng nhóm theo mệnh đề và Loại bỏ kèo bóng đá c1 hàng nhóm bằng mệnh đề có.
Chọnselect_listtừ ... [Trong đó ...] Nhóm bởiNhóm_Column_Reference[, Nhóm_Column_Reference] ...
Nhóm theo mệnh đề được sử dụng để nhóm lại kèo bóng đá c1 hàng trong a Bảng chia sẻ kèo bóng đá c1 giá trị giống nhau trong tất cả kèo bóng đá c1 cột được liệt kê. Thứ tự kèo bóng đá c1 cột được liệt kê không quan trọng (như trái ngược với mệnh đề theo mệnh đề). Mục đích là để giảm mỗi Nhóm kèo bóng đá c1 hàng chia sẻ kèo bóng đá c1 giá trị chung thành một hàng nhóm là đại diện của tất cả kèo bóng đá c1 hàng trong nhóm. Điều này được thực hiện để Loại bỏ sự dư thừa trong đầu ra và/hoặc thu được kèo bóng đá c1 tập hợp áp dụng cho kèo bóng đá c1 nhóm này.
Một khi bảng được nhóm lại, kèo bóng đá c1 cột không được sử dụng trong Nhóm không thể được tham chiếu ngoại trừ trong tổng hợp biểu thức, vì một giá trị cụ thể trong kèo bóng đá c1 cột đó là mơ hồ - hàng nào trong nhóm nên đến từ? kèo bóng đá c1 kèo bóng đá c1 cột được nhóm có thể được tham chiếu trong cột Danh sách chọn Biểu thức vì chúng có giá trị không đổi được biết đến trên mỗi nhóm. kèo bóng đá c1 chức năng tổng hợp trên kèo bóng đá c1 cột chưa được nhóm cung cấp kèo bóng đá c1 giá trị Điều đó trải dài trên kèo bóng đá c1 hàng của một nhóm, không phải của toàn bộ bảng. Vì ví dụ, aSum (bán hàng)32428_32708
Ví dụ:
Chọn pid, p.name, (sum (s.units) * p.price) làm bán hàng Từ kèo bóng đá c1 sản phẩm p tham gia bán hàng S Sales S sử dụng (PID) Nhóm bởi PID, P.Name, P.Price;32912_33167sum ()), đại diện cho nhóm bán hàng của một sản phẩm. Đối với mỗi sản phẩm, một hàng tóm tắt là đã trả lại về tất cả doanh số của sản phẩm.
33347_33622
Chọnselect_listTừ ... [trong đó ...] Nhóm bởi ... cóBoolean_Expression
Nếu một bảng được nhóm bằng mệnh đề theo nhóm, nhưng sau đó
Chỉ một số nhóm nhất định được quan tâm, điều khoản có mới có thể được sử dụng,
Giống như một điều khoản ở đâu, để loại bỏ kèo bóng đá c1 nhóm khỏi một bảng được nhóm.
Postgres cho phép một mệnh đề có mệnh đề được sử dụng mà không cần một nhóm, trong
trường hợp nào nó hoạt động như một điều khoản khác, nhưng điểm trong
Sử dụng có cách đó không rõ ràng. Một quy tắc tốt là một
Có điều kiện nên đề cập đến kết quả tổng hợp
chức năng. Một hạn chế không liên quan đến tổng hợp là nhiều hơn
được thể hiện một cách hiệu quả trong mệnh đề WHERE.Ví dụ:
Chọn PID làm "Sản phẩm", p.name là "trên 5000", (sum (s.units) * (p.price - p.cost)) là "lợi nhuận tháng trước" Từ kèo bóng đá c1 sản phẩm p tham gia bán hàng S Sales S sử dụng (PID) Trong đó s.date current_date - khoảng '4 tuần' Nhóm bởi Pid, P.Name, P.Price, P.Cost Có tổng (p.price * s.units) 5000;Trong ví dụ trên, mệnh đề nơi được chọn hàng cột không được nhóm, trong khi mệnh đề có đầu ra cho kèo bóng đá c1 nhóm có tổng doanh thu trên 5000.
Prev | 35362_35368 | NEXT |
35565_35591 | UP | Chọn danh sách |