SQLPLUS用法大全

合集下载

sqlplus常用命令

sqlplus常用命令

6、显示一个表结构:
SQL> desc tab --如果tab不是表,则只显示其类型和名字
7、保存所有输入:
SQL> spool D:\xxx --建立一个xxx.LST文件
SQL> spool --显示当前spool状态
SQL> COLUMN id TRUNCATED --直接按长度截断
7、COLUMN--显示当前列所有属性
SQL> COLUMN id --后面不加列名时显示所有的COLUMN
8、OFF|ON--设置某一字段关闭
设置一行可以容纳的字符数
SQL> SET LIN[ESIZE] {80|n}
如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。
设置页与页之间的分隔
SQL> SET NEWP[AGE] {1|n|NONE}
当set newpage 0 时,会在每页的开头有一个小的黑方框。
常用的SQLPLUS输出格式化命令:
执行一个SQL脚本文件
SQL>start file_name
SQL>@ file_name
将显示的内容输出到指定文件
SQL> SPOOL file_name
关闭spool输出
SQL> SPOOL OFF
只有关闭spool输出,才会在输出文件中看到输出的内容。
SQL> BTITLE def --添加页脚“def”
SQL> TTITLE OFF --取消页眉显示
三、COLUMN[COL]命令修改字段属性:
可以修改的属性有:
ALI[AS] alias

sqlplus -s用法

sqlplus -s用法

sqlplus -s用法
sqlplus是Oracle数据库的交互式命令行工具,-s选项是其中的一个参数,表示“静默模式”。

使用-s选项可以在执行sqlplus
命令时,不显示启动和退出信息,只显示查询结果。

这在需要在脚
本或者批处理中执行SQL语句时非常有用,可以避免额外的输出干扰。

举例来说,假设我们有一个脚本文件test.sql包含SQL查询语句,我们可以使用以下命令来执行该脚本并在静默模式下输出结果:
sqlplus-susername/password@*****************.
这样就会在不显示额外信息的情况下执行test.sql中的SQL语句,并将查询结果输出到标准输出。

需要注意的是,-s选项并不会隐藏错误信息,所以在实际使用中,仍然需要对SQL语句的执行结果进行适当的错误处理。

总之,sqlplus -s选项的主要作用是在执行SQL语句时以静默
模式输出结果,适用于需要在脚本或者批处理中执行SQL查询的场景。

sqlplus登陆使用

sqlplus登陆使用

sqlplus登陆使⽤select * from dept;input order by dname; 追加⽂本命令 del n 删除语句celar buffer ; 清除缓冲区的命令conn sys as sysdba 登陆⽤户⼀般只要安装了oracle的服务器端或者客户端,sqlplus都被默认安装。

⽽sqlplusw只是在sqlplus上添加了⼀个窗体,在其上执⾏SQL语句与sqlplus完全相同。

sqlplus的主要应⽤场景为查看/设置参数、执⾏SQL脚本等。

1.利⽤sqlplus登录数据库sqlplus和sqlplusw都是oracle安装⽬录下的可执⾏⽂件。

可以在命令窗⼝中执⾏如下命令进⾏登录。

sqlplus username/password@netservicename其中,username/password为登录数据库所使⽤的⽤户名和密码;netservicename是要进⾏数据库连接的本地Net服务名。

以登录Net服务tst为例,需要在命令⾏中执⾏如下代码:sqlplus system/oracle@tst成功登录tst数据库之后的界⾯如图所⽰:2.查看数据库参数在oracle中,查看数据库参数应该使⽤show parameter命令。

例如,查看当前数据库实例名的命令如下所⽰。

其中,show parameter要求数据库显⽰参数;instance_name为参数名称。

分析执⾏结果可知,当前数据库的实例名为tst。

当然,对于⽤户来说,不可能每次都准确⽆误地指定参数名。

因此,show parameter⽀持部分匹配功能,也就是说,⽤户只需输⼊部分参数名即可。

当⽤户执⾏show parameter instance命令时,oracle将所有包含instance字样的参数全部显⽰给⽤户。

注意,此处的show parameter命令,不⽀持通配符。

3.关闭/启动数据库(1)以DBA⾝份登录数据库在数据库服务器的本机上,可以⽆需输⼊⽤户名/密码;as sysdba表⽰以数据库管理员⾝份登录数据库。

plsql使用教程

plsql使用教程

plsql使用教程PL/SQL是Oracle数据库的过程式编程语言,它结合了SQL的强大查询能力和程序设计语言的灵活性。

以下是一个简单的PL/SQL使用教程:1. 定义变量在PL/SQL中,可以使用DECLARE语句来定义变量。

例如:DECLAREnum INTEGER;name VARCHAR2(50);2. 使用SELECT查询数据可以使用SELECT语句从表中检索数据。

例如:SELECT * INTO num, name FROM employees WHERE employee_id = 100;3. 使用IF-THEN-ELSE进行条件判断PL/SQL提供了IF-THEN-ELSE语句来进行条件判断。

例如:IF num > 0 THENDBMS_OUTPUT.PUT_LINE('Number is positive');ELSEDBMS_OUTPUT.PUT_LINE('Number is negative');END IF;4. 使用FOR循环可以使用FOR循环来对一个集合进行迭代。

例如:FOR i IN 1..10 LOOPDBMS_OUTPUT.PUT_LINE('The value of i is: ' || i);END LOOP;5. 创建存储过程可以使用CREATE PROCEDURE语句来创建存储过程。

例如:CREATE PROCEDURE get_employee_details (p_employee_idIN NUMBER) ISv_employee_name VARCHAR2(50);BEGINSELECT employee_name INTO v_employee_name FROM employees WHERE employee_id = p_employee_id;DBMS_OUTPUT.PUT_LINE('Employee name is: ' ||v_employee_name);END;6. 调用存储过程可以使用EXECUTE语句来调用存储过程。

sqlplus常用set指令

sqlplus常用set指令

