Mọi thứ bạn cần biết về MySQL. MySQL là một gói nguồn mở. Kết nối với máy chủ MySQL

Giáo viên và người cố vấn dạy MySQL có thể đưa ra các lựa chọn riêng của họ để sắp xếp trình tự học MySQL trong phần bình luận cho phần này sách giáo khoa. Ngoài ra, độc giả dẫn đầu có thể đưa ra nhận xét của mình về cách tổ chức sách giáo khoa. tự học MySQL. Để việc tự học MySQL có hiệu quả, cần phải có kinh nghiệm về phương pháp luận mà chương trình đào tạo MySQL cung cấp. Một lớp sơn lót sẽ giúp ích bắt đầu nhanh nhà phát triển.

Cơ sở dữ liệu: khái niệm cơ bản

Mục lục tài liệu

Trong cuộc sống, chúng ta thường gặp phải nhu cầu lưu trữ một số thông tin và do đó chúng ta thường xuyên phải xử lý cơ sở dữ liệu.

Ví dụ, chúng tôi sử dụng sổ tayđể lưu trữ số điện thoại của bạn bè và lên kế hoạch thời gian. Một cuốn danh bạ điện thoại chứa thông tin về những người sống trong cùng một thành phố. Đây là tất cả các loại cơ sở dữ liệu. Chà, vì đây là cơ sở dữ liệu nên hãy xem dữ liệu được lưu trữ trong đó như thế nào. Ví dụ: danh bạ điện thoại là một cái bàn (Bảng 10.1).

Trong bảng này, dữ liệu là số điện thoại, địa chỉ và tên đầy đủ thực tế, tức là. các dòng “Ivanov Ivan Ivanovich”, “32-43-12”, v.v., và tên các cột của bảng này, tức là. các dòng “Tên đầy đủ”, “Số điện thoại” và “Địa chỉ” chỉ rõ ý nghĩa của dữ liệu này, ngữ nghĩa của chúng.

Bảng 10.1. Ví dụ về cơ sở dữ liệu: Danh bạ điện thoại

Bây giờ hãy tưởng tượng rằng không có hai, mà là hai nghìn mục trong bảng này, bạn đang tạo thư mục này và đã xảy ra lỗi ở đâu đó (ví dụ: lỗi đánh máy trong địa chỉ). Rõ ràng, sẽ rất khó để tìm và sửa lỗi này theo cách thủ công. Bạn cần sử dụng một số loại tự động hóa. Cho việc lái xe một lượng lớn các lập trình viên dữ liệu (với sự trợ giúp của các nhà toán học) đã đưa ra hệ thống quản lý cơ sở dữ liệu (DBMS). So với cơ sở dữ liệu văn bản, DBMS điện tử có rất nhiều ưu điểm, bao gồm khả năng tìm kiếm nhanh thông tin, mối quan hệ của dữ liệu với nhau trước khi sử dụng dữ liệu này theo nhiều cách khác nhau chương trình ứng dụng ah và quyền truy cập đồng thời vào dữ liệu của nhiều người dùng.

Để chính xác, chúng tôi sẽ đưa ra định nghĩa về cơ sở dữ liệu do Glossary.ru đề xuất

Cơ sở dữ liệu là tập hợp các dữ liệu có liên quan được tổ chức theo những quy tắc nhất định nhằm cung cấp nguyên tắc chung mô tả, lưu trữ và thao tác, độc lập với các chương trình ứng dụng. Cơ sở dữ liệu là mô hình thông tin lĩnh vực chủ đề. Cơ sở dữ liệu được truy cập bằng hệ thống quản lý cơ sở dữ liệu (DBMS). DBMS cung cấp hỗ trợ cho việc tạo cơ sở dữ liệu, quản lý tập trung và tổ chức quyền truy cập vào chúng cho nhiều người dùng khác nhau.

Vì vậy, chúng tôi đã đi đến kết luận rằng nên lưu trữ dữ liệu độc lập với các chương trình để chúng được kết nối với nhau và sắp xếp theo các quy tắc nhất định. Nhưng câu hỏi về cách lưu trữ dữ liệu và tổ chức dữ liệu theo quy tắc nào vẫn còn bỏ ngỏ. Có nhiều cách (nhân tiện, chúng được gọi là mô hình biểu diễn dữ liệu hoặc mô hình lưu trữ dữ liệu). Phổ biến nhất là các mô hình dữ liệu đối tượng và quan hệ.

Qua mô hình quan hệ E. Codd được coi là người đầu tiên đề xuất sử dụng bộ máy lý thuyết tập hợp (hợp, giao, sai, tích Descartes) để xử lý dữ liệu và chỉ ra rằng mọi biểu diễn dữ liệu đều được rút gọn thành một tập hợp các bảng hai chiều có dạng đặc biệt. loại, được biết đến trong toán học như một mối quan hệ.

Do đó, cơ sở dữ liệu quan hệ là một tập hợp các bảng (giống hệt như bảng ở trên) có liên quan với nhau. Một hàng trong bảng tương ứng với một thực thể thế giới thực(trong ví dụ trên, đây là thông tin về người đó).

Ví dụ cơ sở dữ liệu quan hệ: Mysql, PostgreSql. Điều cơ bản mô hình đối tượng dựa trên khái niệm lập trình hướng đối tượng, trong đó dữ liệu được biểu diễn dưới dạng tập hợp các đối tượng và lớp được kết nối với nhau bằng các mối quan hệ liên quan và công việc với các đối tượng được thực hiện bằng cách sử dụng các đối tượng ẩn (được đóng gói)
phương pháp.

Ví dụ đối tượng DBMS: Cache, GemStone (từ Tập đoàn Servio), ONTOS (ONTOS).

TRONG Gần đây Các nhà sản xuất DBMS cố gắng kết hợp hai cách tiếp cận này và ủng hộ mô hình quan hệ đối tượng để biểu diễn dữ liệu. Ví dụ về các DBMS như vậy là IBM DB2 cho Máy chủ thông thường, Oracle8.

Vì chúng ta sẽ làm việc với Mysql nên chúng ta sẽ chỉ thảo luận về các khía cạnh khi làm việc với Cơ sở dữ liệu quan hệ dữ liệu. Còn hai khái niệm quan trọng hơn để chúng ta xem xét trong lĩnh vực này: khóa và lập chỉ mục, sau đó chúng ta có thể bắt đầu học ngôn ngữ truy vấn SQL.

1. Chìa khóa

Đầu tiên, chúng ta hãy nghĩ về câu hỏi này: cần cung cấp thông tin gì về một người để người đối thoại có thể nói chắc chắn rằng đây là người phù hợp, không thể nghi ngờ gì nữa, không có người nào giống người đó? Cung cấp họ rõ ràng là chưa đủ, vì có những cái tên giống nhau. Nếu người đối thoại là một người, thì chúng ta có thể giải thích một cách đại khái rằng chúng ta đang nói về ai, chẳng hạn như ghi nhớ hành động mà người đó đã thực hiện hoặc điều gì khác. Máy tính sẽ không hiểu được lời giải thích đó; nó cần những quy định rõ ràng về cách xác định ai là người Chúng ta đang nói về. Trong các hệ thống quản lý cơ sở dữ liệu, khái niệm khóa chính được đưa ra để giải quyết vấn đề này.

Khóa chính (PK) – đặt tối thiểu các trường xác định duy nhất một bản ghi trong bảng. Điều này có nghĩa là khóa chính trước hết là một tập hợp các trường bảng, thứ hai, mỗi tập hợp giá trị của các trường này phải xác định một bản ghi (hàng) duy nhất trong bảng và thứ ba, tập hợp các trường này phải mức tối thiểu của tất cả những người có cùng tài sản.

Vì khóa chính chỉ xác định một bản ghi duy nhất nên không có hai bản ghi bảng nào có thể có cùng một bản ghi giá trị giống nhau khóa chính.

Ví dụ: trong bảng của chúng tôi (xem ở trên), tên đầy đủ và địa chỉ giúp bạn có thể đánh dấu duy nhất một bản ghi về một người. Nói chung, không có mối liên hệ nào với vấn đề đang được giải quyết, thì kiến ​​​​thức như vậy không cho phép chúng ta chỉ ra chính xác một người, vì có những người trùng tên sống ở các thành phố khác nhau trong cùng một địa chỉ. Tất cả đều là về ranh giới mà chúng ta đặt ra cho chính mình. Nếu chúng tôi tin rằng biết tên đầy đủ, số điện thoại và địa chỉ mà không cần chỉ định thành phố là đủ cho mục đích của chúng tôi thì mọi thứ đều ổn, thì các trường tên và địa chỉ đầy đủ có thể tạo thành khóa chính. Trong mọi trường hợp, vấn đề tạo khóa chính đều thuộc về người thiết kế cơ sở dữ liệu (phát triển cấu trúc lưu trữ dữ liệu). Giải pháp cho vấn đề này có thể là lựa chọn các đặc điểm xác định một cách tự nhiên một bản ghi trong bảng (đặt cái gọi là PK logic hoặc tự nhiên) hoặc tạo một trường bổ sung được thiết kế đặc biệt để xác định duy nhất các bản ghi trong bảng (thiết lập cái gọi là thay thế, hoặc nhân tạo, PK).

Một ví dụ về khóa chính logic là số hộ chiếu trong cơ sở dữ liệu hộ chiếu của người dân hoặc tên đầy đủ và địa chỉ trong danh bạ điện thoại(bảng trên). Để đặt khóa chính thay thế, chúng ta có thể thêm trường id (mã định danh) ​​vào bảng của mình, giá trị của trường này sẽ là số nguyên duy nhất cho mỗi hàng của bảng. Việc sử dụng các khóa thay thế như vậy sẽ có ý nghĩa nếu khóa chính tự nhiên là bộ lớn các trường hoặc lựa chọn của nó là không tầm thường.

Ngoài việc xác định duy nhất một bản ghi, khóa chính còn được sử dụng để tổ chức mối quan hệ với các bảng khác.

Ví dụ: chúng ta có ba bảng: một bảng chứa thông tin về các nhân vật lịch sử (Người), một bảng chứa thông tin về các phát minh của họ (Đồ tạo tác) và một bảng chứa hình ảnh của cả người và hiện vật (Hình ảnh) (Hình 10.1).

Khóa chính trong tất cả các bảng này là trường id. Bảng Hiện vật có trường tác giả, trường này ghi lại mã định danh được gán cho tác giả của sáng chế trong bảng Người. Mỗi giá trị trong trường này là khóa ngoại đối với khóa chính của bảng Người. Ngoài ra, bảng Người và Hiện vật có trường ảnh tham chiếu đến hình ảnh trong bảng Hình ảnh. Các trường này cũng là khóa ngoại đối với khóa chính của bảng Hình ảnh và thiết lập mối quan hệ logic một-một giữa Người-Hình ảnh và Hiện vật-Hình ảnh. Nghĩa là, nếu giá trị bên ngoài ảnh chìa khóa trong bảng tính cách là 10, điều này có nghĩa là ảnh của người này có id=10 trong bảng ảnh. Như vậy, khóa ngoạiđược sử dụng để tổ chức các mối quan hệ giữa các bảng cơ sở dữ liệu (mẹ và con) và để duy trì các ràng buộc toàn vẹn tham chiếu.

2. Lập chỉ mục

Một trong những nhiệm vụ chính nảy sinh khi làm việc với cơ sở dữ liệu là nhiệm vụ tìm kiếm. Đồng thời, do cơ sở dữ liệu thường chứa rất nhiều thông tin nên các lập trình viên phải đối mặt với nhiệm vụ không chỉ là tìm kiếm mà còn phải tìm kiếm hiệu quả, I E. tìm kiếm trong thời gian tương đối ngắn và có độ chính xác vừa đủ.

Để thực hiện việc này (để tối ưu hóa hiệu suất truy vấn), một số trường trong bảng sẽ được lập chỉ mục. Việc sử dụng chỉ mục rất hữu ích để tìm nhanh các hàng có giá trị được chỉ định trong một cột. Nếu không có chỉ mục, bảng sẽ được đọc qua toàn bộ bảng, bắt đầu từ bản ghi đầu tiên cho đến khi tìm thấy các hàng khớp. Làm sao thêm bàn, chi phí chung càng cao. Nếu bảng chứa chỉ mục trên các cột được đề cập, cơ sở dữ liệu có thể nhanh chóng xác định vị trí tìm kiếm ở giữa tệp dữ liệu mà không cần phải quét qua tất cả dữ liệu. Điều này xảy ra vì cơ sở dữ liệu đặt các trường được lập chỉ mục gần hơn trong bộ nhớ để có thể tìm thấy giá trị của chúng nhanh hơn. Đối với một bảng chứa 1000 hàng, việc này sẽ nhanh hơn ít nhất 100 lần so với việc lặp qua tất cả các bản ghi một cách tuần tự. Tuy nhiên, trong trường hợp cần truy cập gần như tất cả 1000 hàng, việc đọc tuần tự sẽ nhanh hơn vì không cần tìm kiếm đĩa. Vì thế đôi khi chỉ số chỉ là một trở ngại. Ví dụ: nếu một lượng lớn dữ liệu được sao chép vào một bảng thì tốt hơn là không nên có bất kỳ chỉ mục nào. Tuy nhiên, trong một số trường hợp cần phải sử dụng nhiều chỉ mục cùng một lúc (ví dụ: để xử lý các truy vấn trên các bảng được sử dụng thường xuyên).

