Top Banner
SQL 课课课课 课课课课 Sqlplus 课课 / 课课 Table INSERT 课课课课 UPDATE 课课课课 DELETE 课课课课 SELECT 课课课课 WHERE Function 课课 Group Function 课课 Oracle Function 课课 LOAD,UNLOAD 课课课课 Sqlplus 课课 课课课课课
26

SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

Dec 13, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

SQL 课程大纲• 如何进入 Sqlplus• 建立 /修改 Table• INSERT 指令介紹• UPDATE 指令介紹 • DELETE 指令介紹• SELECT 指令介紹• WHERE Function 介绍• Group Function 介绍• Oracle Function 介绍• LOAD,UNLOAD 指令介紹• Sqlplus 内的一些命令介绍

Page 2: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

进入 ISQL• sqlplus 1. 常规登陆 sqlplus SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 9 月 17 09:57:02 2003 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

2. 快捷登陆 sqlplus username/passwd username 登陆用户名 passwd 登陆用户密码 SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 9 月 17 09:59:18 2003

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.1.0 - Production

Page 3: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

建立 / 修改 Table• 数据类型 :

VARCHAR2(size) 字符类型 ( 变长 ) 例 VARCHAR2(10)

CHAR[(size)] 字符类型 ( 定长 ) 例 CHAR (10)

NUMBER[(p,s)] 数值类型例 : NUMBER(5) 表示 5 位整数例 : NUMBER(15,3) 表 11 位整数 , 3 位小数

DATE 日期时间类型

LONG 变长字符类型 , 最大长度 2G

CLOB 字符类型,最大长度 4G

BLOB 二进制类型,最大长度 4G

ROWID 16 进制字符串,代表在表中的一个行的唯一地址

Page 4: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

建立 / 更改 Table1. 写好 create table 的 sql 再执行

vi dpe_file.sch /* ========================================================= 档案代号 :dpe_file 档案名称 : 体检项目代号资料档 ==========.===================.=========================== */ create table dpe_file ( dpe01 varchar2(6), /* 体检项目代号 */ dpe02 varchar2(30), /* 说明 */ dpe03 varchar2(01), /*No use */ dpeacti varchar2(01), /* 资料有效码 */ dpeuser varchar2(10), /* 资料所有者 */ dpegrup varchar2(06), /* 资料所有部门 */ dpemodu varchar2(10), /* 资料修改者 */ dpedate date /* 最近修改日 */ ); create unique index dpe_01 on dpe_file (dpe01);

Page 5: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

建立 / 更改 Table2. 在 unix 环境下 sqlplus ds/ds < dpe_file.sch 即可 create table 了

</u1/topo/apy/sql> sqlplus ds/ds < dpe_file.schSQL*Plus: Release 9.2.0.1.0 - Production on 星期三 9 月 17 10:37:23 2003Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.1.0 - ProductionDOC>============================================================ DOC> 档案代号 :dpe_file DOC> 档案名称 : 体检项目代号资料档 DOC>==========.===================.============================== DOC>*/ Table created. Index created. SQL>

Page 6: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

建立 / 更改 Table3. 在 sqlplus 环境下建立 table SQL> create table dpe_file 2 ( 3 dpe01 varchar2(6), /* 体检项目代号 */ 4 dpe02 varchar2(30), /* 说明 */ 5 dpe03 varchar2(01), /*No use */ 6 dpeacti varchar2(01), /* 资料有效码 */ 7 dpeuser varchar2(10), /* 资料所有者 */ 8 dpegrup varchar2(06), /* 资料所有部门 */ 9 dpemodu varchar2(10), /* 资料修改者 */ 10 dpedate date /* 最近修改日 */ 11 );

Table created. SQL> create unique index dpe_01 on dpe_file (dpe01); Index created. SQL>

Page 7: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

建立 / 更改 Table

SQL> desc dpe_file; Name Null? Type ----------------------------------------- -------- ---------------------------- DPE01 VARCHAR2(6) DPE02 VARCHAR2(30) DPE03 VARCHAR2(1) DPEACTI VARCHAR2(1) DPEUSER VARCHAR2(10) DPEGRUP VARCHAR2(6) DPEMODU VARCHAR2(10) DPEDATE DATE SQL>

Page 8: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

建立 / 修改 Table• 修改 table 1.写成 sql 更改 SQL> ed alter_dpe.sch

alter table dpe_file modify (dpe01 varchar2(10)); /* 修改 dpe01*/

alter table dpe_file add (dpe00 varchar2(10)); /* 增加 dep00*/

alter table dpe_file drop (dpe03); /* 删除 dpe03*/

drop index dpe_01; /* 删除索引 */

SQL> @alter_dpe.sch

Table altered.

Table altered.

Table altered.

Index dropped.

Page 9: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

建立 / 修改 Table

2.进入 sqlplus 更改 SQL> alter table dpe_file modify (dpe01 varchar2(10));

Table altered.