sqlplus常⽤set指令set colsep' '; //##--域输出分隔符set echo off; //##--显⽰start启动的脚本中的每个sql命令,缺省为onset feedback off; //##--回显本次sql命令处理的记录条数,缺省为onset heading off; //##--输出域标题,缺省为onset pagesize 0; //##--输出每页⾏数,缺省为24,为了避免分页,可设定为0。

set linesize 80; //##--输出⼀⾏字符个数,缺省为80set numwidth 12; //##--输出number类型域长度,缺省为10set termout off; //##--显⽰脚本中的命令的执⾏结果,缺省为onset timing off; //##--显⽰每条sql命令的耗时,缺省为offset trimout on; //##--去除标准输出每⾏的拖尾空格,缺省为offset trimspool on; //##--去除重定向(spool)输出每⾏的拖尾空格,缺省为off===========================1. 执⾏⼀个SQL脚本⽂件SQL>start file_nameSQL>@ file_name我们可以将多条sql语句保存在⼀个⽂本⽂件中,这样当要执⾏这个⽂件中的所有的sql语句时,⽤上⾯的任⼀命令即可,这类似于dos中的批处理。

2. 对当前的输⼊进⾏编辑SQL>edit3. 重新运⾏上⼀次运⾏的sql语句SQL>/4. 将显⽰的内容输出到指定⽂件SQL> SPOOL file_name在屏幕上的所有内容都包含在该⽂件中,包括你输⼊的sql语句。

5. 关闭spool输出SQL> SPOOL OFF只有关闭spool输出,才会在输出⽂件中看到输出的内容。

6.显⽰⼀个表的结构SQL> desc table_name7. COL命令:主要格式化列的显⽰形式。

sqlplus set用法

sqlplus set用法
cursor c1(v_owner varchar2, v_tab_name varchar2) is
select column_name, data_type
from all_tab_columns
where table_name = v_tab_name
and owner = v_owner;
date_format varchar2(30) := 'yyyymmddhh24miss'; -- 日期格式
v_owner varchar2(30) := user;
v_tab_name varchar2(30) := upper(trim('&tab_name'));
dbms_output.put_line('spool ./data/&tab_name' || '_data.sql');
-- Print the insert field
dbms_output.put_line('variable field_list varchar2(4000);');
set line 10000 -- 设置一行显示的字符总数
set verify off -- 是否显示替代变量被替代前后的语句 on 显示 off 不显示
set head off -- 是否显示列标题 on 显示 off 不显示
@@ one_table.sql 'COMPONENT'; -- 执行main.sql目录下的one_table.sql 'COMPONENT' 是输入的参数
set heading off等问题2010-09-01 11:03set heading off——不显示每行的列名

sqlplus使用教程

sqlplus使用教程

Sqlplus基本操作1.登陆用户:sqlplus /as sysdba --以操作系统权限认证的oracle sys管理员登陆conn /as sysdba --不在cmd或者terminal当中暴露密码的登陆方式sqlplus scott/tiger --非管理员用户登陆sqlplus scott/tiger@orcl --非管理员用户使用tns别名登陆sqlplus sys/password@orcl as sysdba --管理员用户使用tns别名登陆sqlplus --不显露密码的登陆方式Enter user-name:sysEnter password:password as sysdba--以sys用户登陆的话必须要加上 as sysdba 子句cmd下登陆:sqlplus /nolog --进入sqlplus环境,如果直接打来sqlplus则不用这一步conn /as sysdba --以系统管理员身份(sysdba)登陆数据库2.用户管理系统用户sys;//系统管理员,拥有最高权限system;//本地管理员,次高权限scott;//普通用户,密码默认为tiger,默认未解锁登陆sqlplus / as sysdba;//登陆sys帐户sqlplus sys as sysdba;//登陆sys账户,方法二sqlplus scott/tiger;//登陆普通用户scott管理用户create user starive;//在管理员帐户下,创建用户starivealert user scott identified by tiger;//修改密码解锁scott用户:cmd下sqlplus /nolog --进入sqlplus环境conn /as sysdba --以系统管理员身份(sysdba)登陆数据库也可:sqlplus请输入用户名:sys输入口令:sys as sysdba //注意:在口令这里输入的密码后面必须要跟上as sysdba 才可以然后:alter user scott account unlock;commit;conn scott/tiger输入新口令:tiger。

sqlplus常用语句

sqlplus常用语句

sqlplus常用语句
SQLPlus是Oracle数据库中常用的交互式命令行工具,用于执行SQL语句和PL/SQL块。

以下是一些常用的SQLPlus语句:
1. 连接到数据库:
SQLPLUS username/password@database.
2. 退出SQLPlus:
EXIT 或 QUIT.
3. 执行SQL查询:
SELECT FROM table_name;
4. 显示表结构:
DESC table_name;
5. 执行存储过程或函数:
EXEC procedure_name;
6. 执行SQL脚本:
@path_to_script.sql.
7. 输出查询结果到文件:
SPOOL file_name.
8. 取消输出到文件:
SPOOL OFF.
9. 显示当前数据库会话信息: SHOW USER.
10. 设置SQLPlus环境变量:
SET option value.
这些是一些常用的SQLPlus语句,可以帮助你在SQLPlus中执行各种操作。

当然,SQLPlus还有很多其他命令和选项,具体使用取决于你的需求和情境。

希望这些信息能够帮助到你。

sqlplus命令大全

sqlplus命令大全

sqlplus命令⼤全⼀、ORACLE的启动和关闭1、在单机环境下要想启动或关闭ORACLE系统必须⾸先切换到ORACLE⽤户,如下su - oraclea、启动ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>startupSVRMGR>quitb、关闭ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>shutdownSVRMGR>quit启动oracle9i数据库命令:$ sqlplus /nologSQL*Plus: Release 9.2.0.1.0 - Production on Fri Oct 31 13:53:53 2003Copyright (c) 1982, 2002, Oracle Corporation.All rights reserved.SQL> connect / as sysdbaConnected to an idle instance.SQL> startup^CSQL> startupORACLE instance started.2、在双机环境下要想启动或关闭ORACLE系统必须⾸先切换到root⽤户,如下su - roota、启动ORACLE系统hareg -y oracleb、关闭ORACLE系统hareg -n oracleOracle数据库有哪⼏种启动⽅式说明:有以下⼏种启动⽅式:1、startup nomount⾮安装启动,这种⽅式启动下可执⾏:重建控制⽂件、重建数据库读取init.ora⽂件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora⽂件。

2、startup mount dbname安装启动,这种⽅式启动下可执⾏:数据库⽇志归档、数据库介质恢复、使数据⽂件联机或脱机,重新定位数据⽂件、重做⽇志⽂件。

Oracle数据库知识点:SQLPLUS介绍

Oracle数据库知识点:SQLPLUS介绍

Oracle数据库知识点:SQLPLUS介绍Oracle数据库知识点:SQLPLUS介绍SQLPLUS是ORACLE公司开发的很简洁的管理工具,SQLPLUS 是最好的,最核心的ORACLE管理工具。

SQLPLUS简洁而高效,舍弃浮华,反璞归真。

使用sqlplus,进入sqlplus并进行简单的操作目的是熟悉oracle的小工具sqlplus的使用。

1、如何进入SQLPLUS界面进入DOS,然后键入如下命令C:\>sqlplus /nolog进入字符界面C:\>sqlplusw /nolog进入windows界面,windows平台特有的。

/nolog是不登录的意思。

只进入SQLPLUS程序提示界面。

等待你输入命令。

2、SQLPLUS的基本操作Sql>connect / as sysdba连接到本地的最高帐号Sql>help indexEnter Help [topic] for help.Sql>show all显示当前SQLPLUS的环境设置Sql>show user显示当前所登录的用户信息SQL> clear screen有的时候sqlplus会显示的有点乱,光标不在最后,请清屏.3、一些常用命令Spool命令是将屏幕的显示输入到文本文件内,以便查看,有点象屏幕转存。

SPOOL C:\1.TXTSELECT * FROM EMP;SPOOL OFF以上三行就将SPOOL和SPOOL OFF所夹的屏幕输出到c:\1.txt 文件中。

Spool c:\1.txt appendSelect * from dept;Spool off加APPEND命令的.含义是续写c:\1.txt,如果不加,将会把原来的c:\1.txt覆盖,这是10G的新特性,以前的数据库版本不能续写,只能指定新的文件名称。

Run运行SQLPLUS缓冲区内的SQL语句,可以缩写为r/与run命令相同,运行SQLPLUS缓冲区内的SQL语句@脚本@%oracle_home%\rdbms\admin\utlxplan.sql该句话的含义为运行指定的脚本。

sqlPlus操作指南

sqlPlus操作指南
name sal HIREDATE
---------- ------------------- -------------------
SCOTT ¥3000.00 04/19/1987 00:00:00
(2)在windows环境中运行sql*plus
如果在windows环境中安装了oralce数据库产品,那么可以在窗口环境中运行sql*plus
具体方法: "开始->程序->oracle-oradb10g_home1->application development->sql*plus"
2.连接命令
sql>col ename clear
sql>col sal clear
sql>select ename,sal,hiredate from emp
sql>where empno=7788;
(2)title
该命令用于指定页标题,页标题会自动显示在页的中央。如果页标题由多个词组成,则用单引号引住。如果要将页
SQL> l
1 select ename
2* from emp
如果一次要删除多行,则指定起始行号和终止行号,例如"del 3 5"
(5)i[nput]
该命令用于在sql缓冲区的当前行后新增加一行。示例如下:
SQL> l
1 select ename
3* where deptno=10
sql>a and job='CLERK'
sql>l
SQL> list
1 select empno,ename,sal,hiredate,comm,deptno

sqlplus登录连接命令、sqlplus命令的使用大全

sqlplus登录连接命令、sqlplus命令的使用大全

sqlplus登录连接命令、sqlplus命令的使⽤⼤全我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执⾏完后,都可以保存在⼀个被称为sql buffer的内存区域中,并且只能保存⼀条最近执⾏的sql语句,我们可以对保存在sql buffer中的sql 语句进⾏修改,然后再次执⾏,sqlplus⼀般都与数据库打交道。

常⽤:sqlplus username/password 如:普通⽤户登录 sqlplus scott/tigersqlplus username/password@net_service_name 如: sqlplus scott/tiger@orclsqlplus username/password as sysdba 如:sqlplus sys/admin as sysdbasqlplus username/password@//host:port/sid注意:sys和system需要以sysdba登录在进⼊sql*plus之后,可以使⽤conn连接到其他⽤户,如:conn sys/admin as sysdba在DOS环境下,输⼊“sqlplus /?”,如下:C:\Documents and Settings\HH>sqlplus /?SQL*Plus: Release 11.2.0.1.0 Production on 星期六 8⽉ 13 16:56:46 2011Copyright (c) 1982, 2010, Oracle. All rights reserved.SQL*Plus: Release 11.2.0.1.0 ProductionCopyright (c) 1982, 2010, Oracle. All rights reserved.使⽤ SQL*Plus 执⾏ SQL, PL/SQL 和 SQL*Plus 语句。

⽤法 1: sqlplus -H | -V-H 显⽰ SQL*Plus 版本和⽤法帮助。

1.2 SQL Plus用法

1.2  SQL Plus用法
Sys用户, Sys用户,操作 用户 系统验证
sqlplusw /nolog
conn scott/tiger as sysdba
SQL>show user
®
2002 - 2005. All rights reserved. Copyright © Oracle Corporation, 2001. All rights reserved. 1-4
®
2002 - 2005. All rights reserved. Copyright © Oracle Corporation, 2001. All rights reserved. 1-13
5.
I[NPUT] text 在sql buffer后面插入 后面插入text(新行 新行) 后面插入 新行
SQL Plus Worksheet 主界面
®
2002 - 2005. All rights reserved. Copyright © Oracle Corporation, 2001. All rights reserved. 1-8
SQL*PLUS常用的查询显示命令
1) . 显示当前环境变量的值: 显示当前环境变量的值: Show all
2) . 显示当前在创建函数、存储过程、触发器、包等对象的错误信息 显示当前在创建函数、存储过程、触发器、 Show error
3) . 显示初始化参数的值: 显示初始化参数的值: show PARAMETERS [parameter_name]
®
2002 - 2005. All rights reserved. Copyright © Oracle Corporation, 2001. All rights reserved. 1-9

