Sử dụng MySQL trong Nodejs

Ngày đăng: 2024-08-01 10:02:12

Mục lục

  

1. Giới thiệu MySQL trong NodeJS

2. Tạo database MySQL sử dụng Nodejs

3. Làm việc với Table MySQL sử dụng Nodejs

4. Insert / Update / Delete / Select MySQL trong NodeJS

1. Giới thiệu MySQL trong NodeJS

A. Hiểu thêm một chút về SQL

SQL là ngôn ngữ tiêu chuẩn cho các hệ thống quản lý cơ sở dữ liệu quan hệ. Một cơ sở dữ liệu quan hệ xác định các mối quan hệ dưới dạng các bảng. Các câu lệnh SQL được sử dụng để thực hiện các tác vụ như cập nhật dữ liệu trên cơ sở dữ liệu hoặc truy xuất dữ liệu từ cơ sở dữ liệu. Một số hệ thống quản lý cơ sở dữ liệu quan hệ phổ biến sử dụng SQL là: Oracle, Sybase, Microsoft SQL Server, Access, Ingres,MySQL v.v.

Mặc dù hầu hết các hệ quản trị cơ sở dữ liệu sử dụng SQL, nó cũng sẽ có phần mở rộng được bổ sung thêm, nhưng những điều không thể thiếu mà SQL có thể làm trong mỗi hệ quản trị cơ sở dữ liệu như:

  • SELECT

  • INSERT

  • UPDATE

  • DELETE

  • CREATE

  • DROP

Ngoài ra các hệ quản trị cơ sở dữ liệu sử dụng SQL còn có thể duy trì, tối ưu hòa duy trì cơ sở dữ liệu. Hệ quản trị cơ sở dữ liệu MySQL là một hệ quản trị cơ sở dữ liệu quan hệ, phần cuối này mình sẽ giới thiệu qua về sử dụng MySQL trong Node.js .

B. Tìm hiểu về MySQL trong Nodejs

MySQL là hệ quản trị cơ sở dữ liệu cấu trúc phổ biến trên thế giới và được sử dụng bởi rất nhiều lập trình viên trong phá trình phát triển ứng dụng. Trong phần này mình sẽ giới thiệu về MySQL trong Node.js.

Cài đặt MySQL

Để sử dụng MySQL, điều đầu tiên bạn cần phải khởi tạo MySQL server, có rất nhiều cách để khởi tạo MySQL server ví dụ như khởi tạo bằng Docker, sử dụng MySQL databse bên ngoài. Trong bài này mình sẽ hướng dẫn khởi tao bằng cách cài đặt MySQL Server trực tiếp trên máy của bạn.

Trước tiên, bạn truy cập trang download của MySQL và download phiên bản MySQL Server phù hợp cho máy của bạn:

MySQL-download-nodejs

Tiếp theo, tiến hành cài đặt như cài đặt các chương trình thông thường khác, lưu ý ở phần cài đặt mật khẩu root là được, bạn phải nhớ mật khẩu để sau này còn đăng nhập.

cai dat mysql server 1 png

Cài đặt Mysql Driver cho NodeJS

Node.js cho phép chúng ta làm việc với cơ sở dữ liệu SQL, đề làm việc với MySQL trong Node.js bạn cần phải cài đặt driver mysql bằng cách mở terminal và gõ dòng lệnh :

npm i mysql

cai dat module mysql png

Để kết nối với MySQL bạn sử dụng cú pháp:

const mysql = require('mysql');

 

const con = mysql.createConnection({

  host: "localhost",

  user: "yourusername",

  password: "yourpassword"

});

 

con.connect(function(err) {

  if (err) throw err;

  console.log("Connected!");

});

Thực hiện câu truy vấn

con.connect(function(err) {

  if (err) throw err;

  console.log("Connected!");

  con.query(sql, function (err, result) {

    if (err) throw err;

    console.log("Result: " + result);

  });

});

 

2. Tạo database MySQL sử dụng Nodejs

A. Lệnh Create Database trong MySQL

