MYSQL数据库命令

操作之前应连接某个数据库

1、建表
命令:create table <表名> ( <字段名> <类型> [,…<字段名n> <类型n>]);

mysql> create table MyClass(
> id int(4) not null primary key auto_increment,
> username char(20) not null,
> score char(50) not null )
> ;

2、获取表结构
命令:desc 表名,或者show columns from 表名

mysql>DESCRIBE MyClass
mysql> desc MyClass;
mysql> show columns from MyClass;

3、删除表

命令:drop table <表名>
例如:删除表名为 MyClass 的表
mysql> drop table MyClass;

4、插入数据
命令:insert into <表名> [( <字段名>[,…<字段名n > ])] values ( 值 )[, ( 值n )]
例如,往表 MyClass中插入二条记录, 这二条记录表示:编号为的名为Tom的成绩为.45, 编号为 的名为Joan 的成绩为.99,编号为 的名为Wang 的成绩为.5.

mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);

5、查询表中的数据
1)、查询所有行
命令:select <字段,字段,…> from < 表名 > where < 表达式 >
例如:查看表 MyClass 中所有数据

mysql> select * from MyClass;

2)、查询前几行数据
例如:查看表 MyClass 中前行数据

mysql> select * from MyClass order by id limit 0,2;
或者:
mysql> select * from MyClass limit 0,2;

6、删除表中数据
命令:delete from 表名 where 表达式
例如:删除表 MyClass中编号为 的记录

mysql> delete from MyClass where id=1;

7、修改表中数据:update 表名 set 字段=新值,…where 条件

mysql> update MyClass set username='Mary' where id=1;

7、在表中增加字段:
命令:alter table 表名 add字段 类型 其他;
例如:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为

mysql> alter table MyClass add passtest char(50) default ' ';

8、更改表名:
命令:rename table 原表名 to 新表名;
例如:在表MyClass名字更改为YouClass

mysql> rename table MyClass to YouClass;

更新字段内容
update 表名 set 字段名 = 新内容
update 表名 set 字段名 = replace(字段名,‘旧内容’,‘新内容’)

UPDATE MyClass SET username = 'Fred' WHERE id = 1

MYSQL数据库连接

安装mysql

yarn add mysql
或者
npm install mysql

1 .mysql 通过 createConnection

  • createConnection方法创建连接对象
    正式的说法是 使用createConnection方法创建一个表示与mysql数据库服务器之间连接的connection对象

1.1 mysql连接数据库

const mysql = require("mysql");
/*建立数据库链接  连接配置 */
var conn = mysql.createConnection({host:'127.0.0.1',user: 'root',password: 'root',  // 修改为你的密码port: '3306',database: 'ruanmoutest'  // 请确保数据库存在
});// 连接conn.connect((err) => {if(err) {throw(err);}console.log('数据库连接成功!')
})

1.2 操作数据库

// 查询 conn.query()
// 创建表
const CREATE_SQL = `CREATE TABLE IF NOT EXISTS test (id INT NOT NULL AUTO_INCREMENT,username VARCHAR(45) NULL,age INT NULL,message VARCHAR(45) NULL,PRIMARY KEY (id))`;
const INSERT_SQL = `INSERT INTO test(username,age,message) VALUES(?,?,?)`;  // 使用占位符
const SELECT_SQL = `SELECT * FROM test`;
conn.query(CREATE_SQL, (err, data) => {if (err) {throw err;}// 插入数据conn.query(INSERT_SQL, ['song','10',"hello,world"], (err, result) => {if (err) {throw err;}console.log(result);conn.query(SELECT_SQL, (err, results) => {console.log(JSON.stringify(results));conn.end(); // 若query语句有嵌套,则end需在此执行})});
});

2 mysql 连接 通过 createPool

  • createPool连接池
    连接池有助于减少连接到MySQL服务器的时间,通过重用以前的连接
    可以避免查询的延迟,减少建立新连接所带来的开销。

在开发web应用程序时,连接池是一个很重要的概念。建立一个数据库连接所消耗的性能成本是很高的。在服务器应用程序中,如果为每一个接收到的客户端请求都建立一个或多个数据库连接,将严重降低应用程序性能。

因此在服务器应用程序中通常需要为多个数据库连接创建并维护一个连接池,当连接不再需要时,这些连接可以缓存在连接池中,当接收到下一个客户端请求时,从连接池中取出连接并重新利用,而不需要再重新建立连接。

//createPool

var pool = mysql.createPool(optioins);

options参数包含createConnection方法中可以使用的各种属性

//getConnection
//err为错误对象,connection为获取到的连接对象。
从连接池中取出连接。

//可以获取到连接对象 操作后建议主动的释放连接
pool.getConnection(function(err,connection))

