今天结束的挺早,因为今天的内容还可以不是很难,今天全程是学了一些关于mysql数据库和sql查询语句的内容包括在node终端里面怎么来连接数据库。经过今天的一个学习,我感觉离那个地步越来越近了,就是那个自己完成一个网站,有服务器、有响应,就跟现在这些上线的网站一样一样的,越来越近了。

1.

这些内容其实上学期间就学过了,现在主要是拿来复习一下。

首先我们先了解一下数据库的基本概念,用来组织、存储,管理数据的仓库。

我们传统型数据库(mysql、sql、Oracle)的一个数据结构为:数据库》数据表》数据行》字段

库、表、行、字段之间的一些关系:

①每个项目都有独立的数据库文件

②不同的数据要放在不同的表中,比如一个用户信息就应该放到user表中

③每个表要存放哪些信息是由字段来决定的

④表中的行代表一条具体的数据

1.1

安装配置mysql,其实还是有一些步骤的,建议baidu就不多赘述了这里。

然后装好后用workbench去创建一个数据库再去创建一个表这个时候就有一些数据类型参考了,常见的int整数型,varchar字符串型、tinyint是布尔值

包括还有一些特殊标识,pk代表主键具有唯一标识,nn是not null不能为空值,uq是值唯一,ai是值会自增

1.2

上面是通过用那个工具去写一些数据进去,但是我们是程序员那肯定是要用代码来实现的,sql结构化查询语言来了,专门搞数据库的语言。

无非就是四个增删改查,我说一下一些注意点,然后就可以看代码就行了。

首先是增这里的列名和值必须要一一对应就没有了

-- 通过 * 把 users 表中所有的数据查询出来
-- select * from users -- 从 users 表中把 username 和 password 对应的数据查询出来
-- select username, password from users -- 向 users 表中,插入新数据,username 的值为 tony stark password 的值为 098123
-- insert into users (username, password) values ('tony stark', '098123')
-- select * from users -- 将 id 为 4 的用户密码,更新成 888888
-- update users set password='888888' where id=4
-- select * from users -- 更新 id 为 2 的用户,把用户密码更新为 admin123 同时,把用户的状态更新为 1
-- update users set password='admin123', status=1 where id=2
-- select * from users -- 删除 users 表中, id 为 4 的用户
-- delete from users where id=4
-- select * from users -- and运算符
-- select * from users where id = 1 and username = '2'
-- select * from users where id = 1 or username = '2'
-- oder by
-- select * from users order by id desc -- count
select count(*) as total from users where status = 0

1.3

看到mysql模块

怎么在项目中来操作一个mysql

首先要安装通过npm然后要配置来连接那个数据库,再去执行一些语句,主要实现的功能还是一个增删查改

注意

查:返回的是一个数组

增:sql语句中用?先来作为占位符先不填充数据,后面的也是这样,返回的是一个对象,里面有一个属性affectedRows也就是被影响的行,要等于一这个操作才能被算作生效,

然后由于我们的id具有唯一标识性,所以如果你删了4,又去增加一个那么他的id是5不是4,增有便捷版操作

改:也有便捷版,也返回的是一个对象,注意他的便捷版的where条件不能够省略

删:推荐以id这个唯一标识符作为条件来删除,然后我们delete就是真的从数据库删除了,其实是有点危险的,因为万一用户反悔了想恢复回来,这个时候就没办法了,所以我们一般是用标记删除,也就是通过update来改类似于status的值来达到一个模拟删除的操作,并没有真正从数据库删除

// 1. 前面如果通过npm安装了mysql第三方包后,就需要配置一下mysql模块了
// 首先是导入
const mysql = require('mysql')
// 通过mysql.createPool来配置
const db = mysql.createPool({
host : '127.0.0.1', // 数据库的ip地址
user : 'root' , // 登录数据库的账号
password : 'admin123', // 登录数据库密码
database : 'my_db_01' // 指定要操作哪个数据库
}) // 2.测试mysql
// select 1 没有任何作用只是可以测试是否连接成功
db.query('select 1' ,(err, results) => {
if (err) return err.message
return console.log(results);
}) // 3. 查询数据
db.query('select * from users', (err, results) => {
if (err) return err.message
return console.log(results);
}) // 4.插入数据
/* let obj = {
username : '流星',
password : '653213'
} */
// 4.1注意sql语句中可用?来占位
/* let insertStr = 'insert into users(username, password) values (?,?)'
// 4.2使用数组的形式可以依次去填补?里面的值
db.query(insertStr, [obj.username, obj.password] ,(err, results) => {
if (err) return err.message
// 4.3用到rsults的一个属性 表示影响的行数,只有当为一才表示真正的插入成功了
if (results.affectedRows == 1) return console.log('数据添加成功');
}) */ // 4.2插入数据便捷版
/* let obj = {
username : 'jj',
password : '653213'
}
let insertStr = 'insert into users set ?'
// 4.2使用数组的形式可以依次去填补?里面的值
db.query(insertStr, obj ,(err, results) => {
if (err) return err.message
// 4.3用到rsults的一个属性 表示影响的行数,只有当为一才表示真正的插入成功了
if (results.affectedRows == 1) return console.log('数据添加成功');
}) */ // 5.改数据
/* let user = {username : '姐姐', password : '1243333', id : '9'}
let updateStr = 'update users set username = ? , password = ? where id = ?'
db.query(updateStr, [user.username, user.password, user.id], (err, results) => {
if (err) {
return err.message
} else if (results.affectedRows == 1) {
return console.log('更新数据成功');
}
}) */
// 5.1便捷版
/* let user = {username : '姐姐', password : '1243333', id : '9'}
let updateStr = 'update users set ? where id = ?'
db.query(updateStr, [user, user.id], (err, results) => {
if (err) {
return err.message
} else if (results.affectedRows == 1) {
return console.log('更新数据成功');
}
}) */ // 6.删除数据
let deleteStr = 'delete from users where id = ?'
db.query(deleteStr, 9, (err, results) => {
if (err) {
return err.message
} else if (results.affectedRows == 1) {
return console.log('删除数据成功');
}
})