Database là tập hợp các dữ liệu được lưu trữ có cùng cấu trúc dữ liệu, database có thể lưu trữ bất cứ thứ gì gì danh sách bạn bè của bạn, những cuốn sách trong thư viện hay dữ liệu khách hàng của bạn. MySQL là một hệ quản trị cơ sở dữ liệu cho phép bạn quản lý các database đươc dễ dàng hơn. Trong MySQL, bạn có thể tạo ra nhiều database khác nhau để dùng cho việc lưu trữ dữ liêu.

Database trong MySQL bao gồm các bảng chứa dữ liệu, MySQL lưu trữ dữ liệu trong các bảng, mỗi bảng gồm các trường, các trường đêu phải có cấu trúc nhất định. Để khởi tạo database trong MySQL chúng ta thường sử dụng cấu trúc:

CREATE DATABASE titoe

B. Database trong MySQL trong NodeJS

Chúng ta sẽ có hai thao tác chính, thứ nhất là tạo database và thứ hai là xóa database. Mỗi thao tác có những tham số riêng nên bạn phải hiểu để tránh bị nhầm lẫn.

Tạo Database

Như bên trên mình đề cập để khởi tạo database trong MySQL bạn chỉ cần dùng đoạn cấu trúc : CREATE DATABASE [tên_database]. Node.js cũng tương tự như vậy. Chúng ta cùng khởi tạo file app.js và tiên hành tạo bảng :

var mysql = require('mysql');

//Khởi tao kết nối với MySQL Server

var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "1234"

});

//Tiến hàng kết nối

con.connect(function(err) {

  if (err) throw err;

  //Kết nôi thành công

  console.log("Connected!");

  //Tiến hành khởi tạo databse

  con.query("CREATE DATABASE titoe", function (err, result) {

    if (err) throw err;

    console.log("Database created");

  });

});

Khởi chạy chương trình bằng cách mở terminal và chạy dòng lệnh :

node app.js

Chúng ta sẽ thấy database có tên titoe đã được khởi tạo thành công :

Kiểm tra tồn tại trước khi tạo database

Nếu bạn khởi tạo theo các bên trên, nếu database đã tồn tại thì câu truy vấn sẽ trả về lỗi, để không hiển thị lỗi bạn cần kiểm tra xem database đã có hay chưa mới tiến hành khởi tạo:

Chúng ta cùng khởi tạo file app.js và tiên hành tạo bảng :

 

var mysql = require('mysql');

//Khởi tao kết nối với MySQL Server

var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "1234"

});

//Tiến hàng kết nối

con.connect(function(err) {

  if (err) throw err;

  //Kết nôi thành công

  console.log("Connected!");

  //Tiến hành khởi tạo databse

  con.query("CREATE DATABASE [IF NOT EXISTS] titoe", function (err, result) {

    if (err) throw err;

    console.log("Database created");

  });

});

Khởi chạy chương trình bằng cách mở terminal và chạy dòng lệnh :

node app.js

Kết quả trả về tương tự như ví dụ trên, khác nhau là bạn chỉ có thể khởi tạo khi database đó chưa tồn tại.

Thêm các tùy chọn khi tạo database

Khi khởi tạo dattabase bạn còn có thể thêm một vài tùy chọn khi khởi tạo bằng câu lệnh như : CHARACTER, COLLATE

con.query("CREATE DATABASE [IF NOT EXISTS] database_name

[CHARACTER SET charset_name]

[COLLATE collation_name]", function (err, result) {

    if (err) throw err;

    console.log("Database created");

  });

Xóa database

Bạn có thể xóa database bằng cách sử dụng câu truy vấn : DROP DATABASE [database]. Chúng ta sẽ xóa database có tên titoe vừa khởi tạo.

var mysql = require('mysql');

//Khởi tao kết nối với MySQL Server

var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "1234"

});

//Tiến hàng kết nối

con.connect(function(err) {

  if (err) throw err;

  //Kết nôi thành công

  console.log("Connected!");

  //Tiến hành xóa database

  con.query("DROP DATABASE titoe", function (err, result) {

    if (err) throw err;

    console.log("Database deleted");

  });

});

Khởi chạy chương trình bằng cách mở terminal và chạy dòng lệnh :

node app.js

Bạn sẽ thấy database đã bị xóa, trước khi xóa một database bạn cần phải chắc chắn dữ liệu trong database không còn quan trọng =)))

3. Làm việc với Table MySQL sử dụng Nodejs

A. Tạo một bảng mới bằng NodeJS

Mình sẽ khởi tạo một bảng mới có tên customers trong đó có 2 trường đó là name, và andress , chúng ta có file index.js

const mysql = require('mysql');

 

const con = mysql.createConnection({

  host: "localhost",

  user: "yourusername",

  password: "yourpassword",

  database: "titoe"

});

 

con.connect(function(err) {

  if (err) throw err;

  console.log("Đã kết nối!");

  var sql = "CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))";

  con.query(sql, function (err, result) {

    if (err) throw err;

    console.log("Tạo bảng thành công");

  });

});

Các bạn chú ý thay thông tin database cho đúng với database của bạn nha. Chúng ta sẽ khởi chạy file index.js bằng cách mở terminal và chạy dòng lệnh :

node index

Lúc này bạn sẽ thấy table được khởi tạo thành công

B. Tạo bảng kèm khóa chính bằng NodeJS

Trong một bảng bạn cần phải chỉ định khóa chính, khóa chính là một cột trong bảng mà giá trị của nó là duy nhất trong bảng. Ví dụ, mỗi sinh viên có mã sinh viên và mỗi sinh viên đều có mã khác nhau và không trùng lặp, bằng mã sinh viên này, nhà trường có thể lấy thông tin sinh viên môt cách nhanh chóng.

Để khởi tạo quá chính khi tạo một bảng, bạn có thể định nghĩa một cột có các thuộc tính như INT AUTO_INCREMENT PRIMARY KEY, điều này có nghĩa là sẽ chèn một số duy nhất vào mỗi bảng ghi được tạo. Bắt đầu từ 1.

Trong ví dụ này mình sẽ tạo một bảng có tên students gồm các cột như id, name, gender và định nghĩa id là khóa chính, sẽ tự động tăng khi có bản ghi mới :

Để tạo bảng như hình, chúng ta tạo file index.js có nội dung :

const mysql = require('mysql');

 

const con = mysql.createConnection({

  host: "localhost",

  user: "admin",

  password: "yourpassword",

  database: "titoe"

});

 

con.connect(function(err) {

  if (err) throw err;

  console.log("Đã kết nối!");

  var sql = "CREATE TABLE students (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), gender BIT(1))";

  con.query(sql, function (err, result) {

    if (err) throw err;

    console.log("Đã tạo bảng thành công !!");

  });

 });

 

Tiến hành khởi chạy file bằng cách mở terminal :

node index

C. Tạo bảng kèm Foreign Key (khóa ngoại)

Foreign key(khóa ngoại) là mối quan hệ giữa hai bảng và mối quan hệ này ta hay gọi là cha - con, nghĩa là nếu bảng A có một thuộc tính liên kết tới bảng B thì lúc này bảng B đóng vai trò là cha và bảng A đóng vai trò là con. Mục đích của khóa ngoại là đảm bảo tính toàn vẹn tham chiếu của dữ liệu. Nói cách khác, chỉ những giá trị được cho là xuất hiện trong cơ sở dữ liệu mới được phép.

Ví dụ: Giả sử chúng mình có hai bảng, bảng Users bao gồm tất cả dữ liệu khách hàng và bảng Groups bao gồm tất cả các đơn đặt hàng của khách hàng. Logic ở đây yêu cầu tất cả các thành viên phải được liên kết với một groups. Để thực thi logic này, chúng mình sẽ đặt một khóa ngoại trên bảng Users, và để nó tham chiếu khóa chính của bảng Groups. Bằng cách này, chúng mình có thể đảm bảo rằng tất cả các thành viên trong bảng Users có mối liên hệ với Groups.

