nodejs(11)Express 中进行数据库操作
数据库的一些命令
创建/删除数据库
create database test; # 创建test数据库
drop database test; # 删除test数据库
创建数据表
DROP TABLE IF EXISTS `article`; # 如果存在article,删除原来的article数据库
CREATE TABLE `article` (
# 列名 数据类型(长度) 完整性约束条件,
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`author` varchar(255) NOT NULL,
`content` varchar(255) NOT NULL,
`category` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS = 1;
注意:列名、数据类型(长度)必须有; 完整性约束条件可以没有。
CREATE TABLE `hf` (
`sno` int(10) unsigned NOT NULL AUTO_INCREMENT,
`sname` varchar(30) NOT NULL,
`sage` tinyint(3) unsigned NOT NULL,
`sgender` enum('男','女') DEFAULT '男',
`semail` varchar(30) DEFAULT NULL,
`stel` char(11) DEFAULT NULL,
PRIMARY KEY (`sno`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
数据类型介绍
# 整型: int
tinyint #(微整型 -128~~127)
int # (-2,147,483,648 ~~ 2,147,483,647) # 字符串:
varchar # 可变长度 varchar(30) 存储abc,varchar会占用3位长度
char # 固定长度 char(30) 存储abc,char会占用30位长度
# 区别:char 的执行速度比 varchar 快,所以能用char就用char # 枚举: enum (单选) set('多选') )
enum('男','女')
set('古装','喜剧','警匪','恐怖','穿越') # 日期:
date # 年-月-日
datetime # 年-月-日 时:分:秒
time # 时:分:秒)
int # 存储时间戳 # 文本:
text # 大文本
完整性约束条件介绍
unsigned # 无符号,只用在整型字段上。 tinyint unsigned # 无符号微整型 0~~255 auto_increment # 自增长,只用在整型字段上。 primary key # 主键。
# 特点: 唯一 、 非空 、经常和auto_increment结合使用。
# 主键和自增长配合就能确定唯一的一条数据了。 主键一般都会选择整型字段。 unique # 唯一。 该列中不能出现重复值 not null # 非空。 该列中不能有 NULL 数据。
插入数据
insert into hf(sno,sname,sage,sgender,semail,stel)
values(1,'张三',18,'男','1001@qq.com',12345678911);
查询数据
# where 查询条件
select * from hf where sno=1; # in关键字查询
select * from hf
where sage in (17,19) and sgender="男"; # 模糊查询:
# %: 代表任意长度(包括0)的任意字符
# _: 代表1位长度的任意字符
select * from hf
where stel like '1%9_3'; # order by 排序 可以对查询结果按某个字段的升降进行排序
# 升序asc(默认) 降序desc 随机排序rand()
select * from hf
order by sno desc; # limit 用来限制查询结果的起始点和长度
# 格式: limit var1, var2
# var1: 起始点。 查询结果的索引,从0开始。 0代表第一条数据
# var2: 长度
# 查询年龄最大的2名男性的信息:
select * from hf
where sgender="男"
order by sgender desc
limit 0,2; # 多表查询
# select * from 表1
# join 表2 on 链接条件(表1的某个字段=表2的某个字段)
select * from table1
join table2 on table1.sname=table2.sname
join table3 on table1.sname=table3.sname
where sgender="男"
order by sgender desc
修改数据
# 格式:
# update 表名 set 字段1=值1,字段2=值2,... where 修改条件 # 修改表中的哪一条(几条)数据的 字段1=值1...
update hf set sname="王五五"
where sno="3";
删除数据
# 格式: delete from 表名 where 删除条件 delete from hf
where sname="张三";
在node中操作mysql
安装操作数据库的第三方包npm i mysql -S
导入包 const mysql = require('mysql')
创建数据库连接对象:
const conn = mysql.createConnection({
host: '127.0.0.1', // 要连接到哪个电脑上的数据库
user: 'root', // 登录数据库的用户名
password: 'root', // 登录数据库的密码
database: 'heima_47' // 指定当前这个数据库连接对象,要操作哪个数据库
})
使用 conn.query('要执行的Sql语句', 要提供的数据, (err, result)=>{ /*回调函数*/ })
来执行Sql语句
查询数据
// 1.导入操作数据库的包
const mysql = require('mysql') // 2.创建数据库对象
const conn = mysql.createConnection({
host:'127.0.0.1',
user: 'root',
password: 'root',
database: 'heima47'
}) // CRUD
// -------- 查询数据 ----------
conn.query('要执行的Sql语句') const sql1 = 'select * from users'
conn.query(sql1, (err, result) => {
if(err) return console.log(err.message)
console.log(result)
})
添加数据
// 1.导入操作数据库的包
const mysql = require('mysql') // 2.创建数据库对象
const conn = mysql.createConnection({
host:'127.0.0.1',
user: 'root',
password: 'root',
database: 'heima47'
}) // CRUD
// -------- 添加数据 ----------
const user = {username: '宝贝1', address: '美国'}
const sql2 = 'insert into users(username, address) values ("' + user.username + '","' + user.address + '")'
conn.query(sql2, (err, result) => {
if(err) return console.log(err.message)
console.log(result)
})
或者
/* const user = {username: '欧松', address: '唐山'}
const sql2 = 'insert into users set ?'
conn.query(sql2, user, (err, result) => {
if(err) return console.log(err.message)
console.log(result)
})
*/
修改数据
// 1.导入操作数据库的包
const mysql = require('mysql') // 2.创建数据库对象
const conn = mysql.createConnection({
host:'127.0.0.1',
user: 'root',
password: 'root',
database: 'heima47'
}) // CRUD
// -------- 修改数据 ----------
// conn.query('要执行的Sql语句')
const user = {id: 13, username: '美丽', address: '济南'}
const sql3 = 'update users set ? where id=?'
conn.query(sql3, [user, user.id], (err, result) => {
if(err) return console.log(err.message)
console.log(result)
})
删除数据
// 1.导入操作数据库的包
const mysql = require('mysql') // 2.创建数据库对象
const conn = mysql.createConnection({
host:'127.0.0.1',
user: 'root',
password: 'root',
database: 'heima47'
}) // CRUD
// -------- 删除数据 ----------
// conn.query('要执行的Sql语句')
const sql4 = 'delete from users where id=?'
conn.query(sql4, 6, (err, result) => {
if(err) return console.log(err.message)
console.log(result)
})
nodejs(11)Express 中进行数据库操作的更多相关文章
- android中的数据库操作(转)
android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库 an ...
- android中的数据库操作(SQLite)
android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库 an ...
- CI中的数据库操作以及AR连贯操作
要使用CI中的数据库操作,首先我们应该在CI的 application/config/databass.php 文件中配置数据库信息,通常就是配置主机名,用户名,密码,数据库名,表前缀(dbprefi ...
- Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库
下面是最原始的方法,用SQL语句操作数据库.后面的"Android中SQLite数据库操作(2)--SQLiteOpenHelper类"将介绍一种常用的android封装操作SQL ...
- phpcms v9 中的数据库操作函数
1.查询 $this->select($where = '', $data = '*', $limit = '', $order = '', $group = '', $key='') 返回 ...
- PHP-Phalcon框架中的数据库操作
> 本文描述了PHP-Phalcon框架中数据库操作方法,主要讨论Phalcon框架的Model组件中的操作方法.更详细的Model介绍请参考:官方文档 1. 连接数据库 在Phalcon框架中 ...
- 我的Android六章:Android中SQLite数据库操作
今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...
- android中的数据库操作
如何在android中调用数据库资源 在android中主要有两种方法来实现对数据库的访问,一种是adb shell方式,另一种是通过相关的android 的java类来间接的对数据库来进行操作.其中 ...
- PHP中对数据库操作的封装
在动态网面设计中很多都要涉及到对数据库的操作,但是有时跟据需要而改用其它后台数据库,就需要大量修改程序.这是一件枯燥.费时而且容易出错的功作.其实我们可以用PHP中的类来实现对数据库操作的封装,从而使 ...
随机推荐
- yum 安装 tomcat
前言对于一个新安装的 centos 系统来说,是没有 tomcat 服务器的.用下面的命令可以查看 tomcat 服务的状态. systemctl status tomcat.service//或者 ...
- 格雷码(Grey Code)生成规则
(1) Grey码在FPGA实际应用中是实用的码,在8421BCD码累加计数器中,如果寄存器需要发生多位(两位或者以上)的跳变,会出现中间态,这样作为组合逻辑的输入是不稳妥的. 下面看两个中间态的例子 ...
- 吴裕雄--天生自然java开发常用类库学习笔记:属性类Properties
import java.util.Properties; public class PropertiesDemo01{ public static void main(String args[]){ ...
- Bookshelf 2 简单DFS
链接:https://ac.nowcoder.com/acm/contest/993/C来源:牛客网 题目描述 Farmer John recently bought another bookshel ...
- Shell脚本之awk篇
目录:一.概述二.awk基本语法格式三.awk基本操作四.awk条件及循环语句五.awk函数六.awk演示示例(源自于man手册) 一.概述 1. 产品概述: awk是一种编程语言,用于在linux/ ...
- [洛谷Luogu]P1141 01迷宫[联通块 并查集]
题目链接 大致题意 相邻格子不同为连通,计算每个点所在的连通块大小. 想法 我采用了并查集的做法. 开一个辅助数组记录连通块大小,每次合并的时候更新父亲节点的大小即可. 一个点先与它上面的点判定,若判 ...
- 120-PHP调用成员方法并将不同类的对象做为参数
<?php class ourself{ //定义自己人类 private $birthday='1990-12-20'; //定义private修饰的成员属性 public function ...
- 长篇Essay写作凑字数的小技巧
当一个留学党面对一篇5000字的essay,写一半之后却没法继续~这类的感觉是很多同学无法想象的!此时唯一的一个有效的方法:凑字数!但是essay写作怎么凑字数呢?如何写够5000字essay?下面我 ...
- jvm 性能监控与linux常用命令
linux日常的运维 .Java开发 管理监控命令 ,较为浅显,欢迎提意见,我将在后面持续补充.
- VUE随手记坑
1.el-select 默认选中的问题 <el-select v-model="temp.audit" placeholder="请选择"> < ...