BìaGiới thiệu1. Cách truy xuất dữ liệu từ một bảng đơn1. 1. Năm mệnh đề của câu lệnh SELECT1. 2. Thông số cột1. 3. Toán tử LIKE và REGEXP1. 4. Toán Tử Số Học1. 5. Bí danh cột1. 6. Toán Tử So Sánh1. 7. IS NULL, BETWEEN, IN Toán tử1. 8. AND, OR, NOT Toán tử logic1. 9. DISTINCT Khoản 2. Cách truy xuất dữ liệu từ nhiều bảng2. 1. Mệnh đề THAM GIA 2. 2. Tham gia nhiều hơn hai bàn2. 3. OUTER THAM GIA Khoản 2. 4. Cách viết mã UNION3. Sử dụng Hàm3. 1. Hàm ngày3. 2. Hàm Số3. 3. Hàm chuỗi4. Cách Chèn, Cập nhật, Xóa Dữ liệu trong Tables4. 1. Mệnh đề INSERT với danh sách cột4. 2. Mệnh đề INSERT không có danh sách cột4. 4. Mệnh đề CẬP NHẬT Với Danh sách Cột4. 4. Mệnh đề XÓA5. Truy vấn Tóm tắt và Hàm Tổng hợp5. 1. Hàm tổng hợp5. 2. Nhóm dữ liệu5. 3. NHÓM đơn giản THEO Truy vấn5. 4. Cải thiện NHÓM THEO Truy vấn5. 5. Sử dụng Mệnh đề HAVING 5. 5. Sử dụng các mệnh đề HAVING và WHERE cùng nhau5. 6. COUNT[tên_cột] và COUNT[*]5. 7. Sử dụng Tuyên bố DISTINCT6. Làm việc với truy vấn con6. 1. Truy vấn con trong câu lệnh SELECT6. 2. Truy vấn con trong câu lệnh CẬP NHẬT6. 3. Tạo một bảng trùng lặp từ một bảng hiện có 6. 4. Truy vấn con trong câu lệnh xóa7. Chế độ xem SQL7. 1. Giải thích về dạng xem SQL7. 2. Lợi ích của việc sử dụng Lượt xem7. 3. Chế độ xem cho phép CẬP NHẬT câu lệnh8. Chỉ mục SQL8. 1. Giải thích về các chỉ mục SQL8. 2. Nhóm so với. Chỉ mục không nhóm8. 3. Tạo một chỉ mục trong Workbench bằng ERD8. 4. Cách thêm chỉ mục vào bảng hiện cóGlossaryIndex theo cách thủ công
2
Cách truy xuất dữ liệu từ nhiều bảng2. 1. Mệnh đề THAM GIA2. 2. Tham gia nhiều hơn hai bàn2. 3. Mệnh đề OUTER THAM GIA2. 4. Cách viết mã UNION
CC BY-NC-NĐ Quốc tế 4. 0. Tác phẩm này được phát hành theo CC BY-NC-ND International 4. 0, có nghĩa là bạn có thể tự do làm với nó theo ý muốn miễn là bạn [1] ghi tên nó đúng cách, [2] không sử dụng nó vì mục đích thương mại và [3] không tạo ra các tác phẩm phái sinh
Câu lệnh này được sử dụng để truy xuất các trường từ nhiều bảng. Để làm như vậy, chúng ta cần sử dụng truy vấn nối để lấy dữ liệu từ nhiều bảng
Hãy xem ví dụ về lựa chọn từ nhiều bảng
Chúng ta hãy lấy ba bảng, hai bảng khách hàng có tên là khách hàng1 và khách hàng2 và bảng thứ ba là bảng sản phẩm
Hướng dẫn này chỉ cho bạn cách truy vấn
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
5 từ nhiều bảng trong một tập lệnh bằng cách sử dụng MySQLHãy chứng minh một kịch bản
SELECT name, price, details, type, FROM food, food_order WHERE breakfast.id = 'breakfast_id'
Bây giờ, hãy tưởng tượng các bảng mẫu cho mỗi mục nhập
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
6food_idnamepriceoptions1Eggs10. 00Xào, Nắng, Luộc2Kem30. 00Vani, Dâu, Socola3Ramen12. 00Regular, Spicyorder_idphotofood_id1eggs_scrambled. jpg12eggs_sunnyside. jpg13eggs_boiled. png14icecream_vani. jpg25icecream_strawberry. jpg26ice_cream_chocolate. jpg27ramen_regular. jpg38ramen_cay. jpg3Dựa vào bảng trên ta thấy
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
7 có 3 ảnh, SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
8 cũng có 3, còn SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
0 có 2. Đầu ra chúng tôi muốn tạo là một bảng tổng hợp của SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
1 và SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
2, hiển thị tất cả các món ăn cùng nhau và kết hợp chúng với các ảnh tương ứng trong menuNếu chúng ta truy vấn điều này
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
Kết quả sẽ là thế này
namepriceoptionsphoto1EggsScrambled, Sunny Side, Luededeggs_sunnyside. jpg2TrứngScrambled, Phía có nắng, Luộc trứng_scrambled. jpg3Trứng Tranh giành, Nắng, Luộc trứng_boiled. jpgDữ liệu bị trùng lặp vì có nhiều hàng
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
2 liên quan đến SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
1. Trong trường hợp này, có 3 ảnh trong SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
2 được gắn trực tiếp với TrứngKhông thể truy vấn đơn giản để nối tất cả các mục trong
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
2 thành một hàng, vì tất cả chúng đều được coi là các thực thể riêng biệt có liên quan đến bảng SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
1Nếu bạn muốn truy vấn
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
1 và SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
2 cùng một lúc trong một hàng, thì đây là một số tùy chọn để thực hiện điều đóSử dụng GROUP BY SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
1 để CHỌN từ nhiều bảng
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
Cách tiếp cận này sử dụng
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
31 để tổng hợp cả hai bảng trong một kết quả. Tuy nhiên, hạn chế là bạn sẽ chỉ nhận được phiên bản đầu tiên của SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
2 vì chúng tôi buộc các kết quả phải là duy nhấtDưới đây là truy vấn tới bảng
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
31 SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
1SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
3Sau đó nó sẽ hiển thị kết quả sau
namepriceoptionsphoto1EggsScrambled, Sunny Side, Luededeggs_sunnyside. jpgBây giờ chúng tôi đã thỏa mãn điều kiện, mặc dù chỉ có một ảnh được trả về, đây là phiên bản đầu tiên của
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
2 được truy vấn tìm thấySử dụng SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
36 để CHỌN từ nhiều bảng trong MySQL
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
Cách tiếp cận này sử dụng lệnh
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
36 hoặc SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
38 của SQLThay vì có 2 điều kiện TỪ trong tập lệnh, chúng tôi THAM GIA
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
2 dựa trên khóa ngoại SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
30 của nó. Chúng tôi đặt bí danh SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
31 cho SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
1 và SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
33 cho SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
2SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
3Mặc dù phương pháp này khác với phương pháp trước, nhưng nó tạo ra cùng một kết quả. Nó trả về phiên bản đầu tiên của
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
2 vì GROUP BY buộc truy vấn trả về các hàng duy nhất dựa trên điều kiện của nónamepriceoptionsphoto1EggsScrambled, Sunny Side, Luededeggs_sunnyside. jpgSử dụng SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
36 và thao tác kết quả trong MySQL
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
Một giải pháp thay thế cho vấn đề của giải pháp trước đó là sử dụng
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
36 để đặt tất cả kết quả của SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
2 vào một chuỗi, do đó có thể đặt tất cả các bản ghi của chúng vào một hàngSELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
39 là một hàm kết hợp dữ liệu từ nhiều hàng vào một trường duy nhất. Đó là một hàm đặc biệt của SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
31 trả về một chuỗi đã sửa đổi nếu nhóm chứa ít nhất 1 giá trị khác null. Nếu không, nó sẽ trả về SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
51Chúng tôi sửa đổi truy vấn ở trên thành cột ảnh
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
36 để nối các kết quả thành một chuỗiSELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
5Bằng cách này, chúng tôi nối cột ảnh của
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
2 để chỉ một hàng cho mỗi mục nhập duy nhất của SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
1 sẽ được tạo. Kết quả sẽ như hiển thịnamepriceoptionsphoto1EggsScrambled, Sunny Side, Luededeggs_sunnyside. jpg,eggs_scrambled. jpg,eggs_boiled. jpgNhư bạn có thể thấy, nó nối 3 cột
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
55 có liên quan đến Trứng trong bảng SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
1Nếu chúng ta loại bỏ điều kiện
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
31 và SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
58SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
4Kết quả sẽ như thế này
namepriceoptionsphoto1EggsScrambled, Sunny Side, Luededeggs_sunnyside. jpg,eggs_scrambled. jpg,eggs_boiled. jpg2KemVanilla, Dâu tây, Sôcôlaicecream_vanilla. jpg,icecream_strawberry. jpg,icecream_chocolate. jpg3RamenThường, Spicyramen_regular. jpg,ramen_spicy. jpgHãy cẩn thận khi sử dụng GROUP_CONCAT[], nếu chuỗi của bạn chứa dấu phẩy và dấu phân cách CONCAT của bạn cũng là dấu phẩy, thì việc phân tích cú pháp cột sẽ làm hỏng dữ liệu của bạn
Vì vậy, trước khi bạn sử dụng chức năng này, hãy đảm bảo rằng dấu phân cách của bạn là một ký tự không hợp lệ cho cột mà bạn đang thao tác với nó