- Mysql 数据库
-
类型
mysql 属于结构性数据库 —表的形式来存储数据 -
安装mysql 如果安装不成功,去卸载mysql,去c盘programfiles 文件删除mysql 在去找隐藏文件 programData 删除mysql 文件在安装。
直接输入密码启动就行,如果闪退查看mysql的服务是否启动,或者去mysql文件 bin文件 运行mysql.exe mysqld.exe -
语法操作
- 基本语法
创建数据库的语法: create database myblod;
定位到库 use myblod
创建表的语法:
create table user(
id int not null,
name varchar(50) not null,
age int );
显示表 show tables;
显示所有的数据库 show databases;
数据库里面显示的数据乱码 写入set names ‘gbk’; - 数据库的增删改查
1.查找数据
select * from user;
select count() from user where id=1 and name=‘毛豆’
给列起别名 as
select count() as ‘count’ from user …
select name,address from user;
select * from user where id in (1,2)
select * from user where address like ‘%市%’ —注意前后百分号的问题
select * from user limit 0,2 2返回几行数据 类似一页显示多少条数据 0 换算出的页码
2.增加数据
单行插入
insert into user(id,name,age,address)
values
(4,‘晓红’,20,‘北京市’);
多行插入
insert into user(id,name,age,address)
values
(4,‘晓红’,20,‘北京市’);
默认全部写法
insert into user values (6,’’,10,’’);
3.修改数据
update user set name=’’ where id=1;
update user set name=’’,age=10 where id=1;
4.删除数据
delete from user; 删除所有数据
delete from user where id=3;
delete from user where id in (1,2,3,4); 直接操作同一张表会错
delet from user where id in (select id from (select * from user where name=’’) as list);
- 数据库的相关操作及注意事项
1.建立多张表
多张表直接的链接 给表建立主外件 一张表只能有一个主键 多个外键(外键引用的是主表里面的主键)
2.主键、外键
表外添加主键 alter table user add primary key (id);
表内添加 是再建表的时候直接写好, id int primary key not null
表外添加外键进行引用 alter table pwdinfo add foreign key(id) references user(id);
主键 不能空 不能重复 (建表的时候主键都是自增列)
外键 引用是主表里面的主键 值保持和主表统一
3.建表的时候添加主键以及自增列
create table myfriend(
id int primary key auto_increment not null);
4.mysql 排序
select * from user order by asc/desc
5.mysql 分组查询 group by
select sex,count(*) from user group by sex;
6.表里面添加索引
ALTER table tableName ADD INDEX indexName(columnName)
- 基本语法
- MongoDb数据库
- 安装
官网下载 安装 安装完成之后配置环境变量就可以使用
安装目录c盘-到bin文件 服务目录 在系统环境变量path中配置
在cmd输入mongo 只要不是内部命令就配置完成
启动mongo服务 mongod --dbpath 建立的文件路径 - MongoDb 数据库增删改查
显示mongoDb里面的数据库 使用 show dbs
显示数据库当中的表(集合) show collections
删除数据库: db.dropDatabase()
删除集合:db.user.drop()
创建数据库 (开始数据库没有,使用数据库 给库里面添加一条数据,库就生成了)
use student
给表中插入数据
db.user.insert({“name”:”maodou”}) 集合中的列可以添加的不一样
查找数据
db.user.find() 相当于select * from user
查找去重复之后的数据(某列)
条件查询
db.user.find({‘age’:20}) 相当于select * from user where age=20
查找大于
db.user.find({‘age’:{KaTeX parse error: Expected 'EOF', got '}' at position 6: gt:20}̲}) 大于 大于等于db.…gte:20}})
查找小于
db.user.find({‘age’:{KaTeX parse error: Expected 'EOF', got '}' at position 6: lt:20}̲}) 小于 小于等于db.us…lte:20}})
查找范围数据
Db.user.fin({“age”:{ l t e : 20 , lte:20, lte:20,gte:30}}) 小于等于30大于等于20
模糊查询
Db.user.find({“name”:/go/}) 可用于搜索
查询指定列的数据
db.user.find({},{name:1,age:1}) 1相当true false除过查其他列
前面的{}写查找的条件
查找数据升序或者降序
Db.user.find().sort({“age”:1}) 1升序
Db.user.find().sort({“age”:-1}) -1降序
查询前5条数据
Db.user.find().limit(5)
查询10条以后的数据
Db.user.find().skip(10)
查询5-10条之间的数据
Db.user.find().limit(10).skip(5) 可用来做数据分页
查询某个结果的记录条数
Db.user.find().count()
修改数据
db.user.update({“name”:”maodou”,{KaTeX parse error: Expected 'EOF', got '}' at position 17: …et:{“age”:”20”}}̲}) 如果不写set 会将整行数据替换
数据的删除
Db.user.remove({“name”:”maodou”}); 中间按照条件删除
如果数据重复可以删除一条
Db.user.remove({“name”:”maodou”},{justOne:true}) 删除一条数据 - MongoDb的索引和explain(主要检测sql的执行速度)的使用
1.创建索引
Db.user.ensureIndex({“name”:1}) 1和-1为升序降序
2.获取索引
Db.user.getIndexes()
3.删除索引
Db.user.dropIndex({“name”:1})
创建一个1000万条数据的数据库 查找数据 检查执行速度
****.explain(“executionStats”)
4.给查找的列添加索引 大幅度减少查找的速度
多列查询创建复合索引
5.多列查找速度更快
6.设置唯一索引 unique 存储的值不能重复
Db.user.ensureIndex({“id”:1},{“unique”:true})
7.如果插入重复的值mongodb会报错,也可以添加复合唯一索引
Db.user.ensureIndex({“id”:1,”name”:1},{“unique”:true})
8.如果在为已有数据的文档创建索引,可以执行下面的命令,使mongodb在后台创建索引,这样就不会阻塞其他操作
Db.user.ensureIndex({“id”:1},{“background”:true})
- nodejs 操作mongodb数据库的方法
- 安装mongodb
- 引入mongodb下面的MongoClient
var MongoClient = require(‘mongodb’).MongoClient; - 链接数据库创建表
// 1.创建mongoClient 对象
var MongoClient=require("mongodb").MongoClient;
//2.定义数据库的链接地址和数据库名称
var url="mongodb://localhost:27017";
var dbname="news";
MongoClient.connect(url,function (err,client){
if(err) throw err;
console.log("数据库创建完成");
var dbase=client.db(dbname);//获取db对象
//创建表
dbase.createCollection("sorce",function (err,res){
if(err) throw err;
console.log("创建集合成功!");
client.close();//关闭
});
});
- 表中增加单条数据
// 1.创建mongoClient 对象
var MongoClient=require("mongodb").MongoClient;
//2.定义数据库的链接地址和数据库名称
var url="mongodb://localhost:27017";
var dbname="news";
MongoClient.connect(url,function (err,client){
if(err) throw err;
console.log("数据库创建完成");
var dbase=client.db(dbname);//获取db对象
//创建表
// dbase.createCollection("sorce",function (err,res){
// if(err) throw err;
// console.log("创建集合成功!");
// client.close();//关闭
// });
//集合中添加数据
var data={name:"毛豆",math:120};
dbase.collection("sorce").insertOne(data,function (err,res){
if(err) throw err;
console.log("添加数据成功!");
client.close();
});
});
- 表中增加多条数据
// 1.创建mongoClient 对象
var MongoClient=require("mongodb").MongoClient;
//2.定义数据库的链接地址和数据库名称
var url="mongodb://localhost:27017";
var dbname="news";
MongoClient.connect(url,function (err,client){
if(err) throw err;
console.log("数据库创建完成");
var dbase=client.db(dbname);//获取db对象
//表中增加多条数据
var data=[
{name:"毛豆",math:120},
{name:"毛豆",math:120},
{name:"毛豆",math:120}
];
dbase.collection("sorce").insertMany(data),function (err,res){
if(err)throw err;
console.log("增加成功!");
client.close();
}
});
- 使用路由模块和 nodej服务器进行mongodb数据库的增删改查
var http=require("http");
var app=require("./module/express-router");
//连接数据库
var MongoClient=require("mongodb").MongoClient;
//mongodb的服务器地址
var url="mongodb://127.0.0.1:27017/news"
http.createServer(app).listen(8100,"127.0.0.1");
app.get("/login",function (req,res){
res.send("login");
});
app.get("/user",function (req,res){
res.send("user");
});
//创建集合
app.get("/createnews",(req,res)=>{
MongoClient.connect(url,{ useNewUrlParser: true },(err,result)=>{
if(err) throw err;
var resbase=result.db("news");
resbase.createCollection("news",(error,resdata)=>{
if(error) throw error;
res.send("创建成功!");
result.close();
});
});
});
//添加数据
app.get("/add",function (req,res){
MongoClient.connect(url,(err,result)=>{
if(err) throw err;
var resbase=result.db("news");
//给表news里面添加数据
resbase.collection("news").insertOne({
title:"nodejs",
age:20
},(error,data)=>{
if(error) throw error;
res.send("增加数据成功");
result.close();
});
});
});
app.get("/usermore",function (req,res){
MongoClient.connect(url,(err,result)=>{
if(err) throw err;
var resbase=result.db("news");
//给表news里面添加多条数据数据
var more=[
{
title:"nodejs",
age:20
},
{
title:"Vue",
age:20
}
]
resbase.collection("news").insertMany(more,(error,data)=>{
if(error) throw error;
res.send("增加数据成功");
result.close();
});
});
});
app.get("/delete",function (req,res){
MongoClient.connect(url,(err,result)=>{
if(err) throw err;
var resbase=result.db("news");
//删除表里一条数据
var base={age:20};
resbase.collection("news").deleteOne(base,(error,data)=>{
if(error) throw error;
res.send("删除数据成功");
result.close();
});
});
});
app.get("/deletemore",function (req,res){
MongoClient.connect(url,(err,result)=>{
if(err) throw err;
var resbase=result.db("news");
//删除表里多条数据
var base={age:20};
resbase.collection("news").deleteMany(base,(error,data)=>{
if(error) throw error;
res.send("删除多条数据成功");
result.close();
});
});
});
//排序
app.get("/paixu",function (req,res){
MongoClient.connect(url,{ useNewUrlParser: true },(err,result)=>{
if(err) throw err;
var resbase=result.db("news");
//根据表里面的数据排序 1 升序 -1 降序
var base={age:1};
resbase.collection("news").find({}).sort(base).toArray((error,data)=>{
if(error) throw error;
res.send(data.toString());
result.close();
});
});
});
// 查询分页
app.get("/page",function (req,res){
MongoClient.connect(url,{ useNewUrlParser: true },(err,result)=>{
if(err) throw err;
var resbase=result.db("news");
//数据分页
resbase.collection("news").find({}).limit(5).toArray((error,data)=>{
if(error) throw error;
res.send(data.toString());
result.close();
});
});
});
// skip(): 跳过前面两条数据,读取两条数据
//可以制作数据分页
app.get("/pageskip",function (req,res){
MongoClient.connect(url,{ useNewUrlParser: true },(err,result)=>{
if(err) throw err;
var resbase=result.db("news");
//数据分页
resbase.collection("news").find({}).skip(5).limit(5).toArray((error,data)=>{
if(error) throw error;
res.send(data.toString());
result.close();
});
});
});
//删除集合
app.get("/dropnews",function (req,res){
MongoClient.connect(url,{ useNewUrlParser: true },(err,result)=>{
if(err) throw err;
var resbase=result.db("news");
//数据分页
resbase.collection("news").drop((error,data)=>{
if(error) throw error;
res.send("删除完成");
result.close();
});
});
});
//修改数据
app.get("/update",function (req,res){
MongoClient.connect(url,{ useNewUrlParser: true },(err,result)=>{
if(err) throw err;
var resbase=result.db("news");
//数据分页
var info={age:20};
var up={$set:{name:"recat"}};
resbase.collection("news").updateOne(info,up,(error,data)=>{
if(error) throw error;
res.send("修改完成");
result.close();
});
});
});
//修改多条
app.get("/updatemore",function (req,res){
MongoClient.connect(url,{ useNewUrlParser: true },(err,result)=>{
if(err) throw err;
var resbase=result.db("news");
//数据分页
var info={age:20};
var up={$set:{name:"recat"}};
resbase.collection("news").updateMany(info,up,(error,data)=>{
if(error) throw error;
res.send("修改多条完成");
result.close();
});
});
});