Chúng ta sẽ đi vào ví dụ thưc tế bên dưới, mình sẽ tạo ra 2 bảng Users và Groups. Trong bảng Groups chúng ta sẽ có thông tin của Groups, có trường groupID là khóa chính, Users sẽ có thông tin của thành viên, bảng này bao gồm 1 khóa chính là userID và một khóa ngoại là groupID liên kết với bảng Groups.

foreign key mysql png

Trong Node.js, chúng ta sẽ tạo ví dụ bằng cách sử dụng phương thức query trong module mysql đã cài đặt. Trong file app.js chúng ta sẽ có nội dung như sau:

const mysql = require("mysql");

 

const con = mysql.createConnection({

  host: "localhost",

  user: "admin",

  password: "yourpassword",

  database: "titoe"

});

 

con.connect(function(err) {

  if (err) throw err;

  var sql = `CREATE TABLE Groups (

    groupid INT(11) NOT NULL PRIMARY KEY,

    title INT(11) NOT NULL,

    LEVEL TINYINT(1) DEFAULT 1 NOT NULL

); CREATE TABLE Users(

    userid INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,

    username VARCHAR(50) NOT NULL ,

    email VARCHAR (50) NOT NULL ,

    groupid INT(11),

    CONSTRAINT fk_group FOREIGN KEY (groupid) REFERENCES Groups(groupid)

)`;

  con.query(sql, function(err, result) {

    if (err) throw err;

    console.log("Đã tạo bảng thành công ");

  });

});

 

4. Insert / Update / Delete / Select MySQL trong NodeJS

A. Thao tác với các bản ghi

Trong các dự án cần dữ liệu có mối quan hệ chặt chẽ với nhau, người ta thường sử dụng MySQL làm hệ quản trị cơ sở dữ liệu chính bởi tính quan hệ chặt chẽ giữa các bản ghi, các mối quan hệ liên kết với nhau qua các "khuân mẫu" nhất định. Khi làm việc với MySQL các lập trình viên cần thao tác như thêm, sửa, xóa rất nhiều. Dưới đây mình sẽ giới thiệu về các thao tác như Insert, Update, Delete, Select với MySQL trong NodeJS.

Trước tiên, mình sẽ đi tạo một bảng ghi mới.

Ở đây mình có một bảng có tên users , chúng ta sẽ có 4 cột :

  • userID

  • username

  • password

  • createDate

freetuts create table mysql nodejs png

