今天结束的挺早,因为今天的内容还可以不是很难,今天全程是学了一些关于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. 4月25日 python学习总结 互斥锁 IPC通信 和 生产者消费者模型

    一.守护进程 import random import time from multiprocessing import Process def task(): print('name: egon') ...

  2. session 会话机制以及变量覆盖

    session会话机制介绍如下 http是无状态协议.服务器靠cookie和session来记住用户.$_SESSION 和 $_GET等一样,是超全局变量. 后台脚本里面会写: session() ...

  3. Delaunay三角剖分及MATLAB实例

    https://blog.csdn.net/piaoxuezhong/article/details/68065170 一.原理部分 点集的三角剖分(Triangulation),对数值分析(如有限元 ...

  4. C++_STL_all_of

    all_of 功能描述 如果在[first,last)范围内的数组进行判断, 如果pred返回true返回true 否则返回false 等同于 template<class InputItera ...

  5. 简单描述 MySQL 中,索引,主键,唯一索引,联合索引 的区别,对数据库的性能有什么影响(从读写两方面) ?

    索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们 包含着对数据表里所有记录的引用指针. 普通索引(由关键字 KEY 或 INDEX 定义的索引)的唯一任务是加快对数据的 ...

  6. @Qualifier 注解有什么用?

    当您创建多个相同类型的 bean 并希望仅使用属性装配其中一个 bean 时,您可 以使用@Qualifier 注解和 @Autowired 通过指定应该装配哪个确切的 bean 来消除歧义. 例如, ...

  7. 你能保证 GC 执行吗?

    不能,虽然你可以调用 System.gc() 或者 Runtime.gc(),但是没有办法保证 GC 的执行.

  8. Eureka server

    Eureka server使用的不是spring mvc的框架,而是使用Jersey. Eureka server ,启动的流程,追本溯源,是在 DiscoveryClient里面,使用这个构造方法 ...

  9. scrapy基于请求传参实现深度爬取

    请求传参实现深度爬取 请求传参: 实现深度爬取:爬取多个层级对应的页面数据 使用场景:爬取的数据没有在同一张页面中 在手动请求的时候传递item:yield scrapy.Request(url,ca ...

  10. java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?重写跟重载的区别?

    java中的方法重载发生在同一个类里面两个或者多个方法的方法名相同但是参数不同的情况.与此相对,方法覆盖是说子类重新定义了父类的方法.方法覆盖必须有相同的方法名,参数列表和返回类型. 覆盖者可能不会限 ...