溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySQL與MongoDB的操作命令對比以及區(qū)別是怎樣的

發(fā)布時間:2021-09-29 11:04:52 來源:億速云 閱讀:155 作者:柒染 欄目:數(shù)據(jù)庫

本篇文章為大家展示了MySQLMongoDB的操作命令對比以及區(qū)別是怎樣的,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

  MySQL與MongoDB都是開源的常用數(shù)據(jù)庫,但是MySQL是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,MongoDB則是非關(guān)系型數(shù)據(jù)庫,也叫文檔型數(shù)據(jù)庫,是一種NoSQL的數(shù)據(jù)庫。它們各有各的優(yōu)點,關(guān)鍵是看用在什么地方。所以我們所熟知的那些SQL(全稱Structured Query Language)語句就不適用于MongoDB了,因為SQL語句是關(guān)系型數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。

  以我們公司項目為例,在早期的項目中,都在使用關(guān)系型數(shù)據(jù)庫,用過SQLServer,Oracle,DB2,后來全部轉(zhuǎn)向Mysql,原因很簡單:Mysql在性能不錯的情況下,有著開源優(yōu)勢。Mysql的事務(wù)性與高性能是我們主要考慮的。后來,由于項目要用到用戶系統(tǒng),即會有大量的用戶數(shù)據(jù)進行交互--海量存儲,Mysql的讀寫速度會有一點瓶頸,于是我們就想到了最近發(fā)展很強勢的Nosql。在Nosql早期的memcache的發(fā)展下,又出現(xiàn)了很多非關(guān)系型數(shù)據(jù)庫,比如redis,mongodb。經(jīng)過一段時間的測試,redis與mongodb的讀寫速度確實比Mysql有著很明顯的優(yōu)勢。mongodb的寫入速度大約2.5W/次每秒。 mongodb以BSON結(jié)構(gòu)(二進制)進行存儲,對海量數(shù)據(jù)存儲有著很明顯的優(yōu)勢。

  下面是Mongodb與Mysql的操作命令的對比。

  服務(wù)器守護進程mysqld/mongod;

  客戶端工具mysql/mongo;

  邏輯備份工具mysqldump/mongodump;

  邏輯還原工具mysql/mongorestore;

  數(shù)據(jù)導(dǎo)出工具mysqldump/mongoexport;

  數(shù)據(jù)導(dǎo)入工具source/mongoimport;

  新建用戶并授權(quán)grant all on *.* to username@'localhost' identified by 'passwd';db.addUser("user","psw") db.auth("user","psw");

  顯示庫列表show databases;show dbs;

  進去庫use dbname;use dbname;

  顯示表列表show tables;show collections;

  查詢主從狀態(tài)show slave status;rs.status;

  創(chuàng)建庫create database name;無需單獨創(chuàng)建,直接use進去;

  創(chuàng)建表create table tname(id int);無需單獨創(chuàng)建,直接插入數(shù)據(jù);

  刪除表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/});

  獲取表記錄數(shù)select count(id) from tname;db.tname.count();

  獲取有條件的記錄數(shù)select count(id) from tnamewhere id=2;db.tname.find({id:2}).count();

  查詢時去掉重復(fù)值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'}) 錯誤。

上述內(nèi)容就是MySQL與MongoDB的操作命令對比以及區(qū)別是怎樣的,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI