oracle学习笔记3:基本的SQL语句
oracle基本的SQL语句和SQLSERVER基本一样,在这里只简单列出与SQLSERVER不一样的地方
1.select * from orderinfo where address = 'abcd' 与 address = 'ABCD'
得到的结果是不一样的,也就是说oracle字符区分大小写,这一点特别要注意。
2.查询语句中,如果表引用了别名,则字段也必须的用别名.字段名
select orderid, ordercode from orderinfo o是一条错误的查询语句,正确的如下:
select o.orderid, o.ordercode from orderinfo o或者select orderid , ordercode from orderinfo
3.A{operator}any B:表示A与B中的任何一个元素进行operator运算符的比较,只要有一个比较值为true,就返回数据行
A{operator}all B:表示A与B中的所有元素进行operator运算符的比较,只有所有元素的比较值都为true,就返回数据行
select * from orderinfo where orderid = any(1,2,3) 表示orderid等于1或2或3则返回数据行
select * from orderinfo where orderid <> all(1,2,3) 表示orderid不等于1并且不等于2并且不等于3则返回数据行
4.与null进行比较要用 is null这与sqlserver一样,在这里记一下
5.自然连接natural join
select o.orderid, u.userid from orderinfo o natural join userinfo u where o.orderid = 1
oracle把两个表中名称相同的列自动连接
6.子查询中的in, any ,all
select * from orderinfo where userid in (select userid from userinfo where username = 'abcd')与sqlserver一样
select * from orderinfo where userid > any (select userid from userinfo where username = 'abcd')
只要userid大于任何一个子查询中的userid则返回数据行
select * from orderinfo where userid > all(select userid from userinfo where username ='abcd')
userid必须大于子查询中所有的userid才能返回数据行
7.insert语句
insert into orderinfo(orderid) values(orderinfo_seq.nextval)
orderinfo_seq.nextval获取序列下一个值,前提必须创建了orderinfo_seq序列
批量插入数据:
insert into orderinfo_tmp select * from orderinfo where orderid = 1
8.update语句
update orderinfo set mobilephone = '13333333333' where orderid = 1
通过查询更新:
update orderinfo set (mobilephone, address, productnumeric, amount) = (select mobilephone,
address, productnumeric, amount from orderinfo where orderid = 1)
where orderid = 2
9.Delete,truncate语句
delete from orderinfo where orderid = 1
truncate table orderinfo --删除orderinfo表中所有的记录,并且不记录日志,所以可以很快的删除记录,但是无法恢复
10.事务
oracle11g中的事务是隐式自动开始的,它不需要用户显示地执行开始事务语句,但对于事务的结束处理,则需要用户进行指定的操作,
通常在以下情况oracle认为一个事务结束了:
1.执行commit语句提交事务
2.执行rollback语句撤消事务
3.执行一条数据定义语句,如create,drop,alter等语句,如果语句执行成功,oracle系统会自动执行commit命令,否则系统会自动执行
rollback命令
4.执行一个数据控制命令,比如grant,revoke,这种语句执行完毕,系统会自动执行commit命令
5.正常地断开数据库连接,正常退出sqlplus环境,系统会自动执行commit命令,否则系统自动执行rollback命令
综合上述五种情况,归根到底事务的结束要么执行commit命令,要么执行rollback命令
提交事务:
insert into orderinfo (orderid,...) values(orderinfo_seq.nextval,...);
commit;
回滚事务:
insert into orderinfo (orderid,...) values(orderinfo_seq.nextval,...);
rollback;
事务可以回滚到一个点,如:
truncate table orderinfo
insert into orderinfo (orderid,...) values(orderinfo_seq.nextval,...);
savepoint sp;
insert into orderinfo (orderid,...) values(orderinfo_seq.nextval,...);
rollback to savepoint sp;
commit;
上述语句执行后数据表中只有一条记录,也就是每一条插入语句所插入的数据
12.分页查询
select * from(
select o.*, rownum r from orderinfo o where rownum <=20 order by o.orderid asc)
where r > 10
查询第11-20条记录
oracle学习笔记3:基本的SQL语句的更多相关文章
- Oracle学习笔记十 使用PL/SQL
PL/SQL 简介 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言,是对 SQL 的扩展,它支持多种数据类型,如大对象和集合类型,可使用 ...
- oracle学习笔记4:PL/SQL
PL/SQL是没命名的存储过程,函数,触发器,PL/SQL块的语法格式如下: [declare] --声明部分,可选 begin --执行部分,必须 [exception] --异常处理部分,可选 e ...
- entityframework学习笔记--009-使用原生sql语句操作数据
1 使用原生SQL语句更新--Database.ExecuteSqlCommand 假设你有一张如图9-1所示的Payment数据库表. 图9-1 1.1 实体类型: public class Pay ...
- power desinger 学习笔记三<批量执行sql语句>
使用sql脚本导入表结构,直接 附带表的 约束.列的注释.真的可以哦 sql语句如下: create table test01 ( ID VARCHAR2(10 ...
- Oracle 学习笔记 17 -- 异常处理(PL/SQL)
程序异常是在操作期间正常,出现在节目的准备过程是不可避免的例外.但是,必须有一个相应的异常处理机 制,以保证程序的正常运行.PL/SQL程序运行过程中出现的错误.称为异常. 一个优秀的程序都应该可以正 ...
- oracle学习笔记(九) SQL常用函数说明以及使用
SQL常用函数说明以及使用 以下补充以下常用的函数,更多的请看oracle函数API文档 to_char to_char(8.58,'9.99') to_char(8.50,'9.00') to_ch ...
- oracle学习笔记(五) SQL操作符
SQL操作符 算术操作符:+加,-减,*乘,/除 比较操作符: <,>,=,!=,<>,<=,>= 常用的判断,<>和!=相同 between $low ...
- Oracle学习中,重点是sql语句的学习,而所有的sql语句都要在scott用户下完成。
熟悉这个用户下的四张表,是必要的. 查看所有表名: SELECT * FROM tab; 查看每张表的结构: DESC 表名称: 1.部门表:dept no 名称 类型 描述 1 DEPTNO NU ...
- Oracle学习总结(5)—— SQL语句经典案例
--0.所有员工信息 SELECT * FROM emp --1.选择部门30的所有员工 SELECT * FROM emp WHERE deptno=20 --2.列出所有办事员(CLERK)的姓名 ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
随机推荐
- win7 下安装oracle 10g
oracle 10g 在win7下安装,提示程序异常终止,发生未知错误 在网上搜结果: 修改Oracle 10G\database\stage\prereq\db\refhost.xml 在 < ...
- 【转】xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)
原文网址:http://blog.csdn.net/mad1989/article/details/8167529 最近项目到了最后的阶段,测试完一切ok后,准备打包以及提交,不料看到网上众教程,好多 ...
- 编译Hadoop源码
背景: 在阅读hadoop源代码过程中会发现部分类或者函数无法找到,这是由于Hadoop2.0使用了Protocol Buffers定义了RPC协议, 而这些Protocol Buffers文件在Ma ...
- [JLOI2013]卡牌游戏
[题目描述 Description] N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡 ...
- QT_校园导航(绘制路线已实现)_Updata_详细注释
//MainWidget.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include " ...
- 用CRTP在C++中实现静态函数的多态
我上一篇博客[C++的静态分发(CRTP)和动态分发(虚函数多态)的比较](http://www.cnblogs.com/fresky/p/3504241.html)介绍了如何用CRTP(Curiou ...
- hibernate性能消耗太狠了。果断减肥引发的连串意外惊喜
近期在云服务器上新部署了一个项目 硬件配置 CPU: 2核 内存: 4096 MB (I/O优化) 开始是调试测试在用 没发觉,今天我看了下监控 cpu使用率达到了60-70% 而且一直持续 我 ...
- Unity3D中Prefab
Prefab概念: Prefab是一种资源类型--存储在项目视图中的一种可反复使用的游戏对象.因而当游戏中须要非常多反复使用的对象.资源等时,Prefab就有了用武之地.它拥有下面特点: 能够放到多个 ...
- 深入了解当前ETL中用到的一些基本技术
数据集成是把不同来源.格式和特点的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享,是企业商务智能.数据仓库系统的重要组成部分.ETL是企业数据集成的概念出发,简要分析了当前ETL中用到的 ...
- poj 3140 Contestants Division(树形dp? dfs计数+枚举)
本文出自 http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...