《SQL必知必會(huì)》學(xué)習(xí)筆記(一)

第1課 了解SQL
概念講解:
數(shù)據(jù)庫(kù):以某種有組織的方式存儲(chǔ)的數(shù)據(jù)集合蔽挠。類似一個(gè)文件柜,知識(shí)存放數(shù)據(jù)的物理位置踏烙,它不管數(shù)據(jù)是什么网棍,也不管數(shù)據(jù)是如何組織的黔龟。(通常是一個(gè)文件或一組文件)
數(shù)據(jù)庫(kù)軟件就是數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),數(shù)據(jù)庫(kù)是通過(guò)DBMS創(chuàng)建和操縱的容器
表(table):是一種結(jié)構(gòu)化的文件滥玷,可用來(lái)存儲(chǔ)某種特定類型的數(shù)據(jù)氏身。存儲(chǔ)在表中的數(shù)據(jù)是同一類型的數(shù)據(jù)或清單。表名必須是唯一的惑畴,一般是數(shù)據(jù)庫(kù)名和表名的組合蛋欣。在一個(gè)數(shù)據(jù)庫(kù)中不能兩次使用相同的表名,但在不同的數(shù)據(jù)庫(kù)中完全可以使用相同的表名如贷。
模式(schema):可以用來(lái)描述數(shù)據(jù)庫(kù)中特定的表陷虎,也可以用來(lái)描述整個(gè)數(shù)據(jù)庫(kù)(和其中表的關(guān)系)到踏,
列(column):表中的一個(gè)字段,所有表都是由一個(gè)或多個(gè)列組成的尚猿。
數(shù)據(jù)類型(datatype):定義了列可以存儲(chǔ)哪些數(shù)據(jù)種類窝稿。每個(gè)列表都有相應(yīng)的數(shù)據(jù)類型,它限制(或允許)該列中存儲(chǔ)的數(shù)據(jù)凿掂。
行(row):表中的一個(gè)記錄伴榔,亦有成為數(shù)據(jù)庫(kù)記錄(record),可以互通缠劝,但是行才是正確的術(shù)語(yǔ)
主鍵(primary key):表中每一行都應(yīng)該有一列(或幾列)可以唯一標(biāo)識(shí)自己潮梯。沒(méi)有主鍵,更新或刪除表中特定行就極為困難惨恭,因?yàn)槟悴荒鼙WC操作只涉及相關(guān)的行,沒(méi)有傷及無(wú)辜耙旦。主鍵必須滿足:任意兩行都不具有相同的主鍵脱羡,每一行都必須具有一個(gè)主鍵值(主鍵值不允許空值null);主鍵列中的值不允許修改或更新免都;主鍵值不能重用(如果某行從表中刪除锉罐,它的主鍵不能賦予以后的新行)
子句(clause),SQL語(yǔ)句由子句構(gòu)成绕娘,有些子句是必需的脓规,有些則是可選的,一個(gè)子句通常由一個(gè)關(guān)鍵字加上所提供的數(shù)據(jù)組成险领。如from子句
如何動(dòng)手實(shí)踐:需要一個(gè)數(shù)據(jù)庫(kù)和用來(lái)測(cè)試sql語(yǔ)句的應(yīng)用系統(tǒng)侨舆。可聯(lián)系的DBMS有:MySQL(或派生的MariaDB)mysql workbench绢陌,microsoft sql server express(sql server management studio)
第2課 檢索數(shù)據(jù)
select:從一個(gè)或多個(gè)表中檢索信息挨下。必須至少給出兩條信息,想選擇什么脐湾,以及從什么地方選擇臭笆。
1、檢索單個(gè)列
輸入:select prod_name from products;(從products表中檢索一個(gè)名為prod_name的列秤掌,根據(jù)你使用的具體dbms和客戶端愁铺,你可能會(huì)看到一條信息說(shuō)明檢索了多少行,花了多長(zhǎng)時(shí)間闻鉴,如果沒(méi)有明確排序查詢結(jié)果茵乱,則返回的數(shù)據(jù)沒(méi)有特定順序。)
2椒拗、檢索多個(gè)列(在select關(guān)鍵字后給出多個(gè)列名似将,列名之間必須以逗號(hào)分割获黔,但最后一個(gè)列名后不加)
輸入:select prod_id,prod_name,prod_price from products;
3、檢索所有列(加通配符)
輸入:select * from products
如果給定一個(gè)通配符在验,則返回表中所有列玷氏,列的順序一般是表中出現(xiàn)的物理順序,但并不總是如此腋舌。
4盏触、檢索不同的值
譬如你想檢索products 表中所有產(chǎn)品供應(yīng)商的ID:
輸入:select vend_id from products; 返回到所有products 的ID
輸入:select distinct vend_id from products;只返回到不同(具有唯一性)的vend_id行
(distinct關(guān)鍵字作用于所有的列,不僅僅是跟在其后的那一列)
5块饺、限制結(jié)果
select語(yǔ)句一般返回指定表中的所有匹配行赞辩,很可能是每一行,如果想只返回第一行或者一定數(shù)量的行授艰,在不同的DBMS里實(shí)現(xiàn)方式不一樣
一辨嗽、SQL sever中,使用top關(guān)鍵字完成
輸入:select top 5 prod_name from products;(只檢索前5行)
二淮腾、DB2
輸入:select prod_name from products FETCH FIRST 5 ROWS ONLY;(只取前五行)
三糟需、Oracle,需要基于rownum(行計(jì)數(shù)器)來(lái)計(jì)算行
輸入:select prod_name from products where rownum <=5;
四、如果你使用MySQL, MariaDB,PostgreSQL 或者SQLite,需要使用limit子句
輸入:select prod_name from products limit 5;(不返回超過(guò)5行的數(shù)據(jù))
輸入:select prod_name from products limit 5 offset 5;(返回從第5行起的第5行數(shù)據(jù)谷朝,第一個(gè)數(shù)字是檢索的行數(shù)洲押,第2個(gè)數(shù)字是指從哪兒開(kāi)始,第一個(gè)檢索的行是第0行圆凰,而不是第1行)
6杈帐、使用注釋:
一、注釋使用--(兩個(gè)連字符)嵌在行內(nèi)专钉,--之后的我呢本就是注釋
二挑童、行內(nèi)注釋,在一行的而開(kāi)始處使用#驶沼,這一整行都將作為注釋
三炮沐、多行注釋,可以在腳本的任何位置停止或開(kāi)始回怜,注釋從/開(kāi)始大年,到/結(jié)束,兩個(gè)之間任何內(nèi)容都是注釋這種方式常用于把代碼注釋掉

