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

Chúng tôi phân tích cơ sở dữ liệu và ngôn ngữ SQL - "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 về tạo một dự án Java. 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. Phần giới thiệu là đây . Aloha, kỹ sư phần mềm. Hôm nay chúng ta đang nói về cơ sở dữ liệu và ngôn ngữ SQL. “Dự án Java từ A đến Z”: phân tích cơ sở dữ liệu và ngôn ngữ SQL - 1Bài viết này dành cho ai? Có cho tất cả những ai quan tâm. Một số có thể bắt đầu cuộc hành trình của mình với bài viết này, những người khác sẽ có thể làm mới trí nhớ của họ về những sự thật thú vị. Phần này sẽ hoàn toàn là lý thuyết. Trước khi cho bạn biết cơ sở dữ liệu và cú pháp SQL là gì, chúng ta cần hiểu và xác định lý do tại sao chúng ta sẽ nghiên cứu chúng. Ở giai đoạn này, chúng ta CHỈ nói về cơ sở dữ liệu SQL: Chúng ta sẽ không xem xét NoSQL trong loạt bài viết này.

Cơ sở dữ liệu: nó là gì

“Dự án Java từ A đến Z”: phân tích cơ sở dữ liệu và ngôn ngữ SQL - 2Cơ sở dữ liệu (sau đây gọi là DB) là nơi lưu trữ dữ liệu có cấu trúc , có thể được lấy bằng ngôn ngữ truy vấn. Cơ sở dữ liệu không chỉ có thể lưu trữ mà còn có thể xử lý và thay đổi thông tin với khối lượng lớn. Lưu ý: hãy thử thay đổi nhanh bộ giá trị trong Excel dựa trên một số tiêu chí. Về nguyên tắc, không có gì phức tạp. Không giống như trong thế giới thực không được số hóa của chúng ta. Ví dụ như đổi tên làn đường, đường phố, thành phố. Nếu mọi thứ đều là ảo và được nhập vào cơ sở dữ liệu, nó sẽ được bình thường hóa, đó sẽ là một vài chuyện vặt vãnh. Thực tế là nhiều phương tiện lưu trữ gặp khó khăn vì chúng không thể tự động thay đổi. Trong ngữ cảnh này, SQL dành cho cơ sở dữ liệu là ngôn ngữ mà cơ sở dữ liệu hiểu và phản hồi tương ứng. Giả sử, việc đổi tên thành phố sẽ không khó; đổi tên Dnepropetrovsk thành Dnipro sẽ giống như thế này:
UPDATE city SET name = “Днипро” WHERE id = 1231;
Tất cả các yêu cầu tiếp theo tới hệ thống sẽ tạo ra tên mà chúng tôi cần.

Tại sao cần có cơ sở dữ liệu?

Như tôi đã nói, sử dụng cơ sở dữ liệu bạn có thể lưu trữ dữ liệu. Nhưng dữ liệu này là gì? Để hiểu bằng một ví dụ thực tế, chúng ta có thể nói về một số ứng dụng. Ví dụ, về cùng một bot telegram. Chúng tôi muốn biết có bao nhiêu người đang sử dụng bot. Làm thế nào điều này có thể được thực hiện? Trong một ứng dụng Java thông thường, bạn có thể tạo nhiều phần tử độc đáo - một Bộ sẽ lưu trữ biệt hiệu hoặc ID trò chuyện của người dùng. Điều này sẽ làm việc? Sẽ. Chính xác cho đến khi ứng dụng Java bị dừng và ngay khi nó được khởi động lại, tập hợp các phần tử duy nhất sẽ trống. Nghĩa là, dữ liệu được lưu trữ trong ứng dụng đang chạy sẽ biến mất. Bạn có thể làm gì về nó? Bạn có thể di chuyển việc lưu trữ trạng thái hệ thống (dữ liệu) từ ứng dụng Java sang nơi khác. Bạn có thể lưu trữ tệp này ở định dạng CSV trong một tệp thông thường trên máy tính của mình. Bạn có thể làm điều đó trong một dòng trong một tập tin riêng biệt. Bạn có thể thực hiện việc này rồi ghi đè lên dữ liệu này trước khi ứng dụng Java dừng lại. Mặc dù đảm bảo rằng quá trình ghi sẽ thành công không đạt gần 100%, bởi vì bạn chỉ cần rút dây nguồn của máy chủ và quá trình ghi sẽ không xảy ra. Cách tiếp cận này có một nhược điểm đáng kể: không có chức năng thu thập, tổng hợp và tìm kiếm thông tin ở cấp độ tệp. Có, tất nhiên, bạn có thể đọc một tệp và tạo đối tượng cho nó, nhưng bạn sẽ phải bơm tất cả dữ liệu vào ứng dụng MỌI lần. Và có thể có rất nhiều trong số chúng, chẳng hạn như vài gigabyte. Điều này có thể tránh được bằng cách lưu trữ dữ liệu trong cơ sở dữ liệu. Làm sao? Thông qua các bảng và mối quan hệ giữa chúng. Đây là những gì tất cả các cơ sở dữ liệu quan hệ dựa trên.

SQL: một ngôn ngữ mà cơ sở dữ liệu có thể hiểu được

Có Hệ thống quản lý cơ sở dữ liệu (sau đây gọi là DBMS) và ngôn ngữ họ hiểu là SQL. SQL là ngôn ngữ lập trình để thao tác và quản lý cơ sở dữ liệu. Để hiểu cách thức hoạt động của tính năng này, chúng ta hãy xem hình: “Dự án Java từ A đến Z”: phân tích cơ sở dữ liệu và ngôn ngữ SQL - 3Người dùng gửi các truy vấn SQL đến DBMS, DBMS hiểu những gì cần phải làm, thực hiện và nếu yêu cầu là lấy dữ liệu thì sẽ trả về dữ liệu đó. Vì vậy, với tư cách là nhà phát triển, chúng ta cần nắm vững ngôn ngữ truy vấn SQL. Bạn có thể nghĩ, “Ồ, một ngôn ngữ khác. Với sự giúp đỡ của Chúa, ở đây tôi hầu như không hiểu được Java và bạn ngay lập tức cung cấp cho tôi một ngôn ngữ khác”. Điều này không đúng: SQL được phát minh như một ngôn ngữ đặc tả cho DBMS để những kế toán viên ở xa cơ sở dữ liệu và lập trình nói chung có thể viết bằng ngôn ngữ này. Điều này có nghĩa là việc học nó sẽ không khó đến thế. Cái chính là THỰC HÀNH-THỰC HÀNH-THỰC HÀNH. Hôm nay sẽ có lý thuyết, nhưng bài tiếp theo sẽ là về thực hành. Vì cơ sở dữ liệu quan hệ là một tập hợp các bảng mảng hai chiều và các mối quan hệ giữa chúng nên công việc sẽ hoạt động xung quanh chúng. Nếu nói về một ví dụ, chúng ta có thể hiển thị hai bảng - “Quốc gia” và “Thành phố” và cách chúng được kết nối. “Dự án Java từ A đến Z”: phân tích cơ sở dữ liệu và ngôn ngữ SQL - 4Ở giai đoạn này, điều quan trọng là chúng ta phải hiểu rằng các bản ghi trong bảng là dữ liệu về một số đối tượng trong thế giới Java. Ví dụ: hai bảng này có thể được mô tả bằng Java như sau:
public class Country {
   private Long id;
   private String name;
}

public class City {

   private Long id;
   private String name;
   private Country country;
   private Integer population;
}
Ừm, nó đẹp phải không? Cơ sở dữ liệu có thể lưu trữ bất kỳ số lượng bảng nào. Trong trường hợp của chúng tôi có hai trong số họ.

Cấu trúc bảng

Tôi nghĩ rằng mọi người đều đã gặp các bảng Excel theo cách này hay cách khác và bạn hiểu các thuật ngữ hàngcột . Trong bối cảnh cơ sở dữ liệu, chúng ta nói nhiều hơn về các bản ghi và trường: “Dự án Java từ A đến Z”: phân tích cơ sở dữ liệu và ngôn ngữ SQL - 5Vì vậy, hóa ra mỗi đối tượng của lớp City là một bản ghi trong một bảng trong cơ sở dữ liệu.

Khóa chính

“Dự án Java từ A đến Z”: phân tích cơ sở dữ liệu và ngôn ngữ SQL - 6Điều thường xảy ra là các trường trong cơ sở dữ liệu có cùng giá trị. Ví dụ: mạng xã hội, nơi có thể tìm thấy nhiều người theo tên, họ và thậm chí cả tên viết tắt. Và cơ sở dữ liệu quan hệ yêu cầu một trường duy nhất có thể được sử dụng để truy cập một bản ghi. Đây được gọi là khóa đầu tiên hoặc Khóa chính. Thông thường, trường ID(id) được sử dụng làm khóa như vậy - đây là viết tắt của mã định danh. Đây là lý do tại sao bạn cần thêm trường ID vào mỗi bảng .“Dự án Java từ A đến Z”: phân tích cơ sở dữ liệu và ngôn ngữ SQL - 7

Chìa khóa ngoài

Trong ví dụ của chúng tôi, trường như vậy nằm trong bảng Thành phố, sử dụng khóa từ Quốc gia. Và nó hoạt động như thế này: mỗi thành phố biết một mã định danh thông tin duy nhất cho quốc gia của mình và nếu chúng tôi lấy nó và tạo một truy vấn trong cơ sở dữ liệu, chúng tôi sẽ nhận được thông tin toàn diện về quốc gia đó. Như bạn có thể thấy trong hình, có một mối quan hệ giữa hai bảng: “Dự án Java từ A đến Z”: phân tích cơ sở dữ liệu và ngôn ngữ SQL - 8Nguyên tắc của khóa ngoại được trình bày ở đây.

Có những phần nào trong SQL?

Nhân tiện, trong các cuộc phỏng vấn, họ thường được hỏi các thao tác trong SQL là gì:
  • DDL (Ngôn ngữ định nghĩa dữ liệu) là một nhóm toán tử thay đổi/tạo bảng, cấu trúc của chúng, v.v. Tức là tạo bảng, xóa bảng, tạo/xóa các trường trong bảng; tạo khóa chính mới, v.v.;
  • DML (Ngôn ngữ thao tác dữ liệu) là một nhóm toán tử quản lý việc sửa đổi dữ liệu. Đây là tất cả các thao tác thay đổi dữ liệu trong cơ sở dữ liệu: thêm, lấy, thay đổi và xóa;
  • DCL (Ngôn ngữ điều khiển dữ liệu) là phương tiện xác nhận quyền của người dùng để thực hiện hành động. Hoạt động cung cấp quyền truy cập và quyền cho một người dùng cụ thể để người đó có thể thực hiện các hoạt động DDL/DML.

Có những kiểu dữ liệu nào trong SQL

Bảng có thể lưu trữ và xử lý một số loại dữ liệu nhất định. Mọi thứ ở đây sẽ tương tự như những gì chúng ta sử dụng trong Java. Hãy nói về những cái chính. Chỉ có ba trong số đó, chúng tôi sẽ thêm những cái khác nếu cần và/hoặc mong muốn: “Dự án Java từ A đến Z”: phân tích cơ sở dữ liệu và ngôn ngữ SQL - 9Như có thể thấy trong hình, đó là:
  • INT - giá trị số nguyên. Được sử dụng cho mã định danh duy nhất và cho số nguyên đơn giản;
  • VARCHARChuỗi của chúng tôi ;
  • DATE là LocalDate của chúng tôi.
Cho đến nay mọi thứ đều đơn giản, phải không? Các loại trường được chỉ định khi tạo bảng. Rõ ràng là sẽ không thể viết một giá trị thuộc loại khác vào trường này.

Toán tử SQL là gì

Toán tử là một lệnh riêng biệt thực hiện một số hành động. Các toán tử được tạo thành từ các câu, các câu này lại được tạo thành từ các từ khóa được sử dụng trong truy vấn. Hãy xem một ví dụ: “Dự án Java từ A đến Z”: phân tích cơ sở dữ liệu và ngôn ngữ SQL - 10Ở đây thú vị hơn, một truy vấn đã được tạo ở đây. họ đang làm gì ở đó? Thật đơn giản, nó nói: “Lấy ba trường (Tên, Tuổi và Ngày tạo) từ bảng Khách hàng, chỉ chọn những bản ghi có tên bằng Roman.”

Phần kết luận

Trong bài viết này chúng tôi bắt đầu nghiên cứu cơ sở dữ liệu. Chúng tôi hiểu nó là gì và tại sao chúng tôi cần nó. Tiếp theo, chúng ta đã xem xét các dấu hiệu đầu tiên của SQL mà chúng ta sẽ nói chi tiết hơn trong bài viết tiếp theo. Như thường lệ, tôi khuyên bạn nên đăng ký trên GitHub và theo dõi tài khoản của mình để theo dõi loạt bài này cũng như các dự án khác mà tôi làm việc trên đó.

Bài tập về nhà

Để tăng thêm sự thú vị cho loạt bài này trên JRTB, thỉnh thoảng sẽ có bài tập về nhà. Ví dụ, nếu không có bài tập hôm nay, bài viết tiếp theo sẽ khó hiểu hơn nhiều vì sẽ có rất nhiều bài thực hành ở đó. Do đó, nhiệm vụ là cài đặt MySQL DBMS trên máy tính của bạn và đăng nhập vào cơ sở dữ liệu thông qua bảng điều khiển hoặc thông qua các giải pháp khác. Cảm ơn tất cả các bạn đã đọc, hẹn gặp lại!

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