//release
release方法将其归还到连接池中

connection.release();

//destroy
当一个连接不再需要使用且需要从连接池中移除时用connection对象的destroy方法。

connection.destroy();

连接移除后,连接池中的连接数减一

//end
当一个连接池不再需要使用时,用连接池对象的end方法关闭连接池。

pool.end();

2.1 mysql连接数据库

const mysql = require('mysql');
// options参数包含createConnection方法中可以使用的各种属性
const pool = mysql.createPool({host:'127.0.0.1',user: 'root',password: 'root',  // 修改为你的密码port: '3306',database: 'ruanmoutest'  // 请确保数据库存在
});

2.2 操作数据库 ,同上

const CREATE_SQL = `CREATE TABLE IF NOT EXISTS test (id INT NOT NULL AUTO_INCREMENT,username VARCHAR(45) NULL,age INT NULL,message VARCHAR(45) NULL,PRIMARY KEY (id))`;
const INSERT_SQL = `INSERT INTO test(username,age,message) VALUES(?,?,?)`;  // 使用占位符
const SELECT_SQL = `SELECT * FROM test`;pool.getConnection(function(err,conn){if (err) {throw(err);}// 插入数据conn.query(INSERT_SQL, ['laney','20',"test"], (err, result) => {if (err) {throw err;}console.log(result);conn.query(SELECT_SQL, (err, results) => {console.log(JSON.stringify(results));conn.end(); // 若query语句有嵌套,则end需在此执行// conn.release();  //释放连接})});})

2 mysql2

mysql2 是mysql的一个扩展

安装:

yarn add mysql2
或者
npm install mysql2

如果你希望 用链式结构写数据库连接, 可以选择 mysql2, 其他用法基本和mysql的使用一样

const mysql = require(‘mysql2/promise’)

(async () => {// mysql2 是mysql的一个扩展const mysql = require('mysql2/promise')// 连接配置const cfg = {host:'127.0.0.1',user: 'root',password: 'root',  // 修改为你的密码port: '3306',database: 'ruanmoutest'  // 请确保数据库存在}const connection = await mysql.createConnection(cfg)let ret = await connection.execute(`CREATE TABLE IF NOT EXISTS test (id INT NOT NULL AUTO_INCREMENT,message VARCHAR(45) NULL,PRIMARY KEY (id))`)console.log('create', ret)ret = await connection.execute(`INSERT INTO test(message)VALUES(?)`, ['ABC'])console.log('insert:', ret)ret = await connection.execute(`SELECT * FROM test`)console.log(JSON.stringify(ret[0]))// console.log(ret[1])connection.end()
})()  

2 mysql 连接 通过 sequelize

第一步:创建一个sequelize对象实例:

const Sequelize = require('sequelize');var sequelize = new Sequelize(config.database, config.username, config.password, {host: config.host,dialect: 'mysql',pool: {max: 5,min: 0,idle: 30000}
});

第二步,定义模型Pet,告诉Sequelize如何映射数据库表:

var Pet = sequelize.define('pet', {id: {type: Sequelize.STRING(50),primaryKey: true},name: Sequelize.STRING(100),gender: Sequelize.BOOLEAN,birth: Sequelize.STRING(10),createdAt: Sequelize.BIGINT,updatedAt: Sequelize.BIGINT,version: Sequelize.BIGINT
}, {timestamps: false});

3:使用

(async () => {const Sequelize = require("sequelize");// 建立连接const sequelize = new Sequelize("ruanmoutest", "root", "root", {host: "localhost",dialect: "mysql",operatorsAliases: false});// 定义模型,建表const Fruit = sequelize.define("Fruit", {name: {type: Sequelize.STRING(20),allowNull: false},price: {type: Sequelize.FLOAT,allowNull: false}}, {timestamps: false});Fruit.prototype.totalPrice = function (count) {return (this.price * count).toFixed(2);};// 同步数据库,force: true则会删除已存在的表let ret = await Fruit.sync({force: false})ret = await Fruit.create({name: "香蕉",price: 3.5})ret = await Fruit.create({name: "西瓜",price: 20})ret2 = await Fruit.findAll()console.log(ret2);// 使用实例方法Fruit.findAll().then(fruits => {const [f1] = fruits;fruits.forEach((option, index) => {console.log(option);})console.log(`买5kg${f1.name}需要¥${f1.totalPrice(5)}`);});//找出某一个水果Fruit.findOne({where: {name: "香蕉"}}).then(fruit => {// fruit是首个匹配项,若没有则为nullconsole.log(fruit.get());});console.log('findAll', ret.amount, JSON.stringify(ret))})();

用sequelize.define()定义Model时,传入名称pet,默认的表名就是pets。第二个参数指定列名和数据类型,如果是主键,需要更详细地指定。第三个参数是额外的配置,我们传入{ timestamps: false }是为了关闭Sequelize的自动添加timestamp的功能。所有的ORM框架都有一种很不好的风气,总是自作聪明地加上所谓“自动化”的功能,但是会让人感到完全摸不着头脑。

(精华)2020年7月8日 Node.js mysql的使用相关推荐

  1. (精华2020年5月17日更新) vue实战篇 手写vue底层源码

    MYvue.js 主要作用监听属性变化 class MYvue {constructor(options) {this.$options = options;this.$data = options. ...

  2. (精华)2020年8月17日 浏览器功能与组成

    浏览器应该有的功能 网络:浏览器通过网络模块来下载各式各样的资源,例如html文本:javascript代码:样式表:图片:音视频文件等.网络部分本质上十分重要,因为它耗时长,而且需要安全访问互联网上 ...

  3. .net mysql 类库_(精华)2020年6月27日 C#类库 MySqlHelper(Ado.net数据库封装)

    using EFCore.Sharding; using MySql.Data.MySqlClient; using System; using System.Collections.Generic; ...

  4. (精华)2020年8月7日 微信小程序 直播功能的实现

    一:小程序代码端 小程序直播使用小程序组件 live-pusher 组件和live-player组件 首先开通直播权限 小程序开发工具内进行推流拉流都不会成功,所以需要使用两个手机进行推拉流测试: 1 ...

  5. (精华)2020年10月7日 高并发高可用 Redis实现异步架构

    前言 在后端编程时,对需要立即返回的数据我们应当立刻返回,而对于可以慢慢处理而业务复杂的我们可以选择延迟返回.这个实现使用到了异步消息队列. 异步消息队列 主要用于实现生产者-消费者模式.也就是说,这 ...

  6. (精华2020年6月9日更新)Angular实战篇 axio的封装

    首先先建个axio服务 ng g service 文件目录 ts文件 import { Injectable } from '@angular/core'; import axios from 'ax ...

  7. (精华)2020年8月22日 ABP vNext Web应用ABP

    现在我们开始创建基于RazorPage的web应用.在解决方案中添加新的Asp.Net Core Web应用项目,名称为ZL.AbpNext.Poem.Web,然后安装volo.Abp.AspNetC ...

  8. (精华2020年6月2日更新) TypeScript的数据类型

    第一种:布尔类型(boolean) var flag:boolean=true;flag = false; //正确 flag = '你好typescript'; //错误 第二种:数字类型(numb ...

  9. (精华)2020年8月22日 ABP vNext WebAPI应用ABP

    上一节我们创建了基于Razor Page的简单应用,如果我们希望创建单页面应用或者移动应用,就需要通过Web Api调用应用层.Abp提供了从应用层到Web Api的自动映射,我们只需要增加少量的代码 ...

最新文章

  1. Ant Design Pro 网络请求流程
  2. # 从零開始搭建Hadoop2.7.1的分布式集群
  3. 进击的Python【第一章】:Python背景初探与Python基础(一)
  4. 田野中科院计算机网络信息中心,中国科学院
  5. CPU处理器架构和工作原理浅析
  6. 把握三大计划 抓住ERP项目实施的灵魂
  7. Python3 爬虫学习笔记 C06 【正则表达式】
  8. pandas 增删改
  9. 2017《Java技术》预备作业 杨阳
  10. 第三章:3.4 处理登陆的请求
  11. 今天心情好,发首我喜欢的歌---天黑黑
  12. 在腾讯云服务器上实现java web项目部署
  13. springboot项目搭建(mybatis + thymeleaf)
  14. dangdang.com的故事
  15. Linux系统编程学习笔记
  16. SqlServer 对象名无效的解决方法
  17. 关于ArcMap中道路、河道中心线提取过程
  18. Linux服务之DHCP服务篇(scp)
  19. Matplotlib画论文图之loss和validation曲线
  20. 通过配置文件修改PenMount中操作模式为Touch

热门文章

  1. 伯禹学习平台·深度学习笔记(二)
  2. 监控-硬盘录像机问题集锦
  3. Sql Server给表、字段添加备注
  4. BO与BW的权限角色映射
  5. 使用Python+Selenium+图灵验证码识别平台,识别B站/bilibili的中文验证码,并自动登陆B站
  6. vnc连接linux远程桌面
  7. 聊一聊几种衡量推荐算法的度量---准确率、召回率、覆盖率、新颖度
  8. 最近做项目带团队的一点感悟:什么是赚钱潜规则?
  9. 想拥有优秀的数据分析师思维,你还需要补足这一点
  10. 猿创征文|我的C/C++技术成长之路