第3課 排序檢索數(shù)據(jù)
一玉雾、select 語(yǔ)句中的order by子句翔试,根據(jù)需要排序檢索出的數(shù)據(jù)。
(如果不排序复旬,數(shù)據(jù)一般將以它在表中出現(xiàn)的順序顯示垦缅,可能是數(shù)據(jù)最初添加到表中的順序,但如果數(shù)據(jù)隨后進(jìn)行過(guò)更新或刪除驹碍,那么這個(gè)順序?qū)?huì)受到DBMS重用回收存儲(chǔ)空間的方式的影響)
order by子句取一個(gè)或多個(gè)列的名字壁涎,對(duì)輸出進(jìn)行排序凡恍。
輸入:select prod_name from products order by prod_name;(對(duì)prod_name列以字母順序排序數(shù)據(jù))
order by子句應(yīng)該保證它是select語(yǔ)句中國(guó)的最后一條子句。如果不是最后的子句怔球,將會(huì)出錯(cuò)
二嚼酝、按多個(gè)列排序(只需指定這些列名,列名之間用逗號(hào)分開(kāi)即可竟坛,就像選擇多個(gè)列時(shí)那樣)
輸入:select prod_id,prod_price,prod_name from products order by prod_price,prod_name;(首先按價(jià)格闽巩,然后按名字排序)
三、按列的位置排序
輸入:select prod_id,prod_price,prod_name from products order by 2,3;
order by2表示按select 清單中的第二列prod_price 進(jìn)行排序担汤,order by2涎跨,3表示先按prod_price,再按prod_name進(jìn)行排序。
劣勢(shì):不能明確給出列名有可能造成錯(cuò)用列名崭歧,其次隅很,再對(duì)select清單進(jìn)行更改時(shí),容易錯(cuò)誤地對(duì)數(shù)據(jù)進(jìn)行排序(忘記對(duì)order by子句進(jìn)行相應(yīng)的改動(dòng))率碾,最后如果進(jìn)行排序的列不再select清單中外构,就不能用這項(xiàng)技術(shù)
四、指定排序方向(升序從A到Z是默認(rèn)的排序順序)播掷,降序排列,必須制定desc關(guān)鍵字
輸入:select prod_id, prod_price,prod_name from products order by prod_price desc;
如果打算按多個(gè)列排序
輸入:select prod_id, prod_price,prod_name from products order by prod_price desc撼班,prod_name;
desc關(guān)鍵字只應(yīng)用到直接位于其前面的列名歧匈,在上例中,只對(duì)prod_price列指定desc砰嘁,對(duì)prod_name列不指定件炉,因此,prod_price列以降序排列矮湘,而prod_name列(在每個(gè)價(jià)格內(nèi))仍然按標(biāo)準(zhǔn)的升序排序斟冕。如果想在多個(gè)列上進(jìn)行降序排序,必須對(duì)每一列指定desc
asc是升序排列缅阳,但一般作用不大磕蛇,因?yàn)槟J(rèn)是升序排列
第4課 過(guò)濾數(shù)據(jù)(where字句指定搜索條件)
數(shù)據(jù)可中一般包含大量的數(shù)據(jù),很少需要檢索表中的所有行十办,只檢索所需數(shù)據(jù)需要指定搜索條件(search criteria)秀撇,搜索條件也稱為過(guò)濾條件(filter condition)。
一向族、where字句在表明(from子句)之后給出
輸入:select prod_name,prod_price from products where prod_price = 3.49;這條語(yǔ)句從products表中檢索兩個(gè)列呵燕,但不返回所有行,只返回prod_price值為3.49的行件相,這條命令使用了簡(jiǎn)單的相等檢驗(yàn)再扭,檢查這一列的值是否為指定值氧苍。
注意:在同時(shí)使用order by和where字句時(shí),應(yīng)該讓order by 位于where之后泛范,不然會(huì)出現(xiàn)錯(cuò)誤让虐。
二、where子句操作符
= 等于 <> 不等于 敦跌!=不等于 <小于 <= 小于等于 澄干!<不小于 >大于 >=大于! >不大于 between在指定兩個(gè)值之間 is null 為null值
三、檢查單個(gè)值
輸入:select prod_name,prod_price from products where prod_price <10;(檢索所有價(jià)格小于等于10美元的產(chǎn)品)
四柠傍、不匹配檢查
輸入:select vend_id,prod_name from products where vend_id<> ‘dll01’麸俘;(列出所有不是供應(yīng)商dll01制造的產(chǎn)品)
如何使用引號(hào): 單引號(hào)用來(lái)限定字符串,如果將值與字符串類型的列進(jìn)行比較惧笛,就需要限定引號(hào)从媚。用來(lái)與數(shù)值列進(jìn)行比較的值不用引號(hào)
五、范圍值檢查
between操作符可用來(lái)檢索價(jià)格在5美元和10美元之間的所有產(chǎn)品患整,或在指定的開(kāi)始日期和結(jié)束日期之間的所有日期拜效。
輸入:select prod_name,prod_price from products where prod_price between 5 and 10;
六各谚、空值檢查
在創(chuàng)建表時(shí)紧憾,表設(shè)計(jì)人員可以指定其中的列能否不包含值。在一個(gè)列不包含值時(shí)昌渤,稱其包含空值null赴穗。它與字段包含0,空字符串或僅僅包含空格不同膀息。
輸入:select prod_name from products where prod_price is null;(返回所有沒(méi)有價(jià)格的產(chǎn)品)
通過(guò)過(guò)濾選擇不包含指定值的所有行時(shí)般眉,因?yàn)閚ull值比較特殊,所以進(jìn)行匹配過(guò)濾或非匹配過(guò)濾時(shí)潜支,不會(huì)返回這些結(jié)果甸赃。