node.js - mysql的更多相关文章

  1. Node.js + MySQL 实现数据的增删改查

    通过完成一个 todo 应用展示 Node.js + MySQL 增删改查的功能.这里后台使用 Koa 及其相应的一些中间件作为 server 提供服务. 初始化项目 $ mkdir node-cru ...

  2. 零代码第一步,做个添加数据的服务先。node.js + mysql

    node.js + mysql 实现数据添加的功能.万事基于服务! 增删改查之添加数据. 优点:只需要设置一个json文件,就可以实现基本的添加功能,可以视为是零代码. 添加数据的服务实现的功能: 1 ...

  3. node.js+mysql环境搭建

    https://www.jianshu.com/p/9b338095cbe8 node.js+mysql环境搭建 0x01 前言 随着html web技术的发展,和全栈式开发的需求,对于前端人员来讲, ...

  4. Ubuntu 16.04 下部署Node.js+MySQL微信小程序商城

    转载于这篇文章 关于pm2看这篇文章 最近在研究小程序,申请了域名之后,再一次来配置环境,根据作者的步骤基本上完成了网站的架构,但由于环境路径等不同,配置上会有所不同,因此记录下来. 1.更新系统和安 ...

  5. Node.jsでMySQLを使うメモ

    インストール npm install mysql コネクション var mysql = require('mysql'); var connection = mysql.createConnectio ...

  6. Node.JS + Mysql数据库

    服务嘛,当然离不开数据库了,你要是见到数据就哭了,我建议你还是看看本文,不要做数据哭啊,哈哈哈 要做 ‘数据酷’嘛,哈哈哈 一 安装 1. wget -i -c http://dev.mysql.co ...

  7. node.js+mysql用户的注册登录验证

    下面代码实现的功能是:用node.js连接mysql实现用户的注册和登录,这里主要实现的是后端的验证代码,前端显示部分没具体写出. 整个程序的流程是这样的: 1.首先建立数据库reji,数据表user ...

  8. Node.js实操练习(一)之Node.js+MySQL+RESTful

    前言 最近学习了一下node.js相关的内容,在这里初步做个小总结,说实话关于本篇博客的相关内容,自己很久之前就已经有过学习,但是你懂的,“好记性不如烂笔筒”,学过的东西不做笔记的话,很容易就会忘记的 ...

  9. node.js+mysql把数据显示到前端简单实例

    原以为数据查出来了,要展示是鸡毛蒜皮的事儿!谁知道,我弄了一天....我错就错在没把connection.query里面. 下面的例子是可以的了! 看过我之前文章的同学,应该很熟悉下面的代码,对!主要 ...

  10. 借助node.js + mysql 学习基础ajax~

    很多小白不知道ajax怎么学,所以就弄了个node后台模拟下基本的ajax请求. 环境要求是安装node~ 先上linkMysql.js var mysql = require('mysql') va ...

随机推荐

  1. web服务器-Nginx下载限速

    web服务器-Nginx下载限速 一. 限速介绍 在生产环境中,为了保护WEB服务器的安全,我们都会对用户的访问做出一些限制,保证服务器的安全及资源的合理分配. 限流(rate limiting)是N ...

  2. python练习册 每天一个小程序 第0007题

    1 # -*-coding:utf-8-*- 2 __author__ = 'Deen' 3 ''' 4 题目描述: 5 有个目录,里面是你自己写过的程序,统计一下你写过多少行代码.包括空行和注释,但 ...

  3. 通过PROFINET网络实现SINAMICS 120的PN IO OPC通讯,起动及调速控制 | OPC通讯

    1 概述 TCP/IP 通讯的传输时间可能太长,并且该时间具有不确定性,无法满足生产自动化领域的要求.因此,在进行时间要求苛刻的IO 有效载荷数据通讯时,PROFINET IO 不使用TCP/IP,而 ...

  4. 解决Idea.exe无法启动问题(idea2017.3版本)

    问题: 最近在用idea时,突然弹出了以下消息框(图片不是我的): 将Xmx的值调大以后,idea还是闪退了.并且再点击idea.exe时,idea已经木有反映了,无法启动. 解决方案: 方案一(失败 ...

  5. 学习zabbix(九)

    一.Zabbix环境准备 [root@linux-node1 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [roo ...

  6. springboot使用redis实现发布与订阅

    配置redis连接地址 # Redis服务器地址 spring.redis.host=youxiu326.xin # Redis服务器连接端口 spring.redis.port=6379 # Red ...

  7. Invalid prop: type check failed for prop "maxlength"

    Invalid prop: type check failed for prop "maxlength", element 框架时,因为想限制文本框的输入长度, maxlength ...

  8. Tomcat安装流程(无图简易)

    笔记:web->3小结

  9. 二十三、原理图和PCB交互式布局

    上图 在原理图里面直接选择在PCB里面就可以移动了,大功告成

  10. 如何做好移动端的响应式设计:Viewport控制

    新人翻译,欢迎转载~ 英文原文地址:http://bitsofco.de/2015/respove-design-viewport/ 原文例程地址:https://github.com/ireade/ ...