SQL培训PPT-超实用

上传人:仙*** 文档编号:242536147 上传时间:2024-08-27 格式:PPTX 页数:57 大小:170.37KB
返回 下载 相关 举报
SQL培训PPT-超实用_第1页
第1页 / 共57页
SQL培训PPT-超实用_第2页
第2页 / 共57页
SQL培训PPT-超实用_第3页
第3页 / 共57页
点击查看更多>>
资源描述
,SQL,培训,2013年3月,内容简介, SQL 指令: SQL 如何被用来储存、读取、以及处理数据库之中的资料。, 表格处理: SQL 如何被用来处理数据库中的表格。, 进阶 SQL: 介绍 SQL 进阶概念,以及如何用 SQL 来执行一些较复杂的运算。,SQL 实例:介绍一些典型的实例,以及与大规划相关的语句。,SELECT,SELECT 栏位名, FROM ,表格名, ;,DISTINCT,找出表格内的不同资料值的情况,SELECT DISTINCT 栏位名 FROM 表格名;,例如:select distinct region_name from GEOGRAPHY t;,WHERE,SELECT 栏位名 FROM 表格名 WHERE 条件 ;,SQL 指令,AND /OR,SELECT 栏位名 FROM 表格名,WHERE 简单条件 AND|OR 简单条件,IN / NOT IN,SELECT 栏位名 FROM 表格名,WHERE 栏位名 IN (值一, 值二, .),例:SELECT * FROM Store_Information,WHERE store_name IN (Los Angeles, San Diego),BETWEEN.AND.,SQL 指令,SELECT 栏位名 FROM 表格名,WHERE 栏位名 BETWEEN 值一 AND 值二,例:SELECT * FROM Store_Information,WHERE Dates BETWEEN Jan-06-1999 AND Jan-10-,1999,LIKE,字符筛选(注意:区分大小写),SELECT 栏位名 FROM 表格名,WHERE 栏位名 LIKE 模式,例:SELECT * FROM Store_Information,WHERE store_name LIKE %An%,SQL 指令,ORDER BY 排序,SELECT 栏位名 FROM 表格名,WHERE 条件 ORDER BY 栏位名 ASC, DESC,ASC (默认)代表结果会以由小往大的顺序列出,而 DESC 代表结果会以由大往小的顺序列出,例:SELECT store_name, Sales, Dates FROM Store_Information,ORDER BY Sales DESC,GROUP BY 分组,SELECT 栏位1, SUM(栏位2) FROM 表格名,GROUP BY 栏位1,SQL 指令,SELECT store_name, SUM(Sales) FROM Store_Information,GROUP BY store_name,ALIAS 别名,SELECT 表格别名.栏位1 栏位别名,FROM 表格名 表格别名,select t.store_name,sum(sales) 合计,from STORE_INFORMATION t group by store_name ;,函数,AVG (平均)、 COUNT (计数)、 MAX (最大值) 、MIN (最小值) 、,SUM (总合),SQL 指令,SELECT 函数名(栏位名) FROM 表格名,select count(store_name) 计数 from STORE_INFORMATION t ;,HAVING,对函数产生的值来设定条件,SELECT 栏位1, SUM(栏位2) FROM 表格名,GROUP BY 栏位1 HAVING (函数条件),SELECT store_name, SUM(sales) FROM Store_Information,GROUP BY store_name HAVING SUM(sales) 1500,表格链接,左连接,(left join),又称,内部连接,(inner join),在这个情况下,要两个表格内都有同样的值,那一笔资料才会被选出。,SQL 指令,select g.*,s.* from geography g, store_information s,where g.store_name = s.store_name,笛卡儿连接,select g.*,s.* from geography g, store_information s,外部连接,(outer jion),列出一个表格中每一笔的资料,无论它的值在另一个表格中有没有出现。在要选出所有资料的那个表格之后加上一个 (+),select g.store_name, sum(s.sales) sales,from geography g, store_information s,where g.store_name = s.store_name (+),group by g.store_name ;,请注意: 当第二个表格没有相对的资料时, SQL 会传回 NULL 值。,SQL 指令,CONCATENATE 连接字符串,有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种数据库都有提供方法来达到这个目的,MySQL: CONCAT(),Oracle: CONCAT(), |,SQL Server: +,CONCAT() 的语法如下:,CONCAT(字符串1, 字符串2, 字符串3, .),注意,:Oracle的CONCAT()只允许两个参数;换言之,一次只能将两个字符串串连起来。不过,在Oracle中,我们可以用|来一次串连多个字符串。,例:,select g.region_name | | g.store_name from geography g;,SQL 指令,SUBSTRING,抓出一个栏位资料中的其中一部分,MySQL: SUBSTR(), SUBSTRING(),Oracle: SUBSTR(),SQL Server: SUBSTRING(),最常用到的方式如下 (在这里我们用SUBSTR()为例):,SUBSTR(str,pos): 由中,选出所有从第位置开始的字符。请注意,这个语法不适用于SQL Server上。,SUBSTR(str,pos,len): 由中的第位置开始,选出接下去的个字符。,select substr(store_name, 3,6) from geography,where store_name = Los Angeles;,SQL 指令,TRIM 移除,SQL 中的 TRIM 函数是用来移除掉一个字符串中的字头或字尾。最常见的用途是移除字首或字尾的空白。这个函数在不同的数据库中有不同的名称:,MySQL: TRIM(), RTRIM(), LTRIM(),Oracle: RTRIM(), LTRIM(),SQL Server: RTRIM(), LTRIM(),各种 trim 函数的语法如下:,TRIM(位置 要移除的字符串 FROM 字符串),位置 的可能值为 LEADING (起头), TRAILING (结尾), or (起头及结尾)。 这个函数将把 要移除的字符串 从字符串的起头、结尾,或是起头及结尾移除。如果我们没有列出 要移除的字符串 是什么的话,那空白就会被移除。,SQL 指令,LTRIM,(字符串): 将所有字符串起头的空白移除。,RTRIM,(字符串): 将所有字符串结尾的空白移除。,select rtrim(store_name) from geography g;,-,删除头和尾空白,select trim(store_name) from geography g;,-删除头和尾字母“o”,select trim(BOTH o from store_name ) from geography g;,在起头处添加字段:,lpad(tab_month, 2, 0),月份格式改为“,MM,”,2,位,select lpad(7,2,0) from dual,SQL 指令,内容简介, SQL 指令: SQL 如何被用来储存、读取、以及处理数据库之中的资料。, 表格处理: SQL 如何被用来处理数据库中的表格。, 进阶 SQL: 介绍 SQL 进阶概念,以及如何用 SQL 来执行一些较复杂的运算。,SQL 实例:介绍一些典型的实例。,CREATE TABLE 建表,语法是:,CREATE TABLE 表格名,(栏位 1 栏位 1 资料种类,NOT NULL,栏位 2 栏位 2 资料种类,. ),- Create table,create table GEOGRAPHY,(,region_name VARCHAR2(20),store_name VARCHAR2(20),NOT NULL,),表格处理,CREATE TABLE 建表,语法是:,CREATE TABLE 表格名,(栏位 1 栏位 1 资料种类,NOT NULL,栏位 2 栏位 2 资料种类,. ),注意:字段类型,char,和,varchar2,区别,CHAR,的长度是固定的,而,VARCHAR2,的长度是可以变化的。,比如,存储字符串“,abc”,,对于,CHAR (20),,表示你存储的字符将占,20,个字节,(,包括,17,个空字符,),, 而同样的,VARCHAR2 (20),则只占用,3,个字节的长度,,20,只是最大值,当你存储的字符小于,20,时,按实际长度存储。,表格处理,表格处理,添加注释,- Add comments to the table,comment on table GEOGRAPHY,is 商店所属地理位置;,- Add comments to the columns,comment on column GEOGRAPHY.region_name,is 地区名称;,comment on column GEOGRAPHY.store_name,is 商店名称;,CONSTRAINT 约束 限制,NOT NULL,UNIQUE,CHECK,主键 (Primary Key),外来键 (Foreign Key),表格处理,UNIQUE 唯一性,UNIQUE 限制是保证一个栏位中的所有资料都是有不一样的值。,举例来说,在以下的语句中,,CREATE TABLE Customer,(SID integer Unique,Last_Name varchar (30),First_Name varchar(30);,SID 栏位不能有重复值存在,而 Last_Name 及 First_Name 这两个栏位则是允许有重复值存在。,请注意,一个被指定为主键的栏位也一定会含有 UNIQUE 的特性。相对来说,一个 UNIQUE 的栏位并不一定会是一个主键。,表格处理,CHECK 核对,CHECK 限制是保证一个栏位中的所有资料都是符合某些条件。,举例来说,在以下的语句中,,CREATE TABLE Customer,(SID integer CHECK (SID 0),Last_Name varchar (30),First_Name varchar(30);,SID 拦只能包含大于 0 的整数。,注意,CHECK 限制目前尚未被执行于 MySQL 数据库上。,表格处理,主键,主键 (Primary Key) 中的每一笔资料都是表格中的唯一值。换言之,它是用来独一无二地确认一个表格中的每一行资料。主键可以是原本资料内的一个栏位,或是一个人造栏位 (与原本资料没有关系的栏位)。主键可以包含一或多个栏位。当主键包含多个栏位时,称为组合键 (Composite Key)。,注意,在用ALTER TABLE语句来添加主键之前,我们需要确认被用来当做主键的栏位是设定为 NOT NULL ;也就是说,那个栏位一定不能没有资料。,Oracle:,CREATE TABLE Customer,(SID integer PRIMARY KEY,Last_Name varchar(30),First_Name varchar(30);,Oracle:,ALTER TABLE Customer ADD PRIMARY KEY (SID);,表格处理,外来键,外来键是一个(或数个)指向另外一个表格主键的栏位。外来键的目的是确定资料的参考完整性(referential integrity)。换言之,只有被准许的资料值才会被存入数据库内。,举例来说,假设我们有两个表格:一个 CUSTOMER 表格,里面记录了所有顾客的资料;另一个 ORDERS 表格,里面记录了所有顾客订购的资料。在这里的一个限制,就是所有的订购资料中的顾客,都一定是要跟在 CUSTOMER 表格中存在。在这里,我们就会在 ORDERS 表格中设定一个外来键,而这个外来键是指向 CUSTOMER 表格中的主键。这样一来,我们就可以确定所有在 ORDERS 表格中的顾客都存在 CUSTOMER 表格中。换句话说,ORDERS表格之中,不能有任何顾客是不存在于 CUSTOMER 表格中的资料。,表格处理,表格处理,在以上的例子中,ORDERS 表格中的 customer_SID 栏位是一个指向 CUSTOMERS 表格中 SID 栏位的外来键。,表格处理,CREATE VIEW 视图,视观表 (Views) 可以被当作是虚拟表格。它跟表格的不同是,表格中有实际储存资料,而视观表是建立在表格之上的一个架构,它本身并不实际储存资料。,建立一个视观表的语法如下:,CREATE VIEW VIEW_NAME AS SQL 语句,create view v_geography as,select region_name,trim(store_name) v_store_name,from geography g;,-,表格处理,CREATE VIEW 视图,视观表 (Views) 可以被当作是虚拟表格。它跟表格的不同是,表格中有实际储存资料,而视观表是建立在表格之上的一个架构,它本身并不实际储存资料。,建立一个视观表的语法如下:,CREATE VIEW VIEW_NAME AS SQL 语句,create view v_geography as,select region_name,trim(store_name) v_store_name,from geography g;,-删除视图,drop view v_geography;,表格处理,CREATE INDEX索引,如果一个表格没有索引的话,数据库系统就需要将整个表格的资料读出 (这个过程叫做table scan)。若有适当的索引存在,数据库系统就可以先由这个索引去找出需要的资料是在表格的什么地方,然后直接去那些地方抓资料。这样子速度就快多了。,语法:,CREATE INDEX INDEX_NAME ON TABLE_NAME (COLUMN_NAME),create index idx_store_info_store_name,on store_information (store_name,),索引的命名并没有一个固定的方式。通常会用的方式是在名称前加一个字首,例如 “IDX_” ,来避免与数据库中的其他物件混淆。另外,在索引名之内包括表格名及栏位名也是一个好的方式。,(,删除,修改索引,),表格处理,ALTER TABLE 修改表结构,ALTER TABLE语句的语法形式:,ALTER TABLE table,MODIFY column_name, new_data_type ( precision , scale ) , NULL | NOT NULL ,| ADD, ,.n ,| DROP COLUMN drop_colum_name ,.n ,在以上语法形式中:,column_name:要修改的列名。,new_data_type :要修改列的新数据类型。,precision:是指定数据类型的精度。,表格处理,scale:是指定数据类型的小数位数。,add_column_name :要添加到表中的列名。,add_data_type :要添加到表中的列的数据类型。,drop_colum_name :要从表中删除的列名, ,.n :可以有多个列。,加一个栏位: ADD 栏位 1 栏位 1 资料种类,alter table customer add address char(30);,删去一个栏位: DROP,column,栏位 1,alter table customer drop column address ;,改变栏位的资料种类: MODIFY 栏位 1 新资料种类,alter table customer modify addrs char(50);,修改栏位名,RENAME TO ,alter table customer rename column addr to addrs;,表格处理,DROP TABLE,清除表格,DROP TABLE 表格名,drop table customer;,TRUNCATE TABLE 清除表格中所有资料,TRUNCATE TABLE 表格名,truncate table customer;,DELETE FROM 删除表数据,DELETE FROM “表格名”,WHERE 条件,delete from store_information t where store_name =Los Angeles;,表格处理,INSERT INTO 插入,INSERT INTO 表格名 (栏位1, 栏位2, .),VALUES (值1, 值2, .),insert into store_information (store_name, sales, dates),values (los angeles, 900, jan-10-1999),INSERT INTO 表格1 (栏位1, 栏位2, .),SELECT 栏位3, 栏位4,FROM 表格2,insert into store_information (store_name, sales, dates),select store_name, sales, dates from v_store_information,where dates like %1998,表格处理,UPDATE 修改表格资料,UPDATE 表格名“,SET 栏位1 = 新值,WHERE 条件,update store_information set sales=800,where store_name =los angeles;,内容简介, SQL 指令: SQL 如何被用来储存、读取、以及处理数据库之中的资料。, 表格处理: SQL 如何被用来处理数据库中的表格。, 进阶 SQL: 介绍 SQL 进阶概念,以及如何用 SQL 来执行一些较复杂的运算。,SQL 实例:介绍一些典型的实例。,UNION,求合集,将两个,SQL,语句的结果合并在一起。,SQL 语句 1,UNION,SQL 语句 2,select dates from store_information,union,select dates from internet_sales,UNION ALL,UNION ALL,和,UNION,不同之处在于,UNION ALL,会将每一笔符合条件的资料都列出来,无论资料值有无重复。,SQL,进阶,INTERSECT,交集,和,UNION,指令类似,,INTERSECT,也是对两个,SQL,语句所产生的结果做处理的。不同的地方是, UNION 基本上是一个 OR (如果这个值存在于第一句或是第二句,它就会被选出),而 INTERSECT 则比较像 AND (这个值要存在于第一句和第二句才会被选出)。 UNION 是合集,而 INTERSECT 是交集。,INTERSECT 的语法如下:,SQL 语句 1,INTERSECT,SQL 语句 2,SQL,进阶,MINUS,MINUS 指令是运用在两个 SQL 语句上。它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的结果中。如果有的话,那这一笔资料就被去除,而不会在最后的结果中出现。如果第二个 SQL 语句所产生的结果并没有存在于第一个 SQL 语句所产生的结果内,那这笔资料就被抛弃。,MINUS 的语法如下:,SQL 语句 1,MINUS,SQL 语句 2,注意:在 MINUS 指令下,不同的值只会被列出一次。,SQL,进阶,子查询,我们可以在一个 SQL 语句中放入另一个 SQL 语句。当我们在 WHERE 子句或 HAVING 子句中插入另一个 SQL 语句时,我们就有一个子查询 (subquery) 的架构。 子查询的作用是什么呢?它可以被用来连接表格。有的时候子查询是唯一能够连接两个表格的方式。,子查询的语法如下:,SELECT “栏位1”,FROM 表格,WHERE 栏位2 比较运算素,(SELECT “栏位1”,FROM “表格”,WHERE 条件),select sum(sales) from store_information,t where store_name in,(select store_name from geography where region_name=East);,SQL,进阶,在这个例子中,我们并没有直接将两个表格连接起来,然后由此直接算出每一间东区店面的营业额。我们做的是先找出哪些店是在东区的,然后再算出这些店的营业额总共是多少。,在以上的例子,内部查询本身与外部查询没有关系。这一类的子查询称为简单子查询 (Simple Subquery)。如果内部查询是要利用到外部查询提到的表格中的栏位,那这个字查询就被称为相关子查询 (Correlated Subquery)。以下是一个相关子查询的例子:,select sum(i.sales) from store_information i,where i.store_name in,(select store_name from geography g,where g.store_name = i.store_name),SQL,进阶,EXISTS,在上一页中,我们用 IN 来连接内查询和外查询。另外有数个方式,例如 , , 及 =,都可以用来连接内查询和外查询。,EXISTS,也是其中一种方式。这一页我们将讨论 EXISTS 的用法。,基本上, EXISTS 是用来测试内查询有没有产生任何结果。如果有的话,系统就会执行外查询中的 SQL。若是没有的话,那整个 SQL 语句就不会产生任何结果。,EXISTS 的语法是:,SELECT “栏位1”,FROM “表格1”WHERE EXISTS,(SELECT * FROM “表格2”WHERE 条件),SQL,进阶,CASE,SQL 用来做为 if-then-else 之类逻辑的关键字。 CASE 的语法如下:,SELECT CASE (栏位名),WHEN 条件1 THEN 结果1,WHEN 条件2 THEN 结果2,.,ELSE 结果N,END,FROM 表格名,“条件” 可以是一个数值或是公式。 ELSE 子句则并不是必须的。,SQL,进阶,select store_name, case store_name,when los angeles then sales * 2,when San Diego then sales * 1.5,else sales,end,new sales,dates,from store_information,“New Sales” 是用到 CASE 那个栏位的栏位别名。,算排名,要以 SQL 列出排名,基本的概念是要做一个表格自我连结 (self join),,SQL,进阶,也是一个,笛卡尔连接,,将结果依序列出,然后算出每一行之前 (包含那一行本身) 有多少行数,select a1.name, a1.sales, count(a2.sales) sales_rank,from total_sales a1, total_sales a2,where a1.sales a2.sales,or (a1.sales=a2.sales and a1.name = a2.name),group by a1.name, a1.sales,order by a1.sales desc, a1.name desc;,对比:,select row_number()over(order by t.sales desc) m,t.*,from total_sales t;,SQL,进阶,算中位数,select sales median from,(,select a1.name, a1.sales, count(a1.sales) rank,from total_sales a1, total_sales a2,where a1.sales a2.sales,or (a1.sales=a2.sales and a1.name = a2.name),group by a1.name, a1.sales,order by a1.sales desc,) a3,where rank = (select ceil(count(*)+1)/2) from total_sales);,SQL,进阶,算累积总计,要以 SQL 算出累积总计,基本上的概念与列出排名类似:第一是先做个表格自我连结 (self join),然后将结果依序列出。在做列出排名时,我们算出每一行之前 (包含那一行本身) 有多少行数;而在做累积总计,时,我们则是算出每一行之前 (包含那一行本身) 的总合。,select a1.name, a1.sales, sum(a2.sales) running_total,from total_sales a1, total_sales a2,where a1.sales = a2.sales,/*or (a1.sales=a2.sales and a1.name = a2.name)*/,group by a1.name, a1.sales,order by a1.sales desc, a1.name desc;,SQL,进阶,算总合百分比,每一笔资料是所有总合的百分之几?,要用 SQL 算出总合百分比,我们需要用到算排名和累积总计的概念,以及运用子查询的做法。在这里,我们把子查询放在外部查询的 SELECT 子句中。,select a1.name, a1.sales,a1.sales/(select sum(sales) from total_sales) pct_to_total,from total_sales a1, total_sales a2,where a1.sales = a2.sales,/*or (a1.sales=a2.sales and a1.name = a2.name)*/,group by a1.name, a1.sales,order by a1.sales desc, a1.name desc;,SQL,进阶,算累积总合百分比,我们要算出到目前为止的累积总合是所有总合的百分之几,而不是光看每一笔资料是所有总合的百分之几。,select a1.name, a1.sales,sum(a2.sales)/(select sum(sales) from total_sales) pct_to_total,from total_sales a1, total_sales a2,where a1.sales ”,-,查询表的前十行数据,select * from tablename where rownum=10;,-,查询,11-20,行记录,-,方法一,select * from (select rownum m,t.* from report_info t where rownum=11;,-,方法二,select * from tablename where rownum=20,minus,select * from tablename where rownum 11;,-,方法三,select * from (select row_number()over(order by t.sales desc) m,t.* from total_sales t) where m between 2 and 5;,SQL,进阶,对比学习,select rownum,t.* from total_sales t;,-,顺序排序,select row_number()over(order by t.sales desc) m,t.* from total_sales t;,-,跳跃排序,select rank()over(order by t.sales desc) m,t.* from total_sales t;,-,连续排序,select dense_rank()over(order by t.sales desc) m,t.* from total_sales t;,SQL,进阶,内容简介, SQL 指令: SQL 如何被用来储存、读取、以及处理数据库之中的资料。, 表格处理: SQL 如何被用来处理数据库中的表格。, 进阶 SQL: 介绍 SQL 进阶概念,以及如何用 SQL 来执行一些较复杂的运算。,SQL 实例:介绍一些典型的实例,以及与大规划相关的语句。,-,设置月报报表参考期别,select distinct tab_year,年份,tab_month,月份,from,(,select tab_year,tab_month from DXP_408703,union,select to_number(to_char(add_months(sysdate,-1),yyyy)tab_year,to_number(to_char(add_months(sysdate,-1),mm) tab_month from dual,),order by tab_year desc,tab_month desc,SQL,实例,-,设置季报报表参考期别,select distinct tab_year,年份, tab_month,季度,from,(,select distinct tab_year, tab_month,from JNJP_PRICE_EXPONENT_SGCC,union,select to_number(to_char(sysdate, yyyy) tab_year,trunc(to_number(to_char(sysdate, mm) / 3) tab_month,from dual),order by tab_year desc, tab_month desc;,SQL,实例,to char,是把日期或数字转换为字符串,to date,是把字符串转换为数据库中得日期类型,使用,TO_CHAR,函数处理数字,TO_CHAR(number, ,格式,),TO_CHAR(salary,$99,999.99);,使用,TO_CHAR,函数处理日期,TO_CHAR(date,格式,);,使用,TO_NUMBER,函数将字符转换为数字,TO_NUMBER(char, ,格式,),使用,TO_DATE,函数将字符转换为日期,TO_DATE(char, ,格式,),SQL,实例,数字格式,9,代表一个数字,0,强制显示,0,$,放置一个,$,符,L,放置一个浮动本地货币符,.,显示小数点,显示千位指示符 来,SQL,实例,日期格式,格式控制 描述,YYYY,、,YYY,、,YY,分别代表,4,位、,3,位、,2,位的数字年,YEAR,年的拼写,MM,数字月,MONTH,月的全拼,MON,月的缩写,DD,数字日,DAY,星期的全拼,DY,星期的缩写,AM,表示上午或者下午,HH24,、,HH12 12,小时制或,24,小时制,SQL,实例,日期格式,MI,分钟,SS,秒钟,SP,数字的拼写,TH,数字的序数词,“特殊字符” 假如特殊字符,HH24:MI:SS AM,15:43:20 PM,DD “OF” MONTH 12 OF OCTOBER,DDSPTH fourteenth,Date,的格式 ,18-5,月,-84,to_date(2008-12-01 00:00:00,yyyy-mm-dd hh24:mi:ss),SQL,实例,-,增加序号列,select rownum,t.* from report_info t;,-,按指定的顺序排序,select rownum,code,title,db_table from,(select * from report_info,order by decode (code ,1628 , 1 ,1110 , 2 ,1623 , 3 ,1624 , 4 ,1625 , 5 ) ) t,where rownum = 6;,SQL,实例,培训结束,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!