Javascript có thể được sử dụng với mysql không?

MySQL là một Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) cực kỳ phổ biến - và từ lâu đã trở thành một phần chính trong bộ công cụ của bất kỳ kỹ sư back-end nào, ngay bên cạnh PostgreSQL

Với sự ra đời của JavaScript cho back-end, thông qua Node. js' tăng ngoạn mục về mức độ phổ biến và khả năng ứng dụng - MySQL thường được sử dụng làm cơ sở dữ liệu cho các dự án và ứng dụng được xây dựng bằng Node

Trong hướng dẫn này, chúng ta sẽ xem cách tích hợp MySQL với một máy chủ Node. ứng dụng js. Chúng ta sẽ thực hiện quy trình thiết lập, thực hiện các hoạt động CRUD theo chương trình và xem xét bảo mật truy vấn cơ bản bằng cách thoát đầu vào và đặt thời gian chờ

Javascript có thể được sử dụng với mysql không?

Ghi chú. Xuyên suốt hướng dẫn, chúng tôi sẽ gọi trình điều khiển MySQL của

$ npm install mysql
8 là
$ npm install mysql
9 và bản thân cơ sở dữ liệu MySQL là MySQL

Thiết lập MySQL

Để làm việc với MySQL - bạn cần tải xuống Cơ sở dữ liệu MySQL và lưu trữ một máy chủ nhỏ trên máy cục bộ của bạn. Phiên bản cộng đồng hoàn toàn miễn phí

Bạn cũng có thể chọn cài đặt máy chủ web nguồn mở có hỗ trợ cơ sở dữ liệu MySQL (Xampp, Lampp) - chúng cũng hoạt động tốt với trình điều khiển MySQL của Node

Trình cài đặt rất đơn giản và khi bạn đã thiết lập một phiên bản dịch vụ, bạn có thể tạo một dự án để kết nối với nó

Trình điều khiển MySQL cho các dự án nút

Giả sử rằng máy chủ đang chạy, bạn có thể giao tiếp với nó theo chương trình thông qua ứng dụng Nút, sử dụng trình điều khiển. Để một ứng dụng có khả năng này, bạn cần cài đặt Trình điều khiển MySQL. Một trình điều khiển có sẵn trên

$ npm install mysql
8 như
$ npm install mysql
9

Để bắt đầu, hãy tạo một thư mục mới để lưu trữ ứng dụng của chúng ta và khởi tạo một dự án Node mới, với các cài đặt mặc định

$ mkdir mysql-app
$ cd mysql-app
$ npm init -y

Điều này sẽ tạo ra một

 ...
 "dependencies": {
    "mysql": "^2.18.1"
  }
2 mới chứa siêu dữ liệu cơ bản cho dự án của chúng ta. Khi điều này được thực hiện, chúng tôi có thể cài đặt gói trình điều khiển nút MySQL qua
$ npm install mysql
8

$ npm install mysql

Chúng tôi có thể xác minh rằng quá trình cài đặt đã thành công bằng cách kiểm tra tệp

 ...
 "dependencies": {
    "mysql": "^2.18.1"
  }
2 của bạn, nơi chúng tôi sẽ tìm thấy một mục nhập mới cho _______ 09 được thêm vào dưới _________ 56

 ...
 "dependencies": {
    "mysql": "^2.18.1"
  }

Ghi chú.

 ...
 "dependencies": {
    "mysql": "^2.18.1"
  }
7 đại diện cho số phiên bản và số này sẽ khác nhau tùy thuộc vào phiên bản MySQL bạn đã cài đặt

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

Một đối tượng kết nối có thể được tạo thông qua hàm

 ...
 "dependencies": {
    "mysql": "^2.18.1"
  }
