MySQL與MongoDB的操作對比,以及區別

來源:互聯網
上載者:User

標籤:

MySQL與MongoDB都是開源的常用資料庫,但是MySQL是傳統的關係型資料庫,MongoDB則是非關係型資料庫,也叫文檔型資料庫,是一種NoSQL的資料庫。它們各有各的優點,關鍵是看用在什麼地方。所以我們所熟知的那些SQL(全稱Structured Query Language)語句就不適用於MongoDB了,因為SQL語句是關係型資料庫的標準語言。

 

    以我們公司項目為例,在早期的項目中,都在使用關係型資料庫,用過SQLServer,Oracle,DB2,後來全部轉向Mysql,原因很簡單:Mysql在效能不錯的情況下,有著開源優勢。Mysql的事務性與高效能是我們主要考慮的。後來,由於項目要用到使用者系統,即會有大量的使用者資料進行互動--海量儲存,Mysql的讀寫速度會有一點瓶頸,於是我們就想到了最近發展很強勢的Nosql。在Nosql早期的memcache的發展下,又出現了很多非關係型資料庫,比如redis,mongodb。經過一段時間的測試,redis與mongodb的讀寫速度確實比Mysql有著很明顯的優勢。mongodb的寫入速度大約2.5W/次每秒。     mongodb以BSON結構(二進位)進行儲存,對海量資料存放區有著很明顯的優勢。下面是Mongodb與Mysql的操作命令的對比。

作用

MySQL

MongoDB

 

 

 

伺服器守護進程

mysqld

mongod

用戶端工具

mysql

mongo

邏輯備份工具

mysqldump

mongodump

邏輯還原工具

mysql

mongorestore

資料匯出工具

mysqldump

mongoexport

資料匯入工具

source

mongoimport

 

 

 

建立使用者並授權

grant all on *.*
to [email protected]‘localhost‘
 identified by ‘passwd‘;

db.addUser("user","psw")
db.auth("user","psw")

顯示庫列表

show databases;

show dbs

進去庫

use dbname;

use dbname

顯示表列表

show tables;

show collections

查詢主從狀態

show slave status;

rs.status

建立庫

create database name;

無需單獨建立,直接use進去

建立表

create table tname(id int);

無需單獨建立,直接插入資料

刪除表

drop table tname;

db.tname.drop()

刪除庫

drop database dbname;

首先進去該庫,db.dropDatabase()

 

 

 

插入記錄

insert into tname(id) value(2);

db.tname.insert({id:2})

刪除記錄

delete from tname where id=2;

db.tname.remove({id:2})

修改/更新記錄

update tname set id=3
where id=2;

db.tname.update({id:2},
{$set:{id:3}},false,true)

 

 

 

查詢所有記錄

select * from tname;

db.tname.find()

查詢所有列

select id from tname;

db.tname.find({},{id:1})

條件查詢

select * from tname where id=2;

db.tname.find({id:2})

條件查詢

select * from tname where id < 2;

db.tname.find({id:{$lt:2}})

條件查詢

select * from tname where id >=2;

db.tname.find({id:{$gte:2}})

條件查詢

select * from tname where id=2
and name=‘steve‘;

db.tname.find({id:2,
name:‘steve‘})

條件查詢

select * from tname where id=2
or name=‘steve‘;

db.tname.find($or:[{id:2},
{name:‘steve‘}])

條件查詢

select * from tname limit 1;

db.tname.findOne()

 

 

 

模糊查詢

select * from tname where name
like "%ste%";

db.tname.find({name:/ste/})

模糊查詢

select * from tname where name
like "ste%";

db.tname.find({name:/^ste/})

 

 

 

擷取表記錄數

select count(id) from tname;

db.tname.count()

擷取有條件
的記錄數

select count(id) from tname
where id=2;

db.tname.find({id:2}).count()

查詢時去掉
重複值

select distinct(last_name)
from tname;

db.tname.distinct(‘last_name‘)

 

 

 

正排序查詢

select *from tname order by id;

db.tname.find().sort({id:1})

逆排序查詢

select *from tname
order by id desc;

db.tname.find().sort({id:-1})

 

 

 

取儲存路徑

explain select * from tname
where id=3;

db.tname.find({id=3}).explain()

特別要注意的是:mongodb插入多個欄位文法> db.user.insert({id:1,name:‘steve‘,sex:‘male‘})  正確> db.user.insert({id:2},{name:‘bear‘},{sex:‘female‘})  錯誤

MySQL與MongoDB的操作對比,以及區別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.