第5課 高級(jí)數(shù)據(jù)過(guò)濾
為里哦進(jìn)行更強(qiáng)的過(guò)濾控制,sql允許給出多個(gè)where子句冗酿。這些子句有兩種使用方式埠对,即以and 子句或or子句的方式使用。操作符(operator)用來(lái)聯(lián)結(jié)或改變where子句中的子句的關(guān)鍵字已烤,也稱為邏輯操作符(logical operator)
一鸠窗、and操作符(通過(guò)不只一個(gè)列進(jìn)行過(guò)濾時(shí)使用,返回到滿足多個(gè)給定條件的行,是且的關(guān)系)
輸入:select prod_id,prod_price,prod_name from products where vend_id ='dll01' and prod_price <=4;
二胯究、or操作符(where子句中使用的關(guān)鍵字稍计,用來(lái)表示檢索匹配任一給定條件的行)
輸入:select prod_id,prod_price,prod_name from products where vend_id ='dll01' or vend_id ='brs01' ;
三、求值順序(使用圓括號(hào)對(duì)操作符進(jìn)行明確分組,圓括號(hào)具有比and 或or操作符更搞的優(yōu)先級(jí)裕循,在任何時(shí)候使用具有and或者or操作符的where子句臣嚣,都應(yīng)該使用括號(hào)明確地分組操作符净刮,不要過(guò)分依賴默認(rèn)求值順序,即使它確實(shí)如你希望的那樣硅则,使用圓括號(hào)沒(méi)有什么壞處淹父,能消除歧義)
輸入:select prod_name,prod_price from products where (vend_id='dll01' or vend_id='brs01') and prod_price>=10;
四、In操作符用來(lái)指定條件范圍怎虫,范圍中的每個(gè)條件都可以進(jìn)行匹配暑认,在where子句中用來(lái)指定要匹配值的清單的關(guān)鍵字,功能與or相當(dāng)
輸入:select prod_id,prod_price,prod_name from products where vend_id in('dll01' 大审,'brs01' )order by prod_name;
(為什么要使用in操作符蘸际,在有很多合法選項(xiàng)時(shí),in操作符的語(yǔ)法更清楚徒扶,更直觀粮彤,求值順序更易管理,比or操作符執(zhí)行的更塊姜骡。并且可以包含其它的select語(yǔ)句)
五导坟、not操作符(where子句中的not操作符有且只有一個(gè)功能,就是否定其后所跟的任何條件圈澈。因?yàn)閚ot從不單獨(dú)使用惫周,用在過(guò)濾的列前,而不僅時(shí)在其后
輸入:select prod _name from products where not vend_id ='Dll01' order by prod_name;
也可以用<>操作符來(lái)完成
輸入:select prod _name from products where not vend_id<>‘Dll01' order by prod_name;

