分享
分享赚钱 收藏 举报 版权申诉 / 70

类型PLSQL_语法及Oracle函数.doc

  • 上传人:精品资料
  • 文档编号:10998404
  • 上传时间:2020-01-30
  • 格式:DOC
  • 页数:70
  • 大小:313KB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    PLSQL_语法及Oracle函数.doc
    资源描述:

    1、P1/7020-01-30SQL 语法部分一、 Create table 语句语句: CREATE TABLE schema.table_name( column datatype DEFAULT expr column_constraint .| table_constraint, column datatype DEFAULT expr column_constraint .| table_constraint .) PCTFREE integer PCTUSED integerINITRANS integer MAXTRANS integerTABLESPACE tablespaceST

    2、ORAGE storage_clause RECOVERABLE | UNRECOVERABLE PARALLEL ( DEGREE integer | DEFAULT INSTANCES integer | DEFAULT )| NOPARALLEL CACHE | NOCACHE | CLUSTER cluster (column , column.) ENABLE enable_clause| DISABLE disable_clause .AS subquery表是 Oracle 中最重要的数据库对象,表存储一些相似的数据集合,这些数据描述成若干列或字段.create table 语句

    3、的基本形式用来在数据库中创建容纳数据行的表.create table 语句的简单形式接收表名,列名,列数据类型和大小.除了列名和描述外,还可以指定约束条件,存储参数和该表是否是个 cluster 的一部分.Schema 用来指定所建表的 owner,如不指定则为当前登录的用户.Table_name 用来指定所创建的表名,最长为 30 个字符,但不可以数字开头(可为下划线),但不可同其它对象或 Oracle 的保留字冲突.Column 用来指定表中的列名,最多 254 个.Datatype 用来指定列中存储什么类型的数据,并保证只有有效的数据才可以输入.column_constraint 用来指

    4、定列约束,如某一列不可为空,则可指定为 not null.table_constraint 用来指定表约束,如表的主键,外键等.Pctfree 用来指定表中数据增长而在 Oracle 块中预留的空间. DEFAULT 为 10%,也就是说该表的每个块只能使用 90%,10%给数据行的增大时使用.Pctused 用来指定一个水平线,当块中使用的空间低于该水平线时才可以向该中加入新数据行.Parallel 用来指定为加速该表的全表扫描可以使用的并行查询进程个数.Cache 用来指定该表为最应该缓存在 SGA 数据库缓冲池中的候选项.Cluster 用来指定该表所存储的 cluster.Tables

    5、pace 用来指定用数据库的那个分区来存储该表的数据.Recoverable|Unrecoverable 用来决定是否把对本表数据所作的变动写入 Redo 文件.以恢复对数据的操作.P2/7020-01-30As 当不指定表的各列时,可利用 As 子句的查询结果来产生数据库结构和数据.例:1) create table mytab1e(mydec decimal,myint inteter)tablespace user_datapctfree 5pctused 30;2) create table mytable2as ( select * from mytable1);P3/7020-01

    6、-30二、 create sequence 语句语句: CREATE SEQUENCE schema.sequence_nameINCREMENT BY integer START WITH integerMAXVALUE integer | NOMAXVALUEMINVALUE integer | NOMINVALUECYCLE | NOCYCLECACHE integer | NOCACHEORDER | NOORDER序列用来为表的主键生成唯一的序列值.Increment by 指定序列值每次增长的值Start with 指定序列的第一个值Maxvalue 指定产生的序列的最大值Minv

    7、alue 指定产生的序列的最小值Cycle 指定当序列值逵到最大或最小值时,该序列是否循环.Cache 指定序列生成器一次缓存的值的个数Order 指定序列中的数值是否按访问顺序排序.例:1) create sequence myseqincrement by 4start with 50maxvalue 60minvalue 50cycle cache 3;2)sql create sequence new_s;sqlinsert into new (new_id,last_name,first_name)values(new_s.nextval,daur,permit);P4/7020-0

    8、1-30三、 create view 语句 语句: CREATE OR REPLACE FORCE | NOFORCE VIEW schema.view_name(alias ,alias.)AS subqueryWITH CHECK OPTION CONSTRAINT constraint视图实际上是存储在数据库上旳 select 语句.每次在 sql 语句中使用视图时,表示该视图的 select 语句就用来得到需要的数据.Or replace 创建视图时如果视图已存在,有此选项,新视图会覆盖旧的视图.Force 如有此选项,当视图基于的表不存在或在该模式中没有创建视图的权限时,也可以建立视

    9、图.As subquery 产生视图的 select 查询语句With check option 如果视图是基于单表的且表中所有的非空列都包含在视图中时,该视图可用于 insert 和 update 语句中,本 选项保证在每次插入或更新数据后,该数据可以在视 图中查到例:1) create or place view new_v asselect substr(d.d_last_name,1,3),d.d_lastname,d.d_firstname,b.b_start_date,b.b_locationfrom new1 d,new2 bwhere d.d_lastname=b.b_last

    10、name;P5/7020-01-30四、 INSERT 语句:1. 语法INSERT INTO schema.table | view | subquery dblink (column , column .) VALUES (expr , expr .) | subqueryWHERE condition2. 插入单行使用 VALUES 关键词为新行的每一列指定一个值.如果不知道某列的值,可以使用NULL 关键词将其值设为空值(两个连续的逗号也可以表示空值,也可使用 NULL 关键词)插入一行时试图为那些 NOT NULL 的列提供一个 NULL 值,会返回错误信息.举例:插入一条记录到 D

    11、EPARTMENT 表中INSERT INTO DEPARTMENT(DEPARTMENT_ID,NAME,LOCATION_ID)VALUES (01,COMPUTER,167)3. 插入多行将 SELECT 语句检索出来的所有数据行都插入到表中.这条语句通常在从一个表向另一个表快速复制数据行.举例:INSERT INTO ORDER_TEMPSELECT A.ORDER_ID,B.ITEM_ID,C.NAME,E.FIRST_NAME|.|E.LAST_NAME,A.ORDER_DATE,A.SHIP_DATE,D.DESCRIPTION,B.ACTUAL_PRICE,B.QUANTITY

    12、,B.TOTALFROM SALES_ORDER A, ITEM B, CUSTOMER C,PRODUCT D, EMPLOYEE EWHERE MONTHS_BETWEEN(TO_DATE(A.ORDER_DATE),TO_DATE(01-7 月-91)0AND A.CUSTOMER_ID=C.CUSTOMER_IDAND C.SALESPERSON_ID=E.EMPLOYEE_IDAND A.ORDER_ID=B.ORDER_IDAND B.PRODUCT_ID=D.PRODUCT_IDP6/7020-01-304. 从其它表复制数据:要快速地从一个表向另一个尚不存在的表复制数据,可以使

    13、用 CREATE TABLE 语句定义该表并同时将 SELECT 语句检索的结果复制到新表中.CREATE TABLE EMPLOYEE_COPYASSELECT * FROM EMPLOYEEP7/7020-01-30五、 UPDATE 语句:1. 语法UPDATE schema.table | view | subquerydblink aliasSET (column , column .) = (subquery)| column = expr | (subquery) , (column , column .) = (subquery)| column = expr | (subqu

    14、ery) .WHERE conditionUPDATE 语句更新所有满足 WHERE 子句条件的数据行.同样,该语句可以用 SELECT语句检索得到.但 SELECT 必须只检索到一行数据值.否则报错.而且每更新一行数据,均要执行一次 SELECT 语句.举例:UPDATE EMPLOYEE_COPSET SALARY=SALARY-400WHERE TO_NUMBER(TO_CHAR(HIRE_DATE,YYMMDD)850101UPDATE ITEM_COP ASET A.ACTUAL_PRICE=(SELECT B.LIST_PRICEFROM PRICE B,SALES_ORDER C

    15、WHERE A.PRODUCT_ID=B.PRODUCT_ID ANDA.ORDER_ID=C.ORDER_ID ANDTO_NUMBER(TO_CHAR(C.ORDER_DATE,YYYYMMDD) BETWEENTO_NUMBER(TO_CHAR(B.START_DATE,YYYYMMDD) ANDNVL(TO_NUMBER(TO_CHAR(END_DATE,YYYYMMDD),29991231)P8/7020-01-30六、 DELETE 语句:1. 语法DELETE FROM schema.table | viewdblink aliasWHERE conditionDELETE 语句

    16、删除所有满足 WHERE 子句条件的数据行.举例:DELETE FROM itemWHERE ORDER_ID=510P9/7020-01-30七、 TRUNCATE 语句:1. 语法TRUNCATE schema.tableP10/7020-01-30八、 各类 Functions:1. 转换函数:1.1. 函數:TO_CHAR语法:TO_CHAR(number,format)用途:将一个数值转换成与之等价的字符串.如果不指定格式,将转换成最简单的字符串形式.如果为负数就在前面加一个减号.Oracle 为数值提供了很多格式,下表列出了部分可接受的格式:元素 描述 示例 值 结果返回指定位数的

    17、数值,前面为 0,显示为空格 99999784-578123456745.895 784 -578# 46插入小数点 9999.99 78445.3482 784.0045.359在结果串的指定位置插入逗号 9,999,99978412345670.44 784 1,234,567 0$ 返回值前面加一个元符号 $99,999 784-578 $784 -$578B 结果的整数部分如果是0,就显示成空格 B9999.9 7840.44 784.0 .4S 返回 有正负号的数值 S9999 784 +784EEEE 以科 计数法表示数值 9.9EEEE 450.0666 4.5E+01 6.7E

    18、-02P11/7020-01-301.2. 函數:TO_CHAR语法:TO_CHAR(date,format)用途:将按 format 参数指定的格式将日期值转换成相应的字符串形式.同样,Oracle 提供许多的格式模型,用户可以用它们的组合来表示最终的输出格式.唯一限制就是最终的掩码不能超过 22 个字符.下表列出了部分日期格式化元素.Oracle 为数值提供了很多格式,下表列出了部分可接受的格式:格式 意义D 用数字表示星期几(1,2,3,4,5,6,7)DY 用三个字符表示星期几的缩写形式(MON)DAY 星期几的完整表示(MONDAY)DD 用数字表示一月中的几号DDD 用数字表示年份

    19、中的天数W 一月中的星期数WW 一年中的星期数MM 用数字表示月数MON 用三个字母表示月的缩写(APR)MONTH 月的完整英文表示(FEBRUARY)Y 年份中的最后一个数字(9)YY 年份中的最后二个数字(99)YYY 年份中的最后三个数字(999)YYYY 年份用四个数字表示(1999)YEAR 年份的字母全部拼写(NINETEEN-NINETY-NINE)AM 或 PM 午前或午后表示符HH 用小时表示日期MI 分钟表示小时SS 秒钟表示分钟SSSS 自午夜以来的秒数(这个数字经常在 0-86399 之间)P12/7020-01-301.3. 函數:TO_DATE语法:TO_DATE

    20、(string,format)用途:根据给定的格式将一个字符串转换成 Oracle 的日期值.该函数的主要用途是用来验证输入的日期值.在应用程序中,用户必须验证输入日期是否有效,如月份是否在 112 之间和日期中的天数是否在指定月份的天数内.P13/7020-01-301.4. 函數:TO_NUMBER语法:TO_NUMBER(string,format)用途:该函数将一个字符串转换成相应的数值.对于简单的字符串转换数值(例如几位数字加上小数点).格式是可选的.P14/7020-01-302. 日期函数2.1. 函數:ADD_MONTHS语法:ADD_MONTHS(date,number)用途

    21、:在日期 date 上加指定的月数,返回一个新日期.如果给定为负数,返回值为日期 date 之前几个月的日期.number 应当是个整数,如果是小数,正数被截为小于该数的最大整数,负数被截为大于该数的最小整数.例如:SELECT TO_CHAR(ADD_MONTHS(sysdate,1),DD-MON-YYYY) “Next month“FROM dualNext month-19-FEB-20002.2. 函數:LAST_DAY语法:LAST_DAY(date)用途:返回日期 date 所在月份的最后一天的日期.例如:SELECT SYSDATE, LAST_DAY(SYSDATE) “La

    22、st“,LAST_DAY(SYSDATE) - SYSDATE “Days Left“FROM DUALSYSDATE Last Days Left- - -19-JAN-00 31-JAN-00 12P15/7020-01-302.3. 函數:MONTHS_BETWEEN语法:MONTHS_BETWEEN(date1,date2)用途:返回两个日期之间的月份.如果两个日期月份内的天数相同(或者都是某个月的最后一天),返回值是整数.否则,返回值是小数,每于 1/31 月来计算月中剩余天数.如果第二个日期比第一个日期还早,则返回值是负数.例如:SELECT MONTHS_BETWEEN(TO_D

    23、ATE(02-02-1992, MM-DD-YYYY),TO_DATE(01-01-1992, MM-DD-YYYY)“Months“FROM DUALMonths-1.03225806SELECT MONTHS_BETWEEN(TO_DATE(02-29-1992, MM-DD-YYYY),TO_DATE(01-31-1992, MM-DD-YYYY)“Months“FROM DUALMonths-1P16/7020-01-302.4. 函數:NEXT_DAY语法:NEXT_DAY(date,day)用途:该函数返回日期 date 指定若天后的日期.注意:参数 day 必须为星期,可以星期几

    24、的英文完整拼写,或前三个字母缩写,或数字 1,2,3,4,5,6,7 分别表示星期日到星期六.例如,查询返回本月最后一个星期五的日期.例如:SELECT NEXT_DAY(last_day(sysdate)-7),FRIDAY)FROM dualNEXT_DAY(-28-JAN-002.5. 函數:ROUND语法:NEXT_DAY(date,format)用途:该函数把一个日期四舍五入到最接近格式元素指定的形式.如果省略 format,只返回date 的日期部分.例如,如果想把时间(24/01/00 14:58:41)四舍五入到最近的小时.下表显示了所有可用格式元素对日期的影响.Format

    25、Element ResultSS 24/01/00 14:58:41MI 24/01/00 14:59:00HH 24/01/00 15:00:00DD 25/01/00 00:00:00MM 01/02/01 00:00:00YY 01/01/00 00:00:00CC 01/01/00 00:00:00P17/7020-01-30例如:SELECT to_char(ROUND(sysdate,HH),DD-MON-YY HH24:MI:SS)FROM dualTO_CHAR(ROUND(SYSDATE,HH),DD-MON-YYHH24:MI:SS)-24-JAN-00 15:00:002

    26、.6. 函數:TRUNC语法:TRUNC(date,format)用途:TRUNC 函数与 ROUND 很相似,它根据指定的格式掩码元素,只返回输入日期用户所关心的那部分,与 ROUND 有所不同,它删除更精确的时间部分,而不是将其四舍五入.例如:SELECT TRUNC(sysdate)FROM dualTRUNC(SYS-24-JAN-00FLOOR 函数:求两个日期之间的天数用;select floor(sysdate - to_date(20080805,yyyymmdd) from dual;P18/7020-01-303. 字符函数3.1. 函數:ASCII语法:ASCII(cha

    27、racter)用途:返回指定字符的 ASCII 码值.如果为字符串时,返回第一个字符的 ASCII 码值.例如:SELECT ASCII(Z)FROM dualASCII(Z)-903.2. 函數:CHR语法:CHR(number)用途:该函数执行 ASCII 函数的反操作,返回其 ASCII 码值等于数值 number 的字符.该函数通常用于向字符串中添加不可打印字符.例如:SELECT CHR(65)|BCDEFFROM dualCHR(65-ABCDEFP19/7020-01-303.3. 函數:CONCAT语法:CONCAT(string1,string2)用途:该函数用于连接两个字符

    28、串,将 string2 跟在 string1 后面返回,它等价于连接操作符(|).例如:SELECT CONCAT(This is a, computer)FROM dualCONCAT(THISISA,-This is a computer它也可以写成这样:SELECT This is a| computerFROM dualTHISISA|COMPUT-This is a computer这两个语句的结果是完全相同的,但应尽可能地使用|操作符.3.4. 函數:INITCAP语法:INITCAP(string)用途:该函数将字符串 string 中每个单词的第 1 个字母变成大写字母,其它字

    29、符为小写字母.P20/7020-01-30例如:SELECT INITCAP(first_name|.|last_name)FROM employeeWHERE department_id=12INITCAP(FIRST_NAME|.|LAST_N-Chris.AlbertsMatthew.FisherGrace.RobertsMichael.Douglas3.5. 函數:INSTR语法:INSTR(input_string,search_string,n,m)用途:该函数是从字符串 input_string 的第 n 个字符开始查找搜索字符串的第 m 次出现,如果没有找到搜索的字符串,函数将

    30、返回 0.如果找到,函数将返回位置.例如:SELECT INSTR(the quick sly fox jumped over the lazy brown dog,the,2,1)FROM dualINSTR(THEQUICKSLYFOXJUMPEDOVERTHELAZYBROWNDOG,THE,2,1)-31P21/7020-01-303.6. 函數:INSTRB语法:INSTRB(input_string,search_string,n,m)用途:该函数类似于 INSTR 函数,不同之处在于 INSTRB 函数返回搜索字符串出现的字节数,而不是字符数.在 NLS 字符集中仅包含单字符时,

    31、INSTRB 函数和 INSTR 函数是完全相同的.3.7. 函數:LENGTH语法:LENGTH(string)用途:该函数用于返回输入字符串的字符数.返回的长度并非字段所定义的长度,而只是字段中占满字符的部分.以列实例中,字段 first_name 定义为 varchar2(15).语法:SELECT first_name,LENGTH(first_name)FROM employeeFIRST_NAME LENGTH(FIRST_NAME)- -JOHN 4KEVIN 53.8. 函數:LENGTHB语法:LENGTHB(string)用途:该函数用于返回输入字符串的字节数.对于只包含单

    32、字节字符的字符集来说 LENGTHB 函数和 LENGTH 函数完全一样.P22/7020-01-303.9. 函數:LOWER语法:LOWER(string)用途:该函数将字符串 string 全部转换为小写字母,对于数字和其它非字母字符,不执行任何转换.3.10. 函數:UPPER语法:UPPER(string)用途:该函数将字符串 string 全部转换为大写字母,对于数字和其它非字母字符,不执行任何转换.3.11. 函數:LPAD语法:LPAD(string,length,set)用途:在字符串 string 的左边加上一个指定的字符集 set,从而使串的长度达到指定的长度length

    33、.参数 set 可以是单个字符,也可以是字符串.如果 string 的长度小于 length 时,取string 字符串的前 length 个字符.语法:SELECT first_name,LPAD(first_name,20, )FROM employeeFIRST_NAME LPAD(FIRST_NAME,20,)- -JOHN JOHNKEVIN KEVINP23/7020-01-303.12. 函數:RPAD语法:RPAD(string,length,set)用途:在字符串 string 的右边加上一个指定的字符集 set,从而使串的长度达到指定的长度length.参数 set 可以是

    34、单个字符,也可以是字符串.如果 string 的长度小于 length 时,取string 字符串的前 length 个字符.例如:SELECT first_name,rpad(first_name,20,-)FROM employeeFIRST_NAME RPAD(FIRST_NAME,20,-)- -JOHN JOHN-KEVIN KEVIN-3.13. 函數:LTRIM语法:LTRIM(string,set)用途:该函数从字符串的左边开始,去掉字符串 set 中的字符,直到看到第一个不在字符串set 中的字符为止.例如:SELECT first_name,ltrim(first_name

    35、,BA)FROM employeeWHERE first_name=BARBARAFIRST_NAME LTRIM(FIRST_NAM- -BARBARA RBARAP24/7020-01-303.14. 函數:RTRIM语法:RTRIM(string,set)用途:该函数从字符串的右边开始,去掉字符串 set 中的字符,直到看到第一个不在字符串set 中的字符为止.具有 NULL 值的字段不能与具有空白字符的字段相比较.这是因为空白字符与 NULL 字符是完全不同的两种字符.该函数的另外一个用途是当进行字段连接时去掉不需要的字符.3.15. 函數:SUBSTR语法:SUBSTR(string

    36、,start,length)用途:该函数从输入字符串中取出一个子串,从 start 字符处开始取指定长度的字符串,如果不指定长度,返回从 start 字符处开始至字符串的末尾.3.16. 函數:REPLACE语法:REPLACE(string,search_set,replace_set)用途:该函数将字符串中所有出现的 search_set 都替换成 replace_set 字符串.可以使用该函将字符串中所有出现的符号都替换成某个有效的名字.如果不指定 replace_set,则将从字符串 string 中删除所有的搜索字符串 search_set.例如:SELECT REPLACE(abc

    37、defbdcdabc,dsssdcdrd,abc,ABC)FROM dualREPLACE(ABCDEFBDCDABC,-ABCdefbdcdABC,dsssdcdrdP25/7020-01-303.17. 函數:TRANSLATE语法:TRANSLATE(string,search_set,replace_set)用途:该函数用于将所有出现在搜索字符集 search_set 中的字符转换成替换字符集replace_set 中的相应字符.注意:如果字符串 string 中的某个字符没有出现在搜索字符集中.则它将原封不动地返回.如果替换字符集 replace_set 比搜索字符集search_s

    38、et 小,那么搜索字符集 search_set 中后面的字符串将从字符串 string 中删除.例如:SELECT TRANSLATE(GYK-87M,0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ,9999999999xxxxxxxxxxxxxx)FROM dualTRANSL-xx-99xP26/7020-01-304. 数值函数4.1. 函數:ABS语法:ABS(number)用途:该函数返回数值 number 的绝对值.绝对值就是一个数去掉符号的那部分.4.2. 函數:SQRT语法:SQRT(number)用途:该函数返回数值 number 的平方根,输入值必

    39、须大于等于 0,否则返回错误.4.3. 函數:CEIL语法:CEIL(number)用途:该函数返回大于等于输入值的下一个整数.4.4. 函數:FLOOR语法:FLOOR(number)用途:该函数返回小于等于 number 的最大整数.P27/7020-01-304.5. 函數:MOD语法:MOD(n,m)用途:该函数返回 n 除 m 的模,结果是 n 除 m 的剩余部分.m,n 可以是小数,负数.4.6. 函數:POWER语法:POWER(x,y)用途:该函数执行 LOG 函数的反操作,返回 x 的 y 次方.4.7. 函數:ROUND语法:ROUND(number,decimal_dig

    40、its)用途:该函数将数值 number 四舍五入到指定的小数位.如果 decimal_digits 为 0,则返回整数.decimal_digits 可以为负数.4.8. 函數:TRUNC语法:TRUNC(number,decimal_pluces)用途:该函数在指定的小数字上把一个数值截掉.如果不指定精度,函数预设精度为 0. decimal_pluces 可以为负数.P28/7020-01-304.9. 函數:SIGN语法:SIGN(number)用途:该函数返回 number 的符号,如果 number 为正数则返回 1,为负数则返回-1,为 0 则返回0.4.10. 函數:SIN语法

    41、:SIN(number)用途:该函数返回弧度 number 的正弦值.4.11. 函數:SINH语法:SINH(number)用途:该函数返回 number 的返正弦值.4.12. 函數:COS语法:COS(number)用途:该函数返回弧度 number 的三角余弦值.要用角度计算余弦,可以将输入值乘以 0.01745转换成弧度后再计算.P29/7020-01-304.13. 函數:COSH语法:COSH(number)用途:该函数返回输入值的反余弦值.4.14. 函數:TAN语法:TAN(number)用途:该函数返回弧度 number 的正切值.4.15. 函數:TANH语法:TANH(number)用途:该函数返回数值 number 的反正切值.4.16. 函數:LN语法:LN(number)用途:该函数返回 number 自然对数.P30/7020-01-304.17. 函數:EXP语法:EXP(number)用途:该函数返回 e(2.71828183)的 number 次方.该函数执行自然对数的反过程.4.18. 函數:LOG语法:LOG(base,number)用途:该函数返回 base 为底,输入值 number 的对数.

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:PLSQL_语法及Oracle函数.doc
    链接地址:https://www.docduoduo.com/p-10998404.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开