CREATE TABLE `users` ( `userID` INT NOT NULL AUTO_INCREMENT , `username` VARCHAR(50) NOT NULL ,

        `password` VARCHAR(50) NOT NULL ,

        `createDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,

        PRIMARY KEY (`userID`))

B. Insert bản ghi

Để thêm các bảng ghi trong MySQL chúng ta sử dụng câu lệnh SQL:

INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);

Vậy khi thao tác với MySQL trong NodeJS chúng ta sẽ có câu lệnh như sau:

var sql    = 'INSERT INTO table_name (column1, column2, column3, ...)

    VALUES (value1, value2, value3, ...);';

connection.query(sql, function (error, results, fields) {

  if (error) throw error;

  // ...

});

Giả sử khi mình muốn thêm một user vào trong bảng sử dụng MySQL trong NodeJS, chúng ta sẽ khởi tạo file app.js có nội dung như sau :

var mysql = require('mysql');

//Khởi tao kết nối với MySQL Server

var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "1234",

  database: "titoe" 

});

//Tiến hàng kết nối

con.connect(function(err) {

  if (err) throw err;

  //Kết nôi thành công

  console.log("Connected!");

  //Tiến hành khởi tạo databse

  con.query("INSERT INTO users(username,password) VALUES('admin', '1234')", function (err, result) {

    if (err) throw err;

    console.log("Thêm bản ghi thành công !!!");

  });

});

C. Update bản ghi

Chúng ta có thể cập nhật một bản ghi mới trong MySQL bằng câu lệnh SQL:

UPDATE table_name

SET column1 = value1, column2 = value2, ...

WHERE condition;

Vậy khi thao tác với MySQL trong NodeJS chúng ta sẽ có câu lệnh như sau:

var sql    = 'UPDATE table_name

SET column1 = value1, column2 = value2, ...

WHERE condition';

connection.query(sql, function (error, results, fields) {

  if (error) throw error;

  // ...

});

Bây giờ, mình sẽ tiến hành sửa nội dung của bản ghi vừa mới thêm ở phần trên, chúng ta sẽ làm việc trong NodeJS, Tiến hành khởi tạo file app.js có nội dung như sau :

var mysql = require('mysql');

//Khởi tao kết nối với MySQL Server

var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "1234",

  database: "titoe" 

});

//Tiến hàng kết nối

con.connect(function(err) {

  if (err) throw err;

  //Kết nôi thành công

  console.log("Connected!");

  //Tiến hành khởi tạo databse

  con.query("UPDATE users SET PASSWORD = 'freetuts' WHERE userID = 1", function (err, result) {

    if (err) throw err;

    console.log("Cập nhật bản ghi thành công !!!");

  });

});

D. Xóa một bản ghi

Để xóa một bản ghi trong NodeJS cũng tương tự như cách thêm và sửa, chỉ khác câu lệnh SQL truyền vào. Khi muốn xóa một bản ghi trong MySQL bằng SQL chúng ta sẽ có câu lệnh :

DELETE FROM table_name WHERE condition;

Trong Nodejs cũng tương tự, file app.js sẽ có nội dung như sau:

var mysql = require('mysql');

//Khởi tao kết nối với MySQL Server

var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "1234",

  database: "titoe" 

});

//Tiến hàng kết nối

con.connect(function(err) {

  if (err) throw err;

  //Kết nôi thành công

  console.log("Connected!");

  //Tiến hành khởi tạo databse

  con.query("DELETE FROM users WHERE userID = 1", function (err, result) {

    if (err) throw err;

    console.log("Xóa bản ghi thành công !!!");

  });

});

E. Select các bản ghi

Ngoài việc thêm, sửa, xóa bạn cũng có thể thao tác để select các bàn ghi trong MySQL bằng NodeJS. chúng ta có thể thực hiện lệnh truy vấn select bằng cách dùng SQL :

SELECT column_name(s) FROM table_name WHERE condition

Khi sử dụng NodeJS, chúng ta sẽ truy vấn như sau :

var mysql = require('mysql');

//Khởi tao kết nối với MySQL Server

var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "1234",

  database: "titoe" 

});

//Tiến hàng kết nối

con.connect(function(err) {

  if (err) throw err;

  //Kết nôi thành công

  console.log("Connected!");

  //Tiến hành khởi tạo databse

  con.query("SELECT * FROM users WHERE userID = 1", function (err, result) {

    if (err) throw err;

    console.log(result);

  });

});

 

Về bài trước

 

 


Tài liệu lập trình NodeJS

Bài viết trong cùng chuyên mục

Góc games giải trí



Cờ caro


Butterfly


Lật hình (luyện trí nhớ)

Cờ tướng ONLINE

Xếp hình

Ghép hình

15_PUZZLE

Kill ghosts

Banchim

Planet Defense

Tower game

Tower game

Plapy Bird (NH.Đông)

Vượt chướng ngại vật



0379136392

Thông tin liên hệ: Lê Văn Thuyên - ĐT: 0379136392 ; Gmail: lethuyen0379136392@gmail.com

Comment

 +   Lê Văn Thuyên-0379136392:Cảm ơn quý vị và các bạn đã vào Website của Lê Thuyên! Lê thuyên rất mong nhận được sự góp ý của quý vị và các bạn cho sự phát triển của website này. Xin chân thành cảm ơn!

Trả lời

 *   Dũng Trung-090567448:Lê Văn Thuyên0379136392--->Ok.Anh!

Trả lời

 *   Bé Nguyễn-benguyen@gmail,com:Lê Văn Thuyên0379136392--->Good job!

Trả lời

 +   -:

Trả lời

 +   -:

Trả lời

12237