Javascript

node.js操作mysql数据库

本文主要是介绍node.js操作mysql数据库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

下载mysql数据库:

  npm i mysql --save-dev

使用mysql连接数据库:

//1加载mysql数据库

const mysql = require("mysql");

let config = {

host:"localhost", 

port:3306,

user:"root",

 database:"democurd", //数据库名

 password:"root"

}

let connection = mysql.createConnection(config);

// 2.监听是否连接成功

connection.connect(err=>{

  console.log(err)

})

查询:

查找所有字段:

SELECT * FROM 表名;

或者是输入所有字段的属性名,如果需要改变字段显示的顺序,只需要调整select关键字的顺序即可;

查询指定字段:

 select 字段,字段 from 表名;

条件查询:

 

1.单条件数据查询:

select 属性 from 数据表名where 查询条件;

2.多条件数据查询:

 select 字段 from 数据表 where 多个条件;

 select 字段 from 数据表 where class='1'&&score>60;

3.BETWEEN AND关键字范围查询:

SELECT 字段 FROM 数据表名 WHERE 查询字段 BETWEEN 60 AND 100;

4.查询不符合条件的内容:

SELECT 字段 FROM 数据表名 WHERE  查询字段 NOT  BETWEEN 60 AND 100;

5.带IN关键字查询:

1)在集合中数据记录查询:

查询具体的内容:例学生成绩为90,60的返回name;

select 属性名 from 数据表 where 条件1 or 条件2;

select name from student_table where score=90 or score=60;

select 属性 from 表 where 属性 IN (条件1,条件2);

select name from student_table where score IN (90,60);

2)不在集合中数据记录查询:

例:成绩不在90,60的其他学生

select 属性from 数据表 where 属性NOT IN (条件1,条件2....);

select name from student_table where score NOT IN (90,60);

6.带like关键字的模糊查询:

1) 带有“%”通配符的查询:

例:查找90-99分的学生:

SELECT 属性FROM 数据表 WHERE 属性LIKE '关键字%';

SELECT name FROM student_table WHERE score LIKE '9%';

例:查找除90-99分的学生:

SELECT name FROM student_table WHERE NOT  score LIKE '9%';

2) 带有”_”通配符的查询:

例:成绩中第二位为9的学生:

SELECT name FROM student_table WHERE  score LIKE '_9%';

例:成绩中第二位除了为9的学生:

 SELECT name FROM student_table WHERE NOT  score LIKE '_9%';

7.排序:

在多数情况下,查找到的结果是默认顺序,我们可以在查询时给其进行排序:

通过ORDER BY 来实现:

SELECT 属性 FROM 表名 WHERE 属性ORDER BY 条件1 [ASC|DESC];

ASC标识按升序的顺序进行排序,DESC表示按照降序的顺序进行排序;

1) 按照单字段排序:

例:学生成绩升序进行排序;

 SELECT * FROM student_table ORDER BY score ASC;

由于mysql 关键字ORDER BY 默认就是升序排序,可以修改成:

SELECT * FROM student_table ORDER BY score;

例:学生成绩升序进行降序序;

 SELECT * FROM student_table ORDER BY score DESC;

2) 多字段排序:

例:先班级按升序排序,成绩按降序排序:

SELECT * FROM student_table ORDER BY class ASC,score DESC;

7.限制数据记录查询数量:

使用关键字LIMIT来实现:

SELECT 属性,属性... FROM 表名 WHERE 属性 LIMIT 起始条件,显示的行数

1)不指定初始位置:

1.1)显示记录数小于查询结果:

例:查找成绩小于60 的学生显示两条:

SELECT * FROM student_table WHERE score<60 LIMIT 2;

1.2)显示记录数大于查询结果

例:查找成绩小于60的学生显示结果10条;但是不够10条就显示出仅有的条数;

SELECT * FROM student_table WHERE score<60 LIMIT 10;

2)指定初始位置:

2.1)LIMIT关键字还经常与ORDER BY关键字一起使用,即先对查询结果进行排序,然后显示其中部分数据记录;

寻找大于60分,按照班级排序,从0开始显示5条;

 SELECT * FROM student_table WHERE score>60  ORDER BY  class  LIMIT 0,5;

实现第二次操作,从第6条记录开始显示,共显示5条记录;

SELECT * FROM student_table WHERE score>60  ORDER BY class  LIMIT 5,5;

8.统计函数和分组数据记录查询:

统计函数分别为:

1)COUNT():实现统计表中记录的平均值;

2)AVG():实现计算字段值的平均值;

3)SUM():实现计算字段值的总和;

