JavaRush /Blog Java /Random-VI /Chúng tôi phân tích cơ sở dữ liệu và ngôn ngữ SQL. (Phần ...
Roman Beekeeper
Mức độ

Chúng tôi phân tích cơ sở dữ liệu và ngôn ngữ SQL. (Phần 4 - kiểm tra bài tập về nhà) - "Dự án Java từ A đến Z"

Xuất bản trong nhóm
Một bài viết trong loạt bài viết về cách tạo một dự án Java (có liên kết đến các tài liệu khác ở cuối). Mục tiêu của nó là phân tích các công nghệ chủ chốt, kết quả là viết một bot điện tín. Các bài trước và phân tích bài tập về cơ sở dữ liệu: 1 , 2 , 3 . Gửi đến tất cả những người có sự kiên nhẫn và chịu đựng, gửi đến tất cả những người đã đồng hành cùng tôi trong bài viết thứ tư - làm tốt lắm. Người ta nói, người đi có thể làm chủ được con đường. Tuần này bài viết cuối cùng về Cơ sở dữ liệu sẽ được phát hành, trong đó chúng ta sẽ nói về các loại mối quan hệsự tham gia . Nhưng trước khi giải quyết những thông tin mới, chúng ta hãy kiểm tra bài tập về nhà... Tôi thực sự cảm thấy mình như một giáo viên. Đừng giận tôi: Tôi không có trình độ sư phạm, đó là điều chắc chắn. Vì tuần trước việc kiểm tra chi tiết chiếc điều khiển từ xa chiếm phần lớn tài liệu nên tôi quyết định chia phần phân tích bài tập về nhà và đánh giá tài liệu mới thành hai phần."Dự án Java từ A đến Z": chúng tôi phân tích cơ sở dữ liệu và ngôn ngữ SQL.  Phần 4 - kiểm tra bài tập về nhà - 1

Trên thực tế, phân tích bài tập về nhà

Tôi chắc chắn rất vui vì có những người làm PD và nói về nó. Điều này thật tuyệt! Tôi chắc chắn nhất có thể rằng chỉ đọc mà không củng cố kiến ​​thức là con đường dẫn đến hư không. Vì vậy, tất cả những ai đã làm hoặc cố gắng làm - hãy tôn trọng. Hãy để tôi nhắc bạn các điều kiện của nhiệm vụ:
  1. Hiểu toán tử HAVING và viết một truy vấn mẫu cho các bảng từ ví dụ của chúng tôi. Nếu bạn cần thêm một số trường hoặc nhiều giá trị để làm rõ hơn, hãy thêm chúng. Nếu có ai muốn, hãy viết giải pháp mẫu của bạn vào phần bình luận - để tôi cũng có thể kiểm tra nó nếu có thời gian.
  2. Cài đặt MySQL Workbench để làm việc với cơ sở dữ liệu thông qua giao diện người dùng. Tôi nghĩ chúng ta đã có đủ thời gian thực hành làm việc từ bảng điều khiển. Kết nối với cơ sở dữ liệu. Nếu bạn sử dụng cái gì khác để làm việc với cơ sở dữ liệu, vui lòng bỏ qua tác vụ này. Ở đây và hơn thế nữa tôi sẽ chỉ sử dụng MySQL Workbench.
  3. Viết yêu cầu nhận bằng cách sử dụng dữ liệu của chúng tôi:
    1. quốc gia nhỏ nhất/đông dân nhất;
    2. số dân trung bình trong cả nước;
    3. số dân trung bình ở các quốc gia có tên kết thúc bằng “a”;
    4. số quốc gia có dân số trên 4 triệu người;
    5. sắp xếp các quốc gia theo số lượng dân số giảm dần;
    6. sắp xếp các quốc gia theo tên theo thứ tự tự nhiên.

Hãy nói về việc CÓ

Biết toán tử Có có thể giúp bạn vượt qua nhiều cuộc phỏng vấn có vấn đề về SQL. Vì vậy, hiểu rõ nó là vô cùng quan trọng. Tình cờ là bạn không thể sử dụng các điều kiện cho các hàm tổng hợp (SUM, MIN, MAX, AVG). Ngoài ra, HAVING được sử dụng cho các trường được nhóm lại. Nó có nghĩa là gì? Ví dụ: nếu chúng ta muốn đến các quốc gia có số dân trung bình ở các thành phố là hơn 50.000 người, chúng ta không thể làm gì nếu không sử dụng HAVING. Theo tôi hiểu, điều này được thực hiện vì việc tổng hợp xảy ra sau khi câu lệnh WHERE được thực thi và không thể thêm các giá trị tổng hợp vào đó để tính toán sau. Ngay cả khi cho đến nay ý kiến ​​của tôi không mang lại nhiều hiểu biết, bạn vẫn có thể chấp nhận điều này như một sự thật và làm theo nó. Trong lập trình, điều thường xảy ra là nếu có điều gì đó không rõ ràng tại một thời điểm, điều đó có thể có nghĩa là bộ não vẫn chưa tiếp thu được nó. Hãy ngủ với suy nghĩ này và ngày hôm sau mọi thứ sẽ trở nên rõ ràng hơn.

Cài đặt bàn làm việc MySQL

Ở đây và hơn thế nữa tôi sẽ sử dụng Workbench cho các truy vấn. Tôi sẽ chỉ cho bạn những gì bạn cần cài đặt và tạo kết nối tới cơ sở dữ liệu. Đây là sản phẩm của Oracle nên bạn chỉ cần vào trang web của họ và chọn phiên bản cũng như hệ điều hành mà bạn muốn. Để thực hiện việc này, hãy theo liên kết sau : "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 2Tại đây bạn có thể chọn chính xác hệ điều hành mà mình cần. Nhấp vào Tải xuống , nhưng thay vì tải xuống, chúng ta sẽ thấy cửa sổ này: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 3Đừng để bị lạc, chỉ cần tìm nút có tên Không, cảm ơn, chỉ cần bắt đầu tải xuống của tôi và quá trình tải xuống sẽ bắt đầu. Tại sao họ làm điều đó? Có lẽ, để có nhiều người đăng ký với họ hơn, điều này không quan trọng đối với chúng tôi. Sau khi tải xuống thành công, hãy chạy file cài đặt. Trên MacOS nó trông như thế này: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 4Chỉ cần kéo biểu tượng là xong, quá trình cài đặt đã hoàn tất. Không khó như cài đặt MySQL phải không? Hoặc chúng ta đã quen và trở nên có kinh nghiệm hơn;) Phần thứ hai của nhiệm vụ này là thiết lập kết nối tới cơ sở dữ liệu của chúng ta. Điều gì là cần thiết cho việc này? Nhấp vào dấu cộng bên cạnh MySQL Connections: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 5Trong cửa sổ hiện ra, nhập dữ liệu cần thiết:
  • Tên kết nối - tên kết nối của chúng tôi. Viết tên càng rõ ràng càng tốt để không gặp khó khăn gì trong việc nhận dạng sau này. Tôi đặt tên cho kết nối này là JRTB_DB ;
  • Tên máy chủ - sẽ được đặt là 127.0.0.1 cục bộ (còn gọi là localhost). Trong trường hợp của chúng tôi, không cần thay đổi gì vì cơ sở dữ liệu đã được cài đặt trên máy tính, nhưng nếu cơ sở dữ liệu ở một nơi khác thì máy chủ (ip của máy mà cơ sở dữ liệu đang chạy) cần phải được thay đổi cho phù hợp;
  • Tên người dùng - bạn cũng có thể chỉ định người dùng của mình nếu cần. Nếu bạn chưa thêm bất cứ điều gì vào khóa này, hãy giữ nguyên;
  • Mật khẩu - nhấp vào Lưu trữ trong chuỗi khóa và đặt chính xác mật khẩu mà bạn đã đặt cho chính mình. Tôi để mọi thứ đơn giản - root .
Để kiểm tra xem kết nối có hoạt động hay không, hãy nhấp vào Kiểm tra kết nối : "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 6Chà, nếu mọi thứ được thực hiện chính xác, sẽ không còn lâu nữa sẽ có kết quả: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 7Bây giờ chúng ta đã có một kết nối đã lưu trong cơ sở dữ liệu và chúng ta sẽ không cần tạo kết nối và điền vào tên và mật khẩu mọi lúc. Và niềm hạnh phúc này sẽ như thế này: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 8Chúng ta vào kết nối vừa tạo và nhìn thấy cửa sổ yêu cầu. Để chắc chắn rằng mọi thứ đều chính xác, hãy kiểm tra danh sách cơ sở dữ liệu, truy cập cơ sở dữ liệu của chúng tôi và lấy tất cả dữ liệu về các thành phố: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 9Và ở đây chúng tôi nhận được toàn quyền cho những gì chúng tôi cần. Phần đầu tiên chịu trách nhiệm về đoạn script mà chúng ta nhập vào. Tiếp theo, trong Lưới kết quả , chúng ta thấy kết quả của thao tác cuối cùng trong tập lệnh. Và Action Output hiển thị danh sách các thao tác và kết quả của nó. Một điều rất hữu ích, tôi muốn nói với bạn: với sự trợ giúp của nó, bạn có thể theo dõi tốc độ thực thi của một số tập lệnh nhất định. Tại sao nó lại quan trọng? Một trong những vấn đề phổ biến nhất về tốc độ thực thi tác vụ trong ứng dụng là tốc độ thực hiện truy vấn trong cơ sở dữ liệu. Tại đây bạn có thể kiểm tra chúng bằng tay một cách nhanh chóng và thuận tiện.

Chúng tôi viết các yêu cầu cần thiết

Chúng ta chỉ có 7 yêu cầu phải hoàn thành, bắt đầu thôi!

  1. Lấy quốc gia đông dân nhất. Tại đây bạn có thể đi một cách khôn ngoan và đi theo một số tuyến đường:

  • Theo bảng quốc gia

Sau đó, chúng ta chỉ cần sắp xếp truy vấn theo dân số và chỉ lấy một bản ghi. Để thực hiện việc này, bạn cần thêm toán tử LIMIT vào cuối tập lệnh và chỉ định số lượng được yêu cầu: $ SELECT * FROM country ORDER BY dân số DESC LIMIT 1;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 10

  • Theo bảng thành phố

Mọi thứ ở đây thú vị hơn, vì yêu cầu sẽ phức tạp hơn nhưng cũng thú vị hơn. Vì chúng tôi vẫn chưa biết về việc tham gia nên chúng tôi chỉ có thể lấy ID quốc gia: $ SELECT country_id, SUM(population) FROM city GROUP BY country_id ORDER BY SUM(population) DESC LIMIT 1; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 11Ở đây, chúng tôi đã làm một điều thú vị - chúng tôi thu thập tổng dân số của tất cả các thành phố đã biết ở mỗi quốc gia, sắp xếp theo tổng này và lấy phần tử đầu tiên. Chà, nó có tuyệt không? Tôi rất vui :D Sau đó, bạn ngay lập tức cảm thấy mình như một bậc thầy về truy vấn... (tất nhiên là không lâu))

  1. Lấy quốc gia nhỏ nhất. Ở đây bạn có thể đi một cách khôn ngoan và đi theo một số tuyến đường

