TRƯỜNG HỢP KHI không có trong MySQL
SQL là một ngôn ngữ khai báo. nó không cung cấp khả năng kiểm soát luồng chương trình như 0. Là một biểu thức—chứ không phải là một cấu trúc điều khiển—có nghĩa là 0 thay đổi kết quả của các công thức (biểu thức) dựa trên các điều kiện. Việc sử dụng nó tương tự như toán tử bậc ba 2 trong các ngôn ngữ lập trình khác Show
cú phápCú pháp của biểu thức 0 rất linh hoạt và cho phép viết tắt một số. Ví dụ sau đây cho thấy cú pháp ở dạng chung nhất—cái gọi là trường hợp tìm kiếm. Các biến thể khác là chữ viết tắt cũng có thể được viết là trường hợp tìm kiếm. Hơn nữa, trường hợp tìm kiếm hoạt động trong hầu hết các cơ sở dữ liệu SQL. Từ quan điểm đó, người ta có thể nói rằng trường hợp tìm kiếm là cú pháp 0 duy nhất bạn thực sự cần nhớ
Lưu ý rằng 5 là một điều kiện giống như điều kiện trong mệnh đề 6—ví dụ. 7. Do đó, trường hợp tìm kiếm tên. 8 là một biểu thức SQL tùy ý. nó có thể là một biểu thức đơn giản như tên hằng hoặc tên cột, hoặc cũng có thể là một biểu thức SQL phức tạp chứa các truy vấn con và tất nhiên là các biểu thức 0 lồng nhauMột biểu thức 0 có thể chứa một số cặp 1- 2. Điều này cho phép nhiều điều kiện ngay cả khi không lồng—không giống như toán tử 2 trong các ngôn ngữ lập trình khác. Mặt khác, việc lồng cung cấp quyền ưu tiên vốn có giữa các điều kiện. Biểu thức 0 phẳng không có quyền ưu tiên cố hữu như vậy. Để thu hẹp khoảng cách đó, SQL sử dụng thứ tự xuất hiện các điều kiện trong biểu thức 0 để xác định mức độ ưu tiên của chúng. Đơn giản thôi. Biểu thức 0 đánh giá bằng 8 của giá trị đúng đầu tiên 5Trước khi kết thúc biểu thức 0 với 0, mệnh đề tùy chọn 1 có thể được sử dụng. 8 của 1 được sử dụng nếu không có 5 là đúng. Nếu 1 bị bỏ qua, thì ____21_______6 là ẩnTiêu chuẩn SQL không chỉ định cách xử lý biểu thức 0—nó chỉ xác định kết quả. Trên thực tế, có những sản phẩm đôi khi xử lý mệnh đề 2 ngay cả trước mệnh đề 1 tương ứng (đọc lại. 2 trước 1). Tất nhiên, những sản phẩm này cuối cùng cũng mang lại kết quả phù hợp—họ chỉ loại bỏ những sản phẩm được đánh giá không cần thiết. Cuối cùng, đây là kết quả của bản chất khai báo của SQL. cơ sở dữ liệu—chứ không phải lập trình viên—quyết định làm thế nào để có được kết quả chính xác. Bạn sẽ tìm thấy thêm về điều này trongMẹoKhông sử dụng các hàm không xác định hoặc các hàm thay đổi dữ liệu trong biểu thức 0. Quá trình đánh giá không xác định có thể có tác dụng phụ không thể đoán trướcMẫu đơn giảnĐể tránh lặp đi lặp lại một toán hạng được sử dụng trong tất cả các mệnh đề 1, tiêu chuẩn SQL đưa ra cái gọi là trường hợp đơn giản
Trường hợp đơn giản chia 5 thành hai phần. toán hạng chung (e. g. , tên cột) được đặt ngay sau từ khóa 0. Mặt khác của sự so sánh vẫn còn trong mệnh đề 1. Toán tử so sánh bằng (______39_______7) được ngụ ýTiêu chuẩn xác định trường hợp đơn giản là sự chuyển đổi sang trường hợp được tìm kiếm—các quy tắc được mô tả ở trên vẫn hợp lệ thận trọngBạn không thể sử dụng trường hợp đơn giản để kiểm tra cho 8 vì nó luôn sử dụng toán tử bằng ( 7). Đó là vì điều kiện 0 không đúng—do đó, mệnh đề 1 không bao giờ được áp dụng. Nếu 2 là 8, điều khoản 1 sẽ được áp dụngChữ viết tắt để đối phó với x / NULLIF(y, 0)8SQL cung cấp hai chữ viết tắt 0 để đối phó với 8. 8 và 9. Cả hai đều được sử dụng giống như các hàm và không sử dụng các từ khóa 0, 1, 2, 1 và 0 5 trả về tham số not- 8 đầu tiên (hoặc 8, nếu tất cả các tham số là 8). Số lượng tham số không giới hạn. Tiêu chuẩn định nghĩa 8 là phép biến đổi thành biểu thức 0. Do đó các biểu thức sau là tương đương
1 yêu cầu hai tham số và thường trả về giá trị của tham số đầu tiên. Chỉ khi cả hai giá trị đều bằng nhau ( 7), thì thay vào đó, 8 mới được trả về. 1 cũng được định nghĩa là phép biến đổi thành 0 và thường được sử dụng để ngăn lỗi chia cho số 0
Thay mặt tôi. Đào tạo tiếp theo của tôiKhóa đào tạo trực tuyến tiếp theo của tôi “Phân tích và Tổng hợp” bắt đầu vào ngày 14 tháng 2 năm 2023. Khóa đào tạo này đi sâu vào các khía cạnh ít được biết đến của các mệnh đề GROUP BY và HAVING, đồng thời giải thích các chức năng của cửa sổ và mệnh đề OVER từ cơ sở. Bốn phiên, mỗi phiên hai giờ — không quá bốn người tham gia. Mọi thứ đều trực tiếp. Tìm hiểu thêm về điều này và các khóa đào tạo SQL khác tại winand. Tại Hình thức hầu như không được hỗ trợTất cả các dạng 0 được hiển thị ở trên đều được giới thiệu với SQL-92 trung gian và thực tế hoạt động trong tất cả các cơ sở dữ liệu SQL. SQL. 2003 đã giới thiệu thêm hai chữ viết tắt mở rộng. Cả hai đều là tính năng tùy chọn và chưa được hỗ trợ rộng rãiCái gọi là trường hợp mở rộng chấp nhận toán tử so sánh ngay sau 1 và do đó loại bỏ giới hạn rằng trường hợp đơn giản luôn sử dụng phép so sánh bằng ( 7). Ví dụ sau sử dụng toán tử nhỏ hơn ( 9) để ánh xạ các giá trị thành các khoảng. Nó cũng dựa vào. điều kiện đúng đầu tiên thắng
Phần bổ sung thứ hai được giới thiệu bởi SQL. 2003 cho phép các danh sách được phân tách bằng dấu phẩy trong mệnh đề 1
Xác định loại kết quảLoại kết quả của biểu thức 0 được xác định bởi tất cả các biểu thức 8 chung. Tiêu chuẩn SQL xác định các quy tắc nghiêm ngặt về cách tìm loại kết quả khi trộn các loại dữ liệu liên quan—ví dụ: nếu một mệnh đề 2 có loại 5 trong khi một mệnh đề khác có loại 6. Các quy tắc tiêu chuẩn xác định cho các loại liên quan về cơ bản là lẽ thường, tôi. e. , loại kết quả của biểu thức 0 là loại ngắn nhất có thể chứa tất cả các giá trị kết quả có thể. Trong ví dụ, loại kết quả là 6Như thường lệ, 8 là đặc biệt. chữ 8—như trong 6—không có loại đã biết. Do đó, nó bị bỏ qua khi xác định loại kết quả của biểu thức 0. Thực tế, 8 điều chỉnh thành loại kết quả của biểu thức 0 tổng thểCác loại số gần đúng ( 8 có một kiểu số gần đúng, thì tiêu chuẩn SQL yêu cầu kiểu kết quả của biểu thức 0 cũng phải là một kiểu số gần đúng—cái nào được xác định triển khai. Tương tự như vậy, việc triển khai được xác định chuyển đổi kiểu ngầm định nào được thực hiện. Do đó, một số sản phẩm cho phép trộn các loại dữ liệu không liên quan trong biểu thức 0 mà không cần chuyển đổi rõ ràngMẹoTránh trộn lẫn các loại trong mệnh đề 2. Nếu cần, hãy sử dụng 02 để chuyển đổi chúng thành loại được yêu cầu một cách rõ ràngTrường hợp sử dụngCác bài viết sau đây mô tả các trường hợp sử dụng phổ biến của 0
khả năng tương thíchBiểu thức 0 đã được giới thiệu với SQL-92 trung gian. SQL. 1999 kết hợp 0 làm tính năng F261 vào Core SQL để nó trở thành bắt buộc. Ngày nay hầu như tất cả các cơ sở dữ liệu SQL đều hỗ trợ tính năng nàySQL. 2003 đã thêm hai tính năng tùy chọn hầu như không được hỗ trợ và Tiện ích mở rộng độc quyềnQuy trình đánh giá tài liệuTiêu chuẩn SQL không xác định quy trình cách giải quyết biểu thức 0. Đặc biệt, tiêu chuẩn không bắt buộc phải kiểm tra các điều kiện theo thứ tự xuất hiện của chúng trong biểu thức 0. Miễn là việc triển khai cuối cùng mang lại kết quả phù hợp, mọi thứ đều được cho phépMặc dù các quy trình đánh giá khác nhau phải tạo ra cùng một kết quả, nhưng các quy trình khác nhau có thể gây ra các tác dụng phụ khác nhau. Ví dụ: khi sử dụng các hàm thay đổi dữ liệu, chúng có thể được gọi ngay cả khi không thực sự cần thiết—tuy nhiên, bạn có thể thấy tác dụng phụ của chúng. dữ liệu đã thay đổi. Tương tự như vậy, việc có xảy ra lỗi thời gian chạy hay không có thể phụ thuộc vào quy trình đánh giá. nếu lỗi nằm trong một phần của biểu thức 0 thì không nhất thiết phải được đánh giá, nó có thể được kích hoạt hoặc không trong quá trình đánh giá. Cuối cùng, thời gian đánh giá cũng là một tác dụng phụ phụ thuộc vào quá trình đánh giáXem xét tác dụng phụ cuối cùng—hiệu suất—quy trình đánh giá hiển nhiên là kiểm tra các mệnh đề 1 theo thứ tự cho đến khi tìm thấy điều kiện đúng đầu tiên. Tất nhiên, cũng hợp lý khi chỉ đánh giá một kết quả—mệnh đề 2 tương ứng hoặc mệnh đề 1. Một số sản phẩm thậm chí còn ghi lại quy trình đánh giá này. Tuy nhiên, có những trường hợp có thể dẫn đến tác dụng phụ đáng ngạc nhiênMột ví dụ phổ biến có thể gây ra tác dụng phụ đáng ngạc nhiên là điều này. một số sản phẩm đánh giá các biểu thức không đổi sớm—i. e. , trong giai đoạn chuẩn bị trước khi thực hiện. Điều này rất giống với trình biên dịch giải quyết các biểu thức hằng số (e. g. , 14) trong quá trình biên dịch—thay vì sau đó tạo mã tính toán kết quả trong thời gian chạy. Nếu tối ưu hóa này ảnh hưởng đến một phần của biểu thức 0, thứ tự đánh giá sẽ bị xáo trộnDo đó, ví dụ sau có thể dẫn đến sai số chia cho 0 ngay cả khi điều kiện 16 không bao giờ đúng. Ngay cả khi bảng 17 trống, lỗi vẫn có thể xảy ra, nếu biểu thức hằng số 18 được đánh giá trong giai đoạn chuẩn bị
CASE |