Nếu nói về Mysql thì có ba loại chỉ mục: PRIMARY, UNIQUE và INDEX và từ khóa (KEY) được dùng làm từ đồng nghĩa với từ chỉ mục (INDEX). Tất cả các chỉ mục được lưu trữ trong bộ nhớ dưới dạng cây B.

CHÍNH – một chỉ mục (khóa) duy nhất với hạn chế là tất cả các trường được nó lập chỉ mục không được có giá trị trống (tức là chúng KHÔNG NULL). Một bảng chỉ có thể có một chỉ mục chính nhưng nó có thể bao gồm nhiều trường.

ĐỘC ĐÁO – một khóa (chỉ mục) chỉ định các trường chỉ có thể có các giá trị duy nhất.

INDEX là một chỉ mục thông thường (như chúng tôi đã mô tả ở trên). Trong Mysql, bạn cũng có thể lập chỉ mục các trường chuỗi bằng cách số đã cho các ký tự từ đầu dòng.

3. Cơ sở dữ liệu MySQL

Hãy tiếp tục cuộc trò chuyện về Mysql DBMS. Mysql là hệ thống quan hệ quản lý cơ sở dữ liệu. Nghĩa là, dữ liệu trong cơ sở dữ liệu của nó được lưu trữ dưới dạng các bảng được liên kết với nhau một cách hợp lý, được truy cập bằng ngôn ngữ truy vấn SQL. Mysql là một hệ thống phân phối tự do, tức là bạn không cần phải trả tiền để sử dụng nó. Ngoài ra, đây là một DBMS khá nhanh, đáng tin cậy và quan trọng nhất là dễ sử dụng, khá phù hợp cho các dự án không quá toàn cầu.

Bạn có thể làm việc với Mysql không chỉ ở chế độ văn bản, mà còn về mặt đồ họa. Có một giao diện trực quan rất phổ biến (nhân tiện, được viết bằng PHP) để làm việc với DBMS này. Nó được gọi là PhpMyAdmin. Giao diện này giúp làm việc với cơ sở dữ liệu trong Mysql dễ dàng hơn nhiều.

PhpMyAdmin cho phép bạn sử dụng tất cả các ưu điểm của trình duyệt, bao gồm cả việc cuộn hình ảnh nếu nó không vừa với màn hình. Nhiều hàm SQL cơ bản để làm việc với dữ liệu trong PhpMyAdmin được giảm xuống mức trực quan giao diện rõ ràng và hành động gợi nhớ đến các liên kết sau trên Internet. Tuy nhiên, nó vẫn đáng làm việc ở chế độ văn bản.

Trước khi chuyển sang Nghiên cứu chi tiết ngôn ngữ SQL, một vài lời về Cài đặt Mysql và chuẩn bị cho công việc. Nếu bạn không có ý định quản trị máy chủ thì thông tin dưới đây sẽ chỉ hữu ích cho bạn. phát triển chung. Vì vậy, việc cài đặt Mysql rất đơn giản - tự động, nhấp vào OK một vài lần và thế là xong. Sau này, bạn có thể đi tới thư mục chứa các tệp như Mysql.exe, Mysqld.exe, v.v. (đối với chúng tôi trong Windows XP đây là c:\Mysql\bin) tập tin mới nhất khởi động máy chủ Mysql. Trên một số hệ thống, máy chủ hoạt động như một dịch vụ. Sau khi khởi động máy chủ, bạn nên khởi động máy khách Mysql bằng cách chạy chương trình Mysql.exe. Họ thậm chí sẽ không yêu cầu mật khẩu ở đây. Hơn nữa, nếu bạn gõ shell> Mysql.exe -u root hoặc shell>Mysql -u root Mysql bạn sẽ có đầy đủ quyền quản trị viên máy chủ Mysql. Nhân tiện, bạn cần thực thi các lệnh này trong thư mục chứa các tệp Mysql.exe.
Để bắt đầu, không đi sâu vào chi tiết các lệnh, chúng ta hãy khắc phục hai thiếu sót này (quản trị viên không có mật khẩu và khả năng đăng nhập của người dùng ẩn danh):

Tất cả thông tin về Người dùng Mysql lưu trữ trong bảng người dùng trong cơ sở dữ liệu đặc biệt Dữ liệu Mysql, chỉ có quản trị viên máy chủ mới có thể truy cập được. Do đó, để thay đổi bất kỳ mật khẩu nào, bạn cần thay đổi bảng này. Mật khẩu được đặt bằng chức năng PASSWORD, mã hóa dữ liệu đã nhập. Ngoài việc thay đổi mật khẩu quản trị viên, bạn cũng cần xóa tất cả người dùng chưa đăng nhập (lệnh DELETE). Lệnh Đặc quyền Flush buộc các thay đổi được thực hiện trong cơ sở hệ thống dữ liệu (Mysql).

Bây giờ, hãy tạo một cơ sở dữ liệu mà chúng tôi sẽ làm việc (chúng tôi vẫn đang làm quản trị viên máy chủ):
Mysql>tạo sổ cơ sở dữ liệu;

Như bạn có thể thấy, tất cả các lệnh trong Mysql đều kết thúc bằng dấu chấm phẩy. Nếu bạn quên đặt biển báo này thì sẽ có lời mời đặt biển báo này cho đến khi hoàn thành:

Mysql>hiển thị bảng
->
->

Hiện nay hành động cuối cùng- hãy tạo ra người dùng đơn giản, cấp cho anh ta quyền truy cập vào cơ sở dữ liệu đã tạo và bắt đầu làm việc.

Mysql> CẤP TẤT CẢ CÁC ĐẶC QUYỀN TRÊN sách.* CHO nina@localhost
ĐƯỢC XÁC ĐỊNH BỞI "123";

Lệnh GRANT cung cấp cho người dùng Nina, người đã đăng nhập vào máy chủ từ cùng một máy (từ localhost) và được xác định bằng mật khẩu “123”, một số quyền nhất định (trong trong trường hợp này mọi người) vào tất cả các bảng của cơ sở dữ liệu sách. Bây giờ chúng ta có thể đăng xuất và đăng nhập với tư cách người dùng nina bằng mật khẩu thích hợp:

shell>Mysql -u nina -p
Nhập mật khẩu: ***
Chào mừng bạn đến với màn hình Mysql!...
Mysql>

Nếu bạn định sử dụng cơ sở dữ liệu trên máy chủ của người khác thì quản trị viên của nó sẽ thực hiện tất cả các bước được mô tả ở trên cho bạn, tức là. sẽ cấu hình mọi thứ và tạo người dùng và cơ sở dữ liệu. Chương tiếp theo mô tả các lệnh ngôn ngữ SQL hữu ích để làm việc với dữ liệu được lưu trữ trong Mysql DBMS.

4.

5.

6.

7. Xây dựng giao diện bổ sung thông tin

Vì vậy, chúng tôi có một số loại bảng trong cơ sở dữ liệu. Để xây dựng giao diện để thêm thông tin vào bảng này, bạn cần hiển thị cấu trúc của nó (tức là một tập hợp các trường của nó) ở dạng HTML.

Hãy chia nhiệm vụ này thành các nhiệm vụ phụ sau:

  • thiết lập kết nối tới cơ sở dữ liệu;
  • lựa chọn cơ sở dữ liệu làm việc;
  • lấy danh sách các trường của bảng;
  • hiển thị các trường ở dạng html.
Sau này, dữ liệu được nhập vào biểu mẫu phải được ghi vào cơ sở dữ liệu.

Hãy xem xét tất cả các nhiệm vụ này theo thứ tự.

8. Thiết lập kết nối

Vì vậy, điều đầu tiên cần làm là thiết lập kết nối tới cơ sở dữ liệu.

Hãy sử dụng hàm Mysql_connect.

Cú pháp Mysql_connect

Tài nguyên Mysql_connect ([máy chủ chuỗi
[, tên người dùng chuỗi [, mật khẩu chuỗi
[, boolean new_link
[, số nguyên client_flags]]]]])

Chức năng này thiết lập kết nối với Máy chủ Mysql và trả về một con trỏ tới kết nối này hoặc FALSE nếu thất bại.

Các tham số bị thiếu được đặt thành các giá trị mặc định sau:
máy chủ = "localhost:3306"
tên người dùng = tên người dùng của chủ sở hữu quy trình máy chủ
mật khẩu = mật khẩu trống

Nếu hàm được gọi hai lần với cùng tham số thì kết nối mới sẽ không được thiết lập nhưng sẽ trả về tham chiếu đến kết nối cũ.

Để tránh điều này, hãy sử dụng tham số new_link, tham số này buộc phải mở thêm một kết nối trong mọi trường hợp.

Tham số client_flags là sự kết hợp của các hằng số sau:

MYSQL_CLIENT_COMPRESS (sử dụng giao thức nén),
MYSQL_CLIENT_IGNORE_SPACE (cho phép bạn chèn dấu cách sau tên hàm), MYSQL_CLIENT_INTERACTIVE (chờ tương tác_timeout giây - thay vì wait_timeout - cho đến khi kết nối được đóng).

Tham số new_link được giới thiệu trong PHP 4.2.0 và tham số client_flags được giới thiệu trong PHP 4.3.0.

Kết nối đến máy chủ sẽ bị đóng khi tập lệnh hoàn tất việc thực thi, trừ khi nó đã được đóng trước đó bằng hàm Mysql_close().

Vì vậy, chúng tôi thiết lập kết nối tới cơ sở dữ liệu trên Máy chủ cục bộ dành cho người dùng Nina có mật khẩu 123:

$conn = Mysql_connect (

hay là chết( "Không thể cài đặt
sự liên quan: "
. mysql_error());
tiếng vọng "Kết nối thành lập";
Mysql_close($conn);
?>

Hành động Mysql_connect tương đương với lệnh

shell>Mysql -u nina -p123

9. Chọn cơ sở dữ liệu

Sau khi thiết lập kết nối, chúng ta cần chọn cơ sở dữ liệu mà chúng ta sẽ làm việc. Dữ liệu của chúng tôi được lưu trữ trong cơ sở dữ liệu sách. Trong Mysql, việc lựa chọn cơ sở dữ liệu được thực hiện bằng lệnh use:

Mysql>sách sử dụng;


Trong PHP có hàm Mysql_select_db cho việc này.

Cú pháp Mysql_select_db:

Boolean

Mysql_select_db(chuỗi cơ sở dữ liệu_name[, tài nguyên link_identifier])

Hàm này trả về TRUE nếu việc lựa chọn cơ sở dữ liệu thành công và FALSE

  • nếu không thì.
Hãy làm cho cơ sở dữ liệu sách hoạt động:

$conn = Mysql_connect (
"localhost", "nina", "123")
hay là chết( "Không thể cài đặt
sự liên quan: "
. mysql_error());
tiếng vọng "Kết nối thành lập";
Mysql_select_db("cuốn sách");
?>

10. Lấy danh sách các trường trong bảng

Bây giờ bạn có thể bắt đầu tự giải quyết vấn đề. Làm cách nào để có được danh sách các trường của bảng? Rất đơn giản. PHP cũng có lệnh riêng cho trường hợp này - Mysql_list_fields.

10.1. Cú pháp Mysql_list_fields

tài nguyên Mysql_list_fields (
chuỗi cơ sở dữ liệu_name,
tên bảng chuỗi
[, tài nguyên link_identifier])

Hàm này trả về danh sách các trường trong bảng table_name trong cơ sở dữ liệu cơ sở dữ liệu_name. Hóa ra là chúng ta không phải chọn cơ sở dữ liệu, nhưng điều này sẽ có ích sau này. Như bạn có thể thấy, kết quả của hàm này là một biến loại tài nguyên. Đó là, đây không chính xác là những gì chúng tôi muốn nhận được. Đây là liên kết có thể được sử dụng để lấy thông tin về các trường của bảng, bao gồm tên, loại và cờ của chúng.

Hàm Mysql_field_name trả về tên của trường kết quả từ truy vấn. Hàm Mysql_field_len trả về độ dài của trường. Hàm Mysql_field_type trả về loại trường và hàm Mysql_field_flags trả về danh sách các cờ trường được phân tách bằng dấu cách. Các loại trường có thể là int, real, string, blob, v.v. Cờ có thể là not_null, Primary_key, Unique_key, blob,
auto_increment, v.v.

Cú pháp của tất cả các lệnh này đều giống nhau:

chuỗi Mysql_field_name (tài nguyên kết quả, int field_offset)
chuỗi Mysql_field_type(tài nguyên kết quả, int field_offset)
chuỗi Mysql_field_flags(tài nguyên kết quả, int field_offset)
chuỗi Mysql_field_len (tài nguyên kết quả, trường số nguyên_offset)

Ở đây, kết quả là mã định danh của kết quả truy vấn (ví dụ: một truy vấn được gửi bởi các hàm Mysql_list_fields hoặc Mysql_query (sẽ nói thêm về điều đó sau)) và field_offset là số thứ tự của trường trong kết quả.

Nói chung, những chức năng như Mysql_list_fields hoặc Mysql_query trả về là một bảng, hay chính xác hơn là một con trỏ tới bảng đó. Để nhận các giá trị cụ thể từ bảng này, bạn cần sử dụng các hàm đặc biệt để đọc bảng này theo hàng. Các chức năng như vậy bao gồm Mysql_field_name, v.v. Để lặp qua tất cả các hàng trong bảng kết quả truy vấn, bạn cần biết số lượng hàng trong bảng này. Lệnh Mysql_num_rows(tài nguyên kết quả) trả về số hàng trong tập kết quả
kết quả.

Bây giờ chúng ta hãy thử lấy danh sách các trường trong bảng Artifacts (một bộ sưu tập các vật trưng bày).

$conn = Mysql_connect (
"localhost", "nina", "123")
hay là chết( "Không thể cài đặt
sự liên quan: "
. mysql_error());
tiếng vọng "Kết nối thành lập";
Mysql_select_db("cuốn sách");
$list_f = Mysql_list_fields (
"cuốn sách" , "Hiện vật" , $conn );
$n = Mysql_num_fields($list_f);
cho($i = 0 ; $i< $n ; $i ++){



$flags_str = Mysql_field_flags (
$list_f , $i );
tiếng vang "
Tên trường: " . $name_f ;
tiếng vang "
Loại trường: " . $type ;
tiếng vang "
Độ dài trường: " . $len ;
tiếng vọng "
Chuỗi cờ trường: "
.
$flags_str . "


" ;
}
?>

Kết quả sẽ giống như thế này (tất nhiên nếu bảng chỉ có hai trường):

Tên trường: id
Loại trường: int
Độ dài trường: 11
Chuỗi cờ trường:
not_null khóa chính_auto_increment
Tên trường: tiêu đề
Loại trường: chuỗi
Độ dài trường: 255
Chuỗi cờ trường:
Hiển thị danh sách các trường ở dạng html

Bây giờ hãy sửa lại ví dụ trước một chút. Chúng tôi sẽ không chỉ hiển thị thông tin về trường mà còn hiển thị nó ở dạng phần tử dạng html phù hợp. Vì vậy, các phần tử của loại BLOB sẽ được chuyển đổi thành vùng văn bản (lưu ý rằng trường mô tả mà chúng tôi đã tạo bằng loại TEXT, được hiển thị là có loại BLOB), số và chuỗi sẽ được hiển thị dưới dạng dòng nhập văn bản và phần tử có nhãn tăng tự động sẽ hoàn toàn không được hiển thị vì giá trị của nó được đặt tự động.

Tất cả điều này có thể được giải quyết khá đơn giản, ngoại trừ việc chọn cờ auto_increment từ danh sách cờ. Để làm điều này, bạn cần sử dụng chức năng phát nổ.

Cú pháp bùng nổ:

mảng phát nổ(dấu phân cách chuỗi, chuỗi chuỗi [, giới hạn int])

Hàm này chia chuỗi thành các phần bằng dấu phân cách và trả về một mảng các chuỗi kết quả.

Trong trường hợp của chúng tôi, chúng tôi cần lấy khoảng trắng " làm dấu phân cách và chuỗi cờ trường làm chuỗi nguồn để phân tách.

Vì vậy, hãy tạo một biểu mẫu để nhập dữ liệu vào bảng Artifacts:

$conn = Mysql_connect("localhost", "nina", "123");
// thiết lập kết nối
$database = "cuốn sách";
$table_name = "Hiện vật" ;
Mysql_select_db ($ cơ sở dữ liệu); // chọn cơ sở dữ liệu cho
// công việc

// số hàng trong kết quả
// yêu cầu trước đó (tức là có tổng cộng bao nhiêu
// các trường trong bảng Artifacts)
tiếng vọng "

" ;
// tạo form nhập dữ liệu
tiếng vọng "

Thêm hàng mới vào
$bảng_name
"
;
tiếng vọng "" ;
// với mỗi trường, chúng ta lấy tên, loại, độ dài và cờ của nó
cho($i = 0 ; $i< $n ; $i ++){
$type = Mysql_field_type($list_f, $i);
$name_f = Mysql_field_name($list_f, $i);
$len = Mysql_field_len($list_f, $i);
$flags_str = Mysql_field_flags($list_f, $i);
// tạo một mảng từ một chuỗi cờ,
// trong đó mỗi phần tử mảng là một cờ trường
$flags = nổ (" ", $flags_str);
foreach ($cờ là $f )(
if ($f == "auto_increment" ) $key = $name_f ;
// nhớ tên tự động tăng
}
/* cho mỗi trường không tự động tăng trong
tùy thuộc vào loại của nó, hiển thị phần tử biểu mẫu thích hợp */
nếu khóa ($<>$name_f )(
tiếng vọng "" ;
chuyển đổi ($ loại)(
trường hợp "chuỗi":
$w = $len / 5 ;
tiếng vọng "" ;
phá vỡ;
trường hợp "int":
$w = $len / 4 ;
tiếng vọng "" ;
phá vỡ;
trường hợp "đốm":
tiếng vọng "" ;
phá vỡ;
}
}
tiếng vang "" ;
}
tiếng vang "

" . $name_f . "
kích thước = $ w >kích thước = $ w >
" ;
tiếng vọng "" ;
tiếng vang "" ;
?>

Nếu không có kết nối nào mở, hàm sẽ cố gắng kết nối với DBMS, tương tự như hàm Mysql_connect() không có tham số. Kết quả truy vấn được lưu vào bộ đệm.

Lưu ý: Chuỗi truy vấn KHÔNG được kết thúc bằng dấu chấm phẩy.

Chỉ đối với các truy vấn SELECT, SHOW, EXPLAIN, DESCRIBE, Mysql_query() trả về một con trỏ tới kết quả của truy vấn hoặc FALSE nếu truy vấn không được thực thi. Ngược lại, Mysql_query() trả về TRUE nếu truy vấn thành công và FALSE nếu truy vấn thất bại. Giá trị khác FALSE cho biết yêu cầu đã được hoàn thành thành công. Nó không cho biết số lượng hàng bị ảnh hưởng hoặc được trả lại. Rất có thể một truy vấn thành công sẽ không ảnh hưởng đến một hàng nào. Mysql_query() cũng được coi là lỗi và sẽ trả về FALSE nếu người dùng không có đủ quyền để làm việc với bảng được chỉ định trong truy vấn.

Vậy là bây giờ chúng ta đã biết cách gửi truy vấn để chèn hàng vào cơ sở dữ liệu.
$list_f = Mysql_list_fields($database, $table_name);
// lấy danh sách các trường trong cơ sở dữ liệu
$n = Mysql_num_fields($list_f); // số hàng trong kết quả
// yêu cầu trước đó
// tạo một truy vấn cho tất cả các trường trong bảng cùng một lúc
$sql = "CHÈN VÀO $table_name SET "; // bắt đầu tạo
// truy vấn, lặp qua tất cả các trường của bảng
cho($i = 0 ; $i< $n ; $i ++){
$name_f = Mysql_field_name($list_f, $i); // tính tên trường
$value = $_POST [ $name_f ]; // tính giá trị trường
$j = $i + 1 ;
$sql = $sql. $name_f . " = "$giá trị"" ; // thêm vào
// chuỗi $sql cặp tên=giá trị
nếu ($j<>$n ) $sql = $sql . "," ; // nếu trường này không
// cuối cùng trong danh sách, sau đó đặt dấu phẩy
}
// trước khi ghi nội dung nào đó vào cơ sở dữ liệu,
// bạn có thể xem loại yêu cầu nào đã được nhận
// tiếng vang $sql;
$kết quả = Mysql_query ($sql, $conn); // gửi yêu cầu
// hiển thị thông báo yêu cầu đã được hoàn thành thành công hay chưa
if (! $result ) echo " Không thể thêm ($table_name) " ;
tiếng vang khác "Thành công!
" ;
?>

Liệt kê 11.0.2. chèn.php

Như vậy, chúng ta đã giải quyết được vấn đề thêm dữ liệu bằng giao diện web. Tuy nhiên, có một sự tinh tế ở đây. Khi giải quyết vấn đề này, chúng tôi đã không tính đến thực tế là giá trị của một số trường (tác giả, ảnh) phải được lấy từ các bảng khác (Người, Hình ảnh). Vì Mysql không hoạt động với khóa ngoại nên điểm này vẫn nằm trong lương tâm của các nhà phát triển hệ thống, tức là. trên lương tâm của chúng ta. Cần phải thêm chương trình theo cách có thể nhập giá trị chính xác vào các trường đó. Nhưng chúng tôi sẽ không làm điều này, vì mục đích của bài giảng là giới thiệu với người đọc về các yếu tố của công nghệ chứ không phải để tạo ra một hệ thống làm việc. Ngoài ra, kiến ​​thức của người đọc khá đầy đủ để tự mình giải quyết vấn đề này. Chúng ta sẽ chuyển sang một nhiệm vụ khác - hiển thị dữ liệu được lưu trữ trong cơ sở dữ liệu Mysql DBMS.

12.

13.

14.

15. Văn học

http://mysql.ru/docs/man/
http://www.intuit.ru/department/database/mysql/

Andrey Klochkov

MySQL là gì

Trước khi đưa ra kết luận về việc liệu gói MySQL có đáng sử dụng làm máy chủ cơ sở dữ liệu hay không, trước tiên bạn cần tìm hiểu xem nó là gì. MySQL là một DBMS quan hệ.

MySQL hỗ trợ SQL (Ngôn ngữ truy vấn có cấu trúc) và có thể được sử dụng làm máy chủ SQL. Điều này có nghĩa là bạn có thể giao tiếp với máy chủ bằng SQL: máy khách gửi yêu cầu đến máy chủ, máy chủ xử lý yêu cầu đó và chỉ trả về cho máy khách dữ liệu đã nhận được do yêu cầu này. Do đó, khách hàng không cần tải xuống dữ liệu và thực hiện các phép tính, chẳng hạn như trong Microsoft Access.

Ngoài ra, MySQL là phần mềm nguồn mở, tức là. nó có thể được tự do nghiên cứu và sửa đổi. Gói này được phân phối theo các điều khoản của GPL (Giấy phép Công cộng Chung) và có thể tải xuống miễn phí từ Internet (http://www.mysql.com) cho mục đích sử dụng phi thương mại.

Với sự ra đời của các công nghệ Internet cho phép tạo ra các trang Web động, nhu cầu về các DBMS phù hợp nhất cho việc này về tốc độ, độ tin cậy và độ ổn định đã tăng lên rất nhiều. Và ở đây, gói MySQL hoạt động tốt, hóa ra là nhanh, đơn giản và đáng tin cậy, tuy nhiên, phải trả giá bằng việc suy giảm chức năng (hãy đặt trước ngay rằng các nhà phát triển MySQL hứa sẽ bổ sung các chức năng còn thiếu trong các phiên bản tiếp theo của chương trình).

Nhìn chung, việc thiếu một số chức năng đã bị hy sinh vì tốc độ và độ tin cậy không gây ra nhiều rắc rối cho người dùng (mặc dù đôi khi vẫn xảy ra một số khó chịu). MySQL không đáp ứng được nhiệm vụ chạy cơ sở dữ liệu công ty chính thức, nhưng MySQL xử lý khá tốt các công việc hàng ngày.

sai sót

Dưới đây là danh sách ngắn các tính năng chính mà MySQL đang thiếu.

Giao dịch- cho phép bạn kết hợp một số truy vấn SQL thành một đơn vị công việc và nếu bất kỳ truy vấn nào có trong đơn vị này không thành công, hãy thực hiện khôi phục để đưa dữ liệu về trạng thái ban đầu. Hãy giải thích bằng một ví dụ.

Bạn cần rút tiền từ một tài khoản và chuyển vào tài khoản khác. Để làm điều này, bạn cần thực hiện hai truy vấn SQL: đầu tiên là rút tiền từ một tài khoản, thứ hai là ghi có vào tài khoản khác. Nếu bạn không áp dụng giao dịch thì nếu yêu cầu thứ hai không thành công, tiền sẽ bị rút khỏi tài khoản nhưng không được ghi có vào tài khoản khác. Việc sử dụng các giao dịch cho phép bạn quay trở lại như thể tiền chưa hề được rút khỏi tài khoản.

Lưu ý rằng bằng cách sử dụng lệnh LOCK TABLES trong MySQL, bạn có thể mô phỏng một giao dịch. Lệnh này khóa bảng trong khi các truy vấn được thực thi, qua đó đảm bảo tính toàn vẹn của dữ liệu nhưng vẫn không thể khôi phục được.

Gây nên- phục vụ để tự động hóa việc kiểm soát trạng thái và hoạt động của cơ sở dữ liệu. Trình kích hoạt được lưu trữ trong cơ sở dữ liệu và kích hoạt khi một sự kiện nhất định xảy ra. Hãy lấy ví dụ tương tự với việc chuyển tiền: nếu yêu cầu thứ hai không thành công, trình kích hoạt sẽ kích hoạt, quá trình này sẽ quay trở lại hoặc gửi tin nhắn đến quản trị viên cơ sở dữ liệu.

Thủ tục lưu trữ- đây là một số lệnh SQL được lưu trữ trong cơ sở dữ liệu dưới một tên nhất định và cùng nhau thực hiện một chức năng nhất định. Bằng cách sử dụng các thủ tục lưu trữ, bạn có thể mở rộng cú pháp của SQL sao cho nó giống với ngôn ngữ lập trình thông thường (ví dụ: Oracle PL/SQL). Trong ví dụ chuyển tiền của chúng tôi, chúng tôi có thể lưu hai truy vấn SQL dưới cùng một tên, sau đó gọi thủ tục này, chuyển cho nó hai số tài khoản và số tiền làm tham số. Sau đó, cả hai truy vấn sẽ được thực hiện trong một giao dịch.

Truy vấn lồng nhau- cho phép bạn thay thế các giá trị vào các điều kiện lựa chọn một cách linh hoạt, dựa trên kết quả thực hiện một truy vấn khác. Theo tác giả, nếu bằng cách nào đó bạn có thể quản lý mà không cần tất cả những điều trên, thì việc thiếu các truy vấn lồng nhau đôi khi thực sự làm hỏng cuộc sống. Ví dụ: để tìm ra phương tiện nào vận chuyển nhiều hàng hóa hơn mức trung bình của đội xe, bạn cần thực hiện truy vấn SQL sau:

CHỌN auto FROM autopark WHERE massa > !Hơn cả cái gì? Tôi không biết mức trung bình là bao nhiêu!

Để làm điều này, cần tính giá trị trung bình trong trường massa:

CHỌN AVG (massa) TỪ autopark

Nếu các truy vấn lồng nhau được hỗ trợ thì hai truy vấn này có thể được lồng vào nhau:

SELECT auto FROM autopark WHERE massa >(SELECT AVG(massa) FROM autopark)

Nhưng trong trường hợp của MySQL, giá trị trung bình phải được tìm riêng và thay thế vào một truy vấn khác trực tiếp trong tập lệnh CGI, điều này chắc chắn ảnh hưởng đến hiệu suất.

Hướng dẫn UNION- nói một cách đơn giản, nó kết hợp đầu ra của một số truy vấn thành một, với khả năng loại bỏ các hàng trùng lặp.

Cập nhật dữ liệu theo tầng- Cho phép bạn xóa và cập nhật dữ liệu liên quan. Ví dụ: khi bạn xóa một bản ghi khách hàng khỏi cơ sở dữ liệu, tất cả các bản ghi đơn hàng cho khách hàng đó sẽ tự động bị xóa khỏi các bảng liên quan.

Thuận lợi

Bây giờ hãy liệt kê những ưu điểm của MySQL.

Hiệu suất. Nhờ cơ chế đa luồng bên trong nên MySQL rất nhanh.

Sự an toàn. Mức độ bảo mật khá cao được đảm bảo nhờ cơ sở dữ liệu mysql, được tạo trong quá trình cài đặt gói và chứa năm bảng. Bằng cách sử dụng các bảng này, bạn có thể mô tả người dùng nào từ miền nào có thể làm việc với bảng nào và anh ta có thể sử dụng những lệnh nào. Mật khẩu được lưu trữ trong cơ sở dữ liệu có thể được mã hóa bằng hàm pass() tích hợp của MySQL.

Giấy phép. Việc cấp phép MySQL từng hơi khó hiểu; Chương trình này hiện được phân phối miễn phí cho mục đích phi thương mại.

Tính mở của mã. Nhờ đó, bạn có thể tự mình thêm các chức năng cần thiết vào gói, mở rộng chức năng của nó theo yêu cầu. Nhân tiện, chính các tác giả MySQL có thể làm điều này cho bạn với một khoản phí. Để đặt mua tiện ích mở rộng MySQL từ người tạo gói, chỉ cần truy cập http://www.mysql.com và điền vào biểu mẫu thích hợp.

Độ tin cậy. Những người tạo ra MySQL đã làm rất tốt: theo như tôi biết, gói này khá ổn định và khó bị phá vỡ. Tôi không theo dõi cụ thể các báo cáo về các cuộc tấn công của hacker vào MySQL, nhưng tôi chưa bao giờ thấy (không giống như các máy chủ Web tương tự) thông báo rằng MySQL đã bị hỏng do mục đích xấu của ai đó.

Tài nguyên.Điều này có thể phụ thuộc vào nhiều yếu tố khác nhau, nhưng trong mọi trường hợp, bạn sẽ không cần siêu máy tính.

Cộng đồng. Do tính mở của mã, tính chất tự do của chương trình cũng như hoạt động ổn định và đáng tin cậy của nó, một cộng đồng gồm những người không chỉ trung thành với MySQL mà còn tham gia bằng mọi cách có thể vào việc phát triển MySQL đã được hình thành. chính gói đó và đào tạo những người ít kinh nghiệm hơn để làm việc với nó. Có rất nhiều danh sách gửi thư và hội nghị nơi bạn có thể nhận trợ giúp miễn phí bất kỳ lúc nào trong ngày.

Tính di động. Hiện tại, chương trình đã có phiên bản dành cho hầu hết các nền tảng máy tính phổ biến. Điều này có nghĩa là bạn không bị buộc phải sử dụng một hệ điều hành cụ thể. Bạn có thể chọn những gì sẽ làm việc, chẳng hạn như Linux hoặc Windows, nhưng ngay cả khi bạn thay đổi hệ điều hành, bạn sẽ không mất dữ liệu và thậm chí không cần các công cụ bổ sung để chuyển dữ liệu đó.

Tôi không biết việc MySQL không có giao diện người dùng đồ họa (GUI) là một bất lợi hay một lợi thế. Ví dụ: sẽ thuận tiện hơn cho tôi khi viết một truy vấn SQL theo cách thủ công (nhân tiện, kết quả thực thi của nó có thể được chuyển hướng đến một tệp) hơn là sử dụng trình hướng dẫn truy vấn, như trong Microsoft SQL Server.

Có một số chương trình máy khách dành cho MySQL có GUI, nhưng chúng chưa hoàn hảo và phần lớn chỉ làm chậm công việc. Nếu bạn thích GUI, tôi khuyên bạn nên tải xuống và dùng thử các chương trình này để khuyến khích người tạo cải tiến hơn nữa sản phẩm của họ. Đây là danh sách đầy đủ các chương trình có GUI:

  • Winmysqladmin - có trong bản phân phối MySQL Windows, có giao diện đồ họa tiêu chuẩn và cho phép bạn quản trị MySQL;
  • MySqlManager - được bao gồm trong bản phân phối Windows của MySQL, nó chứa các chức năng máy khách (nhưng tác giả không thể làm bất cứ điều gì nghiêm trọng với sự trợ giúp của nó);
  • Quản trị viên MySQL cho Windows là tiện ích nâng cao hơn của bên thứ ba. Cho phép bạn đăng ký và kết nối đồng thời với nhiều máy chủ MySQL, tạo, xóa và thay đổi cấu trúc cơ sở dữ liệu và bảng, tạo khóa trong bảng, viết truy vấn SQL và lưu chúng vào tệp:
  • XMySQL là máy khách MySQL dành cho các hệ thống giống X Window. Cung cấp quyền truy cập đầy đủ vào các bảng, cho phép chèn và xóa hàng loạt, có chức năng thiết kế truy vấn và quản trị gói. Chương trình có thể được tìm thấy tại http://web.wt.net/~dblhack/.

Danh sách đầy đủ hơn về tất cả các loại tiện ích dành cho MySQL (và nó rất lớn) có tại http://www.mysql.com/downloads/. Ở đó bạn sẽ tìm thấy rất nhiều điều thú vị và hữu ích: xuất dữ liệu từ MySQL sang Microsoft Access và ngược lại, trình điều khiển ODBC, v.v.

Mặc dù thiếu giao diện đồ họa nhưng gói MySQL bao gồm các công cụ quản trị khá mạnh mẽ với giao diện dòng lệnh. Dưới đây là danh sách chúng với mô tả ngắn gọn về các tiện ích.

  • MySQLAdmin là công cụ quản trị MySQL chính. Với nó, bạn có thể tạo, hủy, sửa đổi cơ sở dữ liệu và có toàn quyền kiểm soát máy chủ của mình.
  • MySQLDump là một tiện ích sao lưu dữ liệu.
  • MySQLAccess - cho phép bạn thay đổi bảng quyền truy cập và hiển thị nội dung của chúng ở dạng dễ đọc.
  • MySQLBug - trong trường hợp xảy ra lỗi trong MySQL, tiện ích này sẽ tạo một báo cáo lỗi cho các nhà phát triển chương trình, đồng thời gửi nó đến danh sách gửi thư của MySQL để các chuyên gia có thể giúp giải quyết vấn đề của bạn.
  • MySQLImport - Nhập dữ liệu từ một tệp được phân tách vào cơ sở dữ liệu.
  • MySQLShow - hiển thị cấu trúc của cơ sở dữ liệu và các bảng chứa trong đó.

Tôi muốn thu hút sự chú ý của người đọc về điều này: hiện nay có những chương trình hoạt động thông qua giao diện CGI cung cấp gần như một gói dịch vụ quản trị cơ sở dữ liệu hoàn chỉnh. Các chương trình này được đặt trên các máy chủ Web và là các tập lệnh CGI thông thường. Rất thường xuyên những tập lệnh này được đặt trong các thư mục có thể truy cập công khai. Điều nguy hiểm là với sự trợ giúp của các công cụ tìm kiếm, bất kỳ ai cũng có thể tìm thấy những chương trình như vậy theo tên tệp và sau đó làm bất cứ điều gì họ muốn với cơ sở dữ liệu của bạn. Vấn đề này có thể dễ dàng tránh được bằng cách đặt các tập lệnh này vào các thư mục được bảo vệ bằng mật khẩu trên máy chủ. Nhưng giải pháp tốt nhất là ngừng hoàn toàn việc sử dụng các chương trình như vậy trên máy chủ.

MySQL cũng có phần mở rộng ngôn ngữ SQL riêng. Các hàm này có thể được sử dụng trong truy vấn theo hai cách. Đầu tiên, dưới dạng giá trị cần truy xuất: hàm được đưa vào danh sách các trường cần truy xuất. Giá trị trả về của hàm sẽ được tính cho từng bản ghi bảng và hiển thị như thể đó là một trường bảng. Ví dụ: hãy hiển thị tiêu đề của bài viết và độ dài của nó:

CHỌN tiêu đề, LENGTH(tiêu đề) TỪ bảng

Kết quả là, chúng ta nhận được hai cột, trong đó một cột được lấy từ bảng và cột thứ hai được tính toán.

Thứ hai, hàm này có thể được sử dụng như một phần của mệnh đề WHERE - trong trường hợp này, nó sẽ thay thế một hằng số tại thời điểm truy vấn được thực thi. Hãy để tôi giải thích bằng một ví dụ: bạn cần tìm các sự kiện đã xảy ra hơn một ngày trước.

CHỌN sự kiện TỪ bảng WHERE thời gian>(Unix_TIMESTAMP()-(60*60*24))

Ở đây, hàm Unix_TIMESTAMP() tính toán thời gian hiện tại, từ đó chúng ta trừ đi một ngày.

Ứng dụng

Theo tác giả, lĩnh vực ứng dụng phù hợp nhất cho MySQL là Internet, nhờ hệ thống bảo mật tốt của gói này, hoạt động ổn định và hiệu suất cao. Nếu dự án Internet của bạn thiếu giao dịch, bạn có thể sử dụng Postgres. Postgres về nhiều mặt tương tự như MySQL, gần như tốt về hiệu năng nhưng có nhiều chức năng hơn. Tuy nhiên, theo kinh nghiệm cho thấy, khả năng của MySQL khá đủ cho các dự án Internet đơn giản.

Đối với việc sử dụng MySQL làm cơ sở dữ liệu công ty, tình hình ở đây không mấy thuận lợi. Hãy xây dựng các yêu cầu đối với máy chủ SQL của cơ sở dữ liệu công ty, dựa trên đặc thù công việc của nhân viên và đánh giá MySQL theo quan điểm của các yêu cầu này.

Khả năng làm việc với nhiều người dùng. Yêu cầu hiển nhiên này cần được bổ sung bởi thực tế là cường độ sử dụng cơ sở dữ liệu trong trường hợp này sẽ cao hơn nhiều so với trên máy chủ Web. Trên thực tế, đối với một trang web, 20 khách truy cập cùng lúc được coi là một thành công lớn, và trong trường hợp cơ sở là một công ty, ngay cả một công ty nhỏ cũng có thể tự hào về chỉ số này. Cần đặc biệt chú ý đến thực tế là cơ sở dữ liệu của công ty sử dụng giao diện người dùng phức tạp hơn các trang trên trang web; nói cách khác, nó gửi yêu cầu đến máy chủ mạnh mẽ hơn. Về mặt kỹ thuật, điều này có nghĩa là cần phải khóa ở cấp độ bản ghi đang được sửa đổi. Ở đây MySQL hoạt động không tốt: nó khóa ở cấp bảng. Đặc biệt, điều này có nghĩa là nếu ai đó nhập đơn hàng thì tất cả các truy vấn (phân tích số liệu thống kê, chọn bản ghi cho báo cáo, v.v.) sẽ phải đợi cho đến khi đơn hàng được nhập. Trong trường hợp cơ sở dữ liệu của công ty, điều này thậm chí còn phủ nhận lợi thế về tốc độ của MySQL.

Kiểm soát tính toàn vẹn dữ liệu ở cấp độ máy chủ SQL. Cơ sở dữ liệu công ty có lược đồ dữ liệu phức tạp và rất khó duy trì tính toàn vẹn dữ liệu bằng phần mềm máy khách: một mối quan hệ có thể kết nối năm đến bảy bảng và số lượng bảng có thể lên tới 30-40. Và trong trường hợp này, khả năng cập nhật và xóa các bản ghi trong các bảng liên quan, điều mà MySQL thiếu, trở nên quan trọng.

Ngoài ra, chúng tôi đã đề cập rằng cơ sở dữ liệu doanh nghiệp sử dụng giao diện phức tạp hơn và trường hợp này làm phát sinh thêm hai yêu cầu: hỗ trợ cho tất cả các câu lệnh SQL tiêu chuẩn (và các phần mở rộng hữu ích), cũng như việc sử dụng các thủ tục và trình kích hoạt được lưu trữ. Than ôi, MySQL cũng không vui ở đây.

Tóm tắt tất cả những gì đã nói, chúng ta có thể kết luận rằng đối với hầu hết các dự án Internet, khả năng của MySQL DBMS là khá đủ. Chúng cũng đủ để lưu trữ sổ địa chỉ trên mạng nội bộ của công ty.

» Tại sao nên sử dụng MySQL?

Điều hướng qua Hướng dẫn: 1.1 MySQL là gì? 1.2 Tại sao nên sử dụng MySQL? 1.3 MySQL ổn định như thế nào? 1.4 Bảng MySQL có thể lớn đến mức nào? 1.5 MySQL, MySQL AB, MySQL-MAX: nó là gì? 1.6 MySQL chạy trên hệ điều hành nào? 1.7 Phân phối MySQL 1.8 Lời nhắc dòng lệnh MySQL 2.1 Giới thiệu về MySQL 2.2 Kết nối với máy chủ MySQL 2.3 Nhập truy vấn trong MySQL 2.4 Tạo và sử dụng cơ sở dữ liệu 2.5 Tạo cơ sở dữ liệu MySQL 2.6 Tạo bảng MySQL 2.7 Tải dữ liệu vào bảng MySQL 2.8 Chọn tất cả dữ liệu từ a Bảng MySQL 2.9 Chọn các hàng cụ thể từ bảng MySQL 2.10 Chọn các cột tùy ý từ bảng MySQL 2.11 Sắp xếp các hàng từ bảng MySQL 2.12 Tính ngày trong bảng MySQL 2.13 Làm việc với các giá trị NULL trong bảng MySQL 2.14 So khớp mẫu. Các mẫu SQL. 2.15 Đếm hàng trong mẫu SQL. Hàm COUNT() 2.16 Sử dụng nhiều bảng trong một truy vấn SQL 2.17 Lấy thông tin về cơ sở dữ liệu và bảng MySQL 2.18 Ví dụ về các truy vấn phổ biến trong MySQL 2.19 Giá trị tối đa cho một cột MySQL 2.20 Hàng nào lưu trữ giá trị tối đa của một cột MySQL nhất định 2.21 Giá trị tối đa của một cột trong nhóm MySQL 2.22 V Dòng MySQL nào chứa giá trị lớn nhất cho một nhóm? 2.23 Sử dụng biến người dùng trong MySQL 2.24 Sử dụng máy khách MySQL ở chế độ hàng loạt 3.1 Hàng trong MySQL 3.2 Số trong MySQL. Làm thế nào để viết số trong MySQL? 3.3 Giá trị thập lục phân trong MySQL 3.4 Giá trị NULL trong Cơ sở dữ liệu MySQL 3.5, Bảng, Chỉ mục, Cột và Tên bí danh trong MySQL 3.6 Phân biệt chữ hoa chữ thường trong Tên MySQL 3.7 Biến người dùng trong MySQL 3.8 Nhận xét trong MySQL 3.9 Từ dành riêng cho MySQL 4.1 Sao lưu cơ sở dữ liệu MySQL 4.2 BACKUP TABLE Cú pháp trong MySQL 4.3 RESTORE TABLE Cú pháp trong MySQL 4.4 CHECK TABLE Cú pháp trong MySQL 4.5 REPAIR TABLE Cú pháp trong MySQL 4.6 OPTIMIZE TABLE Cú pháp trong MySQL 4.7 ANALYZE TABLE Cú pháp trong MySQL 4.8 FLUSH Cú pháp trong MySQL 4.9 Cú pháp KILL trong MySQL 4.10 Cú pháp SHOW MySQL 4.11 Cú pháp SHOW TABLE STATUS trong MySQL 4.12 Cú pháp SHOW STATUS trong MySQL 4.13 Cú pháp SHOW VARIABLES trong MySQL 4.14 back_log 4.15 character_set, character_sets, concurrent_inserts 4.16 connect_timeout, delay_key_write, delay_insert_limit 4.17 delay_insert_timeout, delay_queue _size, _thời gian 4.18 has_raid, has_ssl, init_file 4.19 thời gian chờ tương tác, tham gia_buffer_size, key_buffer_size 4. 20 ngôn ngữ, log_bin, long_query_time 4,21 low_case_table_names, max_allowed_packet, max_binlog_cache_size 4,22 max_connections, max_connect_errors, max_delayed_threads 4,23 max_join_size, max_sort_length, max_user_connections 4,24 max_tmp_tables, max_write_lock_count, am_sort_buffer_size 4.25 mуisam_max_extra_sоrt_file_size, myisam_max_sort_file_size, net_buffer_length 4.26 net_read_timeout, net_retry_count, net_write_timeout 4.27 open_files_limit, port, record_buffer 4.28 giao thức_version , record_rnd_buffer, query_buffer_size 4.29 safe_show_databases, Skip_networking, Skip_show_databases 4.30 socket, Sort_buffer, Skip_show_databases 4.31 thread_cache_size, tmp_table_size, Wait_timeout 4.32 SHOW PROCESSLIST cú pháp trong MySQL 4.33 Cú pháp SHOW G RANTS trong MySQL 4.34 Cú pháp SHOW ATE TABLE trong MySQL 4.35 Tệp tùy chọn my.cnf trong MySQL 5.1 Các loại cột trong MySQL 5.2 Các loại số trong MySQL 5.3 Các loại ngày và giờ trong MySQL 5.4 Vấn đề Y2K (2000) và các loại Ngày trong MySQL 5.5 Các loại DATETIME, DATE và TIMESTAMP trong MySQL 5.6 Loại THỜI GIAN trong MySQL 5.7 Loại NĂM trong MySQL 5.8 Các loại chuỗi CHAR và VARCHAR trong MySQL 5.9 Các loại chuỗi BLOB và TEXT trong MySQL 5.10 Loại chuỗi ENUM trong MySQL 5.11 Loại chuỗi SET trong MySQL 5.12 Chọn loại phù hợp cho cột MySQL 5.13 Sử dụng các loại cột từ các DBMS khác cho MySQL 5.14 Yêu cầu bộ nhớ của các cột MySQL 6.1 Các hàm sử dụng MySQL trong SELECT và WHERE 6.2 Dấu ngoặc toán tử chưa được định kiểu trong MySQL 6.3 Toán tử so sánh chưa được định kiểu trong MySQL 6.4 Các toán tử logic trong MySQL 6.5 Các hàm phân nhánh trong MySQL 6.6 Các hàm chuỗi trong MySQL

MySQL rất nhanh, đáng tin cậy và dễ sử dụng. MySQL cũng có một bộ tính năng rất thiết thực, được phát triển với sự cộng tác chặt chẽ với người dùng cuối. MySQL ban đầu được thiết kế để xử lý cơ sở dữ liệu rất lớn nhanh hơn nhiều so với các giải pháp hiện có và đã được sử dụng thành công trong các ứng dụng công nghiệp có yêu cầu cao.

Với sự phát triển không ngừng, MySQL ngày nay cung cấp một bộ tính năng phong phú và rất hữu ích. Tính đơn giản, tốc độ và độ tin cậy khiến MySQL rất phù hợp để truy cập cơ sở dữ liệu từ Internet. Hỗ trợ lượng dữ liệu thực sự khổng lồ là rất quan trọng. Có một trường hợp đã biết là sử dụng MySQL với 60.000 bảng, tổng cộng khoảng 5000000000 hàng.

MySQL là một hệ thống máy khách-máy chủ

Điều này có nghĩa là MySQL bao gồm một máy chủ SQL hỗ trợ nhiều chức năng khác nhau (trên thực tế, nó thực hiện tất cả công việc của cơ sở dữ liệu), một số chương trình máy khách khác nhau (chúng chỉ cung cấp giao diện giữa người dùng và máy chủ), các công cụ quản trị và một số giao diện lập trình. . Khách hàng giao tiếp với máy chủ bằng giao thức mạng riêng của họ.

Sơ đồ này cho phép một số lượng lớn người dùng làm việc đồng thời với máy chủ. Bao gồm, cùng xử lý cùng một dữ liệu mà không can thiệp lẫn nhau. Sự tương tác này sẽ được thảo luận chi tiết trong các chương tiếp theo.

Thông thường máy khách và máy chủ được sử dụng trên các máy tính khác nhau, nhưng có thể chấp nhận cài đặt cả hai phần của gói trên cùng một máy tính. Ngay cả trong một máy tính, mạng vẫn được sử dụng để liên lạc giữa máy khách và máy chủ. Nhân tiện, cần lưu ý rằng máy khách và máy chủ có thể chạy trên các hệ điều hành khác nhau, điều này không can thiệp vào bất cứ điều gì. MySQL đã có sẵn trên hơn chục hệ điều hành.

MySQL là một hệ thống đa luồng hoàn toàn

Điều này có nghĩa là gói có thể dễ dàng sử dụng nhiều bộ xử lý, nếu có. Nhiều hệ thống máy chủ đã được cài đặt sẵn một số bộ xử lý. Trên các hệ thống như vậy, MySQL có thể thực hiện song song một số truy vấn cơ sở dữ liệu cùng một lúc (một truy vấn cho mỗi bộ xử lý).

MySQL là một gói nguồn mở

Điều này có nghĩa là bất kỳ ai thành thạo về lập trình đều có thể dễ dàng sửa đổi gói này để phù hợp với nhu cầu của bạn. Sau khi viết một bản sửa đổi quan trọng cho một gói, chuyên gia đó có thể gửi nó đến trang web gói chính để có thể đưa vào phiên bản tiếp theo. Nhờ sơ đồ phát triển này mà MySQL phát triển rất nhanh chóng và tính đến nhu cầu của người dùng cuối, đồng thời mọi lỗi đều được loại bỏ trong thời gian ngắn nhất. Đặc tính này có lẽ là lý do đầu tiên khiến gói này trở nên phổ biến cao: với tiêu chuẩn phù hợp, nó có thể được điều chỉnh theo nhu cầu của bạn.

MySQL miễn phí trong hầu hết các trường hợp

MySQL được thiết kế cho mục đích sử dụng phi thương mại. Nếu bạn sử dụng gói để tổ chức diễn đàn, hệ thống sổ khách hoặc blog thì bạn không phải trả tiền cho bất kỳ giấy phép nào. Bạn chỉ cần tải xuống gói từ trang web của anh ấy và cài đặt nó trên máy chủ của bạn. Nhưng nếu bạn cần hỗ trợ kỹ thuật thì bạn phải trả tiền. Ghi chú: Phí được tính riêng cho hỗ trợ kỹ thuật chứ không phải cho việc sử dụng chương trình. Chính đặc tính này đã khiến DBMS này trở nên phổ biến.

Bây giờ chúng ta sẽ xem xét chi tiết hơn các thuật ngữ thực sự cần thiết sẽ cần trong phần trình bày tiếp theo, cũng như các nguyên tắc cơ bản của hoạt động cơ sở dữ liệu, để ít nhất bạn cũng có ý tưởng chung về những gì bạn đang giải quyết. Thoạt nhìn, danh sách các thuật ngữ còn dài, nhưng tất cả chúng đều sẽ cần thiết.

Vì tất cả dữ liệu được lưu trữ dưới dạng bảng nên bạn nên xác định rõ loại bảng và thuật ngữ tương ứng. Bàn bao gồm tế bào, mỗi cái có thể lưu trữ một số dữ liệu. Nếu một ô hiện không lưu trữ bất kỳ dữ liệu nào thì nó được gọi là ô trống.

Bàn gồm có các mặt đứng cột và các hàng ngang để nhóm các ô vào đó. Bàn đúng hình chữ nhật, nghĩa là tất cả các hàng có cùng số ô và tất cả các cột có cùng số hàng.

Mỗi hàng trong bảng được gọi là ghi âm. Mỗi ô trong bản ghi được đặt tên trường ghi. Vì các trường có thể lưu trữ nhiều loại dữ liệu nên để đơn giản hóa việc làm việc với chúng, khái niệm này kiểu. Mỗi ô có loại riêng và chỉ có thể lưu trữ dữ liệu thuộc loại tương ứng, điều này phải được hiểu khi làm việc với hệ thống.

Trong MySQL, một kiểu dữ liệu được gán cho một cột trong bảng và áp dụng cho tất cả các ô trong cột đó. Nghĩa là, nếu cột đầu tiên được gán một loại nhất định (ví dụ: char), điều này có nghĩa là trường đầu tiên của bất kỳ bản ghi nào trong bảng này sẽ luôn thuộc loại char và không có loại nào khác.

Rất quan trọng! Hầu hết bạn sẽ làm việc với các cột vì chúng xác định kiểu dữ liệu và cấu trúc của bảng. Các hàng trong bảng không được đánh số; chúng chỉ tồn tại để dễ dàng làm việc với dữ liệu. Trong hầu hết các trường hợp, bạn không nên quan tâm đến số lượng bản ghi trong một bảng. Bạn làm việc với dữ liệu và cấu trúc của nó được xác định bởi loại và thứ tự của các cột. Số lượng bản ghi chỉ quan trọng đối với máy chủ.

Một cơ sở dữ liệu có thể bao gồm nhiều bảng khác nhau. Số lượng chính xác của chúng chủ yếu bị giới hạn bởi bộ nhớ máy tính. Máy chủ có thể lưu trữ nhiều cơ sở dữ liệu. Cần lưu ý rằng bạn có thể kết hợp các bảng từ các cơ sở dữ liệu khác nhau trong một truy vấn.

Bàn cũng có kiểuthuộc tính. Tập hợp các khả năng có sẵn khi làm việc với bảng này, cũng như logic xử lý của máy chủ, phụ thuộc vào điều này. Điều này sẽ được thảo luận chi tiết sau.

Bây giờ hãy nói về dữ liệu trong các trường. Để làm điều gì đó với một số dữ liệu, trước tiên bạn cần tìm nó. Đây chính là mục đích sử dụng ngôn ngữ SQL. Các truy vấn được viết trên đó, trong quá trình xử lý, máy chủ sẽ quét các bảng cơ sở dữ liệu, tìm dữ liệu cần thiết dựa trên các tiêu chí được chỉ định trong yêu cầu và thực hiện điều gì đó với nó (chính xác thì điều gì phụ thuộc vào yêu cầu).

Dữ liệu được sử dụng để tìm kiếm bản ghi được gọi là chìa khóa. Nếu một bản ghi có nhiều trường thì bạn có thể tìm thấy nó bằng các khóa khác nhau, mỗi khóa cho một trường riêng. Khóa mà bản ghi có nhiều khả năng được tìm kiếm nhất được gọi là khóa chính(KHÓA CHÍNH). Khóa có thể liên quan không chỉ đến một trường mà còn liên quan đến nhiều trường cùng một lúc.

Một hoặc nhiều bản ghi có thể được tìm thấy bằng một khóa. Nếu chỉ có thể tìm thấy một bản ghi cụ thể bằng một khóa nhất định thì khóa đó được gọi là độc nhất(ĐỘC NHẤT). Một khóa phù hợp để tìm kiếm nhiều bản ghi khác nhau trong một bảng được gọi là khóa không duy nhất.

Khái niệm tiếp theo là mục lục. Hãy tưởng tượng một máy chủ cơ sở dữ liệu hoạt động như thế nào. Sau khi nhận được yêu cầu, nó bắt đầu quét các bảng để tìm dữ liệu liên quan. Quá trình quét được thực hiện tuần tự, từng dòng một. Để đảm bảo rằng tất cả dữ liệu được thu thập, máy chủ phải xem xét tất cả các hàng trong bảng (hoặc các bảng, nếu việc tìm kiếm được thực hiện trên nhiều bảng cùng một lúc).

Nhưng thật dễ dàng để nói: xem. Nếu bảng chứa mười nghìn bản ghi thì sao? Nếu là một triệu thì sao? Tất nhiên, máy chủ sẽ xem xét nó, nhưng anh ta sẽ mất bao lâu? Khá nhiều. Và bạn cần nhận được câu trả lời càng nhanh càng tốt.

Đây là nơi các chỉ số đến giải cứu. Mục lục giống như một bảng mục lục liệt kê các bản ghi có dữ liệu nhất định xuất hiện. Nó có thể được so sánh với việc tìm kiếm trên Internet, nơi các công cụ tìm kiếm lưu trữ dữ liệu về những trang chứa một số từ nhất định. Các chỉ mục trong MySQL cũng làm điều tương tự. Chỉ mục phải được tạo đặc biệt; nó không được tự xây dựng (cách tạo chính xác sẽ được thảo luận sau).

Quá trình xây dựng chỉ mục mất rất nhiều thời gian, nhưng sau khi tạo, máy chủ không còn quét toàn bộ bảng để tìm kiếm dữ liệu nữa: Nó tìm kiếm dữ liệu bằng cách sử dụng một chỉ mục, trong đó mỗi giá trị tìm thấy trong bảng sẽ được chỉ định trong những ô nào của bảng có thể tìm thấy dữ liệu cần thiết. Điều này tăng tốc đáng kể công việc (gấp hàng chục lần).

Các truy vấn khác nhau tìm kiếm dữ liệu khác nhau. Thông thường, không cần phải có một mà là nhiều chỉ mục khác nhau trên một bảng, để các loại truy vấn khác nhau hoạt động với mỗi chỉ mục riêng, được tạo tối ưu và phù hợp cụ thể cho loại truy vấn này. Ví dụ, hãy tưởng tượng một danh bạ điện thoại. Khi tìm kiếm họ của người đăng ký, chỉ mục phải cho biết bản ghi nào cần tìm họ cụ thể. Nhưng nếu việc tìm kiếm được thực hiện theo tên, thì chỉ mục sẽ không được xây dựng theo họ mà theo tên của những người đăng ký.

Hóa ra đôi khi bạn cần có nhiều chỉ mục khác nhau cho mỗi bảng. Trong MySQL bạn có thể có tối đa 32 chỉ mục trên mỗi bảng. Tối đa chiều dài chỉ số(nghĩa là độ dài của mỗi mục trong chỉ mục) lên tới 500 byte. Một chỉ mục có thể bao gồm dữ liệu từ nhiều cột cùng một lúc (trong triển khai MySQL hiện tại, số cột tối đa trong mỗi chỉ mục là 15).

Vì các chỉ mục được xây dựng trên dữ liệu trong các trường của bản ghi và mỗi trường có thể được coi là một khóa nên người ta nói rằng chỉ mục được xây dựng bằng các khóa. Một chỉ mục được xây dựng trên các khóa chính sẽ được sử dụng trong các tìm kiếm có xác suất cao nhất và được gọi là chỉ số chính.

Tất cả các cột có giá trị mặc định. Điều này có nghĩa là nếu một trường không được cung cấp một giá trị rõ ràng, nó sẽ tự động được đặt thành một số giá trị mặc định cụ thể cho từng loại cột. Giá trị mặc định có thể được thay đổi khi tạo cột.

Mỗi cột trong bảng có tên duy nhất. Bảng và cơ sở dữ liệu cũng có tên. Trong một số trường hợp sẽ được thảo luận dưới đây, một cột phải có nhiều tên. Trong trường hợp này, chỉ cái được gán cho cột khi nó được tạo mới được coi là tên; phần còn lại được gọi là bí danh. Ngoài ra còn có bí danh cho tên bảng.

Các cột không nhất thiết phải được tạo bằng bảng. Bảng có thể được thay đổi khi cần bằng cách thêm hoặc xóa các cột hoặc thay đổi loại của chúng. Trong câu lệnh SQL, bạn có thể truy cập các bảng từ các cơ sở dữ liệu khác nhau bằng cú pháp Cơ sở dữ liệu_name.Table_name. Tên dài này cho phép bạn xác định duy nhất bảng và được gọi tên bảng đủ điều kiện.

Bạn cũng có thể tham khảo một cột trong bất kỳ bảng nào bằng cách chỉ định cú pháp Cơ sở dữ liệu_name.Table_name.Column_name. Thiết kế này cho phép bạn nhận dạng duy nhất cột và được gọi là hoàn thành tên cột dọc.

Ngoài tên và loại, các cột cũng có thể có các tùy chọn thuộc tính, xác định chính xác cách máy chủ xử lý một cột cụ thể, thay đổi logic về cách máy chủ hoạt động với cột này. Việc gán một thuộc tính cho một cột tương đương với việc gán thuộc tính đó cho trường tương ứng của cột trong mỗi bản ghi trong bảng. Lưu ý rằng các cột cùng loại nhưng có thuộc tính khác nhau sẽ được xử lý theo những cách khác nhau.

Khi làm việc với DBMS, một số cơ sở dữ liệu luôn được xem xét tích cực hoặc hiện hành. Có một điều chắc chắn bảng hoạt động. Với bảng đang hoạt động trong cơ sở dữ liệu hiện tại, tất cả các hành động sẽ được thực hiện, trừ khi bạn có chỉ định rõ ràng khác.

Khi truy cập một cột trong bảng đang hoạt động, bạn chỉ có thể chỉ định tên cột thay vì tên đầy đủ của nó (biểu thị cơ sở dữ liệu và bảng). Nó sẽ tự động được bổ sung tên của bảng đang hoạt động của cơ sở dữ liệu hiện tại, giúp tăng tốc đáng kể quá trình nhập liệu. Ngoài ra, nếu bạn đang truy cập một cột từ một bảng khác trong cơ sở dữ liệu hiện tại, bạn có thể chỉ định tên của nó là Tên_bảng.Column_name, bỏ đi một phần Tên cơ sở dữ liệu. nó sẽ được đặt vào cơ sở dữ liệu hiện tại.

Trong phần thảo luận sau đây, bạn sẽ gặp khái niệm về dòng chảy. Chảy trong này thể hiện kết nối của bạn với máy chủ cơ sở dữ liệu. Tất cả các lệnh bạn nhập chỉ áp dụng cho chủ đề này. Xin lưu ý rằng nếu bạn đã tạo một số kết nối khác nhau tới cùng một cơ sở dữ liệu (ví dụ: bằng cách mở một số bản sao của ứng dụng khách), thì mỗi kết nối sẽ là một luồng hoàn toàn độc lập, không phụ thuộc vào các luồng khác. Đây là điểm khác biệt chính giữa một người dùng và một luồng: một người dùng có thể được đại diện bởi một số luồng độc lập. Sau này chúng tôi sẽ chỉ ra những cạm bẫy mà điều này có thể dẫn tới.

Ký tự đại diện hoặc ký tự đại diệnđại diện cho các ký hiệu có thể tương ứng với một số ký hiệu nhất định khác. Ví dụ: khi làm việc trong Windows, rất có thể bạn đã gặp phải ký tự dấu hoa thị (*), biểu thị bất kỳ chuỗi ký tự tùy ý nào. Phương pháp này được sử dụng rộng rãi khi làm việc với các nhóm tệp. Đây là ký tự đại diện.

Biểu thức chính quyđại diện cho một số chuỗi ký tự nhất định, một số hoặc tất cả trong số đó là ký tự đại diện. Ví dụ: khi làm việc trong Windows, rất có thể bạn đã gặp các ký hiệu như *.doc (khớp với tất cả các tệp có phần mở rộng doc trong thư mục hiện tại) hoặc *.* (khớp với tất cả các tệp trong thư mục). Đây là những biểu thức chính quy, chỉ có điều chúng được gọi khác nhau trong Windows. Như bạn có thể thấy, không có gì phức tạp về chúng. Trong MySQL, bạn sẽ gặp những biểu thức như vậy nhiều lần (mặc dù phức tạp hơn một chút). Với sự giúp đỡ của họ, các tiêu chí tìm kiếm thông tin đã được đặt ra.

Bây giờ chúng ta hãy nghĩ về vấn đề phức tạp này: một máy chủ cho phép nhiều người dùng làm việc đồng thời trên cùng một cơ sở dữ liệu (thậm chí trên cùng một bảng). Nhưng làm thế nào để đảm bảo tính toàn vẹn dữ liệu? Nếu một người dùng ghi một số dữ liệu và một người khác cùng lúc cố gắng thay đổi dữ liệu cụ thể này, họ sẽ phá hủy toàn bộ cơ sở dữ liệu. Làm thế nào để tránh điều này?

Có hai cách để thiết lập phân vùng và MySQL sử dụng cả hai, mặc dù trên các loại bảng khác nhau. Điều thứ nhất là mô hình giao dịch, thứ hai sửa đổi nguyên tử.

Giao dịchđề cập đến một hoạt động cơ sở dữ liệu nhất định không thể chia thành nhiều hoạt động riêng biệt. Mô tả đầy đủ về hai khái niệm được liệt kê ở trên rất phức tạp và dường như không cần thiết trong cuốn sách này, vì vậy chúng tôi sẽ chỉ xem xét chúng từ quan điểm của người dùng.

Vậy làm việc với một giao dịch trông như thế nào? Máy chủ trình bày theo cách này: đầu tiên, nó xác định chính xác những gì sẽ được thay đổi trong bảng, sau đó đánh dấu rằng các ô này đang thay đổi theo cách nào đó, sau đó các thay đổi thực sự được thực hiện và sau đó đánh dấu rằng sửa đổi đã được hoàn thành. Đồng thời, trong khi các thay đổi đang được thực hiện, bảng sẽ trả về dữ liệu cũ hoặc không trả về gì cả, nhưng trong mọi trường hợp, nó không cho phép hai người dùng đồng thời thực hiện các thay đổi đối với cùng một dữ liệu. Đầu tiên, người đầu tiên hoàn thành việc sửa đổi, sau đó người tiếp theo sẽ tiếp quản.

Sự khác biệt giữa giao dịch và sửa đổi nguyên tử, gạt tất cả lý thuyết khoa học sang một bên, đối với người dùng cuối là trong trường hợp mô hình giao dịch, người dùng có thể, sau khi thực hiện truy vấn thay đổi một số dữ liệu trong bảng, quyết định chính xác cách mình muốn để hoàn tất giao dịch: liệu lưu thay đổi (cam kết) hoặc Từ chối chúng (gọi tua lại, tua lại), từ đó trả bảng về trạng thái trước khi gọi truy vấn. Cần lưu ý rằng có một chế độ tự động lưu tất cả các thay đổi (AUTO_COMMIT). Trong mô hình nguyên tử, các thay đổi không thể hoàn tác được: chúng được nhập vào bảng ngay lập tức. Giao dịch hiện đang được thực hiện được gọi là đang hoạt động.

MySQL sử dụng định dạng bảng riêng theo mặc định: MyISAM. Trước đây, định dạng ISAM độc quyền cũng đã được sử dụng nhưng hiện tại nó đã bị tuyên bố là lỗi thời và chỉ được hỗ trợ để tương thích với người dùng cũ. Nếu bạn có các bảng ở định dạng này, chúng tôi khuyên bạn nên chuyển đổi chúng sang định dạng MyISAM mới. Nó hoạt động đáng tin cậy hơn và nhanh hơn.

Vì chúng ta đang nói về các định dạng bảng được hỗ trợ, nên chúng ta cần làm rõ ngay rằng MySQL hỗ trợ một số định dạng khác nhau. Một số hoạt động trên cơ sở giao dịch, một số hoạt động trên cơ sở sửa đổi nguyên tử, để người dùng cuối luôn có quyền lựa chọn sử dụng cái gì. Cần lưu ý rằng việc triển khai mô hình giao dịch phức tạp hơn nhiều so với mô hình nguyên tử và do đó việc hỗ trợ các giao dịch trong MySQL xuất hiện muộn hơn nhiều. Các định dạng MySQL (MyISAM và ISAM) sử dụng các sửa đổi nguyên tử, nhưng chúng triển khai chúng tốt đến mức về độ tin cậy, chúng không thua kém gì mô hình truy cập giao dịch. Bảng 1.1. liệt kê các loại bảng được MySQL hỗ trợ kèm theo mô tả ngắn gọn về chúng.

Bảng 1.1. Mô tả ngắn gọn về các loại bảng được MySQL hỗ trợ.

Xin lưu ý rằng không phải tất cả các phiên bản máy chủ đều hỗ trợ tất cả các bảng được liệt kê! Các loại ISAM và MyISAM luôn được hỗ trợ nhưng có các tùy chọn cho những loại còn lại. Vì vậy, hãy xem http://www.mysql.com để biết chính xác những gì bạn cần.

Kết xuất là một đại diện trung gian của cơ sở dữ liệu. Hơn nữa, nó thường được chỉ rõ ý nghĩa của việc biểu diễn dữ liệu. Ví dụ, kết xuất vào tập tin văn bản có nghĩa là toàn bộ cơ sở dữ liệu được chuyển đổi và lưu dưới dạng tệp văn bản.

Tại sao điều này là cần thiết? Các bãi chứa rất thuận tiện cho việc sao lưu cũng như truyền dữ liệu giữa các máy chủ khác nhau. Có thể cần phải áp dụng kết xuất trong cùng một máy chủ.

Bảng 1.1 cho thấy các loại bảng khác nhau. Mỗi người trong số họ có định dạng lưu trữ dữ liệu nội bộ riêng. Cách dễ nhất để chuyển đổi cái này sang cái khác là chuyển sang bãi rác.

MySQL là một trong những cơ sở dữ liệu dễ quản lý nhất trên tất cả các nền tảng. Ngoài ra, cơ sở dữ liệu này không yêu cầu tài nguyên nên có thể được sử dụng ngay cả trên máy tính cá nhân có dung lượng RAM và ổ cứng nhỏ. Vì điều này, các nhà phát triển PHP từ lâu đã sử dụng MySQL để tạo ra một môi trường phát triển web cục bộ hoàn chỉnh trên tất cả các loại máy tính khách, thậm chí cả máy tính xách tay.

Bất kỳ nhà phát triển nào làm việc trong môi trường PHP đều có thể quản lý cơ sở dữ liệu MySQL một cách độc lập, không giống như một số cơ sở dữ liệu khác. Để đơn giản hóa hơn nữa nhiệm vụ quản trị, bạn có thể tận dụng nhiều công cụ không chỉ được cung cấp trong cơ sở dữ liệu MySQL mà còn có thể được lấy từ các nhà phát triển bên thứ ba.

Các khái niệm chính mà bạn nên làm quen ở giai đoạn này là:

  • cơ sở dữ liệu- vùng chứa toàn bộ bộ sưu tập dữ liệu MySQL;
  • bàn- một thùng chứa được lồng trong cơ sở dữ liệu nơi dữ liệu được lưu trữ;
  • đường kẻ- một bản ghi riêng có thể chứa nhiều trường;
  • cột- tên trường bên trong dòng.

Cần lưu ý rằng tôi không cố gắng tái tạo thuật ngữ chính xác được sử dụng trong tài liệu giáo dục trên cơ sở dữ liệu quan hệ mà chỉ cung cấp các định nghĩa đơn giản, phổ biến để giúp bạn nhanh chóng hiểu các khái niệm cơ bản và bắt đầu làm việc với cơ sở dữ liệu.

Truy cập MySQL từ dòng lệnh

Có ba cách chính để làm việc với MySQL: sử dụng dòng lệnh, sử dụng giao diện web như phpMyAdmin và sử dụng ngôn ngữ lập trình như PHP. Phương pháp thứ ba sẽ được thảo luận trong các bài viết tiếp theo, nhưng bây giờ chúng ta hãy xem xét hai phương pháp đầu tiên.

Nếu bạn đã cài đặt máy chủ OpenServer WAMP theo hướng dẫn trong bài viết thì bạn có thể truy cập chương trình thực thi MySQL từ thư mục sau:

Khóa học MySQL từ đầu.

Thay vì MySQL-5.7-x64, bạn cần thay thế phiên bản được chỉ định trong cài đặt OpenServer trong tab "Mô-đun".

Bạn cần mở chương trình Command Promt và vào thư mục này. Việc này được thực hiện bằng lệnh cd PATH_TO_NEEDED_FOLDER:

Mã chỉ khả dụng sau khi mua khóa học MySQL từ đầu.

Sau này, bạn cần chạy chương trình mysql.exe trong thư mục này, truyền tham số đặc biệt của nó. Để thực hiện việc này, bây giờ bạn cần chạy lệnh trên dòng lệnh:

Mã chỉ khả dụng sau khi mua khóa học MySQL từ đầu.

Kết quả là máy khách MySQL sẽ khởi động. Nó được kết nối với máy chủ MySQL, được khởi chạy khi OpenServer khởi động.

Nếu điều này không dẫn đến kết quả mong muốn và bạn nhận được thông báo lỗi về việc kết nối với máy chủ MySQL "Không thể kết nối với máy chủ MySQL trên "localhost"", hãy đảm bảo rằng OpenServer đang chạy và MySQL được chỉ định trong các mô-đun.

Tham số -u là viết tắt của người dùng. Nghĩa là, đây là hộp kiểm để chỉ định người dùng mà bạn cần kết nối với máy chủ. root là người dùng quan trọng nhất trong MySQL. Nó được tạo khi máy chủ được cài đặt và theo mặc định nó không có mật khẩu.

Nhưng hãy quay trở lại thiết bị đầu cuối của chúng tôi. Thông qua ứng dụng khách bảng điều khiển này, chúng tôi có thể gửi nhiều lệnh khác nhau đến máy chủ. Hãy chạy lệnh liệt kê tất cả các cơ sở dữ liệu được tạo trên máy chủ này.

Mã chỉ khả dụng sau khi mua khóa học MySQL từ đầu.

Đáp lại, chúng ta sẽ nhận được một danh sách cơ sở dữ liệu được thiết kế đẹp mắt. Bạn sẽ có ít chúng hơn tôi vì tôi đã thêm chúng rồi.

Làm việc với MySQL thông qua phpMyAdmin

Để quản lý cơ sở dữ liệu và bảng, việc sử dụng chương trình phpMyAdmin sẽ dễ dàng và nhanh hơn nhiều. Trước khi nhập dòng sau vào thanh địa chỉ của trình duyệt, bạn cần đảm bảo rằng chương trình OpenServer đã chạy và do đó, cơ sở dữ liệu MySQL đã sẵn sàng để sử dụng:

Ở đây chúng ta sẽ được chào đón bởi một cửa sổ đẹp mắt để đăng nhập vào hệ thống.

Giống như trong trường hợp ứng dụng bảng điều khiển, chỉ định người dùng root và để trống mật khẩu. Nhấp vào "đăng nhập".

Sau đó, bạn sẽ được đưa đến bảng điều khiển cơ sở dữ liệu với giao diện khá thân thiện. Ở bên trái, bạn sẽ thấy danh sách cơ sở dữ liệu giống như bạn đã nhận được trong phiên bản bảng điều khiển. Bạn có thể chọc chúng và xem những gì bên trong.

Bây giờ, hãy nhấp vào tab SQL và chuyển đến cửa sổ nơi bạn có thể trực tiếp viết truy vấn vào MySQL DBMS, giống như trong bảng điều khiển:

Trong cửa sổ mở ra, nhập cùng một truy vấn:

Mã chỉ khả dụng sau khi mua khóa học MySQL từ đầu.

Chúng tôi nhấn nút “chuyển tiếp” và thấy kết quả tương tự như trong trường hợp ứng dụng bảng điều khiển.

Các khái niệm SQL cơ bản

Theo Andrew Taylor, người đã phát triển ngôn ngữ SQL, tên của ngôn ngữ này không phải là viết tắt của Ngôn ngữ truy vấn có cấu trúc (hoặc bất kỳ thứ gì tương tự), mặc dù nhiều người tin rằng đúng như vậy. SQL là cơ sở cho một phương pháp lưu trữ dữ liệu chặt chẽ và tổng quát hơn so với tiêu chuẩn tổ chức cơ sở dữ liệu kiểu DBM trước đây, vốn dựa trên việc sử dụng các tệp phẳng.

Ngôn ngữ SQL được xác định theo tiêu chuẩn ANSI(Viện Tiêu chuẩn Quốc gia Hoa Kỳ) và ECMA(Hiệp hội các nhà sản xuất máy tính Châu Âu); cả hai tổ chức tiêu chuẩn hóa này đều được quốc tế công nhận. Nhưng cần lưu ý rằng trong các khuyến nghị chung về tiêu chuẩn SQL, một mặt có những khác biệt đáng chú ý liên quan đến các sản phẩm phần mềm của các công ty thương mại và các tổ chức liên quan. mặt khác, trong việc phát triển cơ sở dữ liệu bằng nguồn mở, chẳng hạn, trong vài năm qua đã có sự phát triển nhanh chóng của cái gọi là cơ sở dữ liệu quan hệ đối tượng, cũng như các sản phẩm phần mềm SQL được thiết kế đặc biệt cho thị trường web. Số lượng cơ sở dữ liệu có thể được sử dụng kết hợp với hệ thống PHP là vô cùng lớn, vì vậy phải tuân thủ một số nguyên tắc nhất định khi chọn cơ sở dữ liệu phù hợp nhất.

Nguyên tắc cơ bản là trước tiên bạn phải xem xét nhu cầu phát triển của bản thân, hoặc ít nhất là biết chính xác mục tiêu bạn muốn đạt được. Nếu bạn cố đọc các đề xuất khác, bạn sẽ gặp rất nhiều thông báo rất thuyết phục với những lập luận như vậy mà theo đúng nghĩa đen là bạn “không thể làm được” nếu không có một số công cụ cơ sở dữ liệu nâng cao (chẳng hạn như trình kích hoạt hoặc thủ tục được lưu trữ) và bất kỳ sản phẩm phần mềm hỗ trợ SQL nào có chức năng này. không có những công cụ này khó có thể xứng đáng được gọi là sản phẩm SQL. Hãy coi những lời phán xét này như muối bỏ bể. Sẽ tốt hơn nhiều nếu bạn tự mình lập danh sách các đặc điểm cần thiết theo thứ tự quan trọng và sau đó bắt đầu tìm kiếm sản phẩm phần mềm phù hợp nhất với yêu cầu của bạn.

Nhưng bất chấp những điều trên, phần lớn hỗ trợ ngôn ngữ SQL vẫn tuân theo tiêu chuẩn. Do đó, các chương trình thường chỉ sử dụng lặp đi lặp lại một vài câu lệnh SQL, bất kể sản phẩm phần mềm cụ thể nào được chọn để triển khai.

Về cơ bản, cơ sở dữ liệu SQL có cấu trúc logic rất đơn giản. Bất kỳ cài đặt phần mềm SQL cụ thể nào thường có thể bao gồm nhiều cơ sở dữ liệu. Ví dụ: một cơ sở dữ liệu có thể được sử dụng để lưu trữ dữ liệu về khách hàng và cơ sở dữ liệu khác có thể chứa dữ liệu về sản phẩm. (Một sự phức tạp nhất định phát sinh do bản thân máy chủ SQL và các tập hợp bảng mà nó hỗ trợ thường được gọi bằng cơ sở dữ liệu thuật ngữ chung.) Mỗi ​​cơ sở dữ liệu chứa một số bảng, mỗi bảng bao gồm các cột được xác định cẩn thận và mỗi vị trí trong bảng có thể được được coi là một bản ghi hoặc hàng được nhập vào một bảng.

Bất kỳ máy chủ SQL nào cũng hỗ trợ bốn câu lệnh thao tác dữ liệu và nói chung các câu lệnh này làm nền tảng cho phần lớn các hoạt động được thực hiện trên cơ sở dữ liệu quan hệ. Bốn câu lệnh cơ sở dữ liệu cơ bản này là CHỌN, CHÈN, CẬP NHẬT và XÓA. Câu lệnh SQL, còn được gọi là lệnh, rất tiện lợi và cho phép bạn thực hiện hầu hết mọi hành động cần thiết trong cơ sở dữ liệu.

Một đặc điểm quan trọng của bốn câu lệnh SQL này là chúng chỉ thao tác với các giá trị được lưu trữ trong cơ sở dữ liệu chứ không ảnh hưởng đến cấu trúc của chính cơ sở dữ liệu đó. Nói cách khác, các lệnh dựa trên các toán tử này có thể được sử dụng, chẳng hạn như để nhập dữ liệu thay vì tạo cơ sở dữ liệu; Sử dụng các lệnh như vậy, bạn có thể xóa bất kỳ phần dữ liệu nào khỏi cơ sở dữ liệu, nhưng bản thân “vỏ” sẽ vẫn còn nguyên, do đó, đặc biệt, bạn không thể gán tên của cơ sở dữ liệu hiện có cho cơ sở dữ liệu khác chạy trên cùng một máy chủ. Để thêm hoặc xóa cột, hủy toàn bộ cơ sở dữ liệu mà không để lại dấu vết hoặc tạo cơ sở dữ liệu mới, bạn phải sử dụng các lệnh khác như DROP, ALTER và CREATE.

Chúng ta sẽ xem xét chi tiết tất cả các toán tử này trong bài viết tiếp theo về các lệnh MySQL.

Từ tác giả: Họ gọi bạn là ấm trà à? Vâng, điều này có thể được sửa chữa! Mỗi samovar đã từng là một ấm trà! Hay mọi người chuyên nghiệp đều từng là một ấm samovar? Không, lại có chuyện gì đó không ổn! Nói chung, MySQL dành cho người mới bắt đầu.

Tại sao người giả cần MySQL?

Nếu bạn đang có kế hoạch nghiêm túc kết nối cuộc sống của mình với Internet, thì ngay từ những bước đầu tiên trên “web” bạn sẽ bắt gặp DBMS này. MySQL có thể dễ dàng được gọi là hệ thống quản lý cơ sở dữ liệu “toàn Internet”. Không một tài nguyên nghiêm túc nào có thể làm được nếu không có nó; nó hiện diện trong bảng quản trị của mọi dịch vụ lưu trữ. Và hầu hết tất cả các CMS phổ biến và thậm chí cả các công cụ “tự chế” đều được xây dựng với sự tham gia của nó.

Nói chung, bạn không thể làm gì nếu không có nền tảng này. Nhưng để nghiên cứu nó, bạn cũng cần có cách tiếp cận phù hợp, công cụ phù hợp và quan trọng nhất là sự khao khát và kiên nhẫn. Tôi hy vọng bạn có đủ các thành phần cuối cùng. Và hãy chuẩn bị cho việc não bạn sôi lên và bốc hơi nước bốc ra khỏi đầu, giống như từ một chiếc ấm đun nước thực sự

Nhưng MySQL chỉ khó đối với những người chưa biết nếu bạn bắt đầu học nó không đúng cách. Bạn và tôi sẽ không phạm sai lầm như vậy và chúng ta sẽ bắt đầu làm quen với công nghệ này ngay từ đầu.

Các khái niệm cơ bản

Trước tiên, hãy điểm qua các khái niệm cơ bản mà chúng tôi sẽ đề cập trong ấn phẩm này:

Cơ sở dữ liệu (DB) là đơn vị thành phần chính của DBMS. Cơ sở dữ liệu bao gồm các bảng bao gồm các cột và bản ghi (hàng). Các ô được hình thành tại giao điểm chứa dữ liệu có cấu trúc thuộc một loại nhất định.

DBMS (hệ thống quản lý cơ sở dữ liệu) là một tập hợp tất cả các mô-đun phần mềm để quản trị cơ sở dữ liệu.

SQL là ngôn ngữ truy vấn có cấu trúc mà nhà phát triển “giao tiếp” với lõi DBMS (máy chủ). Giống như bất kỳ ngôn ngữ lập trình nào, SQL có cú pháp, bộ lệnh và toán tử riêng cũng như các kiểu dữ liệu được hỗ trợ.

Tôi nghĩ rằng kiến ​​thức lý thuyết là đủ để chúng ta bắt đầu. Chúng tôi sẽ “tô màu” những khoảng trống còn thiếu về lý thuyết bằng thực hành. Bây giờ tất cả những gì còn lại là chọn công cụ phần mềm phù hợp.

Chọn đúng công cụ

Sau khi lục lọi toàn bộ các loại shell MySQL dành cho người mới bắt đầu, tôi nhận ra rằng chúng đơn giản là không tồn tại. Tất cả các sản phẩm phần mềm quản trị DBMS đều yêu cầu máy chủ cơ sở dữ liệu đã được cài đặt sẵn. Nói chung, một lần nữa tôi quyết định không phát minh ra “xe tay ga” và chọn gói Denwer nội địa. Bạn có thể tải nó trên trang web chính thức.

Nó đã bao gồm tất cả các thành phần của DBMS, cho phép người mới bắt đầu làm quen thực tế với MySQL ngay sau khi cài đặt đơn giản và dễ hiểu. Ngoài ra, Denwer còn bao gồm một số công cụ khác cần thiết cho nhà phát triển mới vào nghề: máy chủ cục bộ, PHP.

Những bước đầu tiên

Tôi sẽ không mô tả quá trình cài đặt của bộ “quý ông”, vì mọi thứ diễn ra tự động ở đó. Sau khi khởi chạy cài đặt, chỉ có thời gian để nhấn các phím cần thiết. Đúng thứ bạn cần trong phiên bản MySQL dành cho người mới sử dụng.

Khi quá trình cài đặt hoàn tất, hãy khởi động máy chủ cục bộ, đợi vài giây. Sau đó, nhập localhost vào thanh địa chỉ của trình duyệt.

Trên trang “Hoan hô, nó hoạt động rồi!” theo một trong các liên kết hiển thị trong hình. Sau đó, bạn sẽ được đưa đến phpMyAdmin - một shell để quản trị cơ sở dữ liệu.

Bằng cách nhấp vào liên kết http://downloads.mysql.com/docs/world.sql.zip, bạn sẽ tải xuống cơ sở dữ liệu thử nghiệm mẫu từ trang web chính thức của MySQL. Truy cập lại phpMyAdmin, trong menu chính ở trên cùng, chuyển đến tab “Nhập”. Trong cửa sổ Nhập vào hiện tại, ở phần đầu tiên (Tệp cần nhập), đặt giá trị thành Duyệt qua máy tính của bạn.

Trong cửa sổ Explorer, chọn kho lưu trữ có cơ sở dữ liệu mẫu đã tải xuống. Đừng quên nhấp vào "Ok" ở cuối cửa sổ chính.

Tôi khuyên bạn không nên thay đổi các giá trị tham số đã chỉ định vào lúc này. Điều này có thể dẫn đến hiển thị không chính xác dữ liệu nguồn đã nhập. Nếu hệ thống phpMyAdmin phát sinh lỗi không thể nhận dạng thuật toán nén cơ sở dữ liệu thì hãy giải nén và lặp lại toàn bộ quá trình nhập từ đầu.

Nếu mọi thứ suôn sẻ, thì một thông báo chương trình sẽ xuất hiện ở trên cùng cho biết quá trình nhập đã thành công và một thông báo khác (từ) sẽ xuất hiện ở bên trái trong danh sách cơ sở dữ liệu.

Chúng ta hãy nhìn vào cấu trúc của nó từ bên trong để bạn có thể hình dung rõ ràng hơn những gì bạn phải giải quyết.

Bấm vào tên cơ sở dữ liệu MySQL cho người mới bắt đầu. Một danh sách các bảng chứa nó sẽ được hiển thị bên dưới nó. Bấm vào một trong số họ. Sau đó vào mục menu trên cùng “Cấu trúc”. Vùng làm việc chính sẽ hiển thị cấu trúc bảng: tên tất cả các cột, kiểu dữ liệu và tất cả các thuộc tính.