SQLPLUS基本命令的使用方法示例

SQLPLUS基本命令的使用方法示例

SQLPLUS基本命令的使⽤⽅法⽰例1、Oracle 中 dba,all,user,之间的区别1. 结论:'权限⼤⼩不同': dba_* > all_* > user_*(1) dba_* : 可以访问 '数据库' 中所有的对象(前提:该⽤户是 dba ⽤户)(2) all_* :某⼀⽤户 '拥有' 的或 '可以访问' 的所有的对象(3) user_*:某⼀⽤户 '拥有' 的所有对象2. 查询是否是 dba ⽤户select * from dba_role_privs t where t.granted_role = 'DBA';2、descdesc:万能查看命令查看dept表SQL> desc deptName Null? Type----------------------------------------- -------- --------------------------DEPTNO NOT NULL NUMBER(2)DNAME VARCHAR2(14)LOC VARCHAR2(13)3、设置SQL*PLUS的运⾏环境,包括每⾏的显⽰字符数、每页显⽰⾏数、每页打印标题前空⾏数。

set命令基本语法在Oracle 11g数据库中,⽤户可以使⽤set命令来设置SQL*Plus的运⾏环境;set system_variable value;system_variable:变量名;value:变量值;通过set命令设置的环境变量是临时的,不是永久的;当⽤户退出SQL*Plus环境后,⽤户设置的环境参数会全部消失;使⽤set命令设置运⾏环境pagesize变量:该变量⽤来设置从顶部标题⾄页结束之间的⾏数;set pagesize value;value的默认值为14;使⽤show pagesize命令显⽰当前SQL*Plus环境中的⼀页有多少⾏;show pagesize;同理:newpage变量:该变量⽤来设置⼀页中空⾏的数量;set newpage value;value的默认值为1;show newpage;linesize变量:该变量⽤来设置在SQL*Plus环境中⼀⾏所显⽰的最多字符总数;set linesize value;value的默认值为80;show linesize;pause变量:该变量⽤来设置SQL*Plus输出结果是否滚动显⽰;set pause value;value变量值有以下三种情况:- off:默认值,表⽰返回结果⼀次性输出完毕,中间的每⼀页不会暂停;- on:表⽰输出结果的每⼀页都暂停,⽤户按后回车键后会继续显⽰;- text:在设置pause的值为on之后,再设置text的值,则每次暂停都将显⽰该字符串;当pause的值设置为off时,设置text的值没有任何意义;oracle⽤命令执⾏sql脚本⽂件当sql命令过多(sql⽂件过⼤)时,⽤plsql执⾏时⽐较慢⽽且容易超时,此时可以⽤sqlplus命令直接执⾏sql脚本⽂件。

SQLPLUS全部命令解释及应用实例

SQLPLUS全部命令解释及应用实例

COL命令:主要格式化列的显示形式该命令有许多选项,具体如下:COL[UMN] [{ column|expr} [ option ...]]Option选项可以是如下的子句:ALI[AS] alias --别名CLE[AR] --重置为默认值的列的显示属性。

ENTMAP {ON | OFF} --使实体映射被打开或关闭HTML输出选定列。

FOLD_A[FTER]--在select列表中的最后一列后插入一个额外的回车。

FOLD_B[EFORE]--在SELECT列表中的第一列前插入一个额外的回车。

FOR[MAT] format --指定列的显示格式。

表12-1数字格式HEA[DING] text --定义一个列标题JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]} --设置列标题的对齐方式LIKE { expr|alias}--复制另一列或表达式(你已经与另一列命令中定义的属性)的显示属性。

类似文件的副本,只有属性没有定义在当前列命令的另一个条款。

NEWL[INE] --启动新行前显示的列的值。

NEW_V[ALUE] variable --指定一个变量来保存列值。

NOPRI[NT]|PRI[NT]--控制打印的列(列标题和所有选定的值)。

NOPRINT关闭屏幕输出和打印的列。

打印关闭打印列。

NUL[L] text--显示列值时,如果列值为NULL值,用text值代替NULL值OLD_V[ALUE] variable --指定一个变量来保存列值。

ON|OFF--控制列的显示属性的状态。

关闭停用不影响属性的定义为一列的属性。

关于恢复了属性。

WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]--设置一个列的回绕方式指定的SQL * Plus将如何对待太宽,一列的数据类型或日期字符串。

包裹包装字符串列范围内,需要时,开始新的生产线。

已启用WORD_WRAP时,SQL * Plus中左每一新行辩护,跳过所有领先的空白(例如,换行符,制表符和空格),包括嵌入式换行符。

oracle sqlplus注释

oracle sqlplus注释

oracle sqlplus注释Oracle SQL*Plus注释是在SQL语句中用来提供说明和解释的一种方法。

注释可以帮助其他开发人员或维护人员了解SQL语句的目的和逻辑,提高代码的可读性和可维护性。

本文将详细介绍Oracle SQL*Plus注释的用法和注意事项。

1. 单行注释单行注释是最常用的注释方式,可以在SQL语句中的任意位置添加注释。

单行注释以两个连字符(--)开头,后跟注释内容。

例如:```SELECT * FROM employees -- 查询所有员工信息WHERE department_id = 10;```在上面的例子中,注释“查询所有员工信息”说明了这个SQL语句的目的。

2. 块注释块注释是用来注释一段SQL语句或多行注释的方式。

块注释以“/*”开头,以“*/”结尾,中间的内容都被注释掉。

