随着Sybase被完全整合到SAP下,Sybase原来的支持网站被SAP Support Portal取代。
只有购买了SAP服务的用户才能使用账号登录SAP Support Portal进行介质下载、补丁升级、报Incident等。
目前,原Sybase所有产品(包括:Adaptive Server Enterprise、Sybase IQ、Replication Server、PowerDesigner等)的官方手册仍然可以从https://infocenter.sybase.com/help/index.jsp进行浏览或下载。暂不清楚该网站https://infocenter.sybase.com/help/index.jsp何时会被完全迁移到SAP Support上!
Sybase官方手册英文版有html和pdf两种格式,而中文版手册只有pdf一种格式。为了国内Sybase用户更方便、快捷地搜索Sybase常见产品的官方手册内容,特将中文版Sybase官方手册转为html格式!
Sybase产品官方手册中文版的html格式所有内容的版权归SAP公司所有!本博客站长是Sybase数据库的铁杆粉丝!
如有Sybase数据库技术问题需要咨询,请联系我!
以下官方手册为SAP IQ 16.0 SP03中文版:
CREATE INDEX 语句
创建指定表或表对的索引。索引一旦创建就再也不能在 SQL 语句中再次引用,除非使用
DROP INDEX 语句将它删除。 快速链接:
转至参数 (第 398 页) 转至示例 (第 400 页) 转至用法 (第 401 页) 转至标准 (第 403 页) 转至权限 (第 404 页)
语法
CREATE [ UNIQUE ] [ index-type ] INDEX [ IF NOT EXISTS ] index-name
… ON [ owner.]table-name
… ( column-name [ , column-name ] …)
…[ { IN | ON } dbspace-name ]
…[ NOTIFY integer ]
…[ DELIMITED BY 'separators-string ‘ ]
…[ LIMIT maxwordsize-integer ]
index-type
{ CMP | HG | HNG | LF | WD | DATE | TIME | DTTM }
参数
(返回顶部) (第 397 页)
• index-type – 对于 SAP Sybase IQ 表中的列,可指定 index-type 为 HG (High_Group)、HNG (High_Non_Group)、LF (Low_Fast)、WD (Word)、DATE、 TIME 或 DTTM (Datetime)。如果未指定 index-type,则缺省创建 HG 索引。
要为 IQ 主存储表中两列之间的关系创建索引,可指定 index-type 为 CMP(比 较)。两个列必须具有相同的数据类型、精度和小数位数。对于 CHAR、 VARCHAR、BINARY 或 VARBINARY 列,精度表示两列具有相同的宽度。
要想获得最快的查询速度,列索引的正确类型取决于:
• 列中的唯一值数
• 查询中的列的使用方式
• 可用的磁盘空间量
您可以为 IQ 主存储表中的某个列指定多个索引,但这些索引必须具有不同的索引 类型。CREATE INDEX 不允许添加重复的索引类型。SAP Sybase IQ 会选择适用于 当前查询或查询一部分的最快索引。但每增加一种索引类型都可能会显著增加对 该表的空间要求。
• column-name – 指定要建立索引的列的名称。列名称是前面带有可选相关名的标 识符。(相关名通常是表名。有关相关名的详细信息,请参见 FROM 子句。)如 果列名含有字母、数字和下划线以外的其它字符,则用引号 ("") 将它引起来。
如果省略 UNIQUE 子句,只能指定 HG 索引。外键要求非唯一索引,组合外键要 求非唯一的组合 HG 索引。唯一和非唯一的 HG 索引的多列组合键的最大宽度均为 5300 字节。如果 CHAR 或 VARCHAR 数据是组合键或单列 HG、LF、HNG、DATE、 TIME 或 DTTM 索引的一部分,则这两种数据都不能超过 255 字节。
• UNIQUE – 确保表中不会有两行的值在索引的所有列中相同。每个索引键都必须 是唯一的,或者至少在一列中包含 NULL。可以对多个列创建唯一的 HG 索引, 但不能使用其它索引类型创建多列索引。您不能对 CMP、HNG、WD、DATE、 TIME 或 DTTM 索引类型指定 UNIQUE。
如果列定义允许使用 NULL 值并且不实施约束(主键或唯一),则 SAP Sybase IQ 允许在用户创建的唯一多列 HG 索引的数据值中使用 NULL 值。有关详细信息, 请参见注释 中的“多列索引”。
• IF NOT EXISTS – 如果指定的对象已存在,则不进行任何更改,也不会返回错 误。
• IN – 指定索引位置。如果省略 IN 子句,将在创建表的 dbspace 中创建索引。索 引始终与其表放在同一类型的 dbspace(IQ 存储库或临时存储库)中。装载索引 时,数据将跨所有具备可用空间的该类型数据库文件分布。SAP Sybase IQ 确保您
指定的任何 dbspace-name 都适用于该索引。如果尝试为临时表的索引指定 IQ_SYSTEM_MAIN 或其它主 dbspace,则会收到一条错误,反之亦然。无论是指定 CREATE DATABASE ... CASE IGNORE 还是指定 CASE RESPECT,Dbspace 名称始终
不区分大小写。
• DELIMITED BY – 指定用于将列字符串解析为要存储到相应列 WD 索引中的单 词的分隔符。如果忽略该子句或指定该值为空字符串,则 SAP Sybase IQ 使用缺 省分隔符集。缺省分隔符集针对缺省归类顺序 (ISO-BINENG) 而设计。它包括非 7 位 ASCII 字母数字字符的所有 7 位 ASCII 字符,但连字符和单引号除外。缺省情况 下,连字符和单引号是单词的一部分。缺省分隔符集中有 64 个分隔符。例如,如 果列值为以下字符串:
The cat is on the mat
并且使用了使用缺省分隔符的 CASE IGNORE 设置来创建数据库,则此字符串中 的下列单词会存储到 WD 索引中:
cat is mat on the
如果指定多个 DELIMITED BY 和 LIMIT 子句,则不会返回任何错误,但只使用 每种类型的最后一个子句。
• separators-string – 必须是数据库创建时使用的归类顺序中的 0 个或多个字符的 序列。分隔符字符串中的每个字符都被当作一个分隔符。如果分隔符字符串中没 有字符,则会使用缺省分隔符集。(每个分隔符必须是正在使用的归类序列中的 单个字符。)分隔符字符串中的字符(分隔符)不能多于 256 个。
要将制表符指定为分隔符,可以在分隔符字符串内键入 <TAB> 字符,或者使用制 表符的十六进制 ASCII 代码 \x09。"\t" 指定两个分隔符,\ 和字母 t。要将换行符 指定为分隔符,可以键入 <RETURN> 字符或十六进制 ASCII 代码 \x0a。
例如,子句 DELIMITED BY ' :;.\/t' 指定以下 7 个分隔符:
space : ; . \ / t
表 30. 制表符和换行符作为分隔符
分隔符 |
DELIMITED BY 子句的分隔符字符串 |
制表符 |
' ' (键入 <TAB>)或 '\x09' |
换行符 |
' ' (键入 <RETURN>)或 '\x0a' |
• LIMIT – 仅可用于创建 WD 索引。指定 WD 索引中允许的最大单词长度。分析 过程中单词长度超过该值会导致错误。缺省值为 255 个字节。允许的最小值为 1, 允许的最大值为 255。如果 CREATE INDEX 语句中指定的最大单词长度或缺省确 定的最大单词长度超过列宽,则所用的最大单词长度会自动缩短至列宽。使用的 最大允许单词长度越小,允许插入、删除和更新使用的空间会更小、时间会更短。 空词(两个相邻的分隔符)将被自动忽略。创建 WD 索引后,使用创建时确定的
分隔符和最大单词大小来解析在相应列中插入的所有内容。创建索引之后,将无 法更改这些分隔符和最大单词大小。
• NOTIFY – 在为索引成功添加 n 个记录后,给出通知消息。这些消息会发送到标 准输出设备。消息包含与内存使用情况、数据库空间以及当前使用的缓冲区数相 关的信息。缺省值为 100,000 条记录。要关闭 NOTIFY,请将其设置为 0。
(返回顶部) (第 397 页)
• 示例 1 – 创建 projected_earnings 和 current_earnings 列的比较索引。 这两列是十进制列,具有相同的精度和小数位数。
CREATE CMP INDEX proj_curr_cmp ON sales_data
( projected_earnings, current_earnings )
• 示例 2 – 为 SalesOrderItems 表的 ID 列创建一个 High_Group 索引。该索引 的数据页是从 dbspace Dsp5 中分配的。
CREATE HG INDEX id_hg
ON SalesOrderItems ( ID ) IN Dsp5
• 示例 3 – 为 SalesOrderItems 表的 ProductID 列创建一个 High_Group 索 引:
CREATE HG INDEX item_prod_hg ON Sales_OrderItems
( ProductID)
• 示例 4 – 为 SalesOrderItems 表的同一 ProductID 列创建一个 Low_Fast 索 引,且不会出现任何通知消息:
CREATE LF INDEX item_prod ON SalesOrderItems
( ProductID) NOTIFY 0
• 示例 5 – 为 earnings_report 表创建一个 WD 索引。将字符串的分隔符指定 为空格、冒号、分号和句点。将字符串的长度限定为 25。
CREATE WD INDEX earnings_wd
ON earnings_report_table(varchar) DELIMITED BY ‘ :;.’
LIMIT 25
• 示例 6 – 为 SalesOrders 表的 OrderDate 列创建一个 DTTM 索引:
CREATE DTTM INDEX order_dttm ON SalesOrders
( OrderDate )
(返回顶部) (第 397 页)
• 无法在 CREATE INDEX 语句中指定索引所有者。索引将自动由定义了这些索引的 表的所有者拥有。对于每个所有者,索引名称必须唯一。
• 无法为视图创建索引。对于给定表,每个索引的名称必须唯一。
• 只要 CREATE INDEX 影响了当前正由其它连接修改的表,就会禁止该语句。但允 许对正在同时添加索引的表进行查询。
• 创建 WD 索引后,使用分隔符来解析在列中插入的所有内容,而且,在创建该索 引后,将无法更改最大单词大小。对于 CHAR 列,至少指定一个空格作为其中的 一个分隔符或使用缺省分隔符集。SAP Sybase IQ 自动将 CHAR 列填充至最大列 宽。如果列包含空白和字符数据,WD 索引数据查询返回的结果可能会造成误解。 例如,列 CompanyName 包含由分隔符分隔的两个单词,但第二个单词以空白填 充:
‘Concord’ ‘Farms ’
假设用户输入以下查询:
SELECT COUNT(*)FROM Customers WHERE CompanyName contains (‘Farms’)
分析程序确定字符串包含:
‘Farms ’
而不是:
‘Farms’
并返回 0 而不是 1。您可以用 VARCHAR 列代替 CHAR 列来避免此问题。
• 数据类型:
• 无法使用 CREATE INDEX 为包含 BIT 数据的列创建索引。
• 对超过 255 字节的 CHAR 和 VARCHAR 数据,只能创建缺省索引、CMP 索引或 WD
索引。
• 对 LONG VARCHAR 数据,只能创建缺省索引类型和 WD 索引类型。
• 对超过 255 字节的 BINARY 和 VARBINARY 数据,只能创建缺省索引类型、CMP
索引类型或 TEXT 索引类型。
• 无法对具有 FLOAT、REAL 或 DOUBLE 数据的列创建 HNG 索引或 CMP 索引。
• 只能对具有 TIME 数据类型的列创建 TIME 索引。
• 只能对具有 DATE 数据类型的列创建 DATE 索引。
• 只能对具有 DATETIME 或 TIMESTAMP 数据类型的列创建 DTTM 索引。
• 您可对多个列创建一个唯一或非唯一 HG 索引。SAP Sybase IQ 可对组成外键的一 组列隐式创建一个非唯一的 HG 索引。
仅 HG 和 CMP 是可以包含多列的索引类型。您不能对多个列创建唯一的 HNG 或 LF
索引,也不能对多个列创建 DATE、TIME 或 DTTM 索引。
多列连接键的最大宽度为 5KB(5300 字节)。允许的列数取决于多少个列的大小 能凑成 5KB。超过 255 字节的 CHAR 或 VARCHAR 数据不允许作为单列 HG、LF、 HNG、DATE、TIME 或 DTTM 索引中组合键的一部分。
多列索引上的 INSERT 必须包含索引的所有列。
使用多列 HG 索引可以提高在 ORDER BY 子句中对单列进行查询的运行速度。例 如:
SELECT abs (x) from t1 ORDER BY x
在以上示例中,HG 索引按排序顺序垂直投影 x。 为增强查询性能,请在满足以下条件下,在 SELECT 或 ORDER BY 子句中,使用 多列 HG 索引对多个列(也可以包括 ROWID)执行 ORDER BY 操作:
• 索引中存在所有投影列以及所有排序列(ROWID 除外)
• 排序键按顺序与前导 HG 列匹配
如果有多个多列 HG 索引满足这些条件,则使用具有最低非重复计数的索引。 如果查询具有一个 ORDER BY 子句,且 ORDER BY 列列表为某个多列索引的前缀
(其中,SELECT 列表中引用的所有列均存在于一个多列索引中),则该多列索引 执行垂直投影;例如:
SELECT x,z,y FROM T ORDER BY x,y
如果 SELECT 列表中的基列存在表达式,并且所有表达式中引用的所有列都存在 于该多列索引中,则查询将使用多列索引;例如:
SELECT power(x,2), x+y, sin(z) FROM T ORDER BY x,y
除以上两个示例之外,如果 ROWID() 函数位于 SELECT 列表表达式中,则将使用 多列索引。例如:
SELECT rowid()+x, z FROM T ORDER BY x,y,z
除以上三个示例之外,如果 ROWID() 存在于 ORDER BY 列表结尾处,并且该列表 的列(不包括 ROWID())以准确顺序使用多列索引,则多列索引将用于该查询。 例如:
SELECT z,y FROM T ORDER BY x,y,z,ROWID()
如果列定义允许使用 NULL 值并且不实施约束(主键或唯一),则 SAP Sybase IQ 允许在用户创建的唯一多列 HG 索引的数据值中使用 NULL 值。此功能的规则如 下:
• 将 NULL 值视为未定义的值。
• 唯一索引列中允许多个值为 NULL 的行。
1. 在单列索引中,一个索引列中允许多个值为 NULL 的行。
2. 在多列索引中,只要其余列中的非 NULL 值可保证该索引中的唯一性,索 引列允许多个值为 NULL 的行。
3. 在多列索引中,索引涉及的所有列中允许多个值为 NULL 的行。 以下示例阐释了这些规则。假定表 table1:
CREATE TABLE table1
(c1 INT NULL, c2 INT NULL, c3 INT NOT NULL);
对允许 NULL 值的列创建唯一的单列 HG 索引:
CREATE UNIQUE HG INDEX c1_hg1 ON table1 (c1);
根据上面的规则 1,可将 NULL 值插入到索引列的多个行中:
INSERT INTO table1(c1,c2,c3) VALUES (NULL,1,1); INSERT INTO table1(c1,c2,c3) VALUES (NULL,2,2);
对允许 NULL 值的列创建唯一多列 HG 索引:
CREATE UNIQUE HG INDEX c1c2_hg2 ON table1(c1,c2);
根据上述规则 2,必须确保索引的唯一性。下面的 INSERT 不成功,因为行 1 和行 3
的多列索引 c1c2_hg2 具有相同的值:
INSERT INTO table1(c1,c2,c3) VALUES (NULL,1,3);
但根据规则 1 和 3,以下 INSERT 操作会成功:
INSERT INTO table1(c1,c2,c3) VALUES (NULL,NULL,3); INSERT INTO table1(c1,c2,c3) VALUES (NULL,NULL,4);
唯一性会在多列索引中得到保留。
此 UPDATE 操作成功,因为规则 3 允许在多列索引的所有列中包含多个值为 NULL
的行:
UPDATE table1 SET c2=NULL WHERE c3=1
如果多列 HG 索引受唯一约束制约,则索引中涉及的任何列都不允许 NULL 值。
• 可以使用 BEGIN PARALLEL IQ … END PARALLEL IQ 语句将要对多个 IQ 主存储表 执行的 CREATE INDEX 语句分组在一起,这样便可像一条 DDL 语句那样来执行这 些语句。有关详细信息,请参见 BEGIN PARALLEL IQ … END PARALLEL IQ 语 句。
警告! 对包含未提交数据的局部临时表使用 CREATE INDEX 命令会失败并生成错误 消息必须提交局部临时表 < tablename > 才能创建索引。请先提交局部临时表中的 数据,然后再创建索引。
副作用
• 自动提交
(返回顶部) (第 397 页)
• SQL - ISO/ANSI SQL 语法的服务商扩充。
• SAP Sybase 数据库产品 - 与 SAP Sybase IQ 相比,Adaptive Server 的 CREATE INDEX
语句更为复杂。虽然在 SAP Sybase IQ 中允许使用 Adaptive Server 语法,但一些
子句和关键字会被忽略。有关 Adaptive Server CREATE INDEX 语句的完整语法,请 参见《Adaptive Server 参考手册》第二卷:命令。
Adaptive Server 索引可以是聚簇 索引或非聚簇 索引。聚簇索引检索数据几乎总是比 非聚簇索引快。每个表只允许有一个聚簇索引。
SAP Sybase IQ 不支持聚簇索引。SQL Anywhere 允许使用 CLUSTERED 和 NONCLUSTERED 关键字,但 SAP Sybase IQ 将忽略它们。如果未指定 index-type,则 SAP Sybase IQ 会对指定的列创建 HG 索引。
SAP Sybase IQ 不允许使用 DESC 关键字。
对于 SAP Sybase IQ 和 Adaptive Server,给定表的索引名称必须唯一。
(返回顶部) (第 397 页)
需要对要创建索引的 dbspace 具有 CREATE 特权。还需要具备以下特权之一:
• CREATE ANY INDEX 系统特权。
• CREATE ANY OBJECT 系统特权。
• 索引基础表的 REFERENCES 特权。
• 您拥有索引的基础表。
Sybase SQL Anywhere数据库恢复工具ReadASADB:
之前就已经研发成功了能够从Sybase SQL Anywhere的DB文件中恢复数据的工具: ReadASADB。此工具支持ASA v5.0, v6.0, v7.0, v8.0, v9.0, v10.0, v11.0, v12.0, v16.0, v17.0等版本。
能够从损坏的SQL Anywhere数据文件(.db)和UltraLite数据文件(.udb)上提取数据的非常规恢复工具。
恢复Sybase SQL Anywhere的工具在国内处于领先水平。
Sybase SQL Anywhere数据库恢复工具ReadASADB功能
能够从损坏的SQL Anywhere数据文件(.db)和UltraLite数据文件(.udb)上提取数据的非常规恢复工具
- 适用于所有的SQL Anywhere版本 包括:5.x,6.x,7.x,8.x,9.x,10.x,11.x,12.x,16.x,17.x
- 适用于所有的UltraLite版本
- 能够恢复出来表结构和数据
- 能够恢复自定义数据类型
- 能够恢复存储过程等对象的语法
- 能够导出到目标数据库
- 能够导出到SQL文件并生成导入脚本
- 支持多种字符集,包括:cp850、cp936、gb18030、utf8等
- 能够恢复未加密或者简单加密类型的数据
- 简单易用
- 限制:不支持AES加密的数据文件
SQL Anywhere数据库非常规恢复工具ReadASADB使用介绍
Sybase SQL Anywhere数据库恢复工具ReadASADB适用场景
各种误操作:
- 误截断表(truncate table)
- 误删除表(drop table)
- 错误的where条件误删数据
- 误删除db或log文件
- 误删除表中的字段
Sybase SQL Anywhere数据库恢复工具ReadASADB的应用场景:
1.因为物理磁盘故障、操作系统、系统软件方面或者掉电等等原因导致的Sybase SQL Anywhere数据库无法打开的情况;
2.误操作,包括truncate table,drop table,不正确的where条件导致的误删除等;
Sybase SQL Anywhere无法打开时,比较常见的错误是:Assertion failed。
如:
1、Internal database error *** ERROR *** Assertion failed:201819 (8.0.1.2600) Checkpoint log: invalid bitmap page -- transaction rolled back
2、Internal database error *** ERROR *** Assertion failed:201819 (8.0.1.2600) Page number on page does not match page requested -- transaction rolled back
3、Internal database error *** ERROR *** Assertion failed:200502 (9.0.2.2451) Checksum failure on page 23 -- transaction rolled back
4、File is shorter than expected
5、Internal database error *** ERROR *** Assertion failed: 201116 Invalid free list index page found while processing checkpoint log -- transaction rolled back
6、*** ERROR *** Assertion failed: 51901 Page for requested record not a table page or record not present on page
7、*** ERROR *** Assertion failed: 201417 (7.0.4.3541) Invalid count or free space offset detected on a table page
8、Internal database error *** ERROR *** Assertion failed: 201425 (8.0.3.5594) Invalid count or free space offset detected on a free list page -- transaction rolled back.
9、Internal database error *** ERROR *** Assertion failed: 100702 (8.0.1.2600) Unable to modify indexes for a row referenced in rollback log -- transaction rolled back
Sybase ASE数据库恢复工具READSYBDEVICE:
一个不依赖数据库管理系统、直接从Sybase数据库设备文件上提取数据的业内领先的恢复工具!能够从损坏的Sybase ASE设备文件(.dat)上提取数据的非常规恢复工具。
Sybase ASE数据库恢复工具READSYBDEVICE的主要功能:
- 被勒索病毒加密数据文件及备份文件情况下的恢复;
- 系统崩溃只剩下数据文件的情况下的恢复,甚至数据库文件不存在而只有损坏的备份文件情况下的恢复;
- 因断电、硬盘坏道等造成数据库文件损坏情况下的恢复;
- delete数据恢复、误update数据恢复、误删除表(drop)恢复、误truncate表恢复 等;
- 各种Sybase内部系统表损坏、索引错误的修复;
- master数据库损坏而无法正常运行情况下的恢复;
- Sybase数据库被标记为可疑,不可用等情况的恢复;
- Sybase数据库中数据文件内部出现坏块情况下的恢复;
- Sybase数据库无数据文件但有日志文件的情况下的恢复;
- Sybase数据库只有数据文件无任何日志文件的情况下的恢复;
- Sybase数据文件被误删除情况下的碎片提取恢复;
- 磁盘阵列上的Sybase数据库被误格式化情况下的数据库恢复;
- 数据库sysobjects等系统表损坏无法正常应用情况下的恢复;
- Sybase数据库还原数据库出现失败情况下的恢复;
- Sybase数据库只剩下损坏的备份文件情况下的恢复。
Sybase ASE数据库恢复工具READSYBDEVICE支持的版本:
Sybase ASE 11.0.x,11.5.x,11.9.x,12.0.x,12.5.x,15.0.x,15.5.x,15.7.x,16.0.xSQL Server数据库恢复工具SQLRescue:
一个不依赖数据库管理系统、直接从SQL Server数据库文件上提取数据的业内领先的恢复工具!能够从损坏的SQL Server数据库文件(.mdf)上提取数据的非常规恢复工具。
SQL Server数据库恢复工具SQLRescue的主要功能:
- 系统崩溃只剩下数据文件的情况下的恢复,即无日志文件或者日志文件损坏情况下的恢复;
- 断电导致数据库文件损坏情况下的恢复;
- 硬盘坏道造成数据库损坏情况下的恢复;
- 数据文件内部存在坏页情况下的恢复;
- 企业管理器误删除数据表记录,管理软件误删除数据表记录的恢复;
- 并闩锁错误、格式化、误删除后导致软件不能使用的情况;
- 无法读取并闩锁页sysindexes失败情况下的修复;
- 数据文件被误删除情况下的碎片提取恢复;
- 系统表损坏、索引错误、误删除数据库表、删除记录的数据找回;
- master数据库损坏而无法正常运行情况下的恢复;
- 数据文件无法附加情况下的数据恢复;
- 数据库被标记为可疑,质疑,不可用等情况的恢复;
- 数据库sysobjects等系统表损坏情况下的恢复;
- 数据被误(drop、delete、truncate)删除表数据的恢复,误update后的数据恢复等;
- 还原时报一致性错误,错误823等情况下的数据恢复,各种错误提示的数据库文件修复;
- 数据库被误格式化等情况下的数据库恢复;
- 日志收缩造成数据库损坏情况下的恢复;
- 仅剩损坏的备份文件情况下的恢复。
SQL Server数据库恢复工具SQLRescue技术特点:
只要SQL Server数据库的数据文件存在,我们就有办法帮您从数据文件中找回重要数据。- 从数据文件中直接恢复数据
- 不能附加时直接恢复数据并生成新的数据库
- 系统表损坏的数据库修复
- 快速修复SQL 823错误、连接中断错误
SQL Server数据库恢复工具SQLRescue支持的版本:
Microsoft SQL Server 7.0, 2000, 2005, 2008, 2008R2, 2012, 2014, 2016, 2017,2019。+-------------------------------------华丽的分割线-------------------------------------------------------------------------