Trong trường hợp này, mọi thứ sẽ giống hệt nhau. Sự khác biệt duy nhất là việc sắp xếp sẽ bị đảo ngược - chỉ vậy thôi. Vì vậy, tôi chỉ đơn giản viết yêu cầu:

  • Theo bảng thành phố

$ CHỌN country_id, SUM(dân số) TỪ thành phố NHÓM THEO quốc gia_id ĐẶT HÀNG THEO SUM(dân số) GIỚI HẠN 1;

  • Theo bảng quốc gia

$ CHỌN * TỪ quốc gia ĐẶT HÀNG THEO dân số GIỚI HẠN 1; Và hãy tự mình xem kết quả!

  1. Số dân trung bình trong cả nước

Ở đây một lần nữa, thông số kỹ thuật bằng cách nào đó không chính xác, như thể người quản lý đã viết nó... Tại sao tôi lại quyết định điều này? Bởi vì không rõ nên làm việc ở bảng nào. Nhưng điều này là bình thường: đơn giản là không có nhiệm vụ nào mà mọi thứ sẽ rõ ràng và dễ hiểu ngay lập tức. Vì vậy, bạn cần đọc kỹ đề bài, nếu có thắc mắc hãy hỏi ngay! Đúng vậy, một nhận xét. Có tính đến dữ liệu chúng tôi có trong cơ sở dữ liệu, chúng tôi sẽ tìm kiếm bằng dữ liệu từ các thành phố. Để thực hiện việc này, hãy viết truy vấn sau: $ SELECT country_id, AVG(population) FROM city GROUP BY country_id; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 12Ở đây rất đơn giản: chúng tôi sử dụng chức năng AVG và nhóm các bản ghi thành phố theo quốc gia.

  1. Số dân trung bình ở các quốc gia có tên kết thúc bằng “a”

