數據庫及其應用課件:結構查詢語言SQL_第1頁
數據庫及其應用課件:結構查詢語言SQL_第2頁
數據庫及其應用課件:結構查詢語言SQL_第3頁
數據庫及其應用課件:結構查詢語言SQL_第4頁
數據庫及其應用課件:結構查詢語言SQL_第5頁
已閱讀5頁,還剩82頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

結構化查詢語言(SQL)本章重點是應用SQL語言創建數據庫、定義表結構、輸入、修改、查詢、刪除數據等操作,以及連接查詢、嵌套查詢等多種查詢技術。

一是SQL語言與關系代數的關系,應該從關系代數的理論上來理解SQL語言的工作原理;二是通過上機實驗了解和驗證SQL的應用實例,熟練掌握SQL的各種功能。本章的實驗環境是MySQL數據庫系統。

2

第一節SQL語言概述

SQL是一種非過程化的語言,它與通常的高級語言不同,使用SQL時,只要說明做什么,不需要說明怎么做,具體的操作全部由DBMS自動完成。例如,要查詢所有女同學的姓名,只要寫出SQL語句:

SELECT姓名

FROM學生

WHERE性別=‘女’

3SQL可劃分為三個組成部分:

數據定義語言(DDL):在數據庫系統中,數據庫、表、視圖、索引等都是對象,用于定義這些對象的SQL語句稱為DDL。數據處理語言(DML):用于插入、修改、刪除和查詢數據的SQL語句稱為DML。數據控制語言(DCL):用于實現數據完整性、安全性、一致性等控制的SQL語句稱為DCL。MySQL數據庫系統簡介主要特點:跨平臺Windows、UNIX、Linux和MacOS

多用戶、多線程的數據庫服務器支持大型數據庫多種編程語言接口開放源代碼價格優勢4第二節Mysql的運行準備在DOS命令行窗口輸入命令行執行操作,

簡單、高效、快捷地操作數據庫;在圖形化界面中通過菜單、選項、輸入命令的參數,由圖形化界面軟件生成命令并執行從學習SQL語言的目的考慮選擇第一種方式,在Windows平臺的命令行窗口輸入和執行SQL語句。5第二節Mysql的運行準備使用MySQL數據庫需要兩個步驟:啟動MySQL服務器。連接(登錄)MySQL服務器。6一、利用Windows服務管理器

啟動MySQL服務器圖4.1Windows服務窗口啟動MySQL服務器二、連接和斷開MySQL服務器方法一在“開始”菜單中搜索到“MySQL8.0CommandLineClient”命令,單擊即可打開MySQL客戶端命令窗口,輸入正確的密碼,按回車鍵,若出現mysql>提示符,則表示已正確連接(登錄)MySQL服務器。8方法1:在“開始”菜單中搜索單擊“MySQL8.0CommandLineClient”命令,打開MySQL客戶端命令窗口,輸入正確的密碼,按回車鍵,出現mysql>提示符,連接(登錄)MySQL服務器。9方法2在Windows的運行窗口

輸入

“mysql-uroot-p”命令”命令1、MySQL安裝時在創建的bin目錄下存放多個MySQL的應用程序,這些程序運行時,需要給出絕對路徑。2、設置Windows的環境變量Path為C:\ProgramFiles\MySQL\MySQLServer8.0\bin

3、在鍵盤上同時按下【Windows旗幟圖標+R】,彈出運行窗口,在【打開(O)】的輸入框中鍵入命令:mysql-uroot-p,如圖4.4所示。101、修改Windows的環境變量Path

11圖4.3設置環境變量窗口2、打開Windows的運行窗口

輸入

“mysql-uroot-p”命令”命令在鍵盤上同時按下【Windows旗幟圖標+R】,彈出運行窗口,在【打開(O)】的輸入框中鍵入命令:mysqluroot-p

12打開MySQL客戶端命令窗口13

MySQL命令行客戶端窗口輸入SQL語句第三節創建數據庫SQL語句格式:CREATEDATABASE<數據庫名>;例4.1創建一個名稱為MYTEST數據庫。14二、選擇數據庫