8 của thể hiện
$ npm install mysql
9. Đối tượng này sau đó có thể được sử dụng để tạo kết nối giữa máy chủ và máy khách/trình điều khiển. Nó chấp nhận ba tham số

  • Máy chủ lưu trữ -
    $ npm install mysql
    
    50 cơ sở dữ liệu của bạn. Giá trị mặc định là
    $ npm install mysql
    
    51
  • Người dùng - Tên người dùng của quản trị viên cơ sở dữ liệu được ủy quyền. Giá trị mặc định là
    $ npm install mysql
    
    52
  • Mật khẩu - Mật khẩu của quản trị viên cơ sở dữ liệu được ủy quyền. Giá trị mặc định là một chuỗi rỗng (không có mật khẩu)
  • Cơ sở dữ liệu - Một đối số tùy chọn xác định tên cơ sở dữ liệu mà bạn muốn thực hiện sửa đổi

Với những lưu ý này, hãy mở tệp

$ npm install mysql
53 mặc định - và chúng tôi có thể kết nối với máy chủ MySQL bằng

$ npm install mysql
5

Khi một kết nối đã được cấu hình, bạn chỉ cần

$ npm install mysql
54 tới máy chủ. Hàm
$ npm install mysql
54 sử dụng hàm gọi lại cho phép bạn kiểm tra xem kết nối có thành công hay không

Viết truy vấn thông qua JavaScript

Hầu như tất cả các hành động bạn cần thực hiện trong cơ sở dữ liệu MySQL đều được thực hiện thông qua các truy vấn, được viết bằng SQL một cách tự nhiên. Phương thức

$ npm install mysql
56 của đối tượng
$ npm install mysql
57 chấp nhận một chuỗi, đại diện cho một truy vấn mà chúng tôi muốn gửi đến cơ sở dữ liệu

Một truy vấn có thể không thành công hoặc trả về một số kết quả, vì vậy, chúng tôi sẽ có một cuộc gọi lại khác với

$ npm install mysql
58 hoặc
$ npm install mysql
59 dựa trên cách hoạt động diễn ra

Tạo cơ sở dữ liệu

Hãy bắt đầu bằng cách tạo cơ sở dữ liệu thông qua trình điều khiển MySQL của Node. Bạn có thể tạo cơ sở dữ liệu trên máy chủ thông qua CLI (nếu bạn đã cài đặt nó) hoặc thông qua bất kỳ hình thức GUI nào - chính thức hoặc bên thứ ba.

Ngoài ra, bạn có thể sử dụng kết nối chúng tôi đã tạo để gửi truy vấn tạo cơ sở dữ liệu cho bạn. Hãy tạo một cơ sở dữ liệu

$ npm install mysql
60 mới. Trong thư mục gốc của dự án, trong cùng một
$ npm install mysql
53 mà chúng ta đã sử dụng trước đây, hãy thêm một cuộc gọi
$ npm install mysql
56 sau khi kết nối với cơ sở dữ liệu, nếu kết nối thành công

Sau khi xác minh xem kết nối của chúng tôi có thành công hay không, chúng tôi đã thực hiện truy vấn bằng chuỗi truy vấn -

$ npm install mysql
63, tạo cơ sở dữ liệu mới nếu chưa có. Bây giờ, hãy chạy dự án

$ npm install mysql
6

Kết quả nào trong

$ npm install mysql
1

Đáng kinh ngạc. Bây giờ cơ sở dữ liệu

$ npm install mysql
60 đã tồn tại, chúng ta có thể loại bỏ truy vấn tạo cơ sở dữ liệu và thay vào đó kết nối thẳng với
$ npm install mysql
60 trong cấu hình

$ npm install mysql
4

Tạo bản ghi

Cũng giống như mọi cơ sở dữ liệu quan hệ khác, các bản ghi dữ liệu trong MySQL được lưu trữ trong các bảng có cột và hàng. Một bảng có thể bao gồm bất kỳ số lượng cột và hàng tùy ý nào, nhưng chúng phải nhất quán. Các cột trong cơ sở dữ liệu đại diện cho các tính năng/trường của một đối tượng và mỗi hàng đại diện cho một mục nhập

Mỗi hàng phải có một giá trị cho mỗi cột và chỉ những cột đó, ngay cả khi nó chỉ là