Sẽ có một chút thay đổi ở đây theo yêu cầu. Chúng ta cần thêm tính năng lọc theo tên trước khi nhóm. Tôi làm bài tập về nhà của mình, giống như tất cả học sinh, trước khi xuất bản bài viết này và tôi hiểu rằng vấn đề này không thể giải quyết được nếu không có sự tham gia. Tại sao? Bởi vì ngoài ID quốc gia, chúng ta còn cần biết tên của anh ấy. Và điều này không thể thực hiện được nếu không nối hai bảng thành một bản ghi. Vì vậy, tất nhiên tôi sẽ thực hiện nhiệm vụ này, nhưng đây là jamb của tôi...))) Tôi muốn nghĩ ra một nhiệm vụ bằng cách sử dụng THÍCH trong yêu cầu...) $ SELECT ci.country_id, AVG(ci.population ) TỪ thành phố ci INNER THAM GIA quốc gia co ON ci.country_id = co.id WHERE co.name THÍCH "%a" NHÓM THEO country_id; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 13Chuyện gì đã xảy ra ở đây vậy? Đầu tiên, chúng tôi nối các bản ghi từ bảng thành phố và quốc gia bằng cách sử dụng khóa ngoại country_id, được lọc theo tên quốc gia để chúng kết thúc bằng “a” và chỉ sau đó được nhóm theo country_id.

  1. Số quốc gia có dân số trên 4 triệu người

