MySQL là phần mềm RDBMS sử dụng SQL để thực hiện các thao tác CRUD trên dữ liệu được lưu trữ trong các bảng của cơ sở dữ liệu quan hệ. Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách sử dụng cơ sở dữ liệu MySQL làm backend cho một ứng dụng Node.js. Chương này mô tả cách tạo một bảng trong cơ sở dữ liệu MySQL bằng cách sử dụng chương trình Node.js.
Trong một cơ sở dữ liệu quan hệ, một bảng đại diện cho một thực thể, được đặc trưng bởi một hoặc nhiều thuộc tính. Mỗi hàng trong bảng là một thể hiện của thực thể. Mỗi thể hiện của thực thể được mô tả bởi các giá trị nhất định của các thuộc tính trong bảng. Một bảng thường có một thuộc tính được đánh dấu là khóa chính, ràng buộc mỗi hàng phải có một giá trị duy nhất.
MySQL thực hiện câu lệnh CREATE TABLE theo tiêu chuẩn SQL. Câu lệnh này định nghĩa số lượng và loại thuộc tính của bảng.
Cú pháp của truy vấn CREATE TABLE trong MySQL như sau −
CREATE TABLE [IF NOT EXISTS] table_name( column1 datatype constraints, column1 datatype constraints, ) ENGINE=storage_engine;
MySQL hỗ trợ nhiều loại kiểu dữ liệu, chẳng hạn như kiểu số nguyên (như INT, TINYINT, v.v.), kiểu số thực (FLOAT và DOUBLE), kiểu chuỗi (VARCHAR, TEXT, v.v.) và các kiểu DATE và TIME.
Để đảm bảo tính toàn vẹn dữ liệu của cơ sở dữ liệu quan hệ, một cột có thể có các ràng buộc được áp dụng, chẳng hạn như PRIMARY KEY, NOT NULL, AUTO_INCREMENT, v.v.
Hãy tạo bảng nhân viên trong cơ sở dữ liệu mydb. Khởi động máy chủ MySQL, mở client dòng lệnh MySQL, và thực hiện truy vấn CREATE TABLE như dưới đây −
mysql> use mydb; Database changed mysql> CREATE TABLE IF NOT EXISTS employee ( -> id INT AUTO_INCREMENT PRIMARY KEY, -> name VARCHAR(20) NOT NULL, -> age INT, -> salary FLOAT -> ); Query OK, 0 rows affected (0.09 sec)
Lệnh MySQL SHOW TABLES liệt kê tất cả các bảng trong cơ sở dữ liệu đang được sử dụng.
mysql> SHOW TABLES; +----------------+ | Tables_in_mydb | +----------------+ | employee | +----------------+ 1 row in set (0.00 sec)
Bây giờ chúng ta cần tạo một bảng MySQL một cách lập trình thông qua ứng dụng Node.js. Quá trình này bao gồm các bước sau:
Bao gồm mô-đun mysql
Gọi hàm createConnection() để lấy đối tượng kết nối.
Sử dụng phương thức query() của đối tượng kết nối, và truyền chuỗi truy vấn CREATE TABLE vào đó như là đối số đầu tiên.
Để kiểm tra rằng bảng đã được tạo, hãy truyền truy vấn SHOW TABLES vào phương thức query().
var mysql = require('mysql'); var con = mysql.createConnection({ host: "localhost", user: "root", password: "mypassword", database: "mydb" }); var qry =`CREATE TABLE IF NOT EXISTS employee ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL, age INT, salary FLOAT );`; con.connect(function (err) { if (err) throw err; console.log("Connected!"); con.query(qry, function (err, result) { if (err) throw err; console.log("Created table successfully"); }); con.query("SHOW TABLES;", function (err, result) { if (err) throw err; console.log("Showing tables\n"); for (var i = 0; i < result.length; i++) { console.log(JSON.stringify(result[i])); } }) con.end(); });
Connected! Created table successfully Showing tables {"Tables_in_mydb":"employee"}
Bạn cũng có thể sử dụng lệnh DESC để hiển thị các trường, kiểu và ràng buộc như giá trị mặc định, khóa chính, v.v. của mỗi trường trong bảng của chúng ta.
con.query("DESC employee;", function (err, result) { if (err) throw err; console.log(JSON.stringify(result)); });
[ {"Field":"id","Type":"int","Null":"NO","Key":"PRI","Default":null,"Extra":"auto_increment"}, {"Field":"name","Type":"varchar(20)","Null":"NO","Key":"","Default":null,"Extra":""}, {"Field":"age","Type":"int","Null":"YES","Key":"","Default":null,"Extra":""}, {"Field":"salary","Type":"float","Null":"YES","Key":"","Default":null,"Extra":""} ]