$ npm install mysql
66. Lược đồ phải nhất quán cho bất kỳ cơ sở dữ liệu quan hệ nào

Điều này có nghĩa là chúng ta sẽ cần tạo trước một bảng và xác định lược đồ của nó (các cột và loại cho mỗi bảng) để thêm các bản ghi mới vào cơ sở dữ liệu của chúng ta

Để tạo một bảng mới trong MySQL, chúng ta sử dụng câu lệnh

$ npm install mysql
67. Giả sử chúng tôi muốn tạo một bảng
$ npm install mysql
68 trong cơ sở dữ liệu
$ npm install mysql
60 của chúng tôi. Một lần nữa, sau khi được kết nối, chúng ta có thể thực hiện truy vấn có liên quan

$ npm install mysql
9

Điều này tạo ra một bảng mới có thể chứa các bản ghi với các trường

$ npm install mysql
10 và
$ npm install mysql
11. Mỗi mục nhập sẽ có một
$ npm install mysql
10 và
$ npm install mysql
11, ngay cả khi một số trong số chúng là null. Ngoài ra, chúng tôi đã đặt loại của chúng là
$ npm install mysql
14 với độ dài tối đa là 255 ký tự

Đây là nơi bạn có thể đặt thêm các ràng buộc khác, chẳng hạn như một số trường nhất định là bắt buộc (

$ npm install mysql
15) hoặc
$ npm install mysql
16/
$ npm install mysql
17

$ mkdir mysql-app
$ cd mysql-app
$ npm init -y
8

Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó

Ở đây, không có trường nào có thể được đặt thành

$ npm install mysql
66 và mỗi trường có một số loại dữ liệu được liên kết

Ghi chú. Trong SQL, viết hoa từ khóa hay không không quan trọng.

$ npm install mysql
19 về mặt chức năng tương đương với
$ npm install mysql
67, vì
$ npm install mysql
41 là với
$ npm install mysql
14. Tuy nhiên, quy ước chung là viết hoa các lệnh, từ khóa và các ràng buộc, đó không phải là một yêu cầu

Tạo bản ghi

Truy vấn

$ npm install mysql
43, theo sau là tên bảng và
$ npm install mysql
44 được ánh xạ tới các cột của nó được sử dụng để chèn/tạo bản ghi bằng SQL. Chẳng hạn, hãy thêm một
$ npm install mysql
45 vào bảng
$ npm install mysql
68 của chúng ta

 ...
 "dependencies": {
    "mysql": "^2.18.1"
  }
8

Câu lệnh này, không ngạc nhiên, sẽ chèn một bản ghi (hàng) vào bảng

$ npm install mysql
68, với các giá trị cho
$ npm install mysql
10 và
$ npm install mysql
11. Truy vấn, như thường lệ, có thể được thực hiện thông qua
$ npm install mysql
90

Đọc hồ sơ

Chúng tôi không chỉ muốn lưu trữ dữ liệu - chúng tôi còn muốn có thể đọc được dữ liệu đó. Và, như được thấy bên dưới, chúng ta có thể truy xuất dữ liệu từ bảng

$ npm install mysql
68 bằng truy vấn
$ npm install mysql
92

Chúng tôi có thể chọn các bản ghi cụ thể hoặc sử dụng ký tự đại diện (______393) để chọn tất cả các bản ghi có sẵn

$ npm install mysql
0

Chạy mã này sẽ trả về tất cả dữ liệu có trong bảng của chúng tôi

$ npm install mysql
1

Ngoài ra, bạn có thể sử dụng câu lệnh

$ npm install mysql
94 để tạo một dải các hàng phù hợp

$ npm install mysql
2

Cái nào sẽ trả về tất cả các sinh viên, có ID nằm trong khoảng từ 1 đến 5

Cập nhật hồ sơ

Chúng ta có thể sử dụng câu lệnh

$ npm install mysql
95 để cập nhật các bảng cơ sở dữ liệu và nội dung của chúng. Chẳng hạn, bạn có thể sử dụng một số câu lệnh để xác định một bản ghi nhất định và cập nhật bản ghi đó. Nói chung, một
$ npm install mysql
96 phải là một
$ npm install mysql
16 để xác định một hàng, cũng như một giá trị duy nhất, vì vậy,
$ npm install mysql
96 thường là cột để tìm kiếm các bản ghi

Giả sử chúng ta muốn cập nhật khóa học của sinh viên,

$ npm install mysql
45, từ
$ mkdir mysql-app
$ cd mysql-app
$ npm init -y
80 lên
$ mkdir mysql-app
$ cd mysql-app
$ npm init -y
81, cùng với người anh em họ của anh ấy. John's
$ npm install mysql
96 là
$ mkdir mysql-app
$ cd mysql-app
$ npm init -y
83

$ npm install mysql
3

Kết quả của một truy vấn như thế này thường bao gồm các chi tiết về cách truy vấn ảnh hưởng đến bảng, đó là cách bạn có thể xác minh xem kết quả có hoạt động như bạn dự định hay không.

$ npm install mysql
4

Xóa bản ghi

Cuối cùng, để xóa bản ghi - chúng tôi sử dụng câu lệnh

$ mkdir mysql-app
$ cd mysql-app
$ npm init -y
84 và chỉ định bản ghi nào sẽ bị xóa

$ npm install mysql
5

Ghi chú. Bạn nên cẩn thận khi sử dụng câu lệnh

$ mkdir mysql-app
$ cd mysql-app
$ npm init -y
84 và chỉ định cẩn thận mệnh đề
$ mkdir mysql-app
$ cd mysql-app
$ npm init -y
86. Ngoài ra, nếu bạn không chỉ định mệnh đề
$ mkdir mysql-app
$ cd mysql-app
$ npm init -y
86, toàn bộ nội dung của bảng sẽ bị xóa

Thoát giá trị truy vấn

Một khai thác ban đầu phổ biến đã được phát hiện khi các kỹ sư phần mềm cho phép sử dụng đầu vào của người dùng trong các lệnh gọi SQL. Chẳng hạn, bạn có thể có một thanh tìm kiếm với trường nhập liệu. Người dùng sẽ chèn tên của một cuốn sách và đầu vào đó sẽ được sử dụng trong một truy vấn, chẳng hạn như

$ npm install mysql
6

Đương nhiên,

$ mkdir mysql-app
$ cd mysql-app
$ npm init -y
88 sẽ được thay thế bằng một chuỗi, chẳng hạn như
$ mkdir mysql-app
$ cd mysql-app
$ npm init -y
89. Tuy nhiên, điều này mở ra cơ hội cho những khai thác khổng lồ, đơn giản như thoát khỏi truy vấn bạn đã tạo và chạy truy vấn của riêng chúng

Chẳng hạn, nếu hệ thống được xây dựng để chấp nhận đầu vào một cách ngây thơ và chèn nó vào truy vấn, thì người dùng chỉ cần nhập

 ...
 "dependencies": {
    "mysql": "^2.18.1"
  }
80 để khai thác truy vấn của bạn là đủ

$ npm install mysql
7

Dấu chấm phẩy sẽ kết thúc câu lệnh trước đó và câu lệnh tiếp theo sẽ chạy, xóa toàn bộ bảng khỏi cơ sở dữ liệu và xóa tất cả sách. Đây là một ví dụ đơn giản về SQL Injection và các cuộc tấn công có thể phức tạp hơn thế này rất nhiều. Ngoài ra, không phải tất cả các cuộc tấn công đều có thể phá hoại - kẻ tấn công cũng có thể chỉ đọc dữ liệu nhạy cảm, đây là một cuộc tấn công thầm lặng thường nằm dưới radar

Dựa vào mức độ phổ biến của các cuộc tấn công này - hầu hết các gói đều có bảo mật tích hợp cơ bản. Trình điều khiển

$ npm install mysql
9 được xây dựng cho Node cung cấp các chức năng và biện pháp giúp tránh SQL Injections

Phương pháp phổ biến nhất là thoát các giá trị và sử dụng chúng làm tham số được đặt tên thay thế

Bằng cách sử dụng ký tự thoát

 ...
 "dependencies": {
    "mysql": "^2.18.1"
  }
82 - bạn thoát đầu vào và biến nó thành một chuỗi ký tự, không thể đánh giá được. Nếu ai đó đã nhập một lệnh vào trường đầu vào dẫn đến tham số này - nó sẽ không được đánh giá là một lệnh. Nó sẽ được coi là một chuỗi ký tự và thay vào đó, một truy vấn sẽ được gửi để tìm một cuốn sách có tên khớp với lệnh đó

Phương thức chấp nhận một mảng các tham số, được nhập tuần tự vào truy vấn. Nếu truy vấn có 2 tham số được chú thích, thì mục đầu tiên trong danh sách sẽ được ánh xạ tới tham số đầu tiên và các mục thứ hai trong danh sách sẽ được ánh xạ tới tham số thứ hai

Ngoài ra, bạn có thể thêm các giá trị này một cách rõ ràng thông qua định dạng chuỗi của JavaScript và sử dụng phương thức

 ...
 "dependencies": {
    "mysql": "^2.18.1"
  }
83 để thoát khỏi các lệnh có thể, tuy nhiên - cách tiếp cận này thường khó đọc hơn

Mọi hoạt động liên quan đến kết nối sẽ chấm dứt sau khoảng thời gian chờ mặc định và chúng tôi có thể khắc phục điều này bằng cách đặt phiên hết thời gian ưu tiên của riêng mình. Điều này được thực hiện bằng cách chuyển một đối tượng tới hàm

 ...
 "dependencies": {
    "mysql": "^2.18.1"
  }
84, với truy vấn của chúng tôi và phiên hết thời gian chờ (tính bằng mili giây) là các trường của đối tượng đó

Mã này sẽ chạy một truy vấn

$ npm install mysql
92 sẽ kết thúc sau 50 giây, nếu không có kết quả nào được trả về

Sự kết luận

MySQL là một cơ sở dữ liệu quan hệ thường được sử dụng. Trong hướng dẫn này, chúng ta đã xem cách cài đặt trình điều khiển cho máy chủ MySQL cho một máy chủ Node. js, cách thiết lập kết nối với máy chủ và thực hiện các thao tác CRUD

Cuối cùng, chúng tôi đã lưu ý tầm quan trọng của việc thoát đầu vào của người dùng và đã xem xét tùy chỉnh thời gian chờ

Chúng tôi có thể kết nối JavaScript với cơ sở dữ liệu không?

Không có cách chung để kết nối với cơ sở dữ liệu SQL Server từ ứng dụng khách JavaScript , mọi trình duyệt đều có API và gói riêng để kết nối với SQL Server.

Bạn có thể truy vấn SQL bằng JavaScript không?

SQL. js là thư viện JavaScript cho phép bạn tạo và truy vấn cơ sở dữ liệu quan hệ hoàn toàn trong trình duyệt . Nó sử dụng một tệp cơ sở dữ liệu ảo được lưu trữ trong bộ nhớ của trình duyệt, do đó, nó không tồn tại những thay đổi được thực hiện đối với cơ sở dữ liệu.

Tôi nên sử dụng cơ sở dữ liệu nào với JavaScript?

js hỗ trợ tất cả các loại cơ sở dữ liệu bất kể đó là cơ sở dữ liệu quan hệ hay cơ sở dữ liệu NoSQL. Tuy nhiên, Cơ sở dữ liệu NoSQL như MongoDb phù hợp nhất với Node. js.

Sử dụng MySQL với Node có tốt không. js?

js được kết hợp với MongoDB và các cơ sở dữ liệu NoSQL khác, nhưng Node. js cũng hoạt động tốt với các cơ sở dữ liệu quan hệ như MySQL . Nếu bạn muốn viết một microservice mới với Node. js cho cơ sở dữ liệu hiện có, rất có thể bạn sẽ sử dụng MySQL, một trong những cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới.