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. Bà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ì
Cơ 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: Ngườ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. Ở 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àng và cộ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: Vì 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
Đ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 .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: Nguyê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: Như 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;
- VARCHAR là Chuỗi của chúng tôi ;
- DATE là LocalDate của chúng tôi.
GO TO FULL VERSION