一般的,只要是服务器语言都需要有连接数据库功能,nodejs也是如此;我们这里选择数据库管理系统作为数据存储;MySQL 是一个关系型开源数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
在确保mysql数据库已开启的情况下,直接使用mysql.creatConnection(option,callback);
具体如下:
先安装mysql数据库:
cnpm install mysqll --save
引入mysql模块:
const mysql = require("mysql");
之后仅需在代码中添加如下:
var db=mysql.creatConnection({host:'localhost',port:'3306',user:"root",password:'password',database:'dataName'});
db.query('sql语句',(err,data)=>{
if(err){
console.log('出错了!',err);
}else{
console.log("成功!",JSON.stringify(data));
}
});
如下实例:
const express=require("express");
const mysql=require("mysql");
var app=express();
//连接数据库
var db=mysql.createConnection({host: "localhost",
port: "3306",
user: "root",
password: "123456",
database: "new_lib"});
//2.发送请求(查询)
db.query("SELECT * FROM students",function(err,data){
if(err){
console.log("数据库访问出错",err);
}else{
console.log(data);
}
})
app.get("/",function(req,res){
res.send("express");
});
app.listen(8080);
mysql基本分为增,删,改,查四部分,其中又以查为中心,毕竟对数据进行筛选管理是最频繁的。
顾名思义,即为向数据库添加数据,它用到的关键字为:INSERT
INSERT INTO table_name ( 字段1,字段2,...字段N )
VALUES
( 值1, 值2,...值N );
一般删除数据都会设立一个条件,如where指令,他可以指定任何条件。一般语法是:
DELETE FROM table_name [WHERE Clause]
值得注意的是:
如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
修改也需要通过查找到对应数据来进行修改:
UPDATE table_name SET field1=new-value1, field2=new-value2
当然,修改也能一次性修改多条数据,只要查询条件满足。
mysql基本分为5种查询方式:
where:条件查询
group by:分组
having子句:有group by才能having子句,只有满足“条件表达式”中指定的条件的才能够输出。
order by:排序
limit:记录数
where支持基本运算符:>,>=,<,<=,!=,=,in(在集合内),between(在某范围内)、以及逻辑运算符:not或!(非)、or或||(或)、and或&&(与)
相当于合并统计,通常和聚合函数同时使用,如下面的例子:
*统计每个班的平均分(student_table)
ID class name scroe
"1" "1" "小虎" "36"
"2" "2" "小胖" "56"
"3" "1" "小明" "48"
"4" "2" "小心" "66"
"5" "3" "小刚" "71"
"6" "4" "小强" "46"
"7" "4" "小达" "51"
"8" "1" "小贺" "80"
SELECT class,AVG(scroe) FROM student_table GROUP BY class;
having的用法和where类似,一个在form后,一个在group by后面;就是说其是对group by后的信息进行筛选。having筛选时,只能根据select子句中可出现的字段(数据)来进行条件设定。
如下面例子:
数据还是上面那个
筛选出平均成绩大于60的班级:
SELECT class,AVG(scroe) FROM student_table GROUP BY class HAVING AVG(scroe)>60 ;
order by用于对数据进行排序:
ORDER BY age ASC //升序
ORDER BY age DESC //降序
*价格排序(price)升序排序,再按销量(sale)降序排序:
ORDER BY price ASC,sale DESC
limit用于查询需要的数据量,它接受一到两个整数参数。如果给定两个参数,第一个参数指定第一个返回记录行的初始量(默认初始为0),第二个参数指定返回记录行的最大数目。
查询第5-10个选择的数据
SELECT * FROM table LIMIT 5,10;
关于mysql的语法大家还需要深入从其他地方了解,本文仅仅只是大概探讨一些基础而已,最后如果大家有做全栈方面的打算,那数据库是必须可少的。