例如:```/*查询所有员工信息包括员工姓名、工资和职位*/SELECT employee_name, salary, job_titleFROM employees;```在上面的例子中,块注释说明了这个SQL语句的目的和查询的内容。

3. 注释的嵌套注释可以嵌套使用,即在一个注释中添加另一个注释。

例如:```/*查询所有员工信息包括员工姓名、工资和职位/*SELECT employee_name, salary, job_titleFROM employees;*/```在上面的例子中,外层注释是用来注释SQL语句的目的和查询的内容,内层注释是用来注释SQL语句本身。

4. 注释的使用场景注释可以在SQL语句中的任何位置添加,通常用来说明以下内容:- SQL语句的目的和逻辑- SQL语句的输入和输出- SQL语句的优化和性能调优- SQL语句的变更历史和修改记录5. 注释的注意事项在使用注释时,需要注意以下几点:- 注释应该清晰明了,用简洁的语言描述SQL语句的目的和逻辑。

- 注释应该与SQL语句对应,不要出现与实际SQL语句不符的注释。

PLSQL常用方法汇总

PLSQL常用方法汇总

PLSQL常用方法汇总在SQLPLUS下,实现中-英字符集转换alter session set nls_language='AMERICAN';alter session set nls_language='SIMPLIFIED CHINESE';主要知识点:一、有关表的操作1)建表create table test as select * from dept; --从已知表复制数据和结构create table test as select * from dept where 1=2; --从已知表复制结构但不包括数据2)插入数据:insert into test select * from dept;二、运算符算术运算符:+ - * / 可以在select 语句中使用连接运算符:|| select deptno|| dname from dept;比较运算符:> >= = != < <= like between is null in逻辑运算符:not and or集合运算符:intersect(交),union(并不重复),union all(并重复),minus(差)要求:对应集合的列数和数据类型相同查询中不能包含long 列列的标签是第一个集合的标签使用order by时,必须使用位置序号,不能使用列名例:集合运算符的使用:intersect ,union,union all,minusselect * from emp intersect select * from emp where deptno=10 ;select * from emp minus select * from emp where deptno=10;select * from emp where deptno=10 union select * from emp where deptno in (10,20); --不包括重复行select * from emp where deptno=10 union all select * from emp where deptno in (10,20); --包括重复行三,常用ORACLE 函数sysdate为系统日期dual为虚表一)日期函数[重点掌握前四个日期函数]-----------------------------------------TO_DATE格式Day:dd number 12dy abbreviated friday spelled out fridayddspth spelled out, ordinal twelfthMonth:mm number 03mon abbreviated marmonth spelled out marchYear:yy two digits 98yyyy four digits 1998Time:HH24:MI:SSHH12:MI:SS24小时格式下时间范围为:0:00:00 - 23:59:59....12小时格式下时间范围为:1:00:00 - 12:59:59 ....-----------------------------------------1,add_months[返回日期加(减)指定月份后(前)的日期]select sysdate S1, add_months(sysdate, 10) S2, add_months(sysdate, 5) S3 from dual;2,last_day [返回该月最后一天的日期]select sysdate,last_day(sysdate) from dual;3,months_between[返回日期之间的月份数]select sysdate S1,months_between('1-4月-04', sysdate) S2,months_between('1-4月-04', '1-2月-04') S3from dual4,next_day(d,day): 返回下个星期的日期,day为1-7或星期日-星期六,1表示星期日select sysdate S1, next_day(sysdate, 1) S2, next_day(sysdate, '星期日') S3 FROM DUAL5,round[舍入到最接近的日期](day:舍入到最接近的星期日)select sysdate S1,round(sysdate) S2,round(sysdate, 'year') YEAR,round(sysdate, 'month') MONTH,round(sysdate, 'day') DAYfrom dual6,trunc[截断到最接近的日期]select sysdate S1,trunc(sysdate) S2,trunc(sysdate, 'year') YEAR,trunc(sysdate, 'month') MONTH,trunc(sysdate, 'day') DAYfrom dual7,返回日期列表中最晚日期select greatest('01-1月-04', '04-1月-04', '10-2月-04') from dual二)字符函数(可用于字面字符或数据库列)1,字符串截取select substr('abcdef',1,3) from dual2,查找子串位置select instr('abcfdgfdhd','fd') from dual3,字符串连接select 'HELLO'||'hello world' from dual;4, 1)去掉字符串中的空格select ltrim(' abc') s1, rtrim('zhang ') s2, trim(' zhang ') s3 from dual 2)去掉前导和后缀select trim(leading 9 from 9998767999) s1,trim(trailing 9 from 9998767999) s2,trim(9 from 9998767999) s3from dual;5,返回字符串首字母的Ascii值select ascii('a') from dual6,返回ascii值对应的字母select chr(97) from dual7,计算字符串长度select length('abcdef') from dual8,initcap(首字母变大写),lower(变小写),upper(变大写)select lower('ABC') s1,upper('def') s2,initcap('efg') s3 from dual;9,Replaceselect replace('abc','b','xy') from dual;10,translateselect translate('abc','b','xx') from dual; -- x是1位11,lpad [左添充] rpad [右填充](用于控制输出格式)select lpad('func',15,'=') s1, rpad('func',15,'-') s2 from dual;select lpad(dname,14,'=') from dept;12, decode[实现if ..then 逻辑]select deptno,decode(deptno,10,'1',20,'2',30,'3','其他') from dept; 三)数字函数1,取整函数(ceil 向上取整,floor 向下取整)select ceil(66.6) N1,floor(66.6) N2 from dual;2, 取幂(power) 和求平方根(sqrt)select power(3,2) N1,sqrt(9) N2 from dual;3,求余select mod(9,5) from dual;4,返回固定小数位数(round:四舍五入,trunc:直接截断)select round(66.667,2) N1,trunc(66.667,2) N2 from dual;5,返回值的符号(正数返回为1,负数为-1)select sign(-32),sign(293) from dual;四)转换函数1,to_char()[将日期和数字类型转换成字符类型]1) select to_char(sysdate) s1,to_char(sysdate,'yyyy-mm-dd') s2,to_char(sysdate,'yyyy') s3,to_char(sysdate,'yyyy-mm-dd hh12:mi:ss') s4,to_char(sysdate, 'hh24:mi:ss') s5,to_char(sysdate,'DAY') s6 from dual;2) select sal,to_char(sal,'$99999') n1,to_char(sal,'$99,999') n2 from emp2, to_date()[将字符类型转换为日期类型]insert into emp(empno,hiredate) values(8000,to_date('2004-10-10','yyyy-mm-dd')); 3, to_number() 转换为数字类型select to_number(to_char(sysdate,'hh12')) from dual; //以数字显示的小时数五)其他函数user:返回登录的用户名称select user from dual;vsize:返回表达式所需的字节数select vsize('HELLO') from dual;nvl(ex1,ex2):ex1值为空则返回ex2,否则返回该值本身ex1(常用)例:如果雇员没有佣金,将显示0,否则显示佣金select comm,nvl(comm,0) from emp;nullif(ex1,ex2):值相等返空,否则返回第一个值例:如果工资和佣金相等,则显示空,否则显示工资select nullif(sal,comm),sal,comm from emp;coalesce:返回列表中第一个非空表达式select comm,sal,coalesce(comm,sal,sal*10) from emp;nvl2(ex1,ex2,ex3) :如果ex1不为空,显示ex2,否则显示ex3如:查看有佣金的雇员姓名以及他们的佣金select nvl2(comm,ename,'') as HaveCommName,comm from emp;六)分组函数max min avg count sum1,整个结果集是一个组1) 求部门30 的最高工资,最低工资,平均工资,总人数,有工作的人数,工种数量及工资总和select max(ename),max(sal),min(ename),min(sal),avg(sal),count(*) ,count(job),count(distinct(job)) ,sum(sal) from emp where deptno=30;2, 带group by 和having 的分组1)按部门分组求最高工资,最低工资,总人数,有工作的人数,工种数量及工资总和select deptno, max(ename),max(sal),min(ename),min(sal),avg(sal),count(*) ,count(job),count(distinct(job)) ,sum(sal) from emp group by deptno;2)部门30的最高工资,最低工资,总人数,有工作的人数,工种数量及工资总和select deptno, max(ename),max(sal),min(ename),min(sal),avg(sal),count(*) ,count(job),count(distinct(job)) ,sum(sal) from emp group by deptno having deptno=30;3, stddev 返回一组值的标准偏差select deptno,stddev(sal) from emp group by deptno;variance 返回一组值的方差差select deptno,variance(sal) from emp group by deptno;4, 带有rollup和cube操作符的Group Byrollup 按分组的第一个列进行统计和最后的小计cube 按分组的所有列的进行统计和最后的小计select deptno,job ,sum(sal) from emp group by deptno,job;select deptno,job ,sum(sal) from emp group by rollup(deptno,job);cube 产生组内所有列的统计和最后的小计select deptno,job ,sum(sal) from emp group by cube(deptno,job);七、临时表只在会话期间或在事务处理期间存在的表.临时表在插入数据时,动态分配空间create global temporary table temp_dept(dno number,dname varchar2(10))on commit delete rows;insert into temp_dept values(10,'ABC');commit;select * from temp_dept; --无数据显示,数据自动清除on commit preserve rows:在会话期间表一直可以存在(保留数据)on commit delete rows:事务结束清除数据(在事务结束时自动删除表的数据)Oracle时间日期操作sysdate+(5/24/60/60) 在系统时间基础上延迟5秒sysdate+5/24/60 在系统时间基础上延迟5分钟sysdate+5/24 在系统时间基础上延迟5小时sysdate+5 在系统时间基础上延迟5天add_months(sysdate,-5) 在系统时间基础上延迟5月add_months(sysdate,-5*12) 在系统时间基础上延迟5年上月末的日期:select last_day(add_months(sysdate, -1)) from dual;本月的最后一秒:select trunc(add_months(sysdate,1),'MM') - 1/24/60/60 from dual本周星期一的日期:select trunc(sysdate,'day')+1 from dual年初至今的天数:select ceil(sysdate - trunc(sysdate, 'year')) from dual;今天是今年的第几周:select to_char(sysdate,'fmww') from dual今天是本月的第几周:SELECT TO_CHAR(SYSDATE,'WW') - TO_CHAR(TRUNC(SYSDATE,'MM'),'WW') + 1 AS "weekOfMon" FROM dual本月的天数SELECT to_char(last_day(SYSDATE),'dd') days FROM dual今年的天数select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual下个星期一的日期SELECT Next_day(SYSDATE,'monday') FROM dual============================================--计算工作日方法create table t(s date,e date);alter session set nls_date_format = 'yyyy-mm-dd';insert into t values('2003-03-01','2003-03-03');insert into t values('2003-03-02','2003-03-03');insert into t values('2003-03-07','2003-03-08');insert into t values('2003-03-07','2003-03-09');insert into t values('2003-03-05','2003-03-07');insert into t values('2003-02-01','2003-03-31');-- 这里假定日期都是不带时间的,否则在所有日期前加trunc即可。