4)MAX():实现查询字段值的最大值;

5)MIN():现在查询字段值的最小值;

8.1)统计数据记录条数:

统计数据表中的总数据:不管是不是空值都会返回

SELECT COUNT(*) number FROM student_table;

对指定字段的统计:会忽略控制

SELECT COUNT(score) number FROM student_table;

8.2)统计计算平均值:

算所有成绩的平均数:

 SELECT AVG(score) average FROM student_table;

算所有不小60的成绩的平均值:

SELECT AVG(score) average FROM student_table WHERE NOT score<60;

8.3)统计计算求和:

计算成绩的总和:

SELECT SUM(score) sumvalue FROM student_table;

SELECT SUM(score) FROM student_table;

8.4)统计计算最大值和最小值:

查询成绩的最高成绩和最少成绩:

SELECT MAX(score) maxval,MIN(score) minval FROM student_table;

8.5)可以几个函数同时使用:

SELECT AVG(score),SUM(score), MAX(score),MIN(score) FROM student_table;

8.6)分组查询:

例:以班级为关键字进行查询:

SELECT * FROM student_table GROUP BY class;

8.7)分组数据查询-实现统计功能分组查询

想显示每个分组中的字段,可以通过函数GROUP_CONCAT()来实现,该函数可以实现显示每个分组中的指定字段值

例:按班级分组,并且将每个班级的name返回

 SELECT class,GROUP_CONCAT(name) FROM student_table GROUP BY class;

例:按班级分组,并且将每个班级的name,并且返回对应的数量;

 SELECT class,GROUP_CONCAT(name) name,COUNT(name) number FROM student_table GROUP BY class;

8.8)实现句子限定分组:

例:按班级分类,并且求出平均成绩:

SELECT class,AVG(score) FROM student_table GROUP BY class;

增:

使用INSERT INTO 语句来实现插入数据记录

1.插入完整数据记录:

 INSERT INTO 表名(属性1,属性2,属性3) VALUES (值1,值2,值3);

 INSERT INTO student_table(class,name,score) VALUES ('3','憨憨',21);

 INSERT INTO student_table VALUES (12,'3','憨憨',21);

 注意:第二种写法,要按照数据表的顺序来写;

 2.插入指定字段:

INSERT INTO student_table(class,name) VALUES(3,'lucky');

3.插入多条数据:

INSERT INTO 表名 VALUES (值1,值2,值3,值4),(值1,值2,值3,值4),(值1,值2,值3,值4);

INSERT INTO student_table VALUES (15,2,'a1',93),(16,1,'a2',78),(17,3,'b1',56);

INSERT INTO student_table(class,name) VALUES (2,'a11'),(1,'a21'),(3,'b11');

改(更新):

通过UPDATE来实现:

1.更新指定数据记录:

例:将a1的成绩改成66;

UPDATE student_table SET score=66 WHERE name="a1";

2.更新所有数据记录:

例:成绩小于60,把名字改为不及格;

 UPDATE 数据表 SET 被修改属性=值 WHERE 修改条件

 UPDATE student_table SET name='及格' WHERE score>60;

六、删除:

1.删除指定数据记录:

例:删除成绩为56的学生:

DELETE FROM 表名 WHERE 条件;

DELETE FROM student_table WHERE score=56;

2.删除所有数据记录:

例:删除成绩为60以下的学生;

 DELETE FROM student_table WHERE score<60;

3.删除表中所有数据:

DELETE FROM student_table;

七、查(多表查询):

表连接分为内连接和外连接,它们之间的最主要区别是:内连接仅选出两张表中互相匹配的记录,而外连 接会选出其他不匹配的记录。我们常用的是内连接。

外连接有分为左连接和右连接,具体定义如下: 左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录 右连接:包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录。

内连接查询:

1) 两个数据表查询:

SELECT * FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号;

例子:根据member中uid获取购物车对应的信息:

通过sql语句INNER JOIN...ON来实现;

SELECT * FROM shopcar INNER JOIN member ON shopcar.uid=member.uid;

INNER JOIN 连接三个数据表的用法:

SELECT * FROM (表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号

INNER JOIN 连接四个数据表的用法:

SELECT * FROM ((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号)

INNER JOIN 表4 ON Member.字段号=表4.字段号

INNER JOIN 连接五个数据表的用法:

SELECT * FROM (((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号)

INNER JOIN 表4 ON Member.字段号=表4.字段号) INNER JOIN 表5 ON Member.字段号=表5.字段号。

 

 

 

 

 

这篇关于node.js操作mysql数据库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!