1. 数据库的相关概念
-
什么是数据库
-
存储数据的仓库
-
使用数据库管理数据的好处
- 方便存储、查询、修改、删除
-
关系型数据库
- MySQL - Sql Server - Orcale - SQLite
-
-
数据表
- 二维的表,类似于Excel表
- 由行和列组成,列:字段,行:记录
- 字段的类型
- int 整数、double 浮点数、varchar(255) 字符串、text 文本、datetime 日期、float 浮点数
-
MySQL的服务器
-
MySQL的客户端
- 使用navicat创建数据库
-
使用navicat创建表,添加数据
-
使用SQL语句操作数据
-
插入数据 INSERT INTO users (uname,upwd,uqq) values('zs','123',"12345")
-
修改数据 UPDATE users SET uname='zsxxx' WHERE uid=1
-
删除数据 DELETE FROM users WHERE uid = 1
-
查询数据 SELECT * FROM users
SELECT * FROM users WHERE uname='zs' AND uname='000000'
SELECT * FROM users WHERE uname='zs' OR uname='ls'
SELECT * FROM users WHERE uname in ('zs','ls')
SELECT * FROM users WHERE uname like '%s%'
SELECT * FROM users WHERE uage > 18 ORDER by desc
SELECT * FROM users ORDER BY DESC
SELECT * FROM users LIMIT 3 //取前3条数据
SELECT * FROM users ORDER BY DESC LIMIT 3
-
分页 //跳过3条,取2条 SELECT * FROM users ORDER BY DESC LIMIT 3,2
SELECT COUNT(*) FROM users
-
2. Node.js中操作MySQL
-
使用mysql操作
- 安装 npm install mysql
-
使用
//设置数据库参数 var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '', database : 'musicsys' }); //创建连接 connection.connect(); //增加一条数据 let data = {uname: "hahaha", upwd: "xxxx", uqq: "11111", uage: 18, create: Date.now()}; connection.query("insert into users set ?", data, (err, result) => { console.log(result); }); //查询数据 connection.query("select * from users", (err, rows, fields) => { console.log(rows); }); //关闭连接 connection.end();
-
安装node-orm2,安装 orm的依赖 mysql
-
npm install orm
- npm install mysql
- 查询数据表users的所有数据
//步骤一: 在服务器启动的时候连接数据库
app.use(orm.express("mysql://root:@localhost:3306/musicSys",{
define: (db, models, next) => {
models.users = db.define("users",{
uid:{type:"serial", key:true},
uname: String,
upwd: String,
uqq: String,
uage: Number
});
next();
}
}));
//步骤二:当请求到达后查询数据库
app.get("/", (req, res)=>{
let where = {};
req.models.users.find(where, (err, data)=>{
//data是对象
res.send(data);
});
});
- 条件查询
- 查询所有数据
- 查询id=3的用户 方式1
- 查询id=3的用户 方式2
- 条件查询 uname=zs && uage=100
- 条件查询 uid=4 || uage=5
- 模糊查询 uanme like '%f%'
- 大于 uage > 18
- 排序 A -- asc升序 Z -- desc 降序
- 取最前面的两条数据 limit
- 分页的基础 limit 4, 2
- 分页
- 获取总共有多少条数据,第一个参数是条件
- 获取对应的数据表 的数据
//1 查询所有数据
//req.models.user.find({}, (err, users) => {
// res.send(users);
//});
//获取url参数
//let id = req.query.id;
//2 查询id=3的用户 方式1
//req.models.user.get(id, (err, user) => {
// //console.log(err);
// res.send(user);
//});
//3 查询id=3的用户 方式2 find 返回的是数组
//req.models.user.find({uid: id}, (err, users) => {
// console.log(id);
// console.log(err);
// res.send(users);
//});
//4 条件查询 uname=zs && uage=100
//let where = { uname : "zs", uage : 100 };
//req.models.user.find(where, (err, users) => {
// res.send(users);
//});
//5 条件查询 uid=4 || uage=5
//let where = {uid: [4, 5]};
//req.models.user.find(where, (err, users) => {
// res.send(users);
//});
//6 模糊查询 uanme like '%f%'
//let where = {uname: orm.like('%f%') };
//req.models.user.find(where, (err, users) => {
// res.send(users);
//});
//7 大于 uage > 18
//let where = {uage: orm.gt(18)};
//req.models.user.find(where, (err, users) => {
// res.send(users);
//});
//8 排序 A -- asc升序 Z -- desc 降序
//req.models.user.find({}, ["uid", "Z"], (err, users) => {
// res.send(users);
//});
//9 取最前面的两条数据 limit
//req.models.user.find({}, {limit: 2}, ["uid", "Z"], (err, users) => {
// res.send(users);
//});
//10 分页的基础 limit 4, 2 offset: 2 跳过2条 limit: 2 取几条
//req.models.user.find({}, {offset: 4, limit: 2}, ["uid", "Z"], (err, users) => {
// res.send(users);
//});
//11 分页 pageIndex = 0; 页码 pageCount = 2 页容量
//
//let pageIndex = 1; //页码
//let pageCount = 2; //页容量
//req.models.user.find({}, {offset: (pageIndex - 1) * pageCount, limit: pageCount}, ["uid", "Z"], (err, users) => {
// res.send(users);
//});
//12 获取总共有多少条数据,第一个参数是条件
//req.models.user.count({}, (err, count) => {
// res.send({count: count});
//});
//13 获取对应的数据表 的数据
//req.models.user.exists({}, (err, exists) => {
// res.send({exists: exists});
//});
- 增删改
//增加一条数据
//req.models.users.create({
// uname:"xxx",
// upwd:"0000",
// uqq:"9999",
// uage:30
//},(err,user)=>{
// console.log("创建成功");
// console.log("user");
//
// res.end(JSON.stringify(user));
//});
//修改一条数据
//根据主键获取一条数据
//req.models.users.get(3,(err,user)=>{
// user.upwd = "woxxxxx";
// //保存
// user.save();
//})
//修改数据2
//req.models.users.find({uname:"zs"},(err,users)=>{
// //users是数组
// users[0].uage = 100;
// users[0].save();
//})
//删除
//req.models.users.get(5,(err,user)=>{
// user.remove((err)=>{
// //item当前删除的数据
// res.end("删除成功");
// })
//})
- 执行sql语句
app.get("/", (req, res)=>{
req.db.driver.execQuery("select * from users",(err, data)=>{
res.end(JSON.stringify(data));
});
})