共計 1875 個字符,預計需要花費 5 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這期內容當中丸趣 TV 小編將會給大家帶來有關 MySQL 中怎么存取數據,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
如果使用 MySQL 的話應該如何存取數據呢
如果使用 MySQL 話,手機的基本信息單獨是一個表,另外由于不同手機的參數信息差異很大,所以還需要一個參數表來單獨保存。
CREATETABLEIFNOTEXISTS`mobiles`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`name`VARCHAR(100)NOTNULL,`brand`VARCHAR(100)NOTNULL,PRIMARYKEY(`id`));CREATETABLEIFNOTEXISTS`mobile_params`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`mobile_id`int(10)unsignedNOTNULL,`name`varchar(100)NOTNULL,`value`varchar(100)NOTNULL,PRIMARYKEY(`id`));INSERTINTO`mobiles`(`id`,`name`,`brand`)VALUES(1, ME525 , 摩托羅拉),(2, E7 , 諾基亞 INSERTINTO`mobile_params`(`id`,`mobile_id`,`name`,`value`)VALUES(1,1, 待機時間 , 200),(2,1, 外觀設計 , 直板),(3,2, 待機時間 , 500),(4,2, 外觀設計 , 滑蓋
注:為了演示方便,沒有嚴格遵守關系型數據庫的范式設計。
如果使用 MySQL 的話應該如何存取數據呢
如果想查詢待機時間大于 100 小時,并且外觀設計是直板的手機,需要按照如下方式查詢:
SELECT*FROM`mobile_params`WHEREname= 待機時間 ANDvalue SELECT*FROM`mobile_params`WHEREname= 外觀設計 ANDvalue= 直板
注:參數表為了方便,把數值和字符串統一保存成字符串,實際使用時,MySQL 允許在字符串類型的字段上進行數值類型的查詢,只是需要進行類型轉換,多少會影響一點性能。www.yzyedu.com
兩條 SQL 的結果取交集得到想要的 MOBILE_ID,再到 mobiles 表查詢即可:
SELECT*FROM`mobiles`WHEREmobile_idIN(MOBILE_ID)
如果使用 MongoDB 的話,應該如何存取數據呢
如果使用 MongoDB 的話,雖然理論上可以采用和 MySQL 一樣的設計方案,但那樣的話就顯得無趣了,沒有發揮出 MongoDB 作為文檔型數據庫的優點,實際上使用 MongoDB 的話,和 MySQL 相比,形象一點來說,可以合二為一:
db.getCollection(mobiles).ensureIndex({params.name :1, params.value :1});db.getCollection(mobiles).insert({_id :1, name : ME525 , brand : 摩托羅拉 , params :[{ name : 待機時間 , value :200},{name : 外觀設計 , value : 直板}]});db.getCollection(mobiles).insert({_id :2, name : E7 , brand : 諾基亞 , params :[www.yzjxsp.com{ name : 待機時間 , value :500},{name : 外觀設計 , value : 滑蓋}]});
如果想查詢待機時間大于 100 小時,并且外觀設計是直板的手機,需要按照如下方式查詢:
db.getCollection(mobiles).find({params :{$all:[{$elemMatch:{ name : 待機時間 , value :{$gt:100}}},{$elemMatch:{ name : 外觀設計 , value : 直板}}]}});
注:查詢中用到的 $all,$elemMatch 等高級用法的詳細介紹請參考官方文檔中相關說明。
MySQL 需要多個表,多次查詢才能搞定的問題,MongoDB 只需要一個表,一次查詢就能搞定,對比完成,相對 MySQL 而言,MongoDB 顯得更勝一籌。
上述就是丸趣 TV 小編為大家分享的 MySQL 中怎么存取數據了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注丸趣 TV 行業資訊頻道。
向 AI 問一下細節