第6課 用通配符進(jìn)行過(guò)濾
like操作符
利用通配符可以創(chuàng)建比較特定數(shù)據(jù)的搜索模式康栈。假如你像找出名稱包含bean bag的所有產(chǎn)品闯两,可以構(gòu)造出一個(gè)通配符的搜索模式,找出在產(chǎn)品名的任何位置出現(xiàn)bean bag的產(chǎn)品
通配符(wildcard)用來(lái)匹配值的一部分的特殊字符谅将。只能用于文本字段(字符串),非文本的數(shù)字類型的字段不能使用通配符搜索重慢。通配符可在搜索模式中的任意位置使用饥臂,并且可以使用多個(gè)通配符。
搜索模式(search pattern)由字面值似踱、通配符或兩者組合構(gòu)成的搜索條件隅熙。
謂詞(predicate)當(dāng)like是謂詞時(shí)就不時(shí)操作符。
like操作符指示DBMS核芽,后跟的搜索模式利用通配符匹配而不是簡(jiǎn)單的相等匹配進(jìn)行比較
一囚戚、百分號(hào)(%)通配符
%表示任何字符出現(xiàn)任意次數(shù)
輸入:select prod_id,prod_name from products where prod_name like ‘fish%‘;(找出所有以詞fish起頭的產(chǎn)品轧简,接受fish之后的任意字符驰坊,不管它由多少字符)
輸入:select prod_id,prod_name from products where prod_name like ’%bean bag%‘;(表示匹配任何位置上包含bean bag的值,不論它之前或是之后出現(xiàn)什么字符)
輸入:select prod_name from products where prod_name like 'F%y';(通配符也可出現(xiàn)在中間哮独,雖然不太有用拳芙,根據(jù)部分信息查找電子郵件中用到的比較多)
此外察藐,除了能匹配一個(gè)或多個(gè)字符外,%還能匹配0個(gè)字符舟扎。%代表搜索模式中給定位置的0個(gè)分飞、1個(gè)或多個(gè)字符。注意睹限,通配符%看起來(lái)時(shí)可以匹配任何東西譬猫,但有個(gè)例外,這就是null子句羡疗,where prod_name like '%' 不會(huì)匹配產(chǎn)品名稱為null的行
二染服、下劃線()通配符。與%的用戶一樣顺囊,但它只匹配單個(gè)字符肌索,而不是多個(gè)字符
輸入:select prod_id,prod_name from products where prod_name like ‘
_ inch teddy bear‘;(_是代表兩個(gè)字符特碳, 只能代表1個(gè)字符)
三诚亚、方括號(hào)([])通配符,用來(lái)指定一個(gè)字符集午乓,它必須匹配指定位置(通配符的位置)的一個(gè)字符
輸入:select cust_contact from customers where cust_contact like '[JM]%' order by cust_contact;(找出所有名字以J或M起頭的聯(lián)系人站宗,匹配方括號(hào)中的任意一個(gè)字符,它也只能匹配單個(gè)字符益愈,因此梢灭,任何多于一個(gè)字符的名字都不匹配。此通配符可以用前綴字符^脫字號(hào)來(lái)否定)蒸其;
輸入:select cust_contact from customers where cust_contact like '[ ^JM]%' order by cust_contact;(匹配以J和M以外的任意字符起頭的任意聯(lián)系人名敏释,這個(gè)也可以使用not操作符得出類似結(jié)果,^的好處是使用多個(gè)where子句時(shí)可以簡(jiǎn)化語(yǔ)法)摸袁;
輸入:select cust_contact from customers where not cust_contact like '[ ^JM]%' order by cust_contact钥顽;
通配符的技巧:不要過(guò)多使用通配符,如果其它操作符能達(dá)到相同的目的靠汁,應(yīng)該使用其它操作符蜂大;在確實(shí)需要使用通配符時(shí),也盡量不要把它們用在搜索模式的開(kāi)始處蝶怔,尤其要注意通配符的位置奶浦。
第7課 創(chuàng)建計(jì)算字段
第8課 使用函數(shù)處理數(shù)據(jù)
第9課 匯總數(shù)據(jù)
第10課 分組數(shù)據(jù)
第11課 使用子查詢
第12課 聯(lián)結(jié)表
第13課 創(chuàng)建高級(jí)聯(lián)結(jié)
第14課 組合查詢
第15課 插入數(shù)據(jù)
第16課 更新和刪除數(shù)據(jù)
第17課 創(chuàng)建和操縱表
第18課 使用視圖
第19課 使用存儲(chǔ)過(guò)程
第20課 管理事務(wù)處理
第21課 使用游標(biāo)
第22課 高級(jí)sql特性

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市踢星,隨后出現(xiàn)的幾起案子澳叉,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耳高,死亡現(xiàn)場(chǎng)離奇詭異扎瓶,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)泌枪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門概荷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人碌燕,你說(shuō)我怎么就攤上這事误证。” “怎么了修壕?”我有些...
    開(kāi)封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵愈捅,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我慈鸠,道長(zhǎng)蓝谨,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任青团,我火速辦了婚禮譬巫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘督笆。我一直安慰自己芦昔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布娃肿。 她就那樣靜靜地躺著咕缎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪料扰。 梳的紋絲不亂的頭發(fā)上凭豪,一...
    開(kāi)封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音晒杈,去河邊找鬼墅诡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛桐智,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播烟馅,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼说庭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了郑趁?” 一聲冷哼從身側(cè)響起刊驴,我...
    開(kāi)封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后捆憎,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體舅柜,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年躲惰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了致份。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡础拨,死狀恐怖氮块,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情诡宗,我是刑警寧澤滔蝉,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站塔沃,受9級(jí)特大地震影響蝠引,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蛀柴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一螃概、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧名扛,春花似錦谅年、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至弄企,卻和暖如春超燃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拘领。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工意乓, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人约素。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓届良,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親圣猎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子士葫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容