SQLPlus连接数据库

SQLPlus连接数据库

SQLPlus 在连接时通常有四种方式
1. sqlplus / as sysdba
操作系统认证,不需要数据库服务器启动listener,也不需要数据库服务器处于可用状态。

比如我们想要启动数据库就可以用这种方式进入
sqlplus,然后通过startup命令来启动。

2. sqlplus username/password
连接本机数据库,不需要数据库服务器的listener进程,但是由于需要用户名密码的认证,因此需要数据库服务器处于可用状态才行。

3. sqlplus usernaem/password@orcl
通过网络连接,这是需要数据库服务器的listener处于监听状态。

此时建立一个连接的大致步骤如下
a. 查询sqlnet.ora,看看名称的解析方式,默认是TNSNAME
b. 查询tnsnames.ora文件,从里边找orcl的记录,并且找到数据库服务器的主机名或者IP,端口和service_name
c. 如果服务器listener进程没有问题的话,建立与listener进程的连接。

d. 根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。

默认是专用服务器模式,没有问题的话客户端
就连接上了数据库的server process。

e. 这时连接已经建立,可以操作数据库了。

4.sqlplus username/password@//host:port/sid
用sqlplus远程连接oracle命令(例:sqlplus risenet/1@//192.168.130.99:1521/risenet)。

sqlplus学习笔记之编辑缓冲区中的当前行命令

sqlplus学习笔记之编辑缓冲区中的当前行命令

(1).change (enable you to change the current line)首先用list命令变换当前行(或者直接输入行号,回车也可改变当前行):SQL> l --显示缓冲区中内容:1.select * from t12.where id>13.* and id<2 --*号为默认的当前行1.SQL> l 2 --list 2将当前行变为第二行,但是这并不影响list的当前行(注意)2.2* where id>13.SQL> l4. 1 select *5. 2 from t16. 3 where7. 4 id<90 --现在想把第四行的90改成858.5* and id>809.SQL> l 4 --先改变当前行到第四行10.4* id<9011.SQL> c/90/85 --change命令的用法12.4* id<100SQL> l --用list命令显示发现90已经变成了85,这是可以用slash或run运行该新的SQL语句1. 1 select *2. 2 from t13. 3 where4. 4 id<855.5* and id>806.SQL> run7. 1 select *8. 2 from t19. 3 where10. 4 id<8511.5* and id>8012.ID NAME13.---------- ------14.81 Testing15.82 Testing16.83 Testing17.84 Testing18.(2).append(追加)首先用list命令变换当前行(或者直接输入行号,回车也可改变当前行):1. 1 select id,name2. 2 from t13. 3 where4. 4 id<85 --在后面添加and name='Oracle'5.5* and id>806.SQL> 4 --改变当前行7.4* id<858.SQL> a and name='Oracle' --注意这里a和and之间有两个空格,如果只有一个的话9.4* id<85 and name='Oracle' --85和and会挨在一起10.SQL> l --list显示文本已追加11. 1 select id,name12. 2 from t113. 3 where14. 4 id<85 and name='Oracle'15.5* and id>8016.SQL> /17.ID NAME18.---------- --------------------19.83 Oracle20.(3).input命令在当前行后面插入一个新行(to insert a new line after the current line)首先用list命令变换当前行(或者直接输入行号,回车也可改变当前行)定位到你要插入新行,然后i + 要插入的文本:例子:(这个比较特殊)在第一行前面加一段注释/* this is a testing demo! */1.SQL> 0 /* this is a testing demo! */ --就在第一行前面加上了该注释2.SQL> l3. 1 select id,name4. 2 from t15. 3 where6. 4 id<85 --在第四行的下面插入一个新行7.5* and id>808.SQL> 4 --先变换当前行为第四行9.4* id<8510.SQL> i --this is a demo! --input + text(要插入的文本)11.SQL> l12. 1 select id,name13. 2 from t114. 3 where15. 4 id<8516. 5 --this is a demo!17.6* and id>8018.SQL> /19.ID NAME20.---------- --------------------21.81 Testing22.82 Testing23.83 Oracle24.84 Testing25.SQL> 5 --将当前行改为5,在其后加一行,添加新的查询条件and name='Oracle'26.5* --this is a demo!27.SQL> i and name='Oracle' --插入28.SQL> l29. 1 select id,name30. 2 from t131. 3 where32. 4 id<8533. 5 --this is a demo!34. 6 and name='Oracle'35.7* and id>8036.SQL> /37.ID NAME38.---------- --------------------39.83 Oracle(4).del删除行命令a.del n --删除第n行b.del n m --删除从n到m行c.del n * --删除从第n行到当前行d.del n last --删除第n行到最后一行来源:网络编辑:联动北方技术论坛。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL*PLUS命令的使用大全Oracle的sql*plus是与oracle进行交互的客户端工具。

在sql*plus中,可以运行sql*plus 命令与sql*plus语句。

我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer 中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。

除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。

它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。

下面就介绍一下一些常用的sql*plus命令:1. 执行一个SQL脚本文件SQL>start file_nameSQL>@ file_name我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。

@与@@的区别是什么?@等于start命令,用来运行一个sql脚本文件。

@命令调用当前目录下的,或指定全路径,或可以通过SQLPATH环境变量搜寻到的脚本文件。

该命令使用是一般要指定要执行的文件的全路径,否则从缺省路径(可用SQLPATH变量指定)下读取指定的文件。

@@用在sql脚本文件中,用来说明用@@执行的sql脚本文件与@@所在的文件在同一目录下,而不用指定要执行sql脚本文件的全路径,也不是从SQLPATH环境变量指定的路径中寻找sql脚本文件,该命令一般用在脚本文件中。

如:在c:\temp目录下有文件start.sql和nest_start.sql,start.sql脚本文件的内容为:@@nest_start.sql - - 相当于@ c:\temp\nest_start.sql则我们在sql*plus中,这样执行:SQL> @ c:\temp\start.sql2. 对当前的输入进行编辑SQL>edit3. 重新运行上一次运行的sql语句SQL>/4. 将显示的内容输出到指定文件SQL> SPOOL file_name在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。

5. 关闭spool输出SQL> SPOOL OFF只有关闭spool输出,才会在输出文件中看到输出的内容。

6.显示一个表的结构SQL> desc table_name7. COL命令:主要格式化列的显示形式。

该命令有许多选项,具体如下:COL[UMN] [{ column|expr} [ option ...]]Option选项可以是如下的子句:ALI[AS] aliasCLE[AR]FOLD_A[FTER]FOLD_B[EFORE]FOR[MAT] formatHEA[DING] textJUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}LIKE { expr|alias}NEWL[INE]NEW_V[ALUE] variableNOPRI[NT]|PRI[NT]NUL[L] textOLD_V[ALUE] variableON|OFFWRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]1). 改变缺省的列标题COLUMN column_name HEADING column_headingFor example:Sql>select * from dept;DEPTNO DNAME LOC---------- ---------------------------- ---------10 ACCOUNTING NEW YORKsql>col LOC heading locationsql>select * from dept;DEPTNO DNAME location--------- ---------------------------- -----------10 ACCOUNTING NEW YORK2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上:Sql>select * from empDepartment name Salary---------- ---------- ----------10 aaa 11SQL> COLUMN ENAME HEADING ’Employee|Name’Sql>select * from empEmployeeDepartment name Salary---------- ---------- ----------10 aaa 11note: the col heading turn into two lines from one line.3). 改变列的显示长度:FOR[MAT] formatSql>select empno,ename,job from emp;EMPNO ENAME JOB---------- ---------- ---------7369 SMITH CLERK7499 ALLEN SALESMAN7521 WARD SALESMANSql> col ename format a40EMPNO ENAME JOB---------- ---------------------------------------- --------- 7369 SMITH CLERK7499 ALLEN SALESMAN7521 WARD SALESMAN4). 设置列标题的对齐方式JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}SQL> col ename justify centerSQL> /EMPNO ENAME JOB---------- ---------------------------------------- --------- 7369 SMITH CLERK7499 ALLEN SALESMAN7521 WARD SALESMAN对于NUMBER型的列,列标题缺省在右边,其它类型的列标题缺省在左边5). 不让一个列显示在屏幕上NOPRI[NT]|PRI[NT]SQL> col job noprintSQL> /EMPNO ENAME---------- ----------------------------------------7369 SMITH7499 ALLEN7521 WARD6). 格式化NUMBER类型列的显示:SQL> COLUMN SAL FORMAT $99,990SQL> /EmployeeDepartment Name Salary Commission---------- ---------- --------- ----------30 ALLEN $1,600 3007). 显示列值时,如果列值为NULL值,用text值代替NULL值COMM NUL[L] textSQL>COL COMM NUL[L] text8). 设置一个列的回绕方式WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]COL1--------------------HOW ARE YOU?SQL>COL COL1 FORMAT A5SQL>COL COL1 WRAPPEDCOL1-----HOW ARE YOU?SQL> COL COL1 WORD_WRAPPEDCOL1-----HOWAREYOU?SQL> COL COL1 WORD_WRAPPEDCOL1-----HOW A9). 显示列的当前的显示属性值SQL> COLUMN column_name10). 将所有列的显示属性设为缺省值SQL> CLEAR COLUMNS8. 屏蔽掉一个列中显示的相同的值BREAK ON break_columnSQL> BREAK ON DEPTNOSQL> SELECT DEPTNO, ENAME, SALFROM EMPWHERE SAL < 2500ORDER BY DEPTNO;DEPTNO ENAME SAL---------- ----------- ---------10 CLARK 2450MILLER 130020 SMITH 800ADAMS 11009. 在上面屏蔽掉一个列中显示的相同的值的显示中,每当列值变化时在值变化之前插入n个空行。