每個用戶每次只能對一個數據庫進行操作,該數據庫稱為當前數據庫。

15

SQL語句格式:USE<數據庫名>;例4.2選擇MYTEST為當前數據庫。

三、顯示數據庫16SQL語句格式:SHOWDATABASES;

例4.3查看創建的

數據庫名稱。

四、刪除數據庫17SQL語句格式:DROPDATABASE<數據庫名>;

例4.4刪除MYTEST數據庫。

第四節創建表(案例)

盛達公司數據庫的10個關系模式如下:商品(商品編碼,品名,顏色,花型,規格,庫存數量,最高庫存,最低庫存,參考價格)供應商(廠商編號,廠商名稱,聯系人,地址,電話號碼)客戶(客戶編號,客戶名稱,聯系人,地址,電話號碼)職工(職工號,姓名,性別,出生年月,職務,工資,身份證號)入庫單(入庫單號,廠商編號,送貨日期,來單編號,職工號)入庫明細(入庫單號,商品編碼,進價,入庫數量)訂單(訂單號,簽單日期,客戶編號,送貨地址,收貨人,職工號)訂單明細(訂單號,商品編碼,單價,訂購數量)出庫單(出庫單號,發貨日期,訂單號,送貨地址,收貨人,職工號)出庫明細(出庫單號,商品編碼,發貨數量)18一、創建表(CREATETABLE)SQL語句基本格式:CREATETABLE<表名>(<字段名1><數據類型>,<字段名2><數據類型>,…,<字段名n><數據類型>,PRIMARYKEY(<主鍵>),FOREIGNKEY(<外鍵>)REFERENCES表名(<外鍵>));191、常用的數據類型數據類型類型名稱說

明SMALLINT短整型數有符號數(-32768~32767),無符號數(0~65535)INT(INTEGER)整型數有符號數(-2147483648~2147483647),無符號數(0~4294967295)DEC(M,D)(DECIMAL)精準數值M是數值的全部位數(不含小數點),D則是小數的位數FLOAT單精度浮點數科學計數法,例如s=1.5×1011,稱1.5為尾數(有效數字),11是指數,記作1.5E11。單精度浮點數的范圍:+(-)3.402823466E+38DOUBLE雙精度浮點數雙精度浮點數的范圍:+(-)1.7976931348623157E+308,+(-)2.2250738585072014E-308

CHAR(N)定長字符串0-255字節VARCHAR變長字符串0-65535字節TEXT長文本數據0-65535字節DATE日期YYYY-MM-DDTIME時間HH:MM:SSDATETIME日期時間YYYY-MM-DDHH:MM:SS202、域完整性約束定義

域完整性約束是對屬性值有效性的約束,包括在關系模式定義中規定的屬性類型、寬度、小數位,屬性是否可以取NULL值、缺省值(DEFAULT)、唯一值(UNIQUE),以及基于屬性的域檢查子句(CHECK)等。213、主鍵子句(PRIMARYKEY)主鍵子句PRIMARYKEY定義主鍵和實體完整性,約束關系的主鍵不允許為空值(NULL)。例4.5創建職工表,定義實體完整性定義。22例4.6創建客戶表23例4.7創建商品表244.外鍵子句(FOREIGNKEY)外鍵子句FOREIGNKEY定義外鍵和參照完整性約束。約束外鍵的值必須是另一個關系中主鍵的有效值或空值。25刪除約束短語:ONDELETERESTRICT刪除約束ONDELETECASCADE級聯刪除ONDELETESETNULL刪除置空ONDELETENOACTION刪除約束更新約束短語:ONUPDATERESTRICT更新約束

ONUPDATECASCADE級聯更新ONUPDATESETNULL更新置空ONUPDATENOACTION更新約束

例4.8創建訂單表26例4.9創建訂單明細表27創建表順序說明

創建表的順序是先創建被參照表,再創建參照表,即“先父后子”。例如,先創建客戶和職工表,再創建訂單表,因為客戶和職工表是訂單的“父表”;創建商品和訂單表之后,才能創建訂單明細表。