Ở đây chúng ta chỉ cần sử dụng hàm COUNT và thêm tính năng lọc theo dân số: $ SELECT COUNT(*) from country WHERE dân số > 4000000; Kết quả chúng ta được biết có 3 quốc gia như vậy, điều này có đúng không? Đúng, chỉ có Moldova là không vượt qua được cột mốc này.

  1. Sắp xếp các quốc gia theo số lượng dân số giảm dần

Để làm điều này, chúng ta cần sử dụng toán tử ORDER BY mà chúng ta đã biết. Nhưng hãy nhớ rằng theo mặc định việc sắp xếp theo thứ tự tự nhiên. Đối với số, điều này có nghĩa là nó được sắp xếp theo thứ tự tăng dần, đối với chuỗi, điều đó có nghĩa là nó được sắp xếp bắt đầu từ các ký tự đầu tiên. Nếu chúng ta cần sắp xếp giảm dần, chúng ta cần sắp xếp nghịch đảo với sắp xếp tự nhiên: $ SELECT * FROM country ORDER BY dân số DESC;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 14

  1. Sắp xếp các quốc gia theo tên theo thứ tự tự nhiên

Đây là lúc kiến ​​thức về trật tự tự nhiên sẽ có ích. Vì đây là mặc định nên đối với chúng tôi, đây là một miếng bánh dễ dàng: $ CHỌN * TỪ quốc gia ĐẶT HÀNG THEO tên;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 15

Thay vì đầu ra

Tình cờ là quy mô của giải pháp bài tập về nhà sẽ rất lớn, vì vậy chúng tôi sẽ đưa ra một ngoại lệ: Tôi xuất bản bài viết này kèm theo séc và vào thứ Sáu, tôi sẽ xuất bản tài liệu mới có các kết nối và liên kết. Cảm ơn mọi người đã đọc. Cho đến thứ Sáu!

Danh sách tất cả các tài liệu trong loạt bài này nằm ở đầu bài viết này.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION