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 2) - "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. "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 2 - 1Chúc sức khỏe, độc giả thân mến. Hôm nay chúng ta sẽ nói một chút và viết nhiều hơn, vì tay chúng ta ghi nhớ tốt hơn mắt rất nhiều. Bạn có thể thắc mắc: tại sao chúng ta sử dụng MySQL? Ví dụ, có cùng một PostgreSQL và các giải pháp khác. Mọi thứ đều đơn giản ở đây. Trước hết, nó miễn phí. Thứ hai, nó có giao diện UI tiện lợi (chúng ta sẽ nói về nó trong một bài viết riêng). Thứ ba, cô ấy quen thuộc và dễ chịu với tôi. Ngoài tất cả những điều trên, MySQL cũng rất phổ biến.

Kiểm tra bài tập về nhà

Lần trước tôi đã giao một nhiệm vụ - cài đặt MySQL trên máy của tôi và đăng nhập vào đó. Thông qua bảng điều khiển hoặc bằng cách nào khác. Mọi việc đã xong chưa? "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 2 - 2Làm tốt cho những người đã làm điều đó! Không quan trọng bạn ở cấp độ nào trong JavaRush, điều quan trọng là có thể cài đặt và định cấu hình các công cụ cần thiết để làm việc theo hướng dẫn. Và tôi đảm bảo với bạn, sẽ có rất nhiều người trong số họ. Những người đã cố gắng nhưng không thành công cũng không sợ hãi. Điều này không phải lúc nào cũng xảy ra trong lần đầu tiên: đôi khi bạn cần nghỉ ngơi và thử lại với sức lực mới. Ai đã tự cài đặt MySQL - hãy viết dấu “+” vào phần bình luận để tôi biết rằng có người đang làm việc đó. Tôi cũng sẽ tự mình làm việc này. Vì tôi không còn máy tính xách tay Windows nên tôi sẽ hiển thị nó trên MacBook. Tôi không nghĩ quá trình cài đặt sẽ khác nhiều. Đối với những ai muốn tự cài đặt bằng hướng dẫn sử dụng tiếng Anh, vui lòng nhấp vào đây .

Cài đặt MySQL trên MacOS

Trước hết bạn hãy truy cập vào liên kết sau , chọn hệ điều hành, có thể là Windows, Ubuntu hoặc MacOS như hình bên dưới: "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 2 - 3Tải xuống và khởi chạy. Tuy nhiên, mọi thứ không suôn sẻ với tôi ngay lập tức. Hóa ra Apple không cho phép cài đặt phiên bản mới nhất: "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 2 - 4Tất nhiên, bạn có thể tắt phiên bản này, nhưng MacBook vẫn hoạt động và tôi sẽ không làm phiền các cài đặt của nó. Do đó, qua quá trình dùng thử và sai sót, tôi đã tìm thấy một phiên bản có thể cài đặt được - đây là 5.7.21 . Để tìm các phiên bản khác, hãy chuyển đến tab Lưu trữ và chọn phiên bản mong muố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 2 - 5Tiếp theo, chạy tệp đã tải xuống. Bấm tiếp theo, tiếp theo, tiếp theo, nhưng cuối cùng, hãy cẩn thận! Sẽ có tên người dùng và mật khẩu để đăng nhập vào cơ sở dữ liệu. Đối với tôi nó trông như thế này: "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 2 - 6Ở đây nói rằng sẽ có một người dùng có tên root và mật khẩu Vac/zto=.24q . Điều này hoàn tất việc cài đặt.

Đăng nhập vào dòng lệnh MySQL

Để đăng nhập, bạn cần đảm bảo rằng máy chủ MySQL đã được bật. Để thực hiện việc này, hãy đi tới Tùy chọn hệ thống , tìm biểu tượng MySQL ở đó: "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 2 - 7Chúng ta vào đó và thấy rằng trước tiên máy chủ phải được bật. Để thực hiện việc này, chỉ cần nhấp vào Khởi động máy chủ MySQL và thế là xong. Có, bạn cũng có thể chọn hộp này để máy chủ khởi động ở chế độ nền mỗi khi máy khởi động. "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 2 - 8Điều quan trọng cần lưu ý là tôi sẽ bắt đầu tất cả các yêu cầu trong terminal bằng ký hiệu $ để làm rõ. Tiếp theo, bạn cần kết nối trực tiếp với máy chủ MySQL thông qua dòng lệnh. Để thực hiện việc này, hãy mở terminal và viết: $ mysql Và có hai tùy chọn:
  1. Nếu phản hồi là “ERROR 1045 (28000): Truy cập bị từ chối đối với người dùng 'roman_beskrovnyi'@'localhost' (sử dụng mật khẩu: NO" thì điều này có nghĩa là máy chủ đã được cài đặt và đang bị thu hồi. Bạn chỉ cần truyền đúng lệnh đến nó.
  2. Nếu câu trả lời là không tìm thấy lệnh: mysql thì không sao - chỉ là không có liên kết đến máy chủ. Để làm điều này, bạn sẽ cần tạo một bí danh với biến mysql, vì vậy chúng tôi viết dòng sau:

    $ bí danh mysql=/usr/local/mysql/bin/mysql

    Điều này sẽ chỉ giúp ích cho phiên cuối cùng này. Nhưng chúng tôi không cần nữa - chúng tôi chắc chắn sẽ không làm việc thông qua thiết bị đầu cuối mọi lúc.

  3. MySQL chưa được cài đặt, đừng đánh lừa máy tính của bạn.
Tiếp theo, chúng tôi sử dụng tên và mật khẩu được cung cấp trong quá trình cài đặt và viết: $ mysql --user=root -p"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 2 - 9 Ở đó chúng tôi viết mật khẩu và chúng tôi sẽ rất vui ở dạng này: "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 2 - 10Chỉ dòng cuối cùng nói rằng chúng tôi đã đăng nhập vào MySQL máy chủ đầu cuối. Nhưng mật khẩu root này hóa ra là mật khẩu dùng một lần và cần phải đổi sang mật khẩu khác. Tất nhiên là vì lý do an ninh. Nếu chúng tôi không thay đổi điều này và cố gắng tạo cơ sở dữ liệu mới trên máy chủ, chúng tôi sẽ nhận được phản hồi sau: LỖI 1820 (HY000): Bạn phải đặt lại mật khẩu của mình bằng câu lệnh ALTER USER trước khi thực hiện câu lệnh này . "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 2 - 11Họ bị ép buộc, có thể nói như vậy. Được rồi, có khó khăn với chúng tôi không? Hãy làm cho mật khẩu đơn giản hơn (điều này chỉ dành cho công việc cục bộ; đối với công việc thực sự, tất nhiên mật khẩu phải phức tạp). Giả sử root∫ , giống như tên người dùng. Để đổi mật khẩu bạn cần nhập dòng: ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'; Và câu trả lời sẽ như thế này: "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 2 - 12Để đảm bảo mọi thứ hoạt động chính xác, chúng ta hãy thử tạo một cơ sở dữ liệu mới bằng cú pháp sau : $ CREATE DATABASE test_db; Để đảm bảo rằng cơ sở dữ liệu như vậy được tạo trên máy chủ, chúng ta viết lệnh: $ SHOW DATABASES; Và kết quả là chúng ta nhận được kết quả như sau: "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 2 - 13Chỉ vậy thôi :) Không thể nói rằng nó đơn giản và nhanh chóng. Vì vậy, bất cứ ai tự mình làm điều đó - đặc biệt tôn trọng. Đối với những người chưa thực hiện, đừng lo lắng, có hướng dẫn sử dụng cho tất cả các kiểu cài đặt: Mọi thứ được mô tả ở đó khá rõ ràng. Điều duy nhất là mọi thứ đều bằng tiếng Anh. Bây giờ chúng ta viết những dòng đầu tiên bằng SQL.

Viết những dòng đầu tiên của chúng tôi bằng SQL

Như bạn có thể nhận thấy ở trên, chúng tôi biết hai lệnh:
  1. TẠO CƠ SỞ DỮ LIỆU - tạo cơ sở dữ liệu trên máy chủ;
  2. HIỂN THỊ CƠ SỞ DỮ LIỆU - Hiển thị tất cả các cơ sở dữ liệu đã tạo và có sẵn trên máy chủ.
Tôi lưu ý rằng SQL không quan tâm đến cách chúng ta viết các lệnh của chúng - tất cả đều bằng chữ in hoa hoặc không viết hoa. Tuy nhiên, việc viết lệnh bằng chữ in hoa được coi là cách cư xử tốt. Tiếp theo, để xóa cơ sở dữ liệu, bạn cần viết lệnh DROP DATABASE data_name ; trong đó data_name là tên của cơ sở dữ liệu mà chúng ta muốn xóa. Chúng ta đã tạo một cơ sở dữ liệu thử nghiệm có tên test_db , vì vậy hãy xóa nó đi. Để làm điều này, chúng tôi viết: $ DROP DATABASE test; Điều đáng lưu ý là phản hồi Truy vấn OK, 0 hàng bị ảnh hưởng (0,02 giây) là rất quan trọng vì nó xác nhận rằng yêu cầu đã thành công. Ngoài ra, nó còn cho bạn biết truy vấn này đã thay đổi bao nhiêu hàng trong bảng và trong khoảng thời gian nào. "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 2 - 15Nói chung, từ DROP có nhiệm vụ loại bỏ một cái gì đó. Trong trường hợp này, chúng tôi đã xóa cơ sở dữ liệu. Nhưng điều này cũng có thể được sử dụng cho các mục đích khác (ví dụ: đánh rơi bàn). Và bây giờ, để tin tôi , hãy kiểm tra kết quả, hãy xem còn lại bao nhiêu cơ sở dữ liệu: $ SHOW DATABASES; "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 2 - 16Như chúng ta có thể thấy, không có cơ sở dữ liệu nào có tên test_db. CHTD :D

Tạo cơ sở dữ liệu và bảng của riêng bạn

Tạo cơ sở dữ liệu thành phố: $ TẠO CƠ SỞ DỮ LIỆU thành phố; Để làm việc trong một cơ sở dữ liệu cụ thể, bạn cần đăng nhập vào cơ sở dữ liệu đó. Để thực hiện việc này, hãy sử dụng lệnh USE data_name , sau đó tất cả các lệnh làm việc với bảng sẽ được thực hiện trong cơ sở dữ liệu này. $ SỬ DỤNG các thành phố; Như có thể thấy từ phản hồi - Cơ sở dữ liệu đã thay đổi , quá trình chuyển đổi sang cơ sở dữ liệu này đã thành công. "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 2 - 17Bước tiếp theo là tạo một bảng. Cái mà? Chà, trước tiên, hãy tạo một bảng với các quốc gia. Tại sao vậy? Bởi vì các thành phố cần có khóa ngoại cho quốc gia nơi nó tọa lạc. Và nó có thể được lấy sau khi các quốc gia này thường bắt đầu có trong cơ sở dữ liệu (sau đây - viết tắt từ cơ sở dữ liệu). Như chúng ta nhớ từ bài viết trước , trong bảng mô tả các quốc gia, chúng ta có hai trường - ID và tên, trong đó ID là mã định danh duy nhất và tên là tên của quốc gia. Vì vậy, việc tạo một cơ sở dữ liệu như vậy dễ dàng như việc bóc vỏ quả lê. Ta viết: $ CREATE TABLE country (id INT, name VARCHAR(30)); "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 2 - 18Như bạn có thể thấy, mọi thứ đều diễn ra tốt đẹp. Bằng cách tương tự với SHOW DATABASES, chúng ta có thể xem danh sách các bảng: $ SHOW TABLES; "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 2 - 19Đây rồi, bàn của chúng tôi. Bây giờ hãy tìm hiểu cách xóa bảng. Để làm điều này, chúng tôi viết: $ DROP TABLE quốc gia; "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 2 - 20Điều quan trọng cần lưu ý là một khi bảng hoặc cơ sở dữ liệu bị xóa thì không thể khôi phục lại được!

Làm việc với bảng

Hãy khôi phục bảng chúng ta đã tạo. Để làm điều này, bạn chỉ cần lặp lại những gì bạn đã làm. Để xem cấu trúc bảng, bạn cần sử dụng lệnh sau - DESC table_name : $ DESC country; "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 2 - 21Như bạn có thể thấy, tất cả thông tin về bảng đều được ghi lại ở đây. Để thêm thứ gì đó vào bảng, bạn cần sử dụng lệnh INSERT INTO table_name VALUES() . Hãy thêm ba bản ghi cho ba quốc gia: $ INSERT INTO country VALUES (1, 'Ukraine'); $ CHÈN VÀO GIÁ TRỊ quốc gia (2, 'Nga'); $ CHÈN VÀO GIÁ TRỊ quốc gia (3, 'Belorus'); "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 2 - 22Để xem những gì được lưu trữ trong cơ sở dữ liệu, chúng tôi sẽ sử dụng một yêu cầu đơn giản để lấy dữ liệu. Để làm điều này, chúng tôi muốn lấy dữ liệu của tất cả các trường từ bảng quốc gia. Hãy nhớ kỹ câu trước vì truy vấn sql sẽ như thế này: $ SELECT * FROM country; Trong đó * có nghĩa là bạn cần lấy tất cả các trường. "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 2 - 23Đây là cách chúng tôi đẹp. Nếu chúng ta chỉ muốn lấy một trường cụ thể thì đó không phải là vấn đề: thay vì dấu sao, chúng ta viết tên của các trường cần được phân tách bằng dấu phẩy. Hãy tự mình thử ;) Chúng tôi đã tạo một bảng nhưng không hiểu sao chúng tôi không có đủ thông tin về nó. Quy mô dân số chắc chắn sẽ không bị ảnh hưởng gì, phải không? Và làm thế nào để làm điều đó?
  1. Thêm một trường mới vào lược đồ bảng - dân số.
  2. Cập nhật các mục hiện có.
Đầu tiên, chúng ta sẽ sử dụng lệnh ALTER TABLE table_name ADD COLUMN . Nói chung, ALTER TABLE là một tập hợp các lệnh cho các hoạt động DDL (bạn có nhớ đây là gì không? Nó đã có trong bài viết trước). Nhân tiện, CHỌN đề cập đến hoạt động DML. Hãy viết như sau: $ ALTER TABLE quốc gia THÊM CỘT dân số INT; $ nước DESC; "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 2 - 24Như bạn có thể thấy trong hình, chúng ta đã thêm thành công một trường mới vào bảng và kiểm tra bằng lệnh thứ hai rằng trường đó nằm trong lược đồ. Bước thứ hai là cập nhật các mục trong bảng và gán giá trị. Hãy lấy số từ Wikipedia. Không phải tôi tin tưởng họ, nhưng tuy nhiên, đây là cách nhanh nhất và dễ dàng nhất. Để thực hiện việc này, hãy sử dụng lệnh DML khác. Nhưng trước tiên, hãy nói những gì chúng ta muốn làm: chúng ta muốn cập nhật bảng quốc gia, tạo trường dân số bằng 41806221 trong bản ghi có id = 1. Và đây là cấu trúc này: UPDATE table_name SET table_row1 = value WHERE table_row2 = giá trị2; Dựa vào đó, chúng tôi viết: $ UPDATE quốc gia SET dân số = 41806221 WHERE id = 1; Ở đây chúng tôi sử dụng từ khóa WHERE"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 2 - 25 lần đầu tiên . Cần thêm giá trị để lọc. Ví dụ: lần này chúng tôi đã nói rằng chỉ cần cập nhật cho trường (các trường) có id bằng một (cho đến khi chúng tôi nói với sql rằng đây là khóa chính - có thể có một vài trong số chúng). Chúng tôi cũng có thể chỉ định một điều kiện như WHERE id > 2. Nếu chúng tôi chưa chỉ định tính năng lọc thì giá trị này sẽ được ghi vào tất cả các bản ghi của bảng. Đối với Nga, Belarus và các quốc gia khác, hãy tự cập nhật ;) Bây giờ, hãy thử lấy dữ liệu từ bảng cho các trường tên và dân số, với điều kiện id lớn hơn 1. $ SELECT name, dân số FROM country WHERE id >1; Vì vậy, chúng tôi chỉ nhận được những lĩnh vực mà bản thân chúng tôi mong muốn. Sử dụng INSERT INTO, chúng ta có thể chỉ định trường nào chúng ta muốn thêm và trường nào chúng ta muốn để trống. Để làm điều này, chúng tôi viết: $ INSERT INTO country (tên, dân số) VALUES('Georgia', 1234566); Để kiểm tra xem điều gì đã xảy ra, hãy xem danh sách tất cả các trường: $ SELECT * FROM country; Nếu không có id, mục nhập sẽ không hợp lệ và tất nhiên, phần dân số đã được lấy từ phần đầu, vì vậy bạn cần phải xóa nó. Sử dụng lệnh DELETE FROM table_name : $ DELETE FROM country WHERE name = 'Georgia'; Bằng cách này, chúng ta đã học được cách xóa một trường khỏi bảng."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 2 - 26"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 2 - 27"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 2 - 28

Bài tập về nhà

Bài tập về nhà sẽ như sau:
  1. Bạn cần thêm khóa chính (KHÓA CHÍNH) từ trường ID vào lược đồ bảng quốc gia.
  2. Thêm một quốc gia khác vào bảng quốc gia - Moldova.
  3. Theo sơ đồ của bài viết trước, hãy tạo một thành phố dạng bảng, trong đó sẽ chứa tất cả các trường được mô tả. Tên trường sẽ như sau: id, name, country_id, dân số.
  4. Thêm khóa chính vào bảng thành phố.
  5. Thêm khóa ngoại vào bảng thành phố.
Nhiệm vụ rất thú vị, đối với những người am hiểu thì sẽ nhanh chóng và không phức tạp. Đối với những người chưa có, nó sẽ đóng vai trò như một sự củng cố tuyệt vời cho tài liệu từ bài viết này.

Hãy tóm tắt lại

Chúng tôi đã làm rất nhiều điều trong bài viết này. Đầu tiên, chúng tôi cài đặt và khởi động máy chủ cơ sở dữ liệu MySQL. Thứ hai, chúng tôi đã tìm hiểu toàn bộ danh sách từ khóa và truy vấn, với sự trợ giúp của chúng, giờ đây chúng tôi có thể tạo/xóa cơ sở dữ liệu và bảng. Chúng tôi đã học cách thêm dữ liệu vào bảng, cập nhật và xóa chúng. Dưới đây là tất cả các lệnh chúng tôi đã sử dụng cùng với mô tả của chúng:
  • TẠO CƠ SỞ DỮ LIỆU cơ sở dữ liệu_name; - tạo cơ sở dữ liệu mới
  • HIỂN THỊ CƠ SỞ DỮ LIỆU; - xem danh sách cơ sở dữ liệu
  • BỎ cơ sở dữ liệu cơ sở dữ liệu_name; - xóa cơ sở dữ liệu
  • SỬ DỤNG cơ sở dữ liệu_name; - làm việc trong cơ sở dữ liệu
  • TẠO BẢNG tên_bảng (id INT, ....); - tạo một bảng
  • HIỂN THỊ BẢNG; - xem danh sách các bảng
  • DESC TABLE tên_bảng; - xem sơ đồ bảng
  • THẢ BẢNG tên_bảng; - xóa bảng
  • XÁC NHẬN VÀO tên_bảng GIÁ TRỊ (); - thêm một trường vào bảng
  • CHỌN * TỪ tên_bảng Ở ĐÂU bảng_row = giá trị; — lấy các trường trong bảng theo điều kiện sau WHERE
  • CHỌN * TỪ tên_bảng; - lấy tất cả các trường trong bảng
  • THAY ĐỔI BẢNG tên bảng THÊM CỘT cột_tên COLUMN_TYPE; — thêm trường trường mới vào lược đồ bảng
  • CẬP NHẬT talbe_name SET talbe_row1 = value1 WHERE table_row2 = value2; — cập nhật các bản ghi trong bảng: đặt giá trị của một trường theo điều kiện cho trường khác
  • XÓA TỪ tên_bảng Ở ĐÂU bảng_row1 = value1; — xóa một trường (hoặc các trường) khỏi bảng theo một điều kiện nhất định.
Tôi nghĩ chúng tôi đã làm rất tốt với bạn. Tôi mời tất cả những ai thích công việc của tôi đăng ký tài khoản GitHub của tôi , nơi tôi đăng các dự án và sự phát triển thú vị đang diễn ra trong sự nghiệp của mình. Tôi mời tất cả những ai quan tâm đến việc làm việc trong nguồn mở tham gia vào các dự án (kho) của tôi. Cảm ơn tất cả các bạn đã quan tâm. Hãy theo dõi bài viết tiếp theo về cơ sở dữ liệu sắp ra mắt.

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