如果要刪除已經建立的表時,則刪除的順序與創建表的順序正相反,即“先子后父”。28二、查看表的結構信息(1)DESCRIBE<表名>;或者DESC<表名>;

DESC訂單;29二、查看表的結構信息(2)SHOWCREATETABLE<表名>[\G]

302、MySQL中查看表名稱SHOWTABLES;31三、修改表結構表中增加新字段,所有元組在這個新字段上都將賦值NULL。語句格式是:

ALTERTABLE<表名>ADD<列名><數據類型>;

例4.13在職工表中添加“身份證號”字段,設定字段值是唯一的,并顯示新增字段。ALTERTABLE職工ADD身份證號CHAR(18)UNIQUE;DESC職工;32332、刪除字段ALTERTABLE<表名>DROP<列名>;

例4.14在訂單表中增加一個聯系電話字段,然后再

刪除這個字段。ALTERTABLE訂單ADD聯系電話CHAR(11);DESC訂單;

ALTERTABLE訂單DROP聯系電話; DESC訂單;34例4.14的執行結果353、修改字段的數據類型

ALTERTABLE<表名>MODIFYCOLUMN<列名><數據類型>;例4.15修改客戶表“電話號碼”字段的長度為CHAR(11),并顯示客戶表的結構信息。ALTERTABLE客戶MODIFYCOLUMN電話號碼CHAR(11);DESC客戶;

36例4.15的圖37四、刪除表DROPTABLE<表名>;例4.16在盛達數據庫中,已經創建了客戶、職工、商品、訂單和訂單明細、供應商、入庫單、入庫明細、出庫單和出庫明細10個表,并且定義了參照完整性。如果要刪除訂單表,則必須先刪除訂單明細表,否則將違反參照完整性約束,系統拒絕執行該刪除操作。DROPTABLE訂單明細;DROPTABLE訂單;DROPTABLE客戶;38五、創建索引關鍵字地址指針10221210462124212234301254021339學

號姓

名性別出生年月系編號1022田平平女08/05/19801012124郭黎明男03/04/19811024021何明慧女04/12/19821041223姜明明男12/05/19801013012何漓江男10/05/19791032104康紀平女03/04/1981102索引表基本表創建索引的SQL語句SQL語句格式:CREATE[UNIQUE]<索引名稱>ON<表名>(<字段名1>,<字段名2>,……);例4.18

在職工表的身份證號字段上創建唯一索引,索引名稱為SFZNO。在職工表的身份證號字段上創建唯一索引,索引名稱為SFZNO。語句格式如下:在職工表的身份證號字段上創建唯一索引,索引名稱為SFZNO。語句格式如下:式如下:CREATEUNIQUEINDEXSFZNOON職工(身份證號);40六、刪除索引1、ALTERTABLE<表名>DROPINDEX<索引名>;2、DROPINDEX<索引名>ON<表名>;例4.19刪除職工表上創建的索引SFZNO。ALTERTABLE職工DROPINDEXSFZNO;或者DROPINDEXSFZNOON職工;41第五節數據操作

一、插入數據第一種格式是指定字段名和要插入的值INSERTINTO<表名>(字段名列表)VALUES(<值1>,<值2>,.....,<值N>);INSERTINTO職工(職工號,姓名,性別,出生年月,職務,工資,身份證號)VALUES('E1','李樹生','男','1981-3-12','經理',8800.00,);SELECT*FROM職工;42第二種插入數據的格式將VALUES子句換成一個查詢語句INSERTINTO<表名>(<列名表>)SELECT<列名表>FROM<表名>WHERE<條件表達式>(1)創建一個名單表,SQL語句如下:

CREATETABLE名單(姓名CHAR(8),性別CHAR(2));(2)將職工表中姓名和性別兩列數據拷貝到名單表中。在命令行窗口輸入下列語句:INSERTINTO名單(姓名,性別)SELECT姓名,性別FROM職工;(3)輸入下列語句查看操作的結果,如圖4.23所示。

SELECT*FROM名單;43一個查詢語句第三種插入數據的格式INSERTINTO<表名>(<列名表>)VALUES(<值1>,<值2>,.....,<值N>),(<值1>,<值2>,.....,<值N>),……,(<值1>,<值2>,.....,<值N>);INSERT

INTO職工(職工號,姓名,性別)

VALUES('E3','韓康健','男'),('E4','何乃云','女'),('E5','王建南','男');SELECT*FROM職工;MySQL的擴展功能,在表中一次插入多行數據44一個查詢語句45第二種格式是將VALUES子句換成一個查詢語句

SQL的語法格式:

INSERTINTO<表名>(<列名表>)例4.23執行的結果如圖4.24所示二、更新數據MySQL數據更新語句的格式是:UPDATE<表名>SET<列名1>=<新值1>,<列名2>=<新值2>,……,<列名n>=<新值n>WHERE<條件表達式>;UPDATE職工SET出生年月='1980-10-18',職務='銷售員’,工資=4500,身份證號=WHERE職工號='E2';SELECT*FROM職工WHERE職工號='E2';46例4.25將訂單明細表中訂單號為“D2”、商品編碼為“P2”的訂購數量增加10%.UPDATE訂單明細SET訂購數量=訂購數量*1.1WHERE訂單號='D2'

AND商品編碼='P2';47三、刪除數據DELETEFROM<表名>WHERE<條件表達式>DELETEFROM職工WHERE職工號='E3';

SELECT*FROM職工;48第六節SQL查詢語句、SQL查詢語句的基本格式SELECT<列名表>包括字段名、函數、表達式等FROM表名

數據來源(表名)、單表或多表WHERE<條件表達式>;選擇行的條件表達式491、SELECT子句的參數1)列名表SELECT姓名,工資

FROM職工WHERE工資>=5000;2)所有字段SELECT*FROM職工WHERE職務='經理’;3)表達式SELECT訂單號,商品編碼,單價,訂購數量,單價*訂購數量AS金額

FROM訂單明細WHERE訂單號='D2’;4)函數SELECT姓名,YEAR(NOW())-YEAR(出生年月)AS年齡

FROM職工WHERE性別='男';2、WHERE子句中條件表達式的運算符算術運算符

:加減乘除乘方,先乘除后加減。比較運算符

:<、<=、>、>=、=、<>,用于字符串表達式、算術表達式,以及特殊的類型(如日期類型)的比較。運算的結果是邏輯值真(T)或假(F),表達式成立為真,否則為假。邏輯運算符:AND(邏輯與)、OR(邏輯或)和NOT(邏輯非),可將多個比較表達式連接起來,構成復雜的邏輯表達式,表示復雜的條件,運算的結果是邏輯值真(T)或假(F)。51三類運算符的級別括號最優先。算術運算符

比較運算符邏輯運算符高低邏輯運算符NOT、AND、OR高低例如,下列表達式的計算順序:WHERE((YEAR(NOW())-YEAR(出生年月))>40AND性別='男')OR((Year(NOW())-YEAR(出生年月))>35AND性別='女');52WHERE子句的示例SELECT姓名,工資FROM職工WHERE工資>=6000;SELECT姓名FROM職工WHERE出生年月>="1980-1-1";SELECT姓名FROM職工WHERE出生年月>='1980-1-1'AND性別='男’;SELECT姓名,性別,YEAR(NOW())-YEAR(出生年月)AS年齡FROM職工WHERE((YEAR(NOW())-YEAR(出生年月))>40AND性別='男')OR((Year(NOW())-YEAR(出生年月))>35AND性別='女');533、FROM子句指定查詢語句的數據來源(表名)。如果是多個表,則該查詢語句是連接,連接條件可以用兩種格式表示。(1)在FROM子句中給出表與表之間的連接條件(§4.7節)(2)在WHERE子句中給出連接條件。如下例:SELECT訂單號,客戶名稱,姓名,簽單日期FROM客戶,訂單,職工

WHERE客戶.客戶編號=訂單.客戶編號AND職工.職工號=訂單.職工號

AND簽單日期>='2022-03-01';543、FROM子句SQL允許在FROM子句中使用表的別名(簡名),可用別名代替表名,上述SQL語句可寫成:SELECT訂單號,客戶名稱,姓名,簽單日期FROM客戶C,訂單D,職工EWHEREC.客戶編號=D.客戶編號ANDD.職工號=E.職工號AND簽單日期>='2022-3-1';55

二、字符串操作字符串匹配符有:

百分號%表示任意字符串。

下劃線_表示任何一個字符字符串操作符有:LIKE

NOTLIKE內置函數trim示例:SELECT姓名FROM職工WHERE姓名LIKE'李%’;SELECT姓名

FROM職工

WHERE職務NOTLIKE'經%’;SELECT姓名FROM職工WHEREtrim(姓名)LIKE'李_生';56三、幾個特殊的運算符BETWEENAND在某個范圍之間。NOTBETWEENAND不在某個范圍之間。IN指定字段的值屬于指定集合中的一個元素。NOTIN指定字段的值不屬于指定集合的元素。57特殊運算符應用示例SELECT*FROM職工

WHERE工資BETWEEN3000AND5000;SELECT*FROM職工WHERE工資>=3000AND工資<=5000;SELECT*FROM職工

WHERE工資NOTBETWEEN3000AND5000;SELECT*FROM職工

WHERE工資<3000OR工資>5000;SELECT客戶名稱,簽單日期

FROM客戶C,訂單DWHEREC.客戶編號=D.客戶編號AND簽單日期IN('2022-2-12','2022-5-13’);SELECT客戶名稱,簽單日期FROM客戶C,訂單DWHEREC.客戶編號=D.客戶編號AND(簽單日期='2022-2-12'OR簽單日期='2022-5-13');58四、排序(ORDERBY子句)SELECT<列名表>FROM表名WHERE<條件表達式>ORDERBY<列名表>[DESC][ASC]其中:DESC表示降序,ASC表示升序,缺省為升序。例4.22按照簽單日期升序顯示訂單號、簽單日期、客戶名稱、業務員姓名。SELECT訂單號,簽單日期,客戶名稱,姓名FROM客戶C,訂單D,職工EWHEREC.客戶編號=D.客戶編號ANDE.職工號=D.職工號ORDERBY簽單日期;59按時間排序的查詢結果60五、并操作(UNION語句)MySQL實現并運算的語句UNION。例4.43列出入庫明細和訂單明細表中,商品編碼為“P1”的入庫單號(或訂單號)、商品編碼和單價。(分析差價和利潤)SELECT入庫單號AS單號,商品編碼,進價AS價格FROM入庫明細WHERE商品編碼='P1'UNIONSELECT訂單號,商品編碼,單價

FROM訂單明細WHERE商品編碼='P1';6162六、聚合函數631、求平均值函數

SELECTAVG(工資)AS平均工資WHERE職務=‘銷售員’;

2、求總和函數

SELECTFORMAT(SUM(訂購數量*單價),2)AS總金額

FROM訂單D,訂單明細M

WHERED.訂單號=M.訂單號AND客戶編號=‘C2’;

3、求最大值和最小值函數

SELECTMAX(工資)AS最高工資,MIN(工資)AS最低工資

FROM職工;

SELECTMIN(出生年月)AS年齡最大,

MAX(出生年月)AS年齡最小

FROM職工;

64計數函數有3種格式:1、COUNT(*)統計所有行數,包括含有空值的行。2、COUNT(字段名)計算表中字段值非空值的行數。3、COUNT(DISTINCT(字段名))計算表中字段值

唯一且非空值的行數。65示例:SELECTCOUNT(*)AS職工人數FROM職工;SELECTCOUNT(身份證號)AS有身份證人數FROM職工;SELECTCOUNT(DISTINCT職務)AS種類數目FROM職工;七、分組GROUPBY、HAVING子句SELECT性別,COUNT(性別)AS人數FROM職工GROUPBY性別;SELECT商品編碼,MAX(訂購數量)AS最高量,AVG(訂購數量)AS平均訂購量,MIN(訂購數量)AS最低量FROM訂單明細GROUPBY商品編碼;66SELECT<字段列表>FROM表名

WHERE<條件表達式>GROUPBY<分組表達式>HAVING<篩選條件表達式>SELECT客戶編號,SUM(單價*訂購數量)AS總金額FROM訂單D,訂單明細MWHERED.訂單號=M.訂單號AND簽單日期BETWEEN'2022-3-1'AND'2022-12-31'GROUPBY客戶編號HAVINGSUM(單價*訂購數量)>18000;例4.51檢索在2022年1月1日-2022年12月31期間,客戶訂購商品的總金額超過18000元的客戶編號和總金額。八、空值(NULL)1.測試空值運算符(ISNULL和ISNOTNULL)SELECT職工號,姓名FROM職工WHERE身份證號ISNULL;SELECT職工號,姓名FROM職工WHERE身份證號ISNOTNULL2.空值的處理原則(1)算術表達式中含有NULL,運算結果是NULL。(2)比較運算中含有NULL,比較的結果視為假(false)。(3)SQL規定,比較運算中含有NULL,結果是“未知(unknown)”(4)幾乎其他所有情況下,將unknown作為false。683、聚合函數對NULL的處理原則(1)SUM、AVG、MIN、MAX函數對參數中的空值(NULL)忽略不計。若所有參數值都是空值(NULL),則函數的返回值是NULL。(2)COUNT函數的參數是“*”,返回表的所有行數,包括含有空值(NULL)的行;若參數是一個字段名,則該字段為空值(NULL)行忽略不計;若所有參數值都是空值(NULL),則函數的返回值是0。69第七節SQL的連接查詢

一個查詢同時涉及2個以上表,稱為連接查詢。連接查詢是關系數據庫最主要的查詢,包括等值連接查詢、自然連接查詢、非等值連接查詢、自連接查詢、外連接查詢和復合條件查詢等。SQL語句中定義連接條件的方法有兩種方法:WHERE子句中定義連接條件FROM子句中定義連接條件

70定義連接條件的兩種方法SELECT訂單號,客戶名稱,姓名FROM客戶,訂單,職工WHERE客戶.客戶編號=訂單.客戶編號AND職工.職工號=訂單.職工號AND簽單日期>='2022-1-1’;SELECT訂單號,客戶名稱,姓名FROM(客戶CINNERJOIN訂單DON(C.客戶編號=D.客戶編號))INNERJOIN職工EON(E.職工號=D.職工號)WHERE簽單日期>='2022-1-1';71連接操作的類型72一、內連接

內連接(INNERJOIN)也稱為等值連接。它是以連接屬性值相等為條件的連接,在連接的結果中,僅包含兩個關系笛卡兒積中連接屬性值相等的元組,且不消除重復的屬性。

FROMRINNERJOINS[ON(<連接條件>)]例4.55內連接示例SELECT供應商.*,客戶.*FROM供應商INNERJOIN客戶ON廠商名稱=客戶名稱;73二、自然連接自然連接以公共屬性值相等為條件的連接,且消除重復列。例4.56自然連接示例SELECT客戶名稱,訂購數量

FROM客戶AINNERJOIN訂單BON(A.客戶編號=B.客戶編號)INNERJOIN訂單明細CON(B.訂單號=C.訂單號)INNERJOIN商品DON(C.商品編碼=D.商品編碼)

WHERE規格='245’;三、左外連接

左外連接(LEFTOUTERJOIN)的結果中,除了內連接結果之外還包括左表不相匹配的元組,且其對應的右表值為空值。FROM左表LEFTOUTERJOIN右表ON(<連接條件>)

例4.57左外連接示例SELECTA.客戶編號,客戶名稱,訂單號FROM客戶ALEFTOUTERJOIN訂單BON(A.客戶編號=B.客戶編號);75左外連接示例76四、右外連接

右外連接(RIGHTOUTERJOIN)的結果中,除了內連接結果之外還包括右表不相匹配的元組,且其對應的左表值為空值。FROM左表RIGHTOUTERJOIN右表ON(<連接條件>)

例4.58右外連接示例SELECT

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論