Node 初遇 MySQL

Node初遇MySQL

MySQL相关连接

MySQL常用命令

MySQL命令大全

# rpm方式
service mysql start
service mysql stop

# 命令式
mysql -u root -p
mysql -u root shutdown

# window
net start mysql
net stop mysql

# REPL交互命令
exit //退出

show databases:显示数据库
mysqladmin:修改用户密码
create:创建数据库
drop database:删除数据库
use:使用数据库
create table:创建数据表

MySQL 安装

  • 下载MySQL Community Server (Archived Versions)

    自己的备用5.7.18版本云盘地址

    链接: https://pan.baidu.com/s/1skXKZ61 密码: 3tdw

  • 系统偏好设置开启MySQL

  • 添加MySQL全局路径

    vim ~/.bash_profile
    export PATH=${PATH}:/usr/local/mysql/bin
    
    # 也可以添加更改.zshrc的配置文件
    vim ~/.zshrc
    export PATH=${PATH}:/usr/local/mysql/bin
  • 配置路径及时生效

    source ~/.bash_profile
  • 登陆mysql -u root -p,需要输入密码,密码为安装弹框的密码

shell使用MySQL命令注意:

js书写习惯分号可有可无,在shell中执行mysql语句结尾需要以;作为结束标识,否则会认为命令没有结束,无法获取需要的log记录

  • linux安装mysql
sudo apt-get update
sudo apt-get install mysql-server

MySQL终端启动

以下适用mac:

sudo /usr/local/mysql/support-files/mysql.server start
sudo /usr/local/mysql/support-files/mysql.server stop

//记不住的话可以在shell的rc文件中设置别名

 alias mysqlstart='sudo /usr/local/mysql/support-files/mysql.server start'
 alias mysqlstop='sudo /usr/local/mysql/support-files/mysql.server stop'

MySQL密码重置

忘记密码

# 关闭mysql服务
sudo service mysql stop

# 进入安全模式
sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking

# 另外打开一个终端登陆
mysql -u root

# 重置密码为`password`
UPDATE mysql.user SET authentication_string=PASSWORD(‘password’) where User=’root’;

# 退出安全模式,重新启动服务
mysqladmin shutdown
sudo service mysql start

修改密码

mysqladmin -u 用户名 -p 旧密码

MySQL数据库管理工具 - MySQL Workbench

使用的navicat免费版到期,发现Oracle官方本身出了一款管理工具:MySQL Workbench,使用方法见5分钟入门MySQL Workbench

MySQL数据库管理工具 - navicat

相比较命令行操作,可视化更便捷方便,使用了navicat for mysql,做个云盘备份:

链接: https://pan.baidu.com/s/1kU78Q2N 密码: 2hj5

开箱即用,说明一些基本操作:

  • 双击select数据库
  • 如需导入SQL文件,可右击对应数据库,选择运行SQL文件,运行不出错,刷新连接即可更新

创建表单

可视化操作较为简单,针对中文乱码需要注意两点:

  1. 数据库右击编辑数据库,改为utf-8
  2. 数据表: 如数据库中的数据表在修改utf-8已创建,可以通过数据表转储SQL文件,导出SQL文件更改后,再按照上边的导入SQL文件即可
  3. 表单id如需要自动递增,可通过勾选自动递增即可
  4. 注意数据表,不要使用MySQL关键字。初次使用时用了use,一直提示parse error,需要注意
  5. 数字过长,可使用str类型
  6. 时间可选用strint类型存储new Date().getTime()转换后的值

Node下实现MySQL增删改查(CRUD)

参照菜鸟的相关介绍:

准备工作:

# 项目目录下安装依赖包
npm install mysql

# 为省去建表写数据时间,直接导入sql文件
[websites.sql](//static.runoob.com/download/websites.sql)

需要注意,执行结束断开数据库connection.end();

连接数据库

创建connect.js,其中host,user,password,database根据实际项目自行配置

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '123456',
  database : 'test'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

执行:node connect.js

查询

查询语句:'SELECT * FROM websites'

var mysql  = require('mysql');  

var connection = mysql.createConnection({     
  host     : 'localhost',       
  user     : 'root',              
  password : '123456',       
  port: '3306',                   
  database: 'test', 
}); 

connection.connect();

var  sql = 'SELECT * FROM websites';
//查
connection.query(sql,function (err, result) {
        if(err){
          console.log('[SELECT ERROR] - ',err.message);
          return;
        }

       console.log('--------------------------SELECT----------------------------');
       console.log(result);
       console.log('------------------------------------------------------------\n\n');  
});

connection.end();

插入

INSERT INTO websites(Id,name,url,alexa,country) VALUES(0,?,?,?,?)

var mysql  = require('mysql');  

var connection = mysql.createConnection({     
  host     : 'localhost',       
  user     : 'root',              
  password : '123456',       
  port: '3306',                   
  database: 'test', 
}); 

connection.connect();

var  addSql = 'INSERT INTO websites(Id,name,url,alexa,country) VALUES(0,?,?,?,?)';
var  addSqlParams = ['菜鸟工具', 'https://c.runoob.com','23453', 'CN'];
//增
connection.query(addSql,addSqlParams,function (err, result) {
        if(err){
         console.log('[INSERT ERROR] - ',err.message);
         return;
        }        

       console.log('--------------------------INSERT----------------------------');
       //console.log('INSERT ID:',result.insertId);        
       console.log('INSERT ID:',result);        
       console.log('-----------------------------------------------------------------\n\n');  
});

connection.end();

修改更新

修改:'UPDATE websites SET name = ?,url = ? WHERE Id = ?

var mysql  = require('mysql');  

var connection = mysql.createConnection({     
  host     : 'localhost',       
  user     : 'root',              
  password : '123456',       
  port: '3306',                   
  database: 'test', 
}); 

connection.connect();

var modSql = 'UPDATE websites SET name = ?,url = ? WHERE Id = ?';
var modSqlParams = ['菜鸟移动站', 'https://m.runoob.com',6];
//改
connection.query(modSql,modSqlParams,function (err, result) {
   if(err){
         console.log('[UPDATE ERROR] - ',err.message);
         return;
   }        
  console.log('--------------------------UPDATE----------------------------');
  console.log('UPDATE affectedRows',result.affectedRows);
  console.log('-----------------------------------------------------------------\n\n');
});

connection.end();

删除

var mysql  = require('mysql');  

var connection = mysql.createConnection({     
  host     : 'localhost',       
  user     : 'root',              
  password : '123456',       
  port: '3306',                   
  database: 'test', 
}); 

connection.connect();

var delSql = 'DELETE FROM websites where id=6';
//删
connection.query(delSql,function (err, result) {
        if(err){
          console.log('[DELETE ERROR] - ',err.message);
          return;
        }        

       console.log('--------------------------DELETE----------------------------');
       console.log('DELETE affectedRows',result.affectedRows);
       console.log('-----------------------------------------------------------------\n\n');  
});

connection.end();

参考连接

@2017-08-02 09:27