新聞中心
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,Web應(yīng)用程序已經(jīng)成為人們生活中不可或缺的一部分。而這些應(yīng)用程序中的數(shù)據(jù)存儲也逐漸從傳統(tǒng)的關(guān)系型數(shù)據(jù)庫逐漸轉(zhuǎn)向非關(guān)系型數(shù)據(jù)庫。ON作為當前更流行的半結(jié)構(gòu)化數(shù)據(jù)格式之一,在Web應(yīng)用程序中得到越來越廣泛的應(yīng)用。本文將為您介紹如何在數(shù)據(jù)庫中存儲和使用ON類型數(shù)據(jù),讓你的Web應(yīng)用程序更加實用和便捷。

1. 什么是ON數(shù)據(jù)
ON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,以文本形式表示且易于人類閱讀和編寫。它基于JavaScript語言的一個子集,不同于XML,它可以不必像XML一樣需要額外的標記和命名空間,而直接使用JavaScript中的類型來描述數(shù)據(jù)結(jié)構(gòu)。
ON中最常用的數(shù)據(jù)元素有對象(object)、數(shù)組(array)、字符串(string)、數(shù)字(number)、布爾值(boolean)和null值(null)。其中對象是一組無序名稱/值對的,數(shù)組是值的有序。以對象為例,一個ON對象可以表示為:
“`
{
“name”: “Lily”,
“age”: 25,
“hometown”: {
“city”: “Shangh”,
“region”: “Pudong”
},
“hobbies”: [
“Reading”,
“Traveling”,
“Cooking”
]
}
“`
在ON中,用大括號描述對象,用中括號描述數(shù)組,屬性名稱和值之間用冒號分隔,不同屬性之間用逗號分隔。
2. 數(shù)據(jù)庫中支持ON類型的存儲引擎
目前,開源數(shù)據(jù)庫PostgreSQL、MongoDB、MySQL、Oracle等都支持ON數(shù)據(jù)類型的存儲引擎。其中,PostgreSQL和MongoDB是純粹的非關(guān)系型數(shù)據(jù)庫,而MySQL和Oracle在傳統(tǒng)的關(guān)系型數(shù)據(jù)庫之上也提供了對ON類型數(shù)據(jù)的支持。
下面我們將分別介紹如何在PostgreSQL、MongoDB、MySQL和Oracle中存儲和使用ON類型數(shù)據(jù)。
3. PostgreSQL
PostgreSQL是一個功能非常強大的開源對象關(guān)系型數(shù)據(jù)庫系統(tǒng),它支持復(fù)雜查詢和數(shù)據(jù)處理的高級功能,同時也支持ON類型數(shù)據(jù)的存儲和查詢。
3.1 存儲ON數(shù)據(jù)
在PostgreSQL中,可以使用json和jsonb兩種數(shù)據(jù)類型來存儲ON類型的數(shù)據(jù)。它們之間的區(qū)別是jsonb是二進制格式的ON類型數(shù)據(jù),可以更快速地進行查詢和索引,但需要更多的存儲空間。在實際存儲時,建議使用jsonb類型。
“`
CREATE TABLE employees (
id serial PRIMARY KEY,
name varchar(50) NOT NULL,
contact jsonb NOT NULL
);
“`
在以上示例中,我們已經(jīng)創(chuàng)建了一個名為“employees”的表,該表包含一個自增長的“id”列、一個“name”列和一個名為“contact”的ON類型列。此時,我們可以將ON類型數(shù)據(jù)保存在“contact”列中。
“`
INSERT INTO employees (name, contact)
VALUES (‘Lily’, ‘{ “eml”: “l(fā)[email protected]”, “phone”: “123456” }’);
“`
3.2 查詢ON數(shù)據(jù)
在PostgreSQL中,可以使用“->”、“->>”和“#>”等操作符來查詢ON類型數(shù)據(jù)。
“->”操作符可以根據(jù)鍵值獲取ON對象中的元素,返回結(jié)果是一個ON類型的數(shù)據(jù)。
“`
SELECT contact->’eml’ AS eml FROM employees WHERE name = ‘Lily’;
“`
運行以上代碼后,將會查詢到Lily的電子郵件地址。
“->>”操作符可以根據(jù)鍵值獲取ON對象中的元素并以字符串的形式返回結(jié)果。
“`
SELECT contact->>’phone’ AS phone FROM employees WHERE name = ‘Lily’;
“`
“#>”操作符可以根據(jù)鍵路徑獲取ON對象中的元素。
“`
SELECT contact#>'{eml}’ AS eml FROM employees WHERE name = ‘Lily’;
“`
此外,PostgreSQL還支持對ON數(shù)據(jù)進行聚合查詢,比如對ON數(shù)組進行聚合查詢,查找其中的更大值、最小值、總和、平均值等等。這些聚合函數(shù)包括json_agg,json_object_agg和jsonb_agg等。
4. MongoDB
MongoDB是目前更流行的非關(guān)系型數(shù)據(jù)庫之一,它采用的是面向文檔的數(shù)據(jù)模型,數(shù)據(jù)以O(shè)N的BSON(Binary ON)格式存儲在(collections)中。
4.1 存儲ON數(shù)據(jù)
在MongoDB中,我們無需定義列或預(yù)定義架構(gòu),僅需要指定一個名稱和需要插入的文檔即可輕松創(chuàng)建一個文檔數(shù)據(jù)。
“`
db.createCollection(’employees’);
db.employees.insert({
“name”: “Lily”,
“age”: 25,
“hometown”: {
“city”: “Shangh”,
“region”: “Pudong”
},
“hobbies”: [
“Reading”,
“Traveling”,
“Cooking”
]
});
“`
在以上示例中,我們已經(jīng)創(chuàng)建了一個名為“employees”的MongoDB,并插入了一條ON類型數(shù)據(jù)。
4.2 查詢ON數(shù)據(jù)
MongoDB可以直接以O(shè)N格式查詢文檔數(shù)據(jù)。
“`
db.employees.find({
“name”: “Lily”
});
“`
以上代碼將查詢并返回所有名稱為“Lily”的文檔數(shù)據(jù)。
MongoDB還提供了一些高級查詢操作,如$in、$elemMatch、$exists、$type等操作符,可以幫助我們更加精確地查詢ON類型數(shù)據(jù)。
“`
db.employees.find({
“hobbies”: {
“$in”: [“Reading”]
}
});
“`
以上代碼將查詢并返回所有“hobbies”中包含“Reading”的文檔數(shù)據(jù)。
5. MySQL
MySQL是一種廣泛使用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在MySQL 5.7之后加入了對ON類型數(shù)據(jù)的支持。
5.1 存儲ON數(shù)據(jù)
在MySQL中,我們可以使用ON類型來定義ON類型的列,如下所示:
“`
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
contact ON NOT NULL
);
“`
在以上示例中,我們已經(jīng)創(chuàng)建了一個名為“employees”的表,該表包含一個自增長的“id”列、一個“name”列和一個名為“contact”的ON類型列。此時,我們可以將ON類型數(shù)據(jù)保存在“contact”列中。
“`
INSERT INTO employees (name, contact)
VALUES (‘Lily’, ‘{“eml”: “l(fā)[email protected]”, “phone”: “123456”}’);
“`
在以上示例中,我們已經(jīng)插入了一條ON類型的數(shù)據(jù),該數(shù)據(jù)將會保存在“contact”列中。
5.2 查詢ON數(shù)據(jù)
在MySQL中,我們可以使用ON類型的內(nèi)置函數(shù)對ON類型的數(shù)據(jù)進行查詢和操作。
“`
SELECT ON_EXTRACT(contact, ‘$.eml’) AS eml FROM employees WHERE name = ‘Lily’;
“`
在以上示例中,我們使用了ON_EXTRACT函數(shù)來查詢“contact”列中的“eml”屬性,并將查詢到的結(jié)果給定一個別名“eml”。
6. Oracle
Oracle是一種商業(yè)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在Oracle 12c之后加入了對ON類型數(shù)據(jù)的支持。
6.1 存儲ON數(shù)據(jù)
在Oracle中,我們可以使用BLOB、CLOB和VARCHAR2等數(shù)據(jù)類型來定義ON類型的列。
“`
CREATE TABLE employees (
id NUMBER NOT NULL,
name VARCHAR2(50) NOT NULL,
contact CLOB,
CONSTRNT employees_pk PRIMARY KEY (id)
);
“`
在以上示例中,我們已經(jīng)創(chuàng)建了一個名為“employees”的表,該表包含一個“id”列、一個“name”列和一個名為“contact”的CLOB類型列。此時,我們可以將ON類型數(shù)據(jù)保存在“contact”列中。
“`
INSERT INTO employees (id, name, contact)
VALUES (1, ‘Lily’, ‘{ “eml”: “l(fā)[email protected]”, “phone”: “123456” }’);
“`
在以上示例中,我們已經(jīng)插入了一條ON類型的數(shù)據(jù),該數(shù)據(jù)將會保存在“contact”列中。
6.2 查詢ON數(shù)據(jù)
在Oracle中,我們可以使用ON_VALUE函數(shù)和ON_TABLE函數(shù)來查詢和操作ON類型的數(shù)據(jù)。
“`
SELECT ON_VALUE(contact, ‘$.eml’) AS eml FROM employees WHERE name = ‘Lily’;
“`
在以上示例中,我們使用了ON_VALUE函數(shù)來查詢“contact”列中的“eml”屬性,并將查詢到的結(jié)果給定一個別名“eml”。
7.
ON是Web應(yīng)用程序中使用最廣泛的數(shù)據(jù)格式之一,它具有輕量級、易讀、易解析等優(yōu)點,因此越來越多的數(shù)據(jù)庫系統(tǒng)開始支持對ON類型數(shù)據(jù)的存儲和查詢。其中,PostgreSQL、MongoDB、MySQL和Oracle都提供了對ON類型數(shù)據(jù)的支持,大大增強了其在Web應(yīng)用程序中的應(yīng)用能力。如果您還沒有在您的Web應(yīng)用程序中嘗試使用ON類型數(shù)據(jù)進行存儲和查詢,那么快快行動起來吧!
相關(guān)問題拓展閱讀:
- ON數(shù)據(jù)格式是這樣的:
ON數(shù)據(jù)格式是這樣的:
你想要解答什么。。。
ON是一種輕量級數(shù)據(jù)交換格式。json簡單說就是js中的對象和數(shù)組,所以這兩種結(jié)構(gòu)就是對象和數(shù)組2種結(jié)構(gòu),你用的數(shù)據(jù)格式就是對象和數(shù)宏悄冊組的復(fù)合結(jié)構(gòu)。
你的示例ON數(shù)據(jù)是名/值對,其中只有一個”wegInstLt”的變量名,值是包含一個條目的數(shù)組。假設(shè)var info={“wegInstLt”:}; 要獲得”哈爾濱市自來水公司”可以這樣寫:
info.wegInstLt.wiliName
希望可以幫到你,祝你生活愉快!
MySQL 從 5.7 開始,增加了新的數(shù)據(jù)類型擾并:ON。
ON 類型的出現(xiàn),彌補了 MySQL 長期以來相比其他關(guān)系型數(shù)據(jù)庫旅李族的非標準化特性略勢,比如可以用 ON 來實現(xiàn)類似字典、數(shù)組等類型。以及之后大量針對 ON 類型字串的相關(guān)遍歷方法與函數(shù)。
比如對數(shù)組來說拆弊,簡單的遍歷路徑為 “$” 或者 “$” 來一次性遍歷所有元素。MySQL 8.0 又新增了對于數(shù)組元素的范圍遍歷,比如 “$”,表示遍歷下標為 m 到 n 的元素。
這樣告訴你吧 PHP呢 json_decode(”,true) 就可以得到這樣的數(shù)組:
Array
(
=> Array
(
=> Array
(
=> 0
=> 530
=> 03
=> 0
=> 0
=>橋戚 0
=> 1
=> 1238
=> 00
=> 哈爾濱市自來水公司
=> 10345
)
)
)
按照你頌豎說的list 我覺得你是說python語言的list么。
在python里面野消大 是 html = json.loads(html,encoding=’utf-8′)
關(guān)于json存在數(shù)據(jù)庫類型的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)建站主營:成都網(wǎng)站建設(shè)、網(wǎng)站維護、網(wǎng)站改版的網(wǎng)站建設(shè)公司,提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、成都網(wǎng)站推廣、成都網(wǎng)站優(yōu)化seo、響應(yīng)式移動網(wǎng)站開發(fā)制作等網(wǎng)站服務(wù)。
分享標題:教你如何在數(shù)據(jù)庫中存儲和使用ON類型數(shù)據(jù)(json存在數(shù)據(jù)庫類型)
文章路徑:http://fisionsoft.com.cn/article/dpgcocs.html


咨詢
建站咨詢
