ORACLE 之SQL
- 格式:doc
- 大小:133.50 KB
- 文档页数:23
第三章ORACLE 之SQL*PLUS基础3.1 SQL*PLUS基础2.SQL与SQL*PLUS命令SQL:在Oracle数据库中创建(表、视图、索引等)、存储、改变(结构、数据)和维护信息;SQL命令存放在SQL缓冲区内,保持到下一条SQL命令进入缓冲区,并以―;‖(分号)结尾。
SQL命令有如下特点:1. 简单、易读、功能强大,是Oracle各种开发工具的基础2. 与终端用户进行交互能力强SQL* Plus命令可用来:形成复杂的报表;编辑SQL命令;提供帮助信息;维护系统变量。
与SQL的区别:①不进入SQL缓冲区②不用―;‖(分号)结尾父表deptSQL> select * from dept;DEPTNO DNAME LOC--------- -------------- -------------10 ACCOUNTING NEW YORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERA TIONS BOSTONEmp子表EMPNO ENAME JOB MGR HIREDA TE SAL COMM DEPTNO--------- -------- --------- ----- --------- ---- ---- ------ 7369 SMITH CLERK 7902 17-DEC-80 800 207499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 307521 WARD SALESMAN 7698 22-FEB-81 1250 500 307566 JONES MANAGER 7839 02-APR-81 2975 207654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 307698 BLAKE MANAGER 7839 01-MAY-81 2850 307782 CLARK MANAGER 7839 09-JUN-81 2450 107788 SCOTT ANAL YST 7566 19-APR-87 3000 207839 KING PRESIDENT 17-NOV-81 5000 107844 TURNER SALESMAN 7698 08-SEP-81 1500 0 307876 ADAMS CLERK 7788 23-MAY-87 1100 207900 JAMES CLERK 7698 03-DEC-81 950 307902 FORD ANAL YST 7566 03-DEC-81 3000 207934 MILLER CLERK 7782 23-JAN-82 1300 1014 rows selected.SQL命令的组成数据定义语言(DDL):creat(建立)drop(删除)alter(修改表结构)rename(改名)数据操纵语言(DML):select(查询)insert(插入)delete(删除)update(更新)数据控制语言(DCL):grant(授权)revoke(回收)数据检索语言(SELECT)事务处理控制命令: 包括:commit(提交)、rollback(回退)savepoint(设置保存点),练习什么是S Q L?S Q L有什么功能?下列哪个语句可以从数据库中取得数据?A. selectB. updateC. insertD. delete3. 指出S Q L数据控制语言(D C L)中的命令。
4. 指出S Q L数据操纵语言(D M L)中的命令。
5. 指出S Q L数据定义语言(D D L)中的命令。
3.3基本SQL*PLUS命令1. 帮助命令(help)格式:help [commands]参数:commands --各个命令的名称2. 列举表结构命令(describe)--简写为―desc‖格式:desc 表名如:SQL> desc empName Null? Type----------------------------- -------- ------------EMPNO NOT NULL NUMBER(4)ENAME V ARCHAR2(10)JOB V ARCHAR2(9)MGR NUMBER(4)HIREDATE DATESAL NUMBER(7,2)3. 列出缓冲区的内容命令(list)--简写为―l‖格式:l [n] [last] [m n]参数:n --显示第n行last --显示最后一行m n --从第m行显示到第n行判断当前行:用的LIST n列出的命令既是当前行;执行LIST命令或运行缓冲区的命令后,最后一行为当前行;有出错信息时,出错的该行即为当前行。
当前行具有*标记例:当前缓冲区的内容为SELECT EMPNO,ENAME,JOB,SALFROM EMPWHERE SAL<3000SQL>L LASTWHERE SAL<3000SQL>L 2FROM EMPSQL>L 1 3?4. 修改已发出命令的当前行(change)--简写为―c‖格式:c/char1/char2参数:用char2替换掉char1C/char1/ :把char1删掉SQL> SELECT empno, ename, NVL(mgr,'none') mgr,2 hiredate, sal, comm, deptno3 FROM EMP;SELECT empno, ename, NVL(mgr,'none') mgr,*ERROR at line 1:ORA-01722: invalid numberSQL> 11* SELECT empno, ename, NVL(mgr,'none') mgr,SQL> c / ' n o n e ' / 01* SELECT empno, ename, NVL(mgr,0) mgr,SQL> /EMPNO ENAME JOB MGR HIREDATE SAL COMM------- -------- --------- ----- --------- ---- ---- 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 7521 WARD SALESMAN 7698 22-FEB-81 1250 5007839 KING PRESIDENT 0 17-NOV-81 50005. 在当前行之后插入一新行(input)--简写为―i‖格式:input注:输入命令后会出现行号,在其后面直接输入即可例:对上例增加第4行:SQL>INPUT4 ORDER BY SAL6. 在当前行末尾增加若干字符(append)-简写为―a‖格式:A *******注:命令后面至少应保留两个空格如:select empno,ename,job,salfrom empwhere sal>3000order by sal 降序排列SQL>A desc; 降序排列SQL>L 4: ORDER BY SAL DESC7. 删除缓冲区的当前行(del),删除行的下一行为当前行。
8. 启动系统缺省的编辑程序(edit),ORACLE无自己的编辑器。
O r a c l e允许用任何文本编辑器编辑a fi e d t . b u f中生成的语句,a f i e d t . b u f是SQL *Plus存储最近所执行S Q L语句的文件。
只要输入e di t(或缩写e d),O r a c l e就会把a f i e d t . b u f中的S Q L语句放进操作系统的默认文本编辑器中。
9. 将SQL缓冲区的内容存储在磁盘上(save)格式:save 〈文件名〉[replace|append]注:所存储文件的后缀为―.SQL‖10. 将磁盘上的―.SQL‖文件调入缓冲区中,并显示在屏幕上(get)11. 运行命令(run或start或―/‖或―@‖)/或run:运行缓冲区单个命令@=start:把指定文件调入sql缓冲区并执行文件的内容get + /= @ get + run = @12. 注释命令⑴rem[ark] .... 和-- .…:只能用于一行中的注释⑵/*.......*/ :用于多行的注释,一般用于程序内部Rem只能用于文件中,--和/*……*/文件和命令中都可以。
S P O O L { f i l e n a m e | O F F | O U T } 这个命令将SQL *Plus中发出spool filename命令之后显示的所有输出写入文本文件 f i l e n a m e中。
如果不指定文件扩展名,则SQL *Plus加上扩展名. l s t。
指定关键字o f f或o u t时,SQL *Plus输出不会写入文件中。
例如:SQL> spool jason.outSQL> select ename, sal2 from emp3 where empno < 7600;ENAME SAL---------- ---------SMITH 800ALLEN 1600WARD 1250SQL> spool offSQL> exitC:\WINDOWS> type jason.out 显示上述内容练习1. 要列出Oracle表中的列,可以用哪个SQL *Plus命令?A. getB. inputC. describeD. Spool2. 下列命令显示SQL *Plus缓冲区内容:_ _ _ _ _ _ _ _ _3. Oracle把SQL *Plus缓冲区内容存放在下列文件中:_ _ _4. 你要配置SQL *Plus工作环境。
发出define_editor =‗emacs‘命令将产生以下哪个结果?A. EMACS编辑器成为SQL *Plus默认文本编辑器。
B. EMACS编辑器立即开始运行。
C. EMACS编辑器不再作为SQL *Plus默认文本编辑器。
D. EMACS编辑器从系统中删除。
5. 你要用SQL *Plus连接O r a c l e数据库,下列哪个选项不是登录O r a c l e时必须指定的组件?A. sqlplus关键字B. 用户名C. 口令D. 数据库名7. 检查SQL *Plus会话的下列输出:Name Null? Type----------------------------- -------- ------------SYMPTOM NOT NULL V ARCHAR2(10)CAUSE V ARCHAR2(10)TREA TMENT V ARCHAR2(9)下列哪个关键字会产生上述输出?A. describeB. getC. runD. Spool1. 下列S Q L * P l u s命令可以将S Q L * P l u s缓冲区内容存放成命令文件:_ _ _ _ _ _ _ _ _ _ _ _2. 下列S Q L * P l u s命令可以将S Q L命令文件装入操作缓冲区并执行:_ _ _ _ _ _ _ _ _ _ _ _3.4 ORACLE的数据类型1. char(n)型—字符型n=1 to 2000字节定长字符串,n字节长,如果不指定长度,缺省为1个字节长. 若CHAR型的宽度不足以容纳要插入的数据,就会导致插入错误。