ORACLE 学习笔记

以下的 J2EE 应用程序已经配置, 并且可用下面列出的 URL 来访问。数据库配置文件已经安装到 D:/oracle/product/10.1.0,同时其他选定的安装组件也已经安装到 D:/oracle/product/10.1.0/Db_1。Ultra Search URL:http://zist-4019a65673:5620/ultrasearchUltra Search 管理工具 URL:http://zist-4019a65673:5620/ultrasearch/adminiSQL*Plus URL:http://zist-4019a65673:5560/isqlplus

1.sqlplus 是oracle的客户端
 用户名:system
 密码:856262
2.从浏览器登陆isqlpluse
 端口号为:5560
 http://localhost:5560/isqlplus(在局域网登陆的时候需要清楚防火墙和监听器的问题)
3.查询用户下所有的表
select table_name from user_tables;
create table abc(a varchar2(10),b char(10));

4.对于字符型的可以存储为可变的类型

5.oracle中有很多函数,包括,日期函数,转换函数,聚集函数

6.测试用户为scott,默认密码为tiger,系统自动创建的数据库为orcl

7.sql语言的分类:数据定义语言(create,alter,drop ),数据控制语言(crant,revoke),数据操纵语言(select,inesrt,delete,update)

8.desc 表名,用来查询表的名称

9.创建表,创建视图,创建函数,创建过程
 
10.select pub,sum(price*qty) from books GROUP BY pub HANVING sum(price)>>30;

GROUP BY 中不允许出现sum等聚合函数,需要用having来表示

where后面也不能跟聚集函数

select a1,count(a1) from aa GROP BY a1

11.PL/SQL操纵复杂的sql语句,通过参数和变量的方式来进行查询
PL/SQL块结构如下:
DECLARE()声明变量
....
BEGIN(具体操作内容)
....
EXCEPTION
....
END;
/

表的连接就是两个表的数据在一次查询中显示,比方说:
SELECT eid 编号,ename 姓名,sex 性别,d.name 所在部门 FROM e JOIN d on e.id=d.id(内连接...完全匹配)

外连接:不完全匹配
(右连接)
SELECT eid 编号,ename 姓名,sex 性别,d.name 所在部门 FROM e JOIN d on e.id=d.id(+)
左边的值全部显示出来,右边没有对应的用空值来替代

(左连接)
SELECT eid 编号,ename 姓名,sex 性别,d.name 所在部门 FROM e JOIN d on e.id(+)=d.id
右边的值全部显示出来,左边没有对应的用空值来替代

子查询:
在一个where子句中用子查询来表达一个条件,这个条件不能用简单那的比较表达式来表示
select * from e WHERE id IN (SELECT id FROM d WHERE id=e.id AND id="03")
还有ONTIN,SELECT * 不能用* 返回值多行不能匹配

select * from e WHERE EXISTS (SELECT id FROM d)

SELECT * FROM e WHERE NOT EXISTS (SELECT id from d where id=e.id)

使用UNINT来实现子查询
SELECT eid,ename  FROM e UNION SELECT id,name FROM d;
这样就把两张表的信息整合成一个结果集(显示)

ORACLE独有的INTERSECT
SELECT id FROM e INTERSECT SELECT id FROM d

插入多条数据:(批量的插入数据)

INSERT INTO e(eid ,ename ) SELECT id,name FROM d

创建表依赖与已有的表
CREATE TABLE ttt AS (SELECT * FROM e);

PL/SQL 结构化查询语言(块结构的方式)
变量的声明内容,变量的命名规则
DECLARE
x varchar2(10);//定义变量
BEGIN
x:='this is ..';//赋值
DBMS_OUTPUT.PUT_LINE('x的值为:'||)//输出到屏幕,连接符号||
END;
/                          //执行完成
--行注释
/*
块注释
*/
显示输出信息

SET  SERVEROUTPUT ON SIZE 10000;

IF 分支
IF ... THEN
...
ELSIF ... THEN
...
END IF

CASE 分支
CASE
WHEN ... THEN...
ELSE
END CASE

DECLARE
a number;
b varchar2(10);
BEGIN
a:=2;
IF a=1 THEN
b:='A';
ELSEIF a=2 THEN
b:='B';
ELSE--为其他的全部归到这里
b:='C';
END IF;
DBMS_OUTPUT.PUT_LINE('b的值为'||b)

循环语句:
基本循环LOOP

LOOP
...
END LOOP
WHILE 循环
WHILE expression LOOP
..
END LOOP

FOR 循环
FOR counter IN[REVERSE] start_value...end_value LOOP
...
END LOOP

DECLARE
x number;
BEGIN
x:=0;
LOOP
x:=x+1;
IF x>=3 THEN
EXIT;
END IF;
DBMS_OUTPUT.PUT_LINE('内:x='||x);
END LOOP;
DBMS_OUTPUT.PUT_LINE(''外:x="||x);
END;
/

使用goto进循环
DECLARE
x number;
BEGIN
x:=0;
<<repeat_loop>>
x:=x+1;
DBMS_OUTPUT.PUT_LINE('x'');
IF x<3 THEN
GOTO repeat_loop;
END IF;
END;
/

PL/SQL的异常处理
在PL/SQL 中的一个警告或错误的情形都被成为异常.包括编译时刻异常和运行时刻错误

异常分为系统异常和自定义异常

自定义异常结构:
EXCEPTION
WHEN...THEN
...

系统预定义异常:
DUP_VAL_ON_INDEX向有唯一约束的表中插入重复行
NO_DATA_FOUND在一个SELECT INTO 语句中无返回值
TOO_MANY_ROWS SELECT INTO 语句返回了多行
VALUE_ERROR 一个算法.装好.阶段或大小约束发生错误
ZERO_DIVIDE 发生被零除
自定义异常必须事先声明,并且在适当的时候把异常抛出

复合变量类型:
记录...........
PL/SQL
游标,存储过程,函数,包
游标可以对SQL语句进行逐条处理,帮助我们对数据库的数据进行逐条的进行控制
//游标显示或者隐式

DECLARE
CURSOR cur_para(id varchar2) IS
SELECT books_name FROM books WHERE books_id=id;
t_name books.books_name%TYPE;
BEGIN
OPEN cur_para('0001');
LOOP
FETCH cur_para INTO t_name;
EXIT WHEN cur_para%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(t_name);
END LOOP;
CLOSE cur_para;
END;
/

带名快可以存储在数据库中成为数据库的一个对象
其他程序段可以调用该对象

存储过程是一个PL和sql语句组成的程序段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值