SQL> alter table dpe_file add (dpe00 varchar2(10)); Table altered. SQL> alter table dpe_file drop (dpe03); Table altered. SQL> drop index dpe_01; Index dropped. SQL>

Page 10: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

建立 / 修改 Table

SQL> desc dpe_file; Name Null? Type ----------------------------------------- -------- ---------------------------- DPE01 VARCHAR2(10) DPE02 VARCHAR2(30) DPEACTI VARCHAR2(1) DPEUSER VARCHAR2(10) DPEGRUP VARCHAR2(6) DPEMODU VARCHAR2(10) DPEDATE DATE DPE00 VARCHAR2(10)

Page 11: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

INSERT 指令介绍• INSERT INTO table_name[(column-list)]

VALUES(value-list)

范例 :

1. INSERT INTO dpe_file VALUES('A00003','test','','Y','carrier','1400','','03/09/17‘)

2. INSERT INTO cus_file(cus01,cus02)

VALUES(‘C00002’, ‘ test01’);

Page 12: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

UPDATE 指令介绍• Syntax UPDATE table_name SET col=expr,col=expr [WHERE clause ] 范列說明 : 1.UPDATE dpe_file SET dpe02=‘test02’ WHERE dpe01 LIKE ‘A%1’ 2. UPDATE dpe_file SET dpe02='test02', dpeacti='N‘ WHERE dpe01 like 'A%1' 3. UPDATE dpe_file SET dpeuser='michael‘, dpegrup='2100‘ WHERE (dpe01 = 'A00002' or dpe01 like 'C_000_');

Page 13: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

DELETE 指令介绍• Syntax:

DELETE FROM table_name

[WHERE clause]范例说明 :

1.DELETE FROM dpe_file

[ 注意 ]: 没有 where 条件会将所有资料删除 且无法将资料还原2.DELETE FROM dpe_file

WHERE dpe01 LIKE ‘C%’

Page 14: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

SELECT 指令介绍• Syntax:• SELECT column,group_function(column) FROM table_name [WHERE condition] [GROUP BY group_by_expression] [HAVING group_condition] [ORDER BY column] 范例说明 : 1.SELECT * FROM cus_file order by cus01 ASC 2.SELECT cus01,cus02 FROM cus_file order by cus01 DESC,cus02 3.SELECT last_name,salary,12*salary+100 FROM employee 4.SELECT last_name As name,commission comm FROM employee 5.SELECT last_name||job_id as “Employee Info” FROM employee 6.SELECT last_name || ‘ is a ’||job_id as “Employee Detail” FROM employee 7.SELECT distinct dpe02 FROM dpe_file 8. SELECT last_name,age FROM employee WHERE age<=45

Page 15: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

SELECT 指令介绍• 范例说明 :

9.SELECT * FROM employee WHERE age between 20 and 65 SELECT * FROM dpe_file WHERE dpe02 is null and (dpeacti=‘Y’ or dpeuser like ‘carr%’) 10.SELECT employee_id,UPPER(last_name) FROM employee WHERE INITCAP(last_name) = ‘Higgins’ SELECT employee_id,CONCAT(first_name,last_name) NAME , job_id,LENGTH(last_name), INSTR(last-name,’a’) “Contain ‘a’?”

FROM employee WHERE SUBSTR(job_id,4)=“REP” SELECT last_name,salary,MOD(salary,5000) FROM employee WHERE job_id=‘SA_REP’ Join table 範例 : 11.SELECT oea01,oeb02,oeb04,oeb12 FROM oea_file,oeb_file WHERE oea01=oeb01 12.SELECT e.employee_id,e.last_name,e.department_id,d.department_id, d.location_id FROM employee e ,department d WHERE e.department_id=d.department_id

Page 16: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

SELECT 指令介紹• 范例說明 :

13. SELECT e.last_name,e.department_id,d.department_name FROM employee e ,department d WHERE e.department_id(+)=d.department_id SELECT e.last_name,e.department_id,d.department_name FROM employee e ,department d WHERE e.department_id=d.department_id(+) 14.INSERT INTO cus1_file SELECT * FROM cus_file 15.INSERT INTO cua_file(cua01,cua02) SELECT cus01,cus02 FROM cus_file WHERE cus01 MATCHES ‘C*’ 16.SELECT COUNT(*) FROM oea_file WHERE oea02 BETWEEN ’01/01/01’ AND ’01/12/31’ 17.SELECT COUNT(DISTINCT oea03) FROM oea_file WHERE oea02 BETWEEN ’01/01/01’ AND ’01/12/31’ 18.SELECT MAX(oea02),MIN(oea02) FROM oea_file WHERE oea02 BETWEEN ’01/01/01’ AND ’01/12/31’

Page 17: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

SELECT 指令介紹• 范例說明 :

19. SELECT AVG(oeb12) FROM oea_file,oeb_file WHERE oea02 BETWEEN '010101' AND '011231' AND oea01=oeb01 AND oeb04='11-03-SDD16‘ and oeb12<>0

20.SELECT * FROM oea_file WHERE oea02 = (SELECT MAX(oea02) FROM oea_file WHERE oea02 > = ’01/01/01’) 21.SELECT department_id,AVG(salary) FROM employee GROUP BY department_id

22.SELECT department_id,MAX(salary) FROM employee GROUP BY department_id HAVING MAX(salary)>10000

Page 18: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

SELECT 指令介紹 ----where

• 比较符号 ‘=’ ‘ >’ ‘ >= ’ ‘< ’ ‘<=’ ‘<>’

• 其它比较符号 BETWEEN .. AND .. WHERE age between 20 and 30

IN (..) WHERE age in (20,21,22,23,24,25,26,27,28,29,30)

LIKE WHERE dpe01 like ‘A_0%’

IS NULL WHERE age is null

Page 19: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

SELECT 指令介紹 ----where

• 逻辑符号 ‘AND’ ‘OR’ ‘NOT’ where dpe01=‘A00001’ AND dpe02=‘test01’

where dpe01=‘A00001’ OR dpe01=‘C00001’

where age not in (20,21,22,23,24,25,26,27,28,29,30)

Page 20: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

Group Function

• AVG

• COUNT

• MAX

• MIN

• STDDEV

• SUM

Page 21: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

Oracle Function---1

• Case-manipulation functions

lower,upper,initcap

• Character-manipulation functions concat,substr,length,

instr,lpad,rpad,trim

Function Result

LOWER(‘SQL Course’) sql course

UPPER(‘SQL Course’) SQL COURSE

INITCAP(‘SQL Course’) Sql Course

CONCAT(‘Hello’,’World’) HelloWorld

SUBSTR(‘Helloworld’,1,5) Hello

LENGTH(‘HelloWorld’) 10

INSTR(‘HelloWorld’,W) 6

LPAD(salary,10,’*’) *****24000

RPAD(salary,10,’*’) 24000*****

TRIM(‘H’ FROM ‘HelloWorld)

elloWorld

Page 22: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

FUNCTION---2• Number Function

ROUND

round(45.926,2) 45.93

TRUNC

trunc(45.926,2) 45.92

MOD

mod(1600,300) 100

Page 23: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

LOAD/UNLOAD 指令介绍• 因为 oracle 没有提供类似 INFORMIX 的 load,unload 语句,所以

在 tiptop 环境下有一些工具1. 使用 load shell,load shell 会去呼叫 $TOP/ora/load.42m 程序使用方式Usage: load database tablename txtfile

Ex : load ds ze_file ze_file.txt

2. 使用 loaddb shell,loaddb shell 会去呼叫 external tools SQL*Loader

使用方式Usage: /u1/topo/ora/bin/loaddb dbname [tablename] [txtfile]

Ex1 : /u1/topo/ora/bin/loaddb ds1

Ex2 : /u1/topo/ora/bin/loaddb ds1 ima_file [ima_file.txt]

Ex3 : /u1/topo/ora/bin/loaddb ds1 i%_file

3. 直接使用 Oracle 提供的 SQL*Loader, 但必须自己编辑 control file,

用法sqlldr ds/ds control=azb_file.ctl log=azb_file.log

Page 24: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

LOAD/UNLOAD 指令介绍control file 格式如下load datainfile '/u1/tiptopo/azb_file.txt 'append into table azb_filefields terminated by '^A'(azb01,azb02,azb06,azbacti,azbuser,azbgrup,azbmodu,azbdate)4. 另外可以在 BDL 程序中使用 channel 的方式来产生 SQL*Loader 所需用的 control

file,再透过 RUN command 的作法来激活 SQL*Loader,channel 的写法可参考 BDL 文件

Page 25: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

Sqlplus 一些命令介绍

• Help index 查询相关命令• @ 运行 .sql 的文件• Ed 类似于 vi• Get 将一句 sql 语句放入 sql 缓冲器• R –run• / 重复上一个在 memory 中的 command• Desc 显示表结构• Spool 记录执行过程• Start get+r• Save 将 memory 中的命令保存在一个文件中• Set 设置一些 oracle 设定

Page 26: SQL 课程大纲 如何进入 Sqlplus 建立 / 修改 Tabl e INSERT 指令介紹 UPDATE 指令介紹 DELETE 指令介紹 SELECT 指令介紹 WHERE Function 介绍 Group Function 介绍

Sqlplus 一些命令介绍示范1. help accept 找寻 accept 的帮助信息2. @c_dpe.sql 执行 c_dpe.sql 中的内容3. ed c_dpe.sql 编辑一个文件 c_dpe.sql4. get c_dpe.sql 将该文件的内容放入 memoery 中5. r 执行 memory 中的命令6. / 同 r7. desc dpe_file 查看 dpe_file 的表结构8. spool file.lst 将在这期间执行的命令及结果放入 file.lst 文件 sqlplus 命令 spool off 9. Start c_dpe.sql 执行 start 后面文件中的内容10. save t1.sql 11. set wrap on 设置可以折行显示12. Set heading off