[转帖]ORACLE中的SQL语句小结_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3600 | 回复: 0   主题: [转帖]ORACLE中的SQL语句小结        下一篇 
dwx8023
注册用户
等级:上尉
经验:612
发帖:114
精华:0
注册:2011-11-8
状态:离线
发送短消息息给dwx8023 加好友    发送短消息息给dwx8023 发消息
发表于: IP:您无权察看 2011-11-14 16:43:32 | [全部帖] [楼主帖] 楼主

1)SQL语句形式:

 SELECT column_list -----指定要查看列

FROM table_list -------指定包括列的表

WHERE condition -------限制返回的数据,只能查看到满足条件的行

GROUP BY column_list -----根据指定列值汇总数据

HAVING condition ----限制汇总数据(与GROUP BY 成队使用)

ORDER BY column_list -----根据指定列排序

    如果需要在字符串内放入单引号,些两次即可.

    例:DON’’T

     HAVING子句与WHERE子句的相互间比较:

     HAVING子句用分组函数后的结果作为条件.而WHERE子句不允许这样使用.

     2)连接查询结果

 UNION----连接两条SELECT语句,排除重复行

UNION ALL----连接两条SELECT语句,不排除重复行

MINUS----从一个查询中减去另一个查询

INSERSECT---返回两条SELECT语句的重复行

     3)插入一个查询结果

 INSERT INTO A(COLA,COLB,….)

SELECT COLa,COLb,….

FROM B

WHERE ….;

     4)使用相关子查询更新数据

 UPDATE TAB_A A

SET (COLa,COLb,….)=

(SELECT COLA,COLB

FROM TAB_B B

WHERE A.PK=B.PK)

WHERE A…….

     5)事务处理

    事务的开始:

    当第一条DML语句开始执行时

    前一个事务结束后

    调用SET TRANSACTION来显式开始一个事务

    事务的结束:

    遭遇COMMIT或ROLLBACK(将缓冲区数据写入数据库或清除).

    SET TRANSACTION—用来显式开始一个事务

    格式: SET TRANSACTION READ ONLY|READ WRITE

     [USE ROLLBACK SEGMENT 回滚段名];

 READ ONLY--事务处理时只能做查询,存在DML语句时会报错.

READ WRITE--事务处理时可以读写.

    例: BEGIN

 ROLLBACK;

SET TRANSACTION READ WRITE;

INSERT INTO TEST(A)

VALUES(5);

COMMIT;

END;

��� SAVEPOINT—设置检查点(常与ROLLBACK TO SAVEPOINT 检查点名 配套使用)

    格式: SAVEPOINT 检查点名

    例: BEGIN

 ROLLBACK;

SAVEPOINT SP1;

INSERT INTO A(A)

VALUES(5);

SAVEPOINT SP2;

INSERT INTO A(A)

VALUES(6);

SAVEPOINT SP3;

INSERT INTO A(A)

VALUES(7);

ROLLBACK TO SAVEPOINT SP3;

COMMIT;

END;

    第一,二条数据INSERT成功,第三条数据被ROLLBACK.

    八 动态SQL

     执行动态SQL语句有两种方法:

     1)调用DBMS_SQL包

     2)本机动态SQL

    格式:

 EXECUTE IMMEDIATE SQL_STRING

---包含SQL的字符串表达式

    [INTO 变量名列表]

 ---仅在单行查询时可用逗号分隔

[USING [IN|OUT|INOUT]bind_argument,….]

---绑定输入输出参数.缺省为IN

[[RETURNING|RETURN] INTO bind_argument,….]

---仅用于DML语句,检索返回的数据被绑定到这里.

    例:

    插入数据

DECLARE

lv_sql VARCHAR2(100):= '';

lv_1 number:=2;

lv_2 number;

BEGIN

lv_sql := 'insert into A values(:1)';

EXECUTE IMMEDIATE lv_sql USING lv_1;

     -SELECT 值到lv_2中

 lv_sql :=’SELECT A FROM A WHERE A =:ID’;

EXECUTE IMMEDIATE lv_sql INTO lv_2 USING lv_1;

--将A表中A字段为5的记录设为4,并输出到lv_2中

Lv_sql := 'UPDATE YJQ SET A=:arg1 WHERE A= :arg2 RETURNING A INTO :arg3';

EXECUTE IMMEDIATE lv_sql USING 4 ,5 , OUT lv_2;

    或者EXECUTE IMMEDIATE lv_sql USING 4,5 RETURNING INTO lv_2;

END;

    返回游标

 TYPE REF_CUR IS REF CURSOR;

OPEN REF_CUR FOR lv_sql;




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论