BREAK ON break_column SKIP nSQL> BREAK ON DEPTNO SKIP 1SQL> /DEPTNO ENAME SAL---------- ----------- ---------10 CLARK 2450MILLER 130020 SMITH 800ADAMS 110010. 显示对BREAK的设置SQL> BREAK11. 删除6、7的设置SQL> CLEAR BREAKS12. Set 命令:该命令包含许多子命令:SET system_variable valuesystem_variable value 可以是如下的子句之一:APPI[NFO]{ON|OFF|text}ARRAY[SIZE] {15|n}AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}AUTOP[RINT] {ON|OFF}AUTORECOVERY [ON|OFF]AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]BLO[CKTERMINATOR] {.|c}CMDS[EP] {;|c|ON|OFF}COLSEP {_|text}COM[PATIBILITY]{V7|V8|NATIVE}CON[CAT] {.|c|ON|OFF}COPYC[OMMIT] {0|n}COPYTYPECHECK {ON|OFF}DEF[INE] {&|c|ON|OFF}DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}]ECHO {ON|OFF}EDITF[ILE] file_name[.ext]EMB[EDDED] {ON|OFF}ESC[APE] {\|c|ON|OFF}FEED[BACK] {6|n|ON|OFF}FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL}FLU[SH] {ON|OFF}HEA[DING] {ON|OFF}HEADS[EP] {||c|ON|OFF}INSTANCE [instance_path|LOCAL]LIN[ESIZE] {80|n}LOBOF[FSET] {n|1}LOGSOURCE [pathname]LONG {80|n}LONGC[HUNKSIZE] {80|n}MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]NEWP[AGE] {1|n|NONE}NULL textNUMF[ORMAT] formatNUM[WIDTH] {10|n}PAGES[IZE] {24|n}PAU[SE] {ON|OFF|text}RECSEP {WR[APPED]|EA[CH]|OFF}RECSEPCHAR {_|c}SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_ WRAPPED]|TRU[NCATED]}]SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]}SHOW[MODE] {ON|OFF}SQLBL[ANKLINES] {ON|OFF}SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]}SQLCO[NTINUE] {> |text}SQLN[UMBER] {ON|OFF}SQLPRE[FIX] {#|c}SQLP[ROMPT] {SQL>|text}SQLT[ERMINATOR] {;|c|ON|OFF}SUF[FIX] {SQL|text}TAB {ON|OFF}TERM[OUT] {ON|OFF}TI[ME] {ON|OFF}TIMI[NG] {ON|OFF}TRIM[OUT] {ON|OFF}TRIMS[POOL] {ON|OFF}UND[ERLINE] {-|c|ON|OFF}VER[IFY] {ON|OFF}WRA[P] {ON|OFF}1). 设置当前session是否对修改的数据进行自动提交SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}2).在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句SQL> SET ECHO {ON|OFF}3).是否显示当前sql语句查询或修改的行数SQL> SET FEED[BACK] {6|n|ON|OFF}默认只有结果大于6行时才显示结